← home · compare
brat vs AutoGen
Multi-agent runtime (Python)
AutoGen and brat sound like they overlap but they're aimed at different problems. AutoGen is for designing multi-agent conversational graphs in Python — agents debating, planning, calling tools, in-process. brat is for running CLI-shaped coding agents (Claude Code, Aider, Codex) on a real repo, in parallel, with crash-safe coordination state. You can absolutely use both. Most people will pick one.
| feature | brat | AutoGen | winner |
|---|---|---|---|
| Primary shape | Rust CLI driving external coding-agent binaries | Python library for in-process agent graphs | tie |
| Target agents | Claude Code, Aider, OpenCode, Codex, Continue, Gemini, gh copilot | Any LLM you wire up via Python | tie |
| State model | Append-only WAL in refs/grite/*; crash-replayable | In-memory Python objects unless you persist them yourself | brat |
| Concurrency primitive | Convoys, tasks, witness sessions, TTL locks | Async Python and agent message routing | brat |
| Merge queue | Refinery role with configurable policy | Build your own | brat |
| Install | cargo install or one-line curl | pip install | tie |
| Best for | Coding-agent fleets on a single repo | Designing multi-agent reasoning patterns | tie |
| Runtime | CLI + optional bratd HTTP daemon | Long-running Python process | brat |
pick brat when
- ▸Your agents are CLI binaries (claude, aider, codex) operating on a real git repo
- ▸You need crash-safety: an append-only event log that survives process death
- ▸You want a single Rust CLI rather than a Python application stack
- ▸You care about merge queues, lock leases, and bounded session timeouts
- ▸You want to drive a fleet of coding agents from one machine without writing the supervisor yourself
pick AutoGen when
- ▸You're composing multi-agent conversations in Python and the agents are calling functions, not editing files
- ▸You're prototyping agent design patterns rather than running production fleets
- ▸You're already deep in the Microsoft / Autogen Studio ecosystem
- ▸You want first-class agent-to-agent message passing as a primitive
still deciding?
These are not zero-sum. Run brat for the agent fleet on your main repo, keep AutoGen for what it's already good at, and let the tools earn the work they do best.