A committed markdown dev log and task graph that agents read and write over MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A committed, rich-component dev log you write as you build β for a developer working solo or alongside a coding agent β and the memory that makes spec-driven agentic development work. Markdown entries with embedded interactive components, stamped automatically with the commit and diffstat they describe, served as a live, auto-reloading page.
It exists to make one workflow reliable: chronicle the work as it happens β the why, the dead ends, the screenshots and animations β and never lose a draft to a "promote" step that gets skipped.
The same store is what keeps an agent effective across sessions: designs land as committed specs, tasks point at them, and a session starting cold reads the spec instead of re-deriving intent from a conversation that no longer exists. That loop is the agent workflow below.
A draft is an entry with no commit hash. That is the entire state machine.
It appears in the In Progress panel the moment you create it. There is no scratch file, no separate document, no "publish" toggle. Stamping it β adding the hash and the diffstat β is what drops it into the log.
Everything else follows from that. Nothing can get stranded in a buffer you forgot to promote, because there is no buffer. The log ends up in the order you actually worked, including the parts that did not pan out, which is the half a squashed history always loses.

katra serve renders the store as a live page β no build step, no static
site to regenerate while you write. The spine down the middle is the log in
the order it happened: future epics, the entry in flight right now, then the
past. The right rail surfaces what a flat file list buries β decisions that
are still load-bearing, and which tags a stretch of work threads through.
An entry, open β this one shipped mid-draft with a before/after slider
comparing two icon-mark directions, dragged in with katra compare:

The board, grouped by status β specced is its own column between todo and
doing, for the tasks that have a committed design and nobody building them
yet:

The hub, one page across every registered project on the machine β this is the maintainer's own, 14 projects and 25 things in flight at once, none of them re-typed anywhere:

You finish a hard week. The commits say fix streaming, wip, actually fix streaming. Six months later you need to know why the spawn budget is
nearest-first, and the answer is not in the diff β it was in your head, and in a
screenshot you no longer have.
The usual answers are all bad in the same way: they are a second job.
CHANGELOG.md records what shipped, not what you learned, and it is written
at release time from the diff you are trying to explain.The common failure is that all of them are a step after the work, and any step after the work gets skipped when the work runs long β precisely when the log would have been worth most.
katra's bet is that the log has to be a side effect of working rather than a task that follows it. So the draft is created when you start, it accumulates screenshots and reasoning while you go, and the commit you were going to make anyway is what publishes it.
This is what katra is built around, and the reason its shape is odd compared to a static-site generator: it exists to keep two things from being lost between agent sessions β the design an agent is meant to build from, and the record of how the build actually went.
An agent that logs at the end writes a summary of a diff β the one thing the diff already tells you. What is lost is everything before the final state: the approach that failed, the measurement that changed the plan, the picture of the bug. So katra pushes the log into the work. The common contract is the CLI sequence in The Katra workflow: declare the epic/task, attach and read a committed spec when one is warranted, open the draft before implementation, record decisions and evidence as you go, then stamp and close. It works from Codex, Claude Code, MCP, or a plain shell.
That creates the Katra and installs the harness-neutral Git post-commit
auto-stamp. Claude Code users can additionally run katra setup, which
installs its skill and seven session hooks. With that optional adapter:
SessionStart reports the active draft, unresolved memory, or in-flight
changes that need reconciling.PostToolUse records every file the agent edits.Stop blocks the turn from ending if authored code changed and nothing
declared what it was for.PreToolUse blocks a git commit whose staged code has no
reconciliation receipt.The gate is the part people react to, so it is worth being precise about when it fires. It blocks only when the turn authored code that is still present in the working tree, outside the katra directory, and nothing declared its purpose. A conversational turn never blocks. An edit-then-revert nets to nothing and never blocks. Someone else's pre-existing dirt is not your work and never blocks. A blocked turn never blocks twice for the same unchanged work.
To satisfy it β <task> is a slug from katra task list (or create one with
katra task new):
If you are trying katra out, use katra setup --no-gate. You get the
nudges and the auto-stamp without anything blocking a commit, and you can turn
the gate on later by re-running katra setup. A blocking hook in every
repository is a real change to how committing feels, and it should be a choice
made on purpose.
There is also an MCP server (katra-mcp) for clients that would rather call a
tool than shell out. Its fifteen tools cover entries plus tasks, task specs,
epics, decisions, and articles. Full detail: The Katra workflow
and Agents.
When the first release ships, the official MCP Registry will be able to
discover the same stdio server through a narrow OCI package. That image
contains only katra-mcp and git; it exists because the registry needs an
installable package, not because a container is a better way to use Katra. A
registry client still has to expose the repository working tree to it. For
direct use, install the native binaries above.
Current-source feature: the installed v0.1.0 CLI does not yet have
task spec,task new --spec, or thespeccedlist-filter help value. Build current source withmake allfor this phase until the next release; the release checklist now asserts all three against the packaged binary.
A task can carry spec: β a node slug in the katra (a decision, an article, an
entry) or a path relative to the repository root, resolved the same way as a
[[wikilink]]. katra task spec <slug> <ref> attaches it, and moves the task
from todo (or empty) to a new status, specced: a design exists, committed,
and nobody has started building it.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/katra)<a href="https://allmcps.com/mcp/katra"><img src="https://allmcps.com/api/badge/katra?style=directory" alt="Katra on AllMCPs" /></a>