Crash-safe by construction
Every state change is written to an append-only WAL before it counts. A dying process is a pause, not corruption — the next command replays the log and rebuilds the exact view.
← home · features
brat is not a model and it is not a SaaS. It is the orchestration layer — an event log, lock leases, bounded timeouts, and a merge queue — plus the adapters to drive the coding agents that do the real work.
7
coding engines wrapped
6
roles, one vocabulary
0
SaaS, accounts, telemetry
MIT
licensed, in Rust
Every state change is written to an append-only WAL before it counts. A dying process is a pause, not corruption — the next command replays the log and rebuilds the exact view.
Seven adapters ship in the box: Claude Code, Aider, OpenCode, Codex, Continue, Gemini, and GitHub Copilot. Switch engines by changing one line in .brat/config.toml.
Each agent gets its own materialized data directory. Two of them can never race the same key. There is no shared mutable state to corrupt.
Resource coordination uses time-limited leases. A crashed session never leaves a zombie lock behind — the Deacon sweeps it up automatically.
All engine operations are time-bounded. A hung agent releases its lease instead of stalling the whole convoy.
Passing branches land through your existing CI in order, under a policy you configure once: rebase, squash, or merge. Not a replacement for CI — a queue on top of it.
Every task, session, lock, and merge is an immutable event in refs/grite/wal. Replay it to see exactly what each agent did, when, and why.
Every command is a complete transaction against the WAL. The bratd daemon is optional; it auto-starts when needed and idle-shuts-down after fifteen minutes.
One Rust binary under MIT. No account, no control plane, no phone-home. State lives in your repo, in your git refs, on your machine.
go deeper
Open source under MIT. Rust 1.75+. Sits on top of Gritee. Runs anywhere you can run cargo.