Starting Symphony
Symphony is started via the command-line interface with a workflow configuration file:./WORKFLOW.md in the current directory.
CLI Flags
Symphony supports the following command-line flags:Available Flags
| Flag | Type | Description |
|---|---|---|
--logs-root | string | Custom directory for log files (default: ./log) |
--port | integer | Enable HTTP observability server on specified port |
--i-understand-that-this-will-be-running-without-the-usual-guardrails | boolean | Required acknowledgement flag for running Symphony |
The acknowledgement flag is required to start Symphony. This ensures you understand that Symphony runs Codex without the usual guardrails.
Acknowledgement Banner
When started without the required acknowledgement flag, Symphony displays:cli.ex:114-144 (elixir/lib/symphony_elixir/…)
Stopping Symphony
Symphony can be stopped using standard process signals:Graceful Shutdown
Send SIGTERM or SIGINT (Ctrl+C) to the Symphony process:Symphony will wait for the supervisor to shut down normally.
Restarting Symphony
To restart Symphony:- Stop the current Symphony process
- Start Symphony again with the same or updated configuration:
- Clean up terminal workspaces on startup
- Resume polling for active issues
- Reconcile running agents with the current state
Symphony performs terminal workspace cleanup during initialization to remove workspaces for issues that are no longer active.
Production Considerations
Process Supervision
For production deployments, run Symphony under a process supervisor:systemd Service Example
systemd Service Example
Docker Example
Docker Example
Resource Management
Configure Maximum Concurrent Agents
Set Source:
agent.max_concurrent_agents in your WORKFLOW.md:config.ex:28-29 (elixir/lib/symphony_elixir/…)Configure Workspace Storage
Ensure sufficient disk space for workspaces:Default:
System.tmp_dir()/symphony_workspacesLog Rotation
Symphony uses rotating disk logs with configurable size and retention:log_file.ex:10-11 (elixir/lib/symphony_elixir/…)
Log files automatically rotate when they reach the size limit. Old files are deleted when the maximum file count is reached.
Polling Interval
Configure the Linear polling interval to balance responsiveness and API rate limits:config.ex:25 (elixir/lib/symphony_elixir/…)
Environment Variables
Key environment variables Symphony recognizes:| Variable | Purpose | Required |
|---|---|---|
LINEAR_API_KEY | Linear API authentication token | Yes (for Linear tracker) |
LINEAR_ASSIGNEE | Filter issues by assignee | No |
COLUMNS | Terminal width for dashboard rendering | No |
config.ex:195-209 (elixir/lib/symphony_elixir/…)
Validation
Symphony validates configuration on startup:config.ex:364-373 (elixir/lib/symphony_elixir/…)
Shutdown Behavior
When Symphony shuts down:- The supervisor receives shutdown signal
- All running agent processes are monitored
- Graceful shutdown waits for agents to complete
- Log handlers are flushed and closed
- HTTP server (if enabled) closes connections
cli.ex:172-189 (elixir/lib/symphony_elixir/…)