cafleet
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
🛰️ Agent Teams reinvented for collaborative coding supporting Claude Code and Codex, with full code transparency
CAFleet
A message broker and agent registry for coding agents — a Claude Code plugin plus a local broker CLI.
CAFleet is a local-only tool. It runs on a single developer machine without authentication. Do not expose the broker on a shared network unless you accept that every listener can see and act within every session.
Install
Install the plugin in Claude Code
/plugin marketplace add himkt/cafleet
/plugin install cafleet@himkt-cafleet
This adds 11 plugin-packaged skills under the cafleet namespace: /cafleet:cafleet, /cafleet:agent-team-monitoring, /cafleet:agent-team-supervision, /cafleet:design-doc, /cafleet:design-doc-create, /cafleet:design-doc-execute, /cafleet:design-doc-interview, /cafleet:create-figure, /cafleet:my-slidev, /cafleet:research-presentation, /cafleet:research-report. Run /help in Claude Code to see them.
Install the plugin in Codex
codex plugin marketplace add himkt/cafleet
Then complete the in-UI install when prompted by codex. The same 11 plugin-packaged skills (cafleet, agent-team-monitoring, agent-team-supervision, design-doc, design-doc-create, design-doc-execute, design-doc-interview, create-figure, my-slidev, research-presentation, research-report) land in Codex from the shared skills/ tree.
Install the broker CLI (required for the plugin to function)
uv tool install cafleet # or: pip install cafleet
cafleet db init # apply schema migrations (idempotent; rerun after upgrades)
The default database is ~/.local/share/cafleet/registry.db. Override with CAFLEET_DATABASE_URL (use an absolute path — SQLAlchemy does not expand ~ in SQLite URLs).
Try it
In any tmux session, paste this into Claude Code:
/cafleet:design-doc-create I want to create a simple TUI calculator
Codex:
$cafleet:design-doc-create I want to create a simple TUI calculator
Claude (the Director) bootstraps a CAFleet session, spawns a Drafter and a Reviewer in adjacent tmux panes, drives the clarification → draft → review loop through the message broker, and lands a polished design doc at design-docs/my-feature/design-doc.md.
Want more? See skills/cafleet/SKILL.md for the raw broker primitives and skills/design-doc-create/SKILL.md for the orchestration this example uses.
CLI cheatsheet
| Command group | One-line purpose |
|---|---|
cafleet db init |
Apply schema migrations (idempotent; rerun after upgrades) |
cafleet session create [--coding-agent {claude,codex}] |
Create a session; declare the root Director's coding-agent backend (default claude) |
cafleet session * |
List / show / delete sessions |
cafleet agent * |
Register / deregister / list / show agents |
cafleet message * |
Send / broadcast / poll / ack / cancel / show messages |
cafleet member create [--coding-agent {claude,codex}] |
Spawn a member pane running claude (default) or codex |
cafleet member * |
Delete / list / capture / send-input / exec / ping member panes (Director only) |
cafleet server |
Start the admin WebUI on 127.0.0.1:8000 |
cafleet doctor |
Print the calling pane's tmux identifiers |
CLI reference (per-command sections for
session,member,doctor,server;agent/message/db initcovered via the option-source table andcafleet <cmd> --help): docs/spec/cli-options.md. Message envelope shape (compact rendered +--fulltyped-column): docs/spec/message-envelope.md.
Notable flags
| Flag / variable | Where | One-line purpose |
|---|---|---|
--pretty |
global, before subcommand | Switch JSON output from the compact default to indented (json.dumps(..., indent=2)). Pair with --json. |
--quiet |
message send / message ack / member ping |
Emit only the new task id (8-char prefix); silence the rest of the echo. |
--full |
message * / agent list / agent show |
Disable body / envelope / agent-card truncation; emit the full typed-column shape. |
--activity |
member list |
Add per-member last_sent / last_recv / last_ack / idle columns aggregated from tasks. |
--lines / --tail / --ansi / --no-ansi |
member capture |
Default --lines 30 (was 80); --tail is an alias for --lines; --no-ansi (default) strips ANSI escapes. |
CAFLEET_MAX_TEXT_LEN |
env var | Body-truncation codepoint limit (default 200). See "Message body truncation" below. |
Coding agents
cafleet supports two coding-agent binaries for member panes: claude (Claude Code) and codex (OpenAI Codex CLI). Pass --coding-agent {claude,codex} on cafleet session create (operator-declared metadata for the root Director) and cafleet member create (selects the spawn-command builder and records the placement). The default is claude, so existing invocations are unchanged. A single Director may spawn both claude and codex members in the same session. Operational details for codex members — including the codex CLI version pin and verification recipe — live in docs/codex-members.md.
[!IMPORTANT]
Codex members need the cafleet DB directory to be writable from inside the codex sandbox. Add it tosandbox_workspace_write.writable_rootsin anyconfig.tomlcodex reads (e.g.~/.codex/config.toml):[sandbox_workspace_write] writable_roots = ["/home/<you>/.local/share/cafleet"]Use the absolute path matching
CAFLEET_DATABASE_URLor the default XDG location.
Message body truncation
cafleet message {send,poll,ack,cancel,show} truncate the message text body to the first CAFLEET_MAX_TEXT_LEN Unicode codepoints (default 200) plus a single … codepoint suffix in both text and --json output by default. This collapses per-poll token cost for inbox-polling agents whose bodies typically run several hundred characters. Pass --full (per-subcommand option, placed after the subcommand name) to restore the un-truncated body and the full typed-column envelope. Empty bodies and bodies whose codepoint length is at most CAFLEET_MAX_TEXT_LEN pass through unchanged with no marker. cafleet message broadcast is different — it returns a broadcast_summary task whose text is a generated summary string (e.g. Broadcast sent to N recipients), not the original body, so its summary always emits in full. The --full flag is preserved on message broadcast for surface consistency but is a no-op. The /ui/api/* WebUI responses are not truncated. See docs/spec/cli-options.md § Message Body Truncation and docs/spec/message-envelope.md for the full rendering rules.
Architecture
CAFleet ships a unified cafleet CLI and an admin WebUI on top of a single-file SQLite database. Sessions partition agents into isolated namespaces; the CLI accesses SQLite directly through a shared broker module, so no HTTP server is required for agent operations. See ARCHITECTURE.md for the full design.
Project structure
| Top-level entry | Purpose |
|---|---|
cafleet/ |
The cafleet Python package (FastAPI + SQLAlchemy + Alembic + click). |
admin/ |
Admin WebUI SPA (Vite + React + TypeScript + Tailwind CSS). |
skills/ |
Plugin skills shared by the Claude Code and Codex manifests. |
package.json + bun.lock (repo root) |
Bun toolchain manifests for the Slidev + agent-browser tools used in the repo. Driven via mise //:bun-install / mise //:slidev <deck>; node_modules/ is gitignored. |
design-docs/ |
Numbered design documents (NNNNNNN-<slug>/design-doc.md). |
docs/ |
CLI reference, message envelope, and other operator-facing docs. |
Development
Clone the repo and use mise for all common tasks:
git clone https://github.com/himkt/cafleet.git
cd cafleet
mise //:uv-sync
mise //cafleet:install # editable uv tool install of the cafleet CLI
cafleet db init # apply schema migrations (idempotent; rerun after upgrades)
mise //cafleet:lint # ruff check + ruff format --check
mise //cafleet:format # ruff format
mise //cafleet:typecheck # ty
mise //cafleet:test # pytest
mise //admin:build # build the WebUI (required before /ui/ is served)
mise //admin:dev # WebUI dev server (Vite)
License
MIT
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi