Adding memory to Devin CLI

one command for the MCP server, the skill and the hooks

Devin CLI keeps every session in one local database and opens the next one empty. What you worked out last week is still there, and so is the work you did in whichever other agent you had open at the time.

What Devin already has

Sessions live in ~/.local/share/devin/cli/sessions.db on macOS and Linux (XDG_DATA_HOME is honoured), with a summary per session at devin/summaries/<session_id>.md under the same data directory. devin --resume <id> reopens one. Complete, and unread by anything — including by Devin's next session.

Adding recall

deja install devin-auto

That needs the binary:

brew install deja-vu
# or
curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh

Without hooks, deja install devin writes only the MCP server and the skill, and the agent searches when it decides to.

What gets wired

deja install devin writes the MCP server to ~/.config/devin/mcp_config.json and the deja-history skill to ~/.agents/skills/deja-history/SKILL.md. deja install devin-auto also writes hooks into the "hooks" key of ~/.config/devin/config.json, next to whatever else is in it:

  • The project digest on SessionStart and again on PostCompaction, so a compacted thread gets its task back.
  • Recall on UserPromptSubmit, silent when the history has no answer.
  • A line about the file on PostToolUse after an edit or write, and the repair for a failed command after exec.
  • SessionEnd, so the session you just quit is one the next session's recall can answer.

Plugin or CLI install

There is also a plugin: devin plugins install vshulcz/deja-vu#devin-plugin. Pick deja install devin-auto. Devin's cloud sessions are reported to skip SessionStart and SessionEnd for plugin hooks, so with the plugin the opening digest may be CLI-only. When both are present the plugin's hooks see the wiring in config.json and stand down, so running both is safe.

The part that is not about this harness

The index covers every agent's transcripts on the machine — forty-three of them today, each in its own format — so a fix found in one tool answers a question asked in another, including sessions from before any of this was installed. That is the reason to index rather than to capture.

Nothing here writes memories, so there is nothing to hallucinate into your history; indexing and search are local, and credentials are stripped as the index is built (privacy). What memory costs has the measured comparison.

Getting started · How Devin's store is read · Resuming a session

Found this useful? Star deja-vu on GitHub.