🐰

Rabbit

GoConnectRPCKafkaPostgreSQL

Rabbit is my sprint-planning and task coordination hub — the one place that knows what I’m working on across every repo, instead of scattered TODO files and half-remembered plans.

Sprints live as YAML I can hand-edit or sync from the database, and every ticket carries a repo field pointing at the project it belongs to. Designs capture a spec with acceptance criteria and spawn one ticket per criterion; dependencies between tickets are validated (same project, no cycles) so the planning data stays trustworthy enough to build tooling on. A Kafka worker keeps state in sync across services, mirrors ticket bodies to markdown, and promotes approved design docs from Narwhal straight into Rabbit designs.

Rabbit is my sprint-planning and task coordination hub — the one place that knows what I’m working on across every repo in my dev ecosystem. I wanted a single source of truth for projects, sprints, tickets, and design docs instead of scattered TODO files and half-remembered plans, and I wanted that source of truth to be something my tools (and Claude Code sessions) could read and write through a real API, not just a wiki page.

Sprints live as YAML files I can hand-edit or sync from the database, and each ticket carries a repo field pointing at whichever project it actually belongs to — beaver, narwhal, joel.holmes.haus, or Rabbit itself. Designs let me capture a spec with acceptance criteria and spawn one ticket per criterion instead of typing them out by hand. Dependencies between tickets are validated (same project, no self-reference, no cycles) so the planning data stays trustworthy enough to build tooling on top of.

Rabbit also listens: a Kafka worker keeps ticket/sprint/design state in sync across services, mirrors ticket bodies out to markdown files, and promotes approved design docs from narwhal straight into Rabbit designs. It’s the coordination layer underneath everything else I build.

Documentation