Symphony is a reference Symphony service packaged as a dual Claude/Codex plugin. It continuously polls Linear issues, creates deterministic per-issue workspaces, and runs Codex app-server sessions inside those workspaces. Runtime behavior is owned by a repositoryDocumentation Index
Fetch the complete documentation index at: https://docs.qredence.ai/llms.txt
Use this file to discover all available pages before exploring further.
WORKFLOW.md file with YAML front matter and a strict Liquid prompt body.
The implementation follows the OpenAI Symphony draft v1 service spec. It is a trusted-environment harness by default: workspace path containment and hook timeouts are enforced, while Codex approval and sandbox settings are passed through from WORKFLOW.md.
If workspace.root is omitted, the service defaults to /symphony_workspaces. If WORKFLOW.md becomes unreadable or invalid during runtime, Symphony keeps the last known good config for reconciliation, blocks new dispatches, and resumes dispatch once the workflow file is fixed.
This baseline intentionally stops short of the optional HTTP dashboard / API and SSH worker extensions. The Linear runtime path is still first-class: operators should use the Linear plugin / app for issue and project work, and Codex sessions launched by Symphony can use the bundled linear_graphql tool for scoped in-thread Linear GraphQL access.
Files
scripts/symphony_service.py— Python reference service and CLI.skills/symphony/SKILL.md— operator workflow for authoring and running Symphony.references/workflow-example.md— starterWORKFLOW.md.references/implementation-notes.md— conformance notes and safety posture.
Quick start
Before you create or validate a repository-ownedWORKFLOW.md, settle two required inputs:
- Confirm the Linear auth connection Symphony should use at runtime. Symphony does not infer this from hidden plugin state — the chosen auth must resolve through
tracker.api_key, typically viaLINEAR_API_KEY. - Choose the Linear project for this repo. Use the Linear plugin / app to find or confirm the project, then write that repo-to-project mapping into
tracker.project_slug.