
roadkeep-gui
roadkeep keeps one backlog honest; this reads all of them at once. It finds every governed checkout on the machine, shows what each one has shipped and still owes, and files or ships a line without leaving the window, always through the roadkeep command rather than around it. Hand a task to Claude Code and the session is started, claimed and shown as it works.

Public numbers
- GitHub stars
- 0
- Release downloads
- 5
Public numbers from GitHub and PyPI, as of 2026-10-20. The site is rebuilt daily.
Install
What comes next
From the product's own docs/ROADMAP.md at 09496d1.
The agent surface (handing one task to Claude Code)
- Designedclosing the window kills the session it was running, and reopening offers no way back to it
- Designeda line the quit left claimed reads as another worker's, so the window will not hand it back
The shell (an executable now, a service later)
- Partialthe executable is unsigned, so Windows tells a person the app is untrusted before it opens
Recently shipped
All 301 entries →- RG304 · b8ed6aaEnter in a session's reply box never sends it, so every answer takes a trip to the button
Enter sends a session's reply through the button's own send, Shift+Enter breaks the line, and a composing or held Enter starts no second turn (design recorded in
packages/ui/src/Session.tsx). - RG307 · 4287670the app has no public page, so a release is reachable only by somebody who already knows the repository
A prerendered site in site/ with a Markdown twin per route, every count read from the source at build time, and a Pages deploy that runs only when started.
- RG303 · 3598701a reply typed into a session is never drawn in its stream, so what was asked of it is gone once sent
A reply typed into a session is kept as a line of its stream, drawn as the person's own words wherever that session is read (design recorded in
packages/core/src/session.ts). - RG302 · 11a45d8show refuses every shipped entry: its reader holds the pointer to a string, and a ledger line carries none
showreads a shipped entry, whose pointer comes back null because shipping deleted the design it named. - RG301 · 5d69741a walkthrough is asked through askGloss, so the module that runs every read-only question is named after one of them
The read-only query is named for what it is, so no name on the path a walkthrough takes says gloss (design recorded in
packages/shell/src/question.ts). - RG300 · 3255482no shot fixture keeps an answer, so a kept gloss's notices and the walkthrough dialog are drawn by no picture
The shots run keeps an answer first, so both dialogs are photographed on one: a gloss old two ways, a walkthrough and its verdicts (design recorded in
packages/shell/src/shots-kept.ts). - RG299 · 0a12d07an explanation nests a paragraph inside a paragraph, which React reports as invalid HTML on every answer
The explanation wraps prose in a block wherever it draws it, so no paragraph holds one and React reports no invalid nesting.
- RG298 · a19627fnpm run dev:inspect opens its first window without the debugging port, so Playwright MCP reaches it only after a restart
The first window a development run opens carries the debugging port, so Playwright MCP reaches it with nothing touched.