Git-native AI orchestration engine. Turn repository events into orchestrated agent work, from issues, PRs, webhooks, or schedules.
Install - Events - Agents - Terminal UI - Web UI - Documentation - Development
Polyphony connects your issue trackers to AI coding agents, runs them in isolated workspaces, and shows everything live in a terminal dashboard.
Inspired by OpenAI Symphony, Polyphony brings the same workflow-contract orchestration model to local repositories, but with multiple event sources and multiple agent backends.
brew install penso/tap/polyphonyOr build from source:
cargo install --path crates/cliThen run it inside any git repository:
polyphony init
polyphonypolyphony init bootstraps WORKFLOW.md, ~/.config/polyphony/config.toml, repo-local agent
prompts, and a starter polyphony.toml when local tracker wiring can be inferred or requested. It
auto-detects GitHub and GitLab remotes, supports explicit pack parameters for tracker/repository
defaults, and prints setup hints for missing tracker or auth wiring.
Starter packs are built in:
polyphony init --list-packs
polyphony init --pack codex
polyphony init --pack multi-agent
polyphony init --pack pipeline-static --tracker github --repository owner/repo
polyphony init --pack codex --tracker linear --project-slug ENGPolyphony listens for work events from multiple sources:
- GitHub — issues and pull requests
- GitLab — issues via GraphQL
- Linear — issues via GraphQL
- Beads — local Dolt-backed issue tracking
Plug in any combination of AI coding agents:
- Claude — Anthropic's CLI agent
- Codex — OpenAI's Codex CLI via app-server
- Copilot — GitHub Copilot CLI
- Pi — Warp's Pi agent via native RPC
- OpenAI Chat — any OpenAI-compatible API (OpenRouter, Kimi, etc.)
- ACP / ACPX — Agent Communication Protocol agents and bridges
Each agent gets its own workspace (worktree, directory, or clone), a shared workflow policy, retries with fallback chains, and budget-aware throttling.
The default terminal dashboard provides an issue inbox, detailed session timelines, live agent
activity, issue creation across configured trackers, and controls for dispatching, pausing, and
clearing local sessions. Use --tui current to launch the legacy dashboard.
Polyphony includes a web interface that runs alongside the terminal dashboard. When daemon.listen_port is set, both the TUI and the web UI are available simultaneously:
- SSR dashboard — server-rendered pages for inbox, runs, agents, tasks, and logs
- GraphQL API — query and mutate runtime state, with an interactive playground at
/graphql - WebSocket subscriptions — real-time state updates via GraphQL subscriptions at
/graphql/ws - Jinja templates — HTML templates in
crates/httpd/templates/, easy to customize
just httpd # TUI + web UI on port 8080
just httpd 3000 # TUI + web UI on custom port
just httpd-only # web UI only (no TUI), port 8080Or configure daemon.listen_port in your workflow config to always enable the web UI.
Full reference material lives in docs/:
just format # format code
just lint # clippy + checks
just test # run tests
just httpd # run web UI on port 8080MIT
