Skip to main content
§ 01caesar · the orchestratorramp · 6 stops

Delegate coding tasks to external agent CLIs — safely.

One protocol, five providers, and a disposable git worktree between them and your repo.

macOS · Linux
curl -fsSL https://caesar.koumalabs.org/install | sh

not on npm — installs from a checkoutNode ≥ 22read the docs →read the source ↗

5
providers
16
CLI commands
10
MCP tools
6.3 s
workshop clone, CoW
0
SDK to integrate
§ 02What you gainwithout → with

What you gain, receipts included.

Without caesar: one agent at a time in your working tree, every CLI with its own mission format to relearn, the agent writing straight into your repository — and you take its word for what changed. Locked into one provider's tool and subscription.

workshop · copy-on-write6.3 s

975 MB of node_modules cloned in 6.3 s and 11 MB of disk — versus 15.0 s and 994 MB with a plain copy.

parallelismN tasks

max_parallel slots shared across processes; one workflow for five providers.

risk0 writes

Nothing reaches your repository before an explicit diff → apply; file changes are reconciled against git (changes_verified_by: "git"); writing in place is refused by default.

cost · flexibility5 quotas

Spend the quotas you already pay for, across five providers; pick the model per task or per role ([models], role.model); race providers on one objective and keep only the best diff.

method · the clone benchmark is measured in this repository (APFS copy-on-write); the rest is design, not marketing

§ 03how it worksprotocol → workshop → verdict

One protocol, a disposable workshop, and git as the judge.

Three ideas carried through the whole CLI — and a live view to follow them at work.

§ 01oacp

One protocol, not five integrations

OACP sits on the filesystem — a task directory, a JSON report, an event log. No SDK to install, no client library to keep in sync with five different CLIs.

Read the protocol →

surface
task dir · report.json · events.ndjson
sdk
none — plain files
channel
MCP return channel (--channel)
§ 02workshop

A disposable workshop

Every delegation gets its own disposable git worktree. Nothing touches your repository before an explicit diff → apply.

isolation
worktree · inplace · auto
prepare
[worktree] copy · link · setup
bench
6.3 s / 11 MB, copy-on-write
caesar · run
$ caesar run --agent codex --isolation worktree "Create a hello.txt file containing exactly OK"▞▚ caesar · run ──────────────────────────────────────────────────────────────────   start      agent "codex"   tool       shell — wc -c hello.txt && od -An -t x1 hello.txt (started)  » agent      I am creating the file with exactly two bytes, no trailing newline.   tool       shell — wc -c hello.txt && od -An -t x1 hello.txt (succeeded)  ~ file       created hello.txt Task t_680818a6 — status: succeeded (report "success" via "schema")  The hello.txt file was created with exactly the two bytes "OK", no trailing newline.Files modified (according to git)  ~ created hello.txtIsolated in a worktree: "caesar diff t_680818a6" to see the diff, "caesar apply t_680818a6" to integrate it.

Unedited output from caesar run.

§ 03verdict

The diff is the source of truth

What the agent declares it changed and what git diff actually observes are reconciled — the diff wins, never the agent's word alone.

reconcile
changes_verified_by: "git"
integrate
diff → apply, explicit
in-place
refused by default
caesar · diff → apply
$ caesar diff t_680818a6a92047a2b08bb904e46d8427diff --git a/hello.txt b/hello.txtnew file mode 100644index 0000000..a0aba93--- /dev/null+++ b/hello.txt@@ -0,0 +1 @@+OK\ No newline at end of file$ caesar apply t_680818a6a92047a2b08bb904e46d8427Task "t_680818a6a92047a2b08bb904e46d8427" applied to the main repository.

Unedited output from caesar diff, then caesar apply.

§ 04follow

Watch it work

A live view of every running delegation — the tool appears as soon as it starts, and what the agent says is displayed as it streams. Watching modifies nothing.

slots
max_parallel, shared across processes
follow
watch · status · logs
caesar · watch
▞▚ caesar · watch   1 active · max_parallel 4                             17:21:20 t_efb5914d codex        —            25s  inplace · write  Write three files a.txt, b.txt and c.txt, then run 'sleep 8 && ls -1'…   shell /bin/zsh -lc 'sleep 8 && ls -1' — 3s  ~ 3 file(s)  ·  11 event(s)q or Ctrl-C to quit — watching modifies nothing.

Unedited output from caesar watch.

§ 04Supported agentscodex · agy · opencode · copilot · claude

Five providers, one orchestrator.

AgentBinaryNotes
Codexcodexallowed by default — network opens only in write mode
Antigravity CLIagyallowed by default — open network
OpenCodeopencodeallowed by default — open network
GitHub Copilot CLIcopilotallowed by default — network controllable
Claude Codeclaudedenied by default — recursion guard
§ 05Quickstartinstall → init → doctor

From zero to the first diff.

Run the installer, then point caesar at the project you want to delegate tasks in.

Note caesar is not published on npm yet. The installer runs it from a checkout it manages for you — there is nothing to install as a project dependency.

Read the installation guide →

curl -fsSL https://caesar.koumalabs.org/install | sh
cd <your-project>
caesar init      # writes .caesar/config.toml + the prompts and skills
caesar doctor    # which agents are installed, allowed or not