Work management for the delegation chain
rd tracks work items in a campfire —
the same protocol your agents already coordinate on.
No database, no SaaS, no sync. The campfire is the backend.
The lifecycle
Every work item follows the same three-step lifecycle. Humans and agents use the same commands.
Every item has for (who needs the outcome) and by (who's doing it). Delegation is an act, not an assumption.
Named views filter by who you are. rd ready shows what's actionable. Priority drives ETA — P0 is now, P3 is 72 hours.
rd init --name <project> | Create a work campfire with convention declarations |
rd create --title "..." --type task --priority p1 | Create a work item |
rd ready | What needs attention now |
rd list [--status ...] [--by ...] [--all] | List items with filters |
rd show <id> | Item details + audit trail |
rd claim <id> | Accept work, become the performer |
rd delegate <id> --to <identity> | Assign to a person, agent, or automaton |
rd close <id> --reason "..." | Close with reason (done, cancelled, or failed) |
rd update <id> --status <status> | Change status, priority, ETA, or context |
Agent integration
Add rd to your project's CLAUDE.md and Claude Code will
use it to track work, check what's ready, and close items when done.
That's it. Claude Code reads CLAUDE.md at session start, discovers rd on PATH,
and uses it like any other CLI tool. No MCP server configuration, no special integration.
Download SKILL.md into your project's .claude/skills/rd/ directory.
Claude Code will discover it automatically and gain full rd command knowledge —
creating items, claiming work, closing with reasons, querying views.
There's no separate agent API. rd create, rd claim, rd close
work the same for a human at a terminal and a Claude session reading CLAUDE.md.
For agents that speak MCP, campfire itself is the integration point.
rd operations are campfire convention messages —
any MCP-connected agent can read and write them.
From solo to portfolio
Start with one project. Add more when you need them. Registration is optional — every project works standalone.
One command. Your project gets a campfire that stores all work items locally.
rd init creates a campfire at .campfire/root and publishes
12 convention operation declarations. These declarations make the campfire self-describing —
any agent can discover what operations are available by reading the campfire.
Register projects under an org home. They discover each other. Work stays in each project's campfire.
rd register --org acme creates a home campfire and a ready namespace under it.
Subsequent projects in the same org auto-discover the home via your ~/.campfire/config.json.
Each project keeps its own campfire — the home just links them for discovery.
Operators delegate to agents and humans. The attention engine routes work to whoever's doing it.
Built on campfire
Ready isn't a project management app. It's a convention — a structured vocabulary of operations that any campfire can speak.
When you run rd create, Ready posts a work:create message to your project's campfire
with a structured payload. rd claim posts work:claim with a causal link to the create message.
State is derived from the message log — there's no separate database.
Convention operations are declared in the campfire itself. When rd init runs,
it publishes 12 convention:operation declarations that describe every operation,
its arguments, and its constraints. Any agent reading the campfire knows what's possible.
Projects are independent campfires. An org home links them for discovery. Names make them addressable. Work stays local — the home is just a registry, not a database.
Campfires compact old messages to stay readable, but Ready marks structural events as non-compactable. Creates, closes, blocks, and gates survive forever. Status changes and claims compact after the item closes.
Ready is one convention on a protocol designed for many. Campfire handles identity, encryption, transport, and federation. Ready adds work management semantics on top.
Get started
Self-contained binary. The campfire protocol is built in — no cf required.