Skip to main content

Local-first orchestration runtime for multiple autonomous coding agents (Claude Code, Codex CLI, Gemini CLI, and more) collaborating on one software project.

Project description

Orkestra

Coordinate many agents. Deliver one verified result.

You already use coding agents — Claude Code, OpenAI Codex, Google Antigravity. Orkestra makes two or more of them work on the same project at once, safely: every task runs in its own isolated Git worktree, your test commands are the referee, and nothing lands until a different agent has reviewed it. Your branches are never touched; finished work waits on a side branch until you accept it.

See it in 60 seconds — free

uv tool install 'orkestra-runtime[tui]'
orkestra demo

No agent CLIs, no logins, no tokens spent — scripted fake agents drive the real engine so you can watch the whole lifecycle:

▸ The plan: two independent tasks run in PARALLEL, each in its own
  isolated Git worktree, then a third task builds on both.
  completed verification passed: PASS (exit 0): test -f feature_a.py
  completed review by grace: changes requested (severity medium)
    warning review requested changes (cycle 1)
  completed review by grace: approved (severity none)
  completed task feature-a done (agent ada)
  completed all tasks done
▸ Done: 3 tasks planned, isolated, verified, cross-reviewed, integrated.
  1 review rejection triggered a repair loop (bounded — never spins forever).

That rejection-then-repair is the point: agents check each other, the kernel keeps score, and you only see verified results.

Use it on your project

cd my-project
orkestra init .        # detects your agents AND your test commands
$EDITOR SPEC.md        # describe what you want built (you'll get hints if it's vague)
orkestra doctor        # green = ready
orkestra run           # or: orkestra run --watch  (live TUI attached)

While it runs: orkestra watch (live dashboard from any terminal), orkestra status, orkestra pause / resume / cancel — state survives crashes, Ctrl-C, and reboots.

When it finishes:

orkestra diff          # what was built (commits + files)
orkestra merge         # accept it into your branch — the only step that touches it

If Orkestra needs you (budgets exhausted, a real decision), it stops and explains itself in plain language:

orkestra decisions     # what happened, what it means, what to try
orkestra approve       # picks the open decision, prompts you, done
orkestra resume

Pick models and effort per agent without touching TOML:

orkestra agents models                       # what you can choose
orkestra agents set claude --model sonnet
orkestra agents set antigravity --effort high

Supported agents

Agent Adapter Notes
Claude Code claude-code Default director; structured output
OpenAI Codex CLI codex-cli OS-level sandbox; effort tuning
Google Antigravity CLI (agy) antigravity-cli Consumer-account Google adapter; effort tuning
Google Gemini CLI gemini-cli API-key / Vertex / Enterprise auth only¹
Anything else external One small JSONL protocol, any language
Scripted fake fake Powers the demo, tests, offline mode

¹ Google moved individual-consumer OAuth to the Antigravity suite in June 2026, so antigravity-cli is the default Google adapter.

Two agents minimum, no upper bound, no fixed roles: a director agent (default Claude Code, configurable) plans and delegates from measured evidence — including to itself.

What you can rely on

Guarantee How
Your branches are never modified work happens on ork/* branches; orkestra merge is the only step that touches yours, and you run it
Agents can't approve their own work kernel-enforced implementer ≠ reviewer, across vendors
"Tests pass" claims mean nothing the kernel runs your acceptance commands and reads exit codes itself
No surprise costs per-agent token budgets, rate-limit-aware scheduling, live progress/cost line, everything bounded
Crashes lose nothing SQLite state + idempotent transitions; orkestra resume reconciles and continues
Secrets stay out of logs credential-shape redaction on everything persisted or exported
Your credentials are untouched agents sign in through their own official CLIs; Orkestra never reads token stores

Elevated modes exist, are loudly named (autonomy = "unsafe-full"), and are never defaults. Details: docs/SECURITY_MODEL.md.

How it works (the part for skeptics)

Most multi-agent tools hard-code roles or put an LLM in charge of everything. Orkestra separates powers: intelligence proposes, determinism disposes.

  • The director agent analyzes your spec, measures the available agents with objective probes, decomposes the work into a dependency graph, and proposes assignments — as schema-validated JSON, never free prose.
  • The deterministic kernel (plain Python, no LLM) validates every proposal against policy, owns all state, dispatches work, enforces review independence, runs verification gates, and integrates results.
  • Delegation is evidence-based: probe results and every task outcome land in a ledger; assignments re-rank as evidence accumulates. Scores without recorded evidence don't exist.
flowchart LR
    D[dispatch] --> A[agent works in<br/>isolated worktree]
    A --> C[kernel commits diff]
    C --> V{verification gates<br/>your commands}
    V -- fail --> R2[bounded retry / fallback agent]
    V -- pass --> R{independent review<br/>different agent}
    R -- changes requested --> A
    R -- approve --> I[no-ff merge to<br/>integration branch]
    I -- conflict --> A
flowchart TB
    subgraph you [You]
        CLI[orkestra CLI / TUI]
        SPEC[SPEC.md]
    end
    subgraph kernel [Deterministic kernel — no LLM]
        SCH[Scheduler + task DAG]
        POL[Policy engine]
        VER[Verification gates]
        DB[(SQLite state)]
    end
    DIR[Director agent]
    subgraph agents [Agent adapters]
        A1[claude-code]
        A2[codex-cli]
        A3[antigravity-cli]
        A4[external / fake]
    end
    SPEC --> DIR
    CLI --> SCH
    DIR -- schema-validated decisions --> POL --> SCH
    SCH <--> DB
    SCH --> A1 & A2 & A3 & A4
    VER --> SCH

More diagrams (lifecycle, capability discovery, human gates): docs/CONCEPTS.md and docs/architecture/ARCHITECTURE.md.

Verified vs. experimental

Verified — 300+ tests plus live cross-vendor runs with real Claude Code / Codex / Antigravity CLIs (including a gate-caught silent failure, automatic fallback repair, and cross-vendor review approvals), and dogfooding: Orkestra reviewed its own code, and that review's findings shipped as v0.1.1.

Experimental / limits — Antigravity's JSON output flag is undocumented upstream (adapter has a plain-text fallback); Gemini CLI is auth-limited by Google's consumer migration; the Docker sandbox covers external/fake agents only (vendor CLIs would need your credential stores mounted — refused, see ADR-0009); Windows untested. Providers' plan limits are yours: see docs/PROVIDERS.md, including a disclosed gray area in Antigravity's ToS.

Docs

Install · Quickstart · Concepts · Configuration · CLI · Troubleshooting · FAQ · Adapter protocol · Security model · Threat model · Roadmap

Contributing: CONTRIBUTING.md — kernel stays deterministic, no fixed-agent-count assumptions, evidence over self-report.

License

Apache-2.0 — LICENSE, NOTICE.

Claude is a trademark of Anthropic PBC; Codex and ChatGPT of OpenAI; Gemini and Antigravity of Google LLC. Orkestra is independent and not affiliated with or endorsed by any of them.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orkestra_runtime-0.3.0.tar.gz (255.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orkestra_runtime-0.3.0-py3-none-any.whl (117.5 kB view details)

Uploaded Python 3

File details

Details for the file orkestra_runtime-0.3.0.tar.gz.

File metadata

  • Download URL: orkestra_runtime-0.3.0.tar.gz
  • Upload date:
  • Size: 255.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for orkestra_runtime-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a83a8352c7acaacf8d6e63a9452b9d710de76680e52dee2ee052dd9b70655445
MD5 30ab8ea5bc7f61ec048ffcf0b30b4c75
BLAKE2b-256 e19ea905e412788691facb4016c02359b338cb629cf519142b8242b01830f9ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for orkestra_runtime-0.3.0.tar.gz:

Publisher: publish-to-pypi.yml on andyyaro/orkestra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file orkestra_runtime-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for orkestra_runtime-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 928a9cad69b9b07fae04864bed282a36b9839fd24cf46fba6e2813a32bf89fcb
MD5 b8c0002b1f759c7c4e1918328fb52e4d
BLAKE2b-256 744004a2bc38a1cc235612be4113559b9c55490e57ddc951fe83f9907ee018ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for orkestra_runtime-0.3.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on andyyaro/orkestra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page