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:
- Pulls open issues from a tracker (Linear in the reference impl)
- Spawns isolated Codex subprocesses, one per issue, in sanitized per-issue workspaces
- Reconciles state via the tracker’s own status fields — orchestrator is read-only on the tracker
- 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
- “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. - 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.
- Three hard safety invariants treated as load-bearing (not nice-to-have):
- Workspace containment — every command’s
cwdmust 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
- Workspace containment — every command’s
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 concept | RDCO equivalent |
|---|---|
| Tracker (Linear) | Notion task board (collection://ae46c40f-421d-4c94-924b-0a2b13de0756) |
| Poll loop | /check-board cron (every hour) |
| Issue-spawned workspace | Sub-agent Agent invocations + skill-scoped state files |
| Codex subprocess per issue | General-purpose sub-agent fan-out (per-newsletter, per-video, per-batch) |
| Concurrency manager | Skill-spec-defined caps (e.g. /process-newsletter watch caps at 3 concurrent) |
| Channels as work-status surface | iMessage + Discord (the channels-as-claw pattern, 2026-05-01) |
Two borrowable invariants we don’t yet enforce:
-
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).
-
Explicit “handoff state ≠ Done” Notion field. Today the Notion task board has a
Statusfield (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:
| Source | Layer | Stack |
|---|---|---|
| 2026-01-09-trevin-chow-agent-orchestration-thesis | Thesis | Anthropic/Codex |
| 2026-05-01-trevin-compound-engineering-v3-4 | Plugin / skill marketplace | Claude Code |
| 2026-05-01-three-primitives-claude-code-life-os | Personal life-OS | Claude Code |
| 2026-05-01-mubbu-personal-brand-five-agent-system | Agency content production | Claude/multi-model |
| 2026-05-01-ann-miura-ko-six-levels-ai-pilled-organizations | Org-design framework | Vendor-neutral |
| THIS PIECE — Symphony | Orchestration spec for coding agents | OpenAI/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
- Workspace containment audit — survey our skills for any that shell out to filesystem-mutating commands without explicit cwd isolation. Queue as Notion task if any are found.
- Notion handoff-state field — propose adding an
Awaiting Founder Reviewstatus (or splitting Blocked intoBlocked-Founder-DecisionvsBlocked-Dependency) to tighten the orchestrator/handoff distinction. - Watch Symphony’s evolution — 12 commits as of today, low-key preview. If OpenAI ships a more opinionated runtime or pulls Linear-coupling apart, worth re-evaluating.
Related
- 2026-04-11-garry-tan-thin-harness-fat-skills — Tan’s “thin harness, fat skills” framing the harness-engineering term derives from
- 2026-05-01-trevin-compound-engineering-v3-4 — Anthropic-side parallel
- 2026-01-09-trevin-chow-agent-orchestration-thesis — orchestration thesis
- 2026-05-01-ann-miura-ko-six-levels-ai-pilled-organizations — L4-L5 framework Symphony patterns map to
- 2026-04-30-rdco-thesis-targeting-systems-feedback-loops — RDCO targeting-systems thesis
- 2026-04-30-rdco-bet-architecture-playbook — bet architecture