[info]kapelle is in private preview. The npm release is coming soon.

Many agents, one score.
You are the Kapellmeister.

kapelle is a terminal workspace for a team of coding agents. They play. You direct.

coming soon
npm · coming soon$ npm install -g kapelle
pnpm · coming soon$ pnpm add -g kapelle
bun · coming soon$ bun add -g kapelle
from source · needs repository access$ git clone https://github.com/EdwardLiuyc/kapelle.git
$ cd kapelle && npm install && npm link
you@kapelle
role
the stage, not an agent
agents
pi, claude, copilot, opencode, …
protocol
ACP over stdio
isolation
a worktree per agent
keys
never touched
runtime
Node ≥ 24, no build step
platform
macOS, Linux, WSL
license
MIT

01 why kapelle

An ensemble,
not another agent.

A Kapelle is the ensemble a Kapellmeister directs: the players, not the conductor. That is the right way round. kapelle is the stage. The agents are the players. The baton stays in your hand.

Run pi, Claude Code, Copilot, opencode and more side by side on one repository. Each one works in its own git worktree, on its own branch. You choose who plays what, answer what they ask, and merge when the work is right.

[0] you

You direct

Pick who plays. Answer what they ask. Nothing lands in your checkout until you take it.

[1] agents

Agents play

Different vendors in one room. Each logs in by itself. kapelle never touches a key.

[2] worktrees

Each its own part

One worktree and one branch per agent. Your own checkout stays yours.

02 orchestrator [ coming soon ]

Hand the loop to a lead.
Keep every decision.

Most issues run the same loop: plan, build, review, open the PR, answer the bot reviews, hand over. Give the loop to one agent. It hands the work to the others in the room, reads their reports, and stops each time a choice is yours.

You write the loop once, as a Markdown recipe in your repository. The same lead serves any project.

Every message in plain sight
The lead talks to the others only through kapelle, in your timeline: po → dev. It does none of the work itself.
A fence around it
A stop button. A cap on the turns it may give out. A bell when it waits for you.
A decision log
Every choice it put to you, and your answer, kept with the room.

03 worktrees

Every agent plays
its own role.

Each agent gets a git worktree and a branch. Parallel work never collides, and your uncommitted changes never reach an agent. Read each agent's diff in the side pane. Fast-forward one agent to another, or take the work into your checkout.

~/src/kapellezsh
$ git branch --list 'kapelle/*'
  kapelle/room-…-q8ac/p-1ti0u5ix  # po
  kapelle/room-…-q8ac/p-myzvyp6p  # dev
  kapelle/room-…-q8ac/p-t798yhxc  # rev

04 ask mode

You answer what they ask.

In ask mode, an agent shows you the diff before it writes. Each answer has a number. A key only moves the cursor, and only Enter answers. Deny comes first, so a stray Enter says no. A question that waits off screen rings the bell and marks its room.

05 daemon

Rooms always stay.

One background daemon holds every room for all your repositories. Come back tomorrow: the agents, their branches and the whole history are still there.

~/src/kapellezsh
$ kapelle daemon start
$ kapelle daemon add .
$ kapelle chat new --agent pi
# later, from any terminal
$ kapelle chat attach <roomId>

06 runs

Many tasks at once.

A run hands out many tasks from one file. Each has its own prompt, agent and mode, and ends with a result. kapelle commits each task's work on its own branch. You merge when you are ready.

~/src/kapellezsh
$ kapelle run --file tasks.json --detach
$ kapelle ps
$ kapelle merge <runId> --squash

07 agents

Agents speak ACP.

ACP, the Agent Client Protocol, is one way to talk to every agent. Pick one with --agent, or bring your own with --cmd.

--agentwhat it runstested
pipi, the defaultyes
claudeClaude Code, through its ACP adapteryes
copilotGitHub Copilot CLIyes
opencodeopencodeyes
geminiGemini CLInot yet
ompoh-my-pinot yet

08 limits

What kapelle does not do.

kapelle stays small on purpose. It is the stage, not another agent. Here is where its edges are.

No model of its own

kapelle runs no model loop and edits no file itself. The agents do the work.

No sandbox

A mode is a filter. An agent that edits through its own shell does not ask, and pi and opencode never ask. kapelle tells you so. Use a container if you need a wall.

No keys

Each agent logs in by itself. kapelle never reads, stores or sends an API key.

No back channel

Agents never talk to each other directly. Every message goes through your timeline.

No merge behind your back

Work stays on the agents' branches until you take it.

No cloud

Local first. One person, one machine. Nothing goes into your repository.

09 get involved

Get involved.

./guideInstall, first room, and every command.
./github soonSource, issues and the plan, when the repository opens.
./changelog soonWhat changed in each release.