Starting where you stopped
"Continue where we left off" resolves to the real prior session, including the files it touched and what it left unfinished, rather than a summary you wrote by hand.
Most people who use more than one AI coding tool did not plan to. You install a second one to try it, keep it for the thing it happens to be better at, and end up with your reasoning split across tools that cannot read each other.
Each tool is genuinely better at something. One handles a long refactor without losing the plot. One is faster on a single well-specified file. One is already installed on the machine you are ssh'd into. None of that is a reason to consolidate; it is a reason to keep all of them.
The cost shows up somewhere else. Every one of them writes a complete transcript of your session to disk, in its own format, in its own directory, and none of them reads another's. So the decision you argued through on Tuesday in one tool is invisible on Wednesday in another.
Not the code. The code is in git. What goes missing is the part that was never committed:
That material only exists in the transcript. It is also the material you would have to re-explain to a new tool from memory, badly.
Index what is already on disk and register the MCP server in each tool's own config:
$ npx chat-recall init finds every tool you have installed and wires each one up
Nothing is migrated and nothing is converted. Every tool keeps writing exactly what it always wrote; the index reads those files.
The useful part is not that you get a search box. It is that the assistant gets one, so recall happens inside the conversation instead of in a browser tab.
"Continue where we left off" resolves to the real prior session, including the files it touched and what it left unfinished, rather than a summary you wrote by hand.
"Have we hit this error before" is answered from every session in every tool, including the ones you have stopped using.
Its first run is not day one. It queries the same memory as the others, so an evaluation tests the tool rather than your patience for re-explaining the codebase.
A prompt hook warns you when the thing you are about to ask for has already been done somewhere you forgot about.
Say what you decided, in the session. A decision written as "we are going with the pooler because prepared statements break in transaction mode" is recoverable later. The same decision left implicit in a diff is not. The classifier picks up explicit phrasing and nothing else, which is the honest limit of it.
Reference credentials by variable name. Paste a key into a prompt and it is in the transcript, on disk, for as long as that file exists, whether or not you delete the chat. Say $OPENAI_API_KEY instead. Sessions are scanned for credentials and the live ones are verified against the issuing service, but not leaking it in the first place is cheaper than rotating it.
On your own server or on ours. Running it yourself is free and full featured for one person, with no licence key and no telemetry. If the work is under someone else's NDA, that is the option to take, and it is the reason self-hosting is not a crippled tier. See self-hosting.