Devin & Windsurf Memory
Long-term memory for Devin Desktop and the Devin CLI — the product formerly named Windsurf. MemorySync connects through Devin’s MCP config on both the current and legacy paths, ships first-vendor hook wiring for the Devin CLI’s hooks.v1 system, and includes an always-on recall rule for Devin Desktop.
The rename, and what works where
Cognition renamed Windsurf to Devin Desktop on June 2, 2026, and the legacy Cascade agent reaches end-of-life on July 1. The rename moved the config paths: current installs read ~/.config/devin/ (Windows: %APPDATA%\devin\), while the old ~/.codeium/windsurf/ path is still honoured for unmigrated setups. MemorySync supports both — no other memory vendor documents the rename at all.
| Surface | MemorySync support |
|---|---|
| Devin Desktop (GUI) | MCP tools via mcp_config.json + an always-on rules file for recall (.devin/rules/memorysync.md). |
| Devin CLI | MCP plus full hook wiring: hooks.v1.json accepts Claude-shaped additionalContext — injected recall at session start and per prompt, automatic capture on Stop. |
| Legacy Windsurf | The installer still writes ~/.codeium/windsurf/mcp_config.json (serverUrl key) when it exists — updates, never creates. |
| Devin cloud sessions | MCP via Settings → Connections on app.devin.ai; SessionStart/SessionEnd hooks do not run in cloud sessions (Cognition’s limitation, all vendors). |
| Mem0 | Supermemory | Zep | MemorySync | |
|---|---|---|---|---|
| Documents Devin (post-rename) | ✗ stale “Windsurf” page (404) | ✗ nothing | ✗ nothing | ✓ both names, both paths |
| Devin CLI hooks (automatic memory) | ✗ | ✗ | ✗ | ✓ first vendor |
| Installer writes current + legacy config | ✗ | ✗ | ✗ | ✓ both, safely |
| Recall in Devin Desktop | ✗ | ✗ | ✗ | ✓ always-on rule + MCP tools |
Install
# 0. Get an API key at https://app.memorysync.io, then:# macOS/Linux: export MEMORYSYNC_API_KEY=ms_...# Windows: setx MEMORYSYNC_API_KEY ms_...# A. One command — writes the current Devin path (and the legacy# Windsurf file when present):npx memorysync-mcp-install --client devin-desktop# B. Devin's own CLI:devin mcp add memorysync https://mcp.memorysync.io/mcpdevin mcp login memorysync # OAuth sign-in# C. By hand in ~/.config/devin/mcp_config.json# (Windows: %APPDATA%\devin\mcp_config.json):# { "mcpServers": { "memorysync": {# "url": "https://mcp.memorysync.io/mcp", "transport": "http" } } }
Project-level config works too: .devin/mcp_config.json in a repo configures MCP for everyone who opens it. For Devin cloud sessions, add the same URL under Settings → Connections with an X-API-Key auth header.
Devin CLI hooks — automatic memory
The Devin CLI’s hook system (hooks.v1.json) accepts the same hookSpecificOutput.additionalContext payloads as Claude Code, and MemorySync’s plugin scripts speak it natively under the devin platform argument. Copy examples/devin/hooks.v1.json from github.com/Rafay121/memorysync-plugins into ~/.config/devin/hooks.v1.json (or a repo’s .devin/hooks.v1.json) and point the paths at a checkout of the plugin scripts.
| Moment | What happens |
|---|---|
| Session start / resume | Recalls your profile and this project’s context, injected as additional context. |
| Every prompt (≥ 24 chars) | Recalls memories relevant to the prompt; persists your message in a detached process. |
| Reply finishes (Stop) | Persists the reply with tolerant extraction — documented fields first, bounded transcript-tail parse second, silent skip otherwise. |
| Any failure — no key, network down, quota exhausted | Silent skip, exit 0. The hooks cannot block or break a Devin session, by contract and by test. |
# Same operation as the hooks perform, shown as the raw MemorySync REST call(s).## Turns store under the devin:: transcript scope — separate from your# Claude Code, Cursor, Codex and OpenCode transcripts, same memories.curl --request POST https://api.memorysync.io/v1/memory/add_turn \--header "X-API-Key: $MEMORYSYNC_API_KEY" \--header "Content-Type: application/json" \--data '{"tenant_id":"acme","user_id":"rafay","source":"devin","text":"human: switch the dashboard to teal","speaker":"human@devin::github.com/acme/web-app#h<content-hash>","metadata":{"session_id":"devin::github.com/acme/web-app","project":"github.com/acme/web-app"}}'
The recall rule (Devin Desktop)
Devin Desktop reads rules from .devin/rules/ (which takes precedence over legacy .windsurf/rules/). The plugin repo ships examples/devin/rules/memorysync.md with trigger: always_on frontmatter: it keeps the agent searching memory before answering questions about past work, saving durable facts as they appear (never secrets), and treating recalled text as background data — never instructions. Legacy Windsurf’s built-in auto-memories are absent from current Devin docs; this rule plus the MCP tools fills that gap.
Supported versions
| Surface | Requires | Verified on |
|---|---|---|
| MCP (Devin Desktop / CLI / cloud) | Any Devin build; legacy Windsurf still works | Installer verified live on Devin Desktop (Windows): detection, write, documented {url, transport} shape |
| Devin CLI hooks | Devin CLI with hooks.v1, Node.js 18+ | Hook contract suite 40/40 — the shared scripts run under the devin platform argument, both monthly-quota server modes |
Devin’s hook payloads follow Claude Code’s shapes, and CI pins that assumption on every push. Devin’s closed-beta plugin system loads Claude-format plugins, so devin plugins install Rafay121/memorysync-plugins is expected to work as access opens up.