Work management for the delegation chain
rd tracks work items as signed nostr events.
Your local append-only event log is the source of truth —
relays are replaceable caches for sync, never the authority.
No database, no SaaS, works fully offline.
See it run
These play back actual terminal sessions from the test suite. Hit play, or clone and run them yourself.
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> | Initialize a project — local signed-event log + a nostr board |
rd create "..." --type task --priority p1 | Create a work item (returns item ID when piped) |
rd ready | What needs attention now (bare IDs when piped) |
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 done <id> --reason "..." | Close with reason — records to the audit trail |
rd invite | Generate a one-use invite token for this project |
rd join <token> | Join a project via invite token (auto-syncs items) |
rd dep add <id> <blocker-id> | Wire a dependency (works across projects you own) |
rd gate <id> --gate-type design | Escalate to a human for a decision |
rd update <id> --status <status> | Change status, priority, ETA, or context |
Agent integration
Drop one of these into your project and Claude Code starts tracking work immediately.
No MCP server, no special integration — just rd on PATH.
Paste this into your project's CLAUDE.md. Claude reads it at session start
and uses rd like any other CLI tool.
Download SKILL.md into your project's .claude/skills/rd/ directory.
Claude Code discovers it automatically and gains full rd command knowledge.
Spawn parallel Claude Code agents that share a work queue. Each agent gets its own identity via invite token. The filesystem handles isolation — no env vars needed.
Agent hits a decision point it can't resolve. Posts a gate. Human approves from their terminal. No dashboard, no ticket system — just signed nostr events.
Every actor signs with its own secp256k1 key under $RD_HOME.
$RD_ACTOR selects which key signs — the owner and a named
agent on the same host sign with distinct keys and are attributed distinctly.
There's no separate agent API. rd create, rd claim, rd done
work the same for a human at a terminal and a Claude session reading CLAUDE.md.
Output is pipe-friendly — bare IDs when piped, tables when interactive.
rd operations publish signed nostr events — a 30301 board,
30302 item cards, NIP-34 status events. The events are the integration surface:
any nostr-aware tool can read them directly from a relay, no rd-specific
API required.
Scale as you grow
Same tool at every level. No migration, no import/export. Each tier adds capability without changing the commands you already know.
Free · Local
No account. No server. Just rd init and go.
Free · Local
One $RD_HOME owner key signs across every project. Each project keeps its own local log and board.
Free · Hosted or Git
for / by routingOwner runs rd invite. Teammate runs rd join <token>. Items auto-sync. No key exchange, no manual pull.
Hosted · Contact us
Owner-rooted, revocable role-grants. Every event signed and permanent. Bridge to existing tools.
Nostr-native, no server
Ready isn't a project management app with a backend. rd is an operation set —
a structured vocabulary of commands that maps onto signed nostr events any relay or client can read.
When you run rd create, rd builds a signed nostr item card (kind 30302) and a
NIP-34 status event, appends both to your local append-only signed-event log, and publishes them to your
relays. rd claim appends another signed status event with a causal link back to the card.
Item state is a projection of the signed-event log — there's no separate database.
Each project is a nostr board (kind 30301). The operation set below is the rd command vocabulary that maps onto that event schema — every operation is a signed event, not a campfire-specific message format.
Each project is its own nostr board with its own local, authoritative signed-event log. Relays sync boards between machines — a self-hosted write-allowlist admits only owner-granted keys; reads stay open. Work stays local — the relay is a replaceable cache, never the source of truth.
There's nothing to compact. The append-only signed-event log is the permanent audit trail. Every create, claim, status change, delegation, and gate is a signed event, appended once, kept forever.
Ready layers a work-management vocabulary on public nostr NIPs — addressable boards and cards, NIP-34 status events, NIP-22 comments, NIP-77 Negentropy sync. No custom protocol to implement; any nostr client already speaks the transport.
Get started
Nostr-native, self-contained binary — no separate server, no cf required.