OpenAI Built Its Agent Orchestrator in Elixir. Here’s Why That Makes Sense.
Symphony turns Linear tickets into isolated, autonomous implementation runs with rich proof-of-work and safe landing. The surprising infrastructure bet that treats agent orchestration as a supervision problem.
- Symphony treats agent orchestration as an operating systems problem best solved by the BEAM VM and OTP supervision trees.
- It turns Linear tickets into isolated implementation runs that produce rich proof-of-work artifacts before safe landing.
- Lightweight Git worktrees and declarative skills replace heavy containerization and prompt micromanagement.
- The system shifts engineering teams from supervising individual agents to managing high-level work items.
Why OpenAI Chose Elixir for an AI Agent System
Most AI agent tooling lives in Python or TypeScript. OpenAI took a different path. Its reference implementation of Symphony is written almost entirely in Elixir.
This is not a gimmick. Orchestrating thousands of long-running, autonomous "implementation runs" — each tied to a Linear ticket, executing in isolation, producing rich artifacts, and landing safely — is fundamentally an operating systems problem.
The BEAM virtual machine and OTP supervision trees excel at exactly this: fault-tolerant, concurrent, long-lived processes with strong isolation guarantees.
"Symphony turns project work into isolated, autonomous implementation runs, allowing teams to manage work instead of supervising coding agents."
The Paradigm Shift: From Supervising Agents to Managing Work
Symphony builds directly on OpenAI's earlier "Harness Engineering" philosophy.
In February 2026, Ryan Lopopolo described building a million-line product with zero manually written code. The team's role shifted from writing code to designing environments that agents could successfully navigate.
"Humans steer. Agents execute."
With Symphony, that philosophy reaches its logical conclusion. Engineers no longer micromanage prompts or watch individual Codex sessions. They create high-level work items in Linear. The system takes over.
Inside an Implementation Run
A typical flow begins when the orchestrator polls Linear for new or updated tickets.
It spawns an isolated workspace using a Git worktree. An agent runner launches the Codex-powered agent inside this environment. The agent receives its instructions through declarative skill definitions and a WORKFLOW.md policy file.
The agent works, generates artifacts including walkthrough videos, complexity analysis, CI results, and self-review feedback. Status updates flow through the Phoenix LiveView dashboard. Once complete, a human reviews the proof-of-work package. Approved changes land safely through controlled merge steps.
The Clever Parts: Isolation, Skills, and Observability
Instead of heavy containerization, Symphony uses lightweight Git worktrees for isolation. A dedicated path_safety.ex module carefully validates all file system operations.
Agent capabilities are defined declaratively in .codex/skills/. Each skill ships with a SKILL.md file that teaches the LLM how to behave. This prompt-based capability injection keeps the core orchestrator clean.
defmodule SymphonyElixir.Codex.Skill do
# Skills loaded from .codex/skills/*/SKILL.md
# Used to inject capabilities into the agent at runtime
end
Token accounting, exponential backoff, and real-time observability are first-class concerns. The Phoenix LiveView dashboard provides immediate visibility without complex frontend state management.
How Symphony Compares
| Project | Language | Isolation | Tracker | Proof-of-Work | Harness Required |
|---|---|---|---|---|---|
| Symphony | Elixir (OTP) | Git worktrees + path safety | Linear (native) | Rich (video, CI, review, complexity) | Yes (opinionated) |
| ComposioHQ/agent-orchestrator | TypeScript | Git worktrees, Docker, k8s | Multiple | Moderate | No |
| Aperant | TypeScript | Session-based | Kanban-style | Basic | No |
| GitHub Copilot Agent | Proprietary | GitHub Actions | Jira / Issues | Platform-dependent | Partial |
Symphony stands apart through its deliberate infrastructure choices and tight coupling to mature harness engineering practices. It is less general-purpose but more production-minded in its assumptions about the surrounding codebase.
What It Means for Engineering Organizations
Symphony is still an engineering preview. It works best for teams that have already invested in agent-legible codebases with strong testing, CI, and invariants.
For those teams, it offers a glimpse of the future: engineers as high-level directors of work rather than supervisors of individual coding sessions.
The SPEC.md makes the system portable. Community ports are already appearing. The real signal is that reliable agent orchestration requires serious infrastructure thinking — the kind traditionally found in telecom and distributed systems.
"The primary job of our engineering team became enabling the agents to do useful work."