What Symphony Does
Symphony arrives with a bold premise: stop supervising coding agents and start managing work. The daemon runs continuously in the background, polling Linear for issues assigned to it, and autonomously spawning a coding agent for each ticket. The agent works in isolation with its own git branch, implements the feature or fix, generates proof-of-work artifacts, and creates a pull request for human review. This is not assisted coding — it is delegated coding with oversight at the review stage rather than the implementation stage.
Architecture and Setup
The choice of Elixir and OTP is Symphony's most thoughtful architectural decision. Erlang's BEAM VM was designed for telecom systems that require nine-nines availability, and OTP supervision trees bring those guarantees to agent orchestration. When a coding agent crashes — and they will crash — the supervisor automatically restarts it without affecting other running agents. The lightweight process model means spawning hundreds of agents costs negligible memory, and hot code reloading allows updating orchestration logic without stopping active sessions.
Setting up Symphony requires comfort with the Elixir ecosystem. You need Erlang, Elixir, and Mix installed, plus a Linear API key and OpenAI API credentials. The configuration is straightforward once you have the prerequisites, but developers outside the BEAM ecosystem face a steep learning curve just to get started. The docker-compose option simplifies deployment but limits customization.
Agent Isolation and Operation
Agent isolation is thorough. Each spawned agent operates in a dedicated working directory with its own git branch, environment variables, and context window. There is no shared state between agents — the daemon manages lifecycle transitions independently for each ticket. This prevents the contamination issues that plague shared-workspace approaches but limits opportunities for agents to collaborate on related tickets.
The developer experience during operation is surprisingly hands-off. Once configured, Symphony checks Linear periodically, picks up new issues, and starts working. The operator's role shifts to reviewing pull requests rather than writing code. The proof-of-work system ensures PRs include context about what was done and why, making review efficient. This workflow genuinely changes the development cadence for teams with large backlogs.
Performance and Integration Limits
Performance depends heavily on the underlying LLM and issue complexity. Simple bug fixes and feature additions complete in minutes. Complex multi-file changes can take longer as the agent iterates through implementation attempts. The OTP scheduler ensures fair resource distribution across concurrent agents, but heavy LLM API usage can become expensive when multiple agents are active simultaneously.
Integration limitations are Symphony's biggest weakness today. Linear is the only supported issue tracker — no GitHub Issues, Jira, Asana, or Shortcut support. No autonomous CI failure remediation means failed builds require manual intervention or a separate automation layer. No code review comment routing means review feedback must be manually communicated back to the agent.