release.mp4
Agent Teams reinvented for collaborative coding across multiple coding-agent backends (Claude Code, Codex, and OpenCode), with full code transparency.
- Developers running multi-agent coding teams in tmux who want every inter-agent message persisted and auditable.
- Teams mixing
claude,codex, andopencodemembers in one fleet. - Operators who want a single-file SQLite broker with no server to run.
CAFleet works with three coding agents: claude (Claude Code), codex (OpenAI Codex CLI), and opencode.
Install the plugin in whichever one you use — the broker CLI is shared.
Use your favorite tool to install skills (for example, GitHub CLI gh skill, vercel skills, or the marketplace of each coding agent).
gh skill install himkt/cafleet --agent claude-code
gh skill install himkt/cafleet --agent codex
gh skill install himkt/cafleet --agent opencode/plugin marketplace add himkt/cafleet
/plugin install cafleet@cafleet
codex plugin marketplace add himkt/cafleetuv tool install cafleet # or: pip install cafleet
cafleet db init # apply schema migrations (idempotent; rerun after upgrades)The default database is ~/.local/share/cafleet/cafleet.db. Override with CAFLEET_DATABASE_URL (use an absolute path — SQLAlchemy does not expand ~ in SQLite URLs).
Per-coding-agent config (Claude permissions.allow, Codex config.toml + rules, opencode) lives on the Configure page: https://himkt.github.io/cafleet/get-started/configure/.
Provide the following prompt to Claude Code or Codex to see how it works.
I want to see how cafleet works.
Please create a new team with two members using cafleet and let them ping-pong each other.
After the demonstration, please shutdown the team.
CAFleet provides the builtin skills for Spec Driven Development (SDD). We're using CAFleet to develop CAFleet!
Invoke the cafleet-design-doc-create skill with a one-line request, e.g.:
I want to create a simple TUI calculator. Please create a design doc using the CAFleet skill.
See your coding-agent's skill documentation for the literal invocation syntax (Claude Code's /skills, codex's /skills, opencode's skill discovery).
You can see the existing design docs on design-docs/, which are actually created by the skills.
CAFleet ships a unified cafleet CLI and an admin WebUI on top of a single-file SQLite database. Fleets partition agents into isolated namespaces; the CLI accesses SQLite directly through a shared broker module, so no HTTP server is required for agent operations. Members spawn as tmux panes running any of the three coding-agent backends, optionally pinned to a specific LLM via cafleet member create --model <m> (e.g. sonnet, gpt-5.4-mini, anthropic/claude-sonnet-4-6, opencode/big-pickle). Full architecture documentation is published at https://himkt.github.io/cafleet/concepts/overview/.
A Director supervises its team on a periodic heartbeat supplied by cafleet monitor — a per-fleet scan → ping → sleep loop that the fleet's dedicated monitoring member runs as a background task in its own pane. The loop wakes only the monitoring member; that wake nudge does not lead with Esc, because it targets the monitoring member's own pane, which is never parked on a permission prompt. The Esc safeguard instead lives where a keystroke's target may be on a prompt: the broker's message-delivery inline preview (every inbound message send / broadcast / member nudge, including to the Director) and member ping each press Escape first, so the trailing Enter dismisses a pending permission prompt instead of blindly confirming it. The root Director and ordinary members are never pinged by the loop; the monitoring member instead watches the Director's pane and, when the team stalls, re-engages it on demand via cafleet member nudge — which persists an ACKable broker task and fires that hardened inline preview (the broker's inline-preview keystroke also wakes the Director on every inbound message send). Because the loop is just a backgrounded command, the heartbeat works on any backend. Spawn the monitoring member first with cafleet member create --fleet-id <id> --agent-id <director> --name monitor --description "…" --role monitor --model sonnet --prompt-file <…>; it starts the loop via cafleet monitor start --fleet-id <id> (monitor status / monitor config round out the surface), stops it by stopping that background task, and fleet delete makes the loop self-terminate. See https://himkt.github.io/cafleet/concepts/monitoring/.
Build, test, and project-structure instructions, plus the design-doc-driven contribution flow, are published at https://himkt.github.io/cafleet/get-started/contributing/.