Prerequisites
Before you begin, ensure you have:- A codebase that follows harness engineering principles
- A Linear workspace with API access
- Access to Codex or your preferred coding agent
Symphony works best in codebases with good test coverage, clear build commands, and automated CI/CD pipelines.
Two Paths Forward
You can either build your own Symphony implementation or use the reference Elixir implementation.Build Your Own
Implement Symphony in your preferred language using the spec
Use Elixir Reference
Get started quickly with the provided Elixir implementation
Option 1: Build Your Own
The language-agnostic specification lets you implement Symphony in any language.Read the specification
Review the complete specification to understand Symphony’s architecture and requirements.
Implement core components
Build the six core components:
- Workflow Loader: Parse YAML frontmatter and Liquid templates
- Tracker Client: Integrate with Linear’s GraphQL API
- Orchestrator: Manage polling, dispatch, and reconciliation
- Workspace Manager: Handle isolated workspace lifecycle
- Agent Runner: Launch and communicate with coding agents
- Status Surface: Provide runtime observability
Test your implementation
Validate your implementation against the specification:
- Poll cycle completes successfully
- Workspaces are created and cleaned up correctly
- Agent sessions execute and report status
- Retry logic handles transient failures
- Reconciliation stops stale agents
Configure and run
Create your
WORKFLOW.md configuration file and start the service. Jump to Configuration below.Option 2: Elixir Reference
The reference Elixir implementation gets you running quickly.Install dependencies
Build Symphony
Set up dependencies and build the binary:This creates the executable at
bin/symphony.Get Linear API key
Create a personal API key in Linear:
- Go to Settings → Security & access → Personal API keys
- Click Create new key
- Copy the key and set it as an environment variable:
Configure Symphony
Create aWORKFLOW.md file in your repository:
WORKFLOW.md
See the workflow file reference for all configuration options and templating capabilities.
Key Configuration Options
tracker - Linear integration
tracker - Linear integration
kind: Currently only"linear"is supportedproject_slug: Your Linear project identifieractive_states: Issue states Symphony will work onterminal_states: States that trigger workspace cleanupapi_key: Defaults to$LINEAR_API_KEYenvironment variable
workspace - Workspace management
workspace - Workspace management
root: Base directory for all issue workspaces (supports~and$VAR)- Each issue gets a subdirectory:
root/ISSUE-123/
agent - Orchestration limits
agent - Orchestration limits
max_concurrent_agents: Global agent concurrency limit (default: 10)max_turns: Maximum agent turns per session (default: 20)
codex - Agent configuration
codex - Agent configuration
command: Shell command to launch Codex app-serverapproval_policy: Control when agents need approval (never,on-request,on-failure,untrusted)thread_sandbox: Workspace access level (workspace-write,read-only,danger-full-access)
Run Symphony
Start the orchestrator:What Happens Next
Once started, Symphony will:- Poll Linear every 5 seconds (configurable) for eligible issues
- Create workspaces for new issues using your
after_createhook - Dispatch agents up to your configured concurrency limit
- Monitor progress through Codex app-server events
- Retry failures with exponential backoff
- Clean up workspaces when issues reach terminal states
Use
--port 4000 to access the observability dashboard at http://localhost:4000. See monitoring for details.Verify It’s Working
Check that Symphony is operating correctly:View the dashboard (optional)
If you enabled
--port, open http://localhost:4000 to see:- Active agent sessions
- Issue queue and states
- Token usage and rate limits
- Recent completion history
Check workspace creation
Verify that workspace directories exist:You should see directories named after Linear issue identifiers.
Test with a Sample Issue
Create a test issue in Linear to verify end-to-end operation:- Create a new issue in your configured Linear project
- Set the state to one of your
active_states(e.g., “In Progress”) - Add a clear description of what needs to be done
- Watch Symphony’s console output for dispatch activity
- Monitor the workspace directory for repository cloning and agent activity
Next Steps
Configure Linear Integration
Fine-tune issue selection, state management, and assignee filtering
Customize Workflow Prompts
Use Liquid templating to create powerful workflow prompts
Set Up Monitoring
Configure observability, dashboards, and log aggregation
Add Custom Skills
Extend agent capabilities with repository-specific skills
Troubleshooting
Symphony won't start - workflow file not found
Symphony won't start - workflow file not found
Error:
Workflow file not found: /path/to/WORKFLOW.mdSolution: Ensure the path to WORKFLOW.md is correct. Use an absolute path or ensure you’re in the correct directory.Linear API authentication fails
Linear API authentication fails
Error:
Linear API returned 401 UnauthorizedSolution: Verify your Linear API key is set correctly:No issues are being dispatched
No issues are being dispatched
Possible causes:
- No issues in
active_statesfor the configured project - All eligible issues are already running (check concurrency limit)
- Issue validation failures (check logs for validation errors)
- Check your Linear project for issues in active states
- Review Symphony logs:
tail -f log/symphony.log - Enable the dashboard to see issue queue state
- Verify
project_slugmatches your Linear project
Workspace creation fails
Workspace creation fails
Error:
Failed to create workspace: permission deniedSolution: Ensure the workspace.root directory is writable:Agent session hangs or times out
Agent session hangs or times out
Possible causes:
- Codex binary not in PATH
- Agent approval required but not configured
- Workspace hook script failures
- Test Codex manually:
codex app-server - Check hook output in workspace creation logs
- Review
codex.approval_policysetting - Check agent logs in the workspace directory