DevStation CLI
Undo, Memory & MCP
How the agent keeps a way back from every change, finds its way around a large project, remembers what it cannot derive, and uses tools from MCP servers.
Undo
The agent checkpoints after any turn that changed a file, so there is always a way back.
devstation checkpoints # what it can rewind todevstation undo # rewind one turndevstation diff # everything it has changed since the run startedIn a git repository
A checkpoint is a real commit, with a subject starting agent checkpoint:. undo resets back one of them, and only ever rewinds commits the agent made: a commit of yours on top is never discarded. Find them with:
git log --oneline --grep='^agent checkpoint:'Without git
A checkpoint is a file snapshot under .devstation/checkpoints/, taken before the turn's changes land. undo restores the files and removes anything the turn added. Twenty are kept. diff needs git, because a snapshot holds no base to compare against; it says so and points you at checkpoints.
Search index
devstation indexindex walks the project and builds a BM25 index at .agent/memory.db, so the agent can find the one file that matters in a repository too big to read. The first run pays for the walk; after that only what changed is re-read. The first message in a new folder builds it for you.
Project memory
devstation memoryThe index knows what the code says. Memory holds what the code cannot tell it: that deploys go out on Fridays, or that the obvious fix was already tried and did not work. The agent appends to it through a tool; entries are dated, nothing is rewritten, and you can read or edit it by hand.
It lives in .agent/PROJECT_MEMORY.md. Put a PROJECT_MEMORY.md at your project root and that is used instead: its presence says you want these notes checked in and shared. The agent will not create that file itself.
MCP servers
Tools from MCP servers are offered to the agent alongside the built-in ones, named server__tool so two servers cannot shadow each other or a built-in.
Servers are read from .devstation/mcp.json in the project, then ~/.devstation/mcp.json. The nearer file wins, so a project has the last word about its own servers.
{ "mcpServers": { "sqlite": { "command": "uvx", "args": ["mcp-server-sqlite", "--db-path", "./app.db"], "env": { "LOG_LEVEL": "warn" }, "disabled": false } }}disabled: true skips one without removing it.
Tip
devstation mcp lists what is configured and every tool each server actually offers. It is the quickest way to see whether a server is starting at all.