Skip to content
~/benhattab
Back to work
Open sourceOpen source2025 — present

Orchestra

The operating system for AI coding agents

A Go CLI that drives several coding agents (Claude Code, OpenCode, Mimo…) behind one supervised interface. It routes each task to the best-suited agent, validates the result through build → lint → test, lets the agent fix its own failures, and keeps nothing without your explicit approval.

Go
single binary
MIT
open source
4
CI gates
Role

Author and maintainer — open source, MIT licensed

Stack
Go 1.22+CLITUIgit worktreesGitHub ActionsGoReleaserMIT
Links
The problem

I use several coding agents daily, and I kept doing by hand the thing none of them does: pick which one to run for a given task, verify the result compiles and passes tests before believing it, re-run when it breaks, and stop three agents from trampling each other in the same repository. The bottleneck was no longer code generation — it was supervision.

The approach

Orchestra starts from one principle: an agent is not done when it has answered, it is done when verification passes. So every run is followed by a user-defined build → lint → test loop. On failure the agent receives the error output and retries. What reaches the human has already been verified.

Parallelism runs on git worktrees. A large request is decomposed into steps; independent steps execute simultaneously, each in its own isolated worktree. No conflicts are possible, and the main working tree stays untouched until something is approved.

Nothing is written without a `y`. The diff is presented, the human decides. That constraint shaped the whole design — it is the reason the tool exists, not a safety flag bolted on afterwards.

Because it runs the same tasks across several agents, Orchestra can also compare them: a benchmark mode measures agents against each other on identical work, and every run's history is retained.

Architecture
  1. 01

    Router

    Tells a question apart from a coding task. Questions get a direct answer; tasks are routed to the best-suited agent.

    internal/engine

  2. 02

    Scheduler

    Decomposes a request into steps, identifies the independent ones and runs them in parallel inside isolated worktrees.

    internal/scheduler

  3. 03

    Validator

    Runs the supplied verification command (`--test`). On failure, feeds the output back to the agent for self-repair.

    build → lint → test

  4. 04

    Approval gate

    Shows the diff and waits for a `y`. Nothing touches the real repository before that confirmation.

    diff review

  5. 05

    TUI dashboard

    Full-screen view over agents, run history, benchmarks and chat.

    orchestra dashboard

  6. 06

    Distribution

    Prebuilt binaries via GoReleaser, one-line install script, `go install`, and GitHub Actions CI enforcing build, vet, test and gofmt.

    GoReleaser · Actions

Trade-offs

Written in Go

A tool that supervises coding agents must start instantly, ship as a single binary with no runtime, and manage dozens of concurrent processes effortlessly. Go answers all three. A Node or Python CLI would have forced an install step on my users and a far heavier concurrency story.

Git worktrees rather than containers

The usual answer for isolating agents that edit the same repository is Docker. Worktrees cost a few hundred milliseconds instead of several seconds, share git history, and require no daemon on the user's machine. For write isolation — the only real requirement here — that is the right level of abstraction.

Highlights
  • Automatically routes tasks to the best-suited agent, and answers plain questions directly
  • Validates every result through build → lint → test, with agent self-repair on failure
  • Decomposes large requests and runs independent steps in parallel across isolated git worktrees
  • Nothing is kept without explicit human approval of the diff
  • Benchmark mode to compare agents against each other on identical work
  • GitHub Actions CI enforcing build, go vet, go test and gofmt on every push