Orchestration for AI coding agents

Plan in the evening. Merge in the morning.

Ballet runs coding agents through the process a good team follows. You plan with a planner agent and approve the plan; separate agent sessions implement, review, verify and merge it ticket by ticket, in dependency order, while you sleep. You are asked only what agents can't decide safely.

  • Self-hosted
  • Claude Code and opencode
  • Your keys, your budgets
  • Many organizations, one platform
  • Laptop, VMs or Kubernetes

One night with Ballet

What an unattended night looks like on a project board.

  1. You approve the plan: 8 tickets, 2 epics, with dependencies.

  2. WEB-12 starts. Implement, then a fresh session reviews it and sends it back once.

  3. WEB-14 asks about an API change. Only it waits; the other tickets keep going.

  4. WEB-12 is verified and merged. Docs and decisions are written back.

  5. The daily budget is reached. Work waits instead of spending.

  6. Digest: 6 done, 6 merged, 1 question. You answer it over coffee.

An illustrative example: the times and numbers are made up; the behavior is Ballet's.

How it works

You set direction. Agents do the work.

Humans are present for planning and for the questions that matter. Everything in between is a pipeline that runs on its own and explains itself.

Plan with the planner

Describe what you want. The planner reads your tickets and knowledge base and proposes epics and tickets with acceptance criteria and dependencies, as a changeset. Nothing changes until you approve it, in whole or in part.

A planner changeset with checkboxes per operation and Approve buttons

Agents run the pipeline

Ready tickets start in dependency order, in parallel. Each stage is a fresh session on an agent built from your devcontainer, on the ticket's branch, with your skills. Watch any session live, and message or interrupt it.

The project board with tickets in Backlog and Done

Answer what only you can

The planner answers from the knowledge base when it can. The rest lands in one inbox. Answer within minutes and it goes into the running session; answer in the morning and the session resumes where it parked.

The inbox with a blocking question and an answer form

Read the digest

What was done, merged and failed, what waits and why, and what it cost in tokens. Then confirm or reject the assumptions agents made.

The project digest with counts of done and merged tickets, sessions, tokens and questions
Why Ballet

An orchestrator of process, not another agent.

Agents are capable implementers now. What they lack is context and coordination. Ballet supplies both, and keeps the guarantees a team relies on.

Plans, not prompts

Work starts from a plan you approved: tickets with acceptance criteria and a dependency graph. Ballet runs whatever can run in parallel and holds work at the sync points.

Most agents start from a single issue or prompt.

No agent grades its own work

Implement, review, verify and integrate are separate sessions in fresh workspaces. They share artifacts and reports, never transcripts, so a reviewer sees what's really there.

Elsewhere, review is usually left to you.

Questions without babysitting

Agents ask only what's risky. Answer online and the session continues with its whole context; answer later and it resumes from where it parked. Every answer becomes a recorded decision.

No terminal to watch, no stalled night.

Knowledge that grows

A ticket isn't done until docs are updated, decisions recorded and debt filed in the organization's knowledge base. Every new session starts from that onboarding bundle, not from zero.

Projects get easier over time, not harder.

Your agents, your infrastructure

Self-hosted, with Claude Code or opencode per stage. Sessions run on a fleet of agents built from each project's devcontainer: a laptop, VMs or N containers on Kubernetes. No Docker socket needed.

No vendor sandbox, no lock-in to one agent.

Safe to leave alone

Token budgets per ticket, project and organization, enforced at Ballet's LLM gateway. Pause and kill switches, retries, stuck detection, durable state and a morning digest.

It stops before it overspends, and it explains itself.

The default pipeline

Four sessions, one ticket.

Every project configures its own stages, skills, models and gates; this is the template it starts from. Your process (TDD, docs, GitFlow) comes from your skills, not from Ballet.

Implementwrites code, tests and docs on the ticket branch
Reviewa fresh session reads the diff and the ticket
Verifychecks the acceptance criteria against the build
Integratemerges through GitHub when CI and policy allow
Changes requested → back to Implement Verification failed → back to Implement Conflict or red CI → back to Implement Iteration limit → ask a human
Compare

Where Ballet fits.

Hosted agents run one agent per issue in a vendor's cloud. Session managers run many agents on your laptop, under your eye. Ballet runs a team's process on your servers, unattended.

Capability Ballet Hosted agents
Devin, Copilot agent, Codex
Session managers
Conductor, Claude Squad, Vibe Kanban
Plan from a conversation, approved by a human✓ Changesets——
Dependency-ordered parallel execution✓—Manual
Separate review and verify sessions✓— (you review the PR)— (you review the diff)
Questions answered live, or resumed later✓ Inbox, park and resumeChat with the agentInteractive only
Knowledge written back on every ticket✓Vendor knowledge features—
Runs unattended on your own servers✓Vendor cloudYour laptop
Budgets and a kill switch✓Plan limits—
Organizations isolated from each other✓Teams and organizations—
Agent runtimesClaude Code, opencodeThe vendor'sMany CLIs

Typical of each group as of October 2026; individual products vary. Read the full comparison and its sources →

Honestly

Is Ballet for you?

A good fit if you…

  • hand off whole tickets, not pair on lines of code;
  • want reviews, tests and docs enforced, not hoped for;
  • host several organizations or teams on one platform and must keep them apart;
  • want agents on your infrastructure, with your keys and limits.

Look elsewhere if you…

  • want an agent in your editor: use Claude Code, Cursor or Copilot directly;
  • want zero setup: a hosted agent starts faster;
  • need a runtime other than Claude Code or opencode, or pull-request automation beyond GitHub, today.

Ballet is young: its first version targets one unattended night of work on a real project.

See a ticket go from plan to merge.

The quickstart runs Ballet on your machine with a fake model and a demo repository. No API key, nothing leaves your machine.

Start the quickstart
git clone https://github.com/denyszorinets/ballet.git
cd ballet
BALLET_FAKE_LLM=1 make run
# open http://localhost:8080