06-reference

openai symphony orchestration spec

Thu Apr 30 2026 20:00:00 GMT-0400 (Eastern Daylight Time) ·reference ·source: GitHub (openai/symphony) ·by OpenAI
agent-orchestrationcoding-agentscodexlinearsymphonyharness-engineeringagent-deployerl5-trajectory

Symphony — OpenAI’s Orchestration Spec for Coding Agents

Why this is in the vault

Symphony is OpenAI’s spec for the orchestration layer above coding agents — exactly the layer RDCO has built incrementally over the last 6 weeks. Worth filing for cross-reference + adopting two specific invariants we don’t yet enforce. Don’t port the runtime.

What Symphony is

Apache-2.0 spec + experimental Elixir reference implementation (~20.4k stars, low-key engineering preview at ~12 commits on main). Defines a poll-loop orchestrator that:

  1. Pulls open issues from a tracker (Linear in the reference impl)
  2. Spawns isolated Codex subprocesses, one per issue, in sanitized per-issue workspaces
  3. Reconciles state via the tracker’s own status fields — orchestrator is read-only on the tracker
  4. Crash-recovers via re-polling (no hidden in-memory state)

Not a CLI, not a library, not a managed runtime — a protocol with a sample implementation.

Three sharpest claims

  1. “Manage work, not agents.” Success is defined as workflow-state handoff (e.g. issue moved to “Human Review”), NOT tracker Done. Same thesis as RDCO’s /check-board → critical-component loop.
  2. Orchestrator is read-only on the tracker. State writes happen via the agent’s own tool calls inside its workspace. Clean separation between orchestrator and worker.
  3. Three hard safety invariants treated as load-bearing (not nice-to-have):
    • Workspace containment — every command’s cwd must equal the per-issue workspace path
    • Sanitized directory names — no .. or shell injection from issue titles
    • Crash-recoverable via re-polling — no in-memory state survives orchestrator restart

Mapping against Ray Data Co

RDCO already runs this pattern. The 6-week incremental build of skills + cron + Notion ended up at the same shape Symphony codifies:

Symphony conceptRDCO equivalent
Tracker (Linear)Notion task board (collection://ae46c40f-421d-4c94-924b-0a2b13de0756)
Poll loop/check-board cron (every hour)
Issue-spawned workspaceSub-agent Agent invocations + skill-scoped state files
Codex subprocess per issueGeneral-purpose sub-agent fan-out (per-newsletter, per-video, per-batch)
Concurrency managerSkill-spec-defined caps (e.g. /process-newsletter watch caps at 3 concurrent)
Channels as work-status surfaceiMessage + Discord (the channels-as-claw pattern, 2026-05-01)

Two borrowable invariants we don’t yet enforce:

  1. Workspace containment per task. Today, sub-agents inherit the parent process’s cwd. We don’t isolate per-task. Low risk in practice (skills generally don’t shell out to filesystem-mutating commands) but Symphony treats this as load-bearing. Worth a Notion task to add per-task cwd-isolation guards to skills that do shell out (build-project, build-landing-page, blender, anything that writes outside the vault).

  2. Explicit “handoff state ≠ Done” Notion field. Today the Notion task board has a Status field (To Do / In Progress / Blocked / Done / Archived). Symphony’s framing argues for an explicit state for “orchestrator-handoff-to-human” distinct from “complete.” The “Blocked” state covers some of this but conflates founder-needed-input vs. code-gate-failed vs. dependency-missing. A dedicated state — e.g. Awaiting Founder Review — would tighten the loop.

Not borrowable: the runtime itself. Elixir + Linear + Codex stack is wrong for us. Stay on Claude Code + Notion + Anthropic + sub-agent fan-out.

Comparison to other agent-architecture filings (today’s cluster)

OpenAI Symphony joins the agent-deployer / orchestration evidence cluster:

SourceLayerStack
2026-01-09-trevin-chow-agent-orchestration-thesisThesisAnthropic/Codex
2026-05-01-trevin-compound-engineering-v3-4Plugin / skill marketplaceClaude Code
2026-05-01-three-primitives-claude-code-life-osPersonal life-OSClaude Code
2026-05-01-mubbu-personal-brand-five-agent-systemAgency content productionClaude/multi-model
2026-05-01-ann-miura-ko-six-levels-ai-pilled-organizationsOrg-design frameworkVendor-neutral
THIS PIECE — SymphonyOrchestration spec for coding agentsOpenAI/Codex/Linear

Two ecosystems (Anthropic/Compound-Engineering and OpenAI/Symphony) converging on the same primitives: tracker → poll → workspace-isolated worker → handoff state. That convergence is itself a signal — the architecture is hardening into industry standard.

Open follow-ups