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.

bash
devstation checkpoints # what it can rewind to
devstation undo # rewind one turn
devstation diff # everything it has changed since the run started

In 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:

bash
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

bash
devstation index

index 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

bash
devstation memory

The 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.

json
{
"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.
DevStation
Loading console…