Symphony

Orchestrator · Last verified 2026-09-30

TL;DR

Symphony is an Apache-2.0 project from OpenAI: a language-agnostic spec plus an experimental Elixir reference implementation that polls an issue tracker, makes a workspace per issue and runs Codex in app-server mode. The README calls it a low-key engineering preview for trusted environments. It suits teams that already manage work in Linear or GitHub Issues.

Key facts

Symphony key facts. Data as of 2026-09-30.
Type Orchestrator
Languages / SDKs Elixir
License Apache-2.0
Pricing model Open source, free
Orchestration pattern Other
GitHub stars 27,483 (as of 2026-09-30)
GitHub forks 2,849
Last push 2026-09-15
Latest release v0.0.3
Repository openai/symphony
Website openai.com
Documentation github.com
Last verified 2026-09-30

Key features

  • Polls a configured tracker for candidate issues; the Elixir implementation includes adapters for Linear, GitHub Issues, Jira Cloud, Asana and GitLab. (source)
  • Creates a workspace directory per issue and starts codex app-server inside it, sending a workflow prompt and continuing turns until the issue leaves its active state. (source)
  • WORKFLOW.md keeps policy in the repository: YAML front matter for tracker, workspace, hooks, concurrency and Codex settings, plus the Markdown prompt. (source)
  • The spec calls for bounded-concurrency dispatch, exponential backoff on transient failures and restart recovery from tracker and filesystem state without a database. (source)
  • Provider-native tools (linear_graphql, github_api, jira_rest, asana_api, gitlab_api) run host-side with the tracker credential, which is stripped from the Codex child process. (source)
  • An optional Phoenix LiveView dashboard and JSON API show runtime state, including issues blocked waiting for operator input. (source)
  • The bundled workflow uses Linear states such as Human Review, Merging and Rework so a person approves before an agent lands the PR. (source)

Architecture and orchestration pattern

Pattern: Other

Symphony is a long-running service, not a chat tool. The specification (Draft v1, language-agnostic) defines an orchestrator that reads work from an issue tracker, keeps claim and retry state, creates an isolated workspace for each issue and runs one coding-agent session per issue. Ticket writes such as state changes, comments and PR links are normally done by the agent through tracker tools that Symphony executes with the configured credential.

The Elixir/OTP reference implementation launches Codex in app-server mode with a workflow prompt. Workspaces are directories under workspace.root, bootstrapped by a hooks.after_create script (the example runs git clone), so isolation is per-issue checkouts plus Codex's sandbox settings. If an issue reaches a terminal state, the agent is stopped and its workspaces are cleaned up.

State lives in the running orchestrator and in the tracker: blocked entries are kept in memory only and are cleared on restart, after which active issues can be dispatched again. Coordination between agents is indirect, through the tracker's states and comments.

Human in the loop

The bundled workflow moves a ticket to Human Review when a PR is attached and validated, waits for a person, and only runs the land skill after the person moves it to Merging; Rework returns it to the agent. Codex approval defaults are strict: the Elixir implementation rejects sandbox approvals, rule approvals and MCP elicitations unless configured otherwise, and if Codex reports that input or approval is required the issue is shown as blocked in the dashboard and API. Moving an issue to a terminal state stops its agent.

Harnesses it can drive

Protocols

MCP, A2A and AG-UI support for Symphony. See the full matrix.
ProtocolSupportNote
MCP Unknown
checked 2026-09-30
No MCP client or server is documented. Related mentions only: the bundled WORKFLOW.md lets the agent use a configured Linear MCP server or the injected linear_graphql tool, and the Elixir app-server code treats Codex MCP elicitation requests as needing operator input.
A2A Unknown
checked 2026-09-30
Searched the README, SPEC.md, Elixir README and file names for 'a2a' and 'agent2agent'; nothing found.
AG-UI Unknown
checked 2026-09-30
Searched the README, SPEC.md and Elixir README for 'ag-ui'; nothing found.

Best for

  • Teams whose work is already ticketed in Linear, GitHub Issues, Jira, Asana or GitLab and who want Codex to pick up tickets automatically. (shortlist)
  • Running several ticket-scoped Codex sessions concurrently with a human approval state before merge. (shortlist)
  • Teams that want a written spec to reimplement in their own language and harden themselves. (shortlist)

Not for

  • Production use as-is: the Elixir README calls it prototype software for evaluation, and the top-level README says it is for trusted environments.
  • Teams using Claude Code, OpenCode or other agents: the reference implementation launches Codex only.
  • Interactive, hands-on pairing with an agent; Symphony is a background scheduler driven by tracker states.

Quickstart

git clone https://github.com/openai/symphony
cd symphony/elixir
mise trust
mise install
mise exec -- mix setup
mise exec -- mix build
mise exec -- ./bin/symphony ./WORKFLOW.md

Install not yet verified by this site. What this means

# Prerequisites: mise (Elixir/Erlang), codex, git, and a tracker token
export LINEAR_API_KEY=...          # Linear personal API key
git clone https://github.com/openai/symphony
cd symphony/elixir
mise trust && mise install
mise exec -- mix setup && mise exec -- mix build

# WORKFLOW.md (copied into your repo) starts with YAML front matter like:
#   tracker: {kind: linear, provider: {project_slug: "..."}}
#   workspace: {root: ~/code/workspaces}
#   hooks: {after_create: "git clone git@github.com:your-org/your-repo.git ."}
#   agent: {max_concurrent_agents: 10, max_turns: 20}
#   codex: {command: codex app-server}
mise exec -- ./bin/symphony ./WORKFLOW.md --port 4000   # --port enables the dashboard

Common pitfalls

  • Symphony Elixir is prototype software for evaluation; the README recommends implementing your own hardened version from SPEC.md, and the top-level README says trusted environments only.
  • The bundled workflow depends on non-standard Linear statuses (Rework, Human Review, Merging) that you must create in Team Settings.
  • The codex, git and tracker credentials must be present on the host, including with the Burrito executables.
  • Workflows that run package managers need networkAccess: true in codex.turn_sandbox_policy, otherwise the Codex turn sandbox may deny DNS.
  • If WORKFLOW.md is missing or has invalid YAML at startup, Symphony does not boot; a later invalid reload keeps the last good workflow.
  • Blocked entries are in memory only, so a restart can make still-active issues dispatch candidates again.

Official quickstart

Pros

  • Manages work at the ticket level: agents get their own workspace per issue and proof of work is expected before a human approves. (source)
  • Language-agnostic spec lets teams write their own implementation, alongside the Elixir reference. (source)
  • Safer Codex defaults: workspace-write sandbox and approval requests rejected unless configured. (source)
  • Five tracker adapters, with tracker credentials kept out of the Codex child process. (source)
  • Apache-2.0 licensed under the openai organization, with Burrito executables for macOS and Linux (arm64 and x86_64). (source)

Cons

  • OpenAI calls it a low-key engineering preview for trusted environments, and the Elixir implementation prototype software for evaluation only. (source)
  • The reference implementation is tied to Codex app-server; other agents need your own implementation. (source)
  • Tracker tools run with the configured token's full permissions; project_slug scopes scheduling reads, not raw tool calls. (source)
  • Blocked-issue state is memory-only and cleared on restart. (source)
  • Release versions are 0.0.x (v0.0.3 on 2026-09-15), so interfaces may change. (source)

Alternatives

FAQ

Does Symphony support MCP?

No MCP client or server is documented for Symphony itself, so the record marks it unknown. The bundled workflow lets the agent use a Linear MCP server if one is configured, and MCP elicitation requests from Codex are treated as needing operator input.

Which coding agents does it run?

The Elixir reference implementation starts Codex in app-server mode. The spec describes a generic coding-agent session, so other agents would need your own implementation.

Is Symphony free?

The code is Apache-2.0 and no paid product is documented. Running it uses your own Codex and tracker accounts.

Does it use git worktrees?

Not in the docs read. It creates a workspace directory per issue and the example hook runs git clone into it; the repository's .codex/worktree_init.sh only sets up the Elixir project for development.

Is it ready for production?

OpenAI describes it as a low-key engineering preview for trusted environments, and the Elixir README recommends implementing your own hardened version from SPEC.md.

Sources

Unknown fields: protocols.mcp, a2a, agui: no protocol support documented; MCP appears only in the bundled workflow and Codex elicitation handling. The OpenAI announcement page returned 403 to the fetcher and was not read; nothing in this record is taken from it. Whether the spec describes agents other than Codex beyond a generic coding-agent session was not fully verified. docs_url points to SPEC.md because the project has no docs site.

Something wrong or out of date, or do you maintain Symphony and want this page removed? Report a correction or request removal.