About polyphony
Polyphony is a multi-agent orchestration system that runs tasks in isolated Docker workspaces. It routes work among Claude, Codex, and Kimi using configurable rules and complexity scoring, with independent clones and branches for each task.
Key features
- 01Docker-isolated workspace per task
- 02Routing among Claude, Codex, and Kimi
- 03Complexity scoring across five dimensions
- 04GitHub Issues or local SQLite task sources
- 05Task lifecycle and workspace management
Use cases
- 01Running agent tasks in parallel isolated workspaces
- 02Routing tasks by type and risk
- 03Managing task execution through verification and landing
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ alinaqi/ maggy --skill polyphonyAfter installing, type/polyphonyin Claude Code to confirm it loaded.
Details
From the project READMEPolyphony — Multi-Agent Orchestration
Container-isolated workspaces for parallel agent execution. Each agent gets its own Docker container with a full git clone on its own branch. No conflicts, independent tests, clean PRs.
Architecture (6 Layers)
- Work Source — Tasks from GitHub Issues (
gh api) or local SQLite queue - Orchestrator — Supervisor loop: discover -> claim -> route -> provision -> run -> verify -> land
- Router — Pure function: Task x Policy -> RunSpec (5-dimension complexity scoring)
- Identity Broker — Resolves named credentials to volume mounts + env overlays
- Workspace Manager — Per-task
git clone --reference, branch checkout, cleanup - Worker Runtime — Docker container create/start/stop/logs lifecycle
Task Lifecycle
DISCOVERED -> CLAIMED -> ROUTED -> PROVISIONED -> RUNNING -> VERIFYING -> LANDED
| |
v v
FAILED --> BLOCKED
|
v
CLAIMED (retry)
Prerequisites
- Docker or OrbStack installed and running
- At least one agent CLI available (Claude, Codex, or Kimi)
- CLI subscriptions configured (not API keys)
Check:
command -v docker &>/dev/null || command -v orbctl &>/dev/null
Configuration
All config lives in ~/.polyphony/:
| File | Purpose |
|---|---|
config.yaml | Workspace root, poll interval, max concurrency |
identities.yaml | Named credential bundles with volume paths |
agents.yaml | Agent profiles (CLI commands, strengths) |
routing.yaml | Routing rules and fallback chains |
Initialize with: polyphony init
Routing Rules
Rules are evaluated top-down; first match wins. Each rule has a match predicate and an agent target.
rules:
- match: { task_type: docs, risk: low }
agent: kimi
- match: { task_type: bugfix }
agent: codex
- match: { risk: high }
agent: claude
default:
agent: claude
fallback: [codex, kimi]
Complexity Scoring (5 Dimensions)
Each dimension scores 0-2. Total 0-10.
| Dimension | Source |
|---|---|
| Cyclomatic depth | LOC + scope size |
| Fan-out | Number of callers |
| Security boundary | Auth/PII keywords |
| Concurrency | Lock/transaction keywords |
| Domain invariants | Risk level + task type |
Routing thresholds:
- 0-3: Delegate to Kimi solo
- 4-6: Kimi + Codex review
- 7-10: Claude direct
Container Isolation
Each task gets:
- Its own Docker container from
polyphony-worker:latest - A full git clone at
/workspace(not a worktree) - Auth volumes mounted read-only (e.g.,
~/.claude:/home/worker/.claude:ro) - Independent test execution
- Its own branch for PRs
CLI Commands
polyphony init # Create ~/.polyphony/ with config templates
polyphony spawn "Fix auth bug" # Create and route a task
polyphony status # Show task states
polyphony cleanup # Remove completed workspaces
Integration with Existing Skills
- cross-agent-delegation: Uses Polyphony's complexity scoring for routing decisions
- agent-teams: Uses Polyphony's workspace isolation instead of shared directories
- spawn-team: Uses Polyphony's container provisioning for feature agents