Skip to main content

Install

npx chat-recall init

That indexes the transcripts already on your disk, detects which AI tools you have, and registers the MCP server in each of their configs:

ToolFile it writes
Claude Code~/.mcp.json
Codex~/.codex/config.toml
OpenCode~/.config/opencode/opencode.json
Cursor~/.cursor/mcp.json

It only touches a config whose tool is on this machine, it never overwrites an entry you curated by hand, and chat-recall doctor prints one line per tool so a missing registration is visible. Inside Claude Code you can install the skills and the MCP server together instead:

/plugin marketplace add munhq/chat-recall
/plugin install chat-recall@chat-recall

Any other MCP client (Claude Desktop, Windsurf, Zed, Cline, or a tool init does not know) takes the same server as a JSON entry. The bin is chat-recall-mcp, which is why the package name alone is not enough — npx -y chat-recall starts the CLI, not the server:

{
"mcpServers": {
"chat-recall": {
"command": "npx",
"args": ["-y", "-p", "chat-recall", "chat-recall-mcp"]
}
}
}

The same command as one line, for a claude mcp add-style client: npx -y -p chat-recall chat-recall-mcp.

Then:

chat-recall search "that auth bug" # search everything you have ever done
chat-recall recent # what was I working on

By default this syncs to the hosted server at chatrecall.dev, which starts with a 7-day trial that needs no card and is a paid subscription after that — see pricing. To keep everything on your own machine instead, run the server yourself: that is free for one person, forever, with every feature and no licence key — the task board and Toolkit included — and a licence only buys collaboration: a second member, shared history, assigning work. See Self-host below. Either way the CLI is the same binary and the same commands; only the server URL differs.

No API keys are required. Search is Postgres full-text search. AI summaries are an optional upgrade, not a prerequisite.

What never leaves your machine​

It indexes every AI session on this disk, so init shows you what would upload — count, tools, and the projects by name — and waits for a yes before the first sync. (--yes, or no TTY, prints the same summary and proceeds; --skip-sync holds the upload back entirely.) Secrets are masked client-side and project paths are sent as hashes; on top of that you choose what is in scope at all:

chat-recall exclude project ~/work/client # a path, and everything under it, never syncs
chat-recall exclude tool cursor # one AI tool never syncs
chat-recall sync-only add git:github.com/me/app # invert it: ship ONLY what you list
chat-recall sources decline ~/.claude-work # a whole transcript profile stays out
# (--delete-remote purges what it already sent)
chat-recall exclude list # every rule in force
chat-recall delete <session-id> # purge one session on every server, tombstoned
chat-recall retention # how long the server keeps what you sent
chat-recall retention set 90 # delete anything older, on a timer (0 = keep everything)

Some tools file transcripts under a hash rather than a project folder, so those sessions have no path for a path rule to match; exclude tool is the control that covers them, and init prints that count. A retention window deletes from the server on a timer. retention set prints how many sessions it would remove and makes you confirm the number. It is undoable only where the original transcript is still on a machine you have — widen the window and chat-recall sync --full re-ships what it admits. For a laptop you no longer own, history your AI tool rotated, or files you deleted, our copy is the only copy. Export first if you want one.

Exclusions live on the machine that holds the data, so the CLI owns them; they apply from the next sync, and rows already synced stay until deleted. The dashboard's Sync rules panel adds rules across every device — unioned with the local ones, so it can only ever add protection. Full model, limits included: Security.