MemorySync
Getting Started

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.

SurfaceMemorySync support
Devin Desktop (GUI)MCP tools via mcp_config.json + an always-on rules file for recall (.devin/rules/memorysync.md).
Devin CLIMCP plus full hook wiring: hooks.v1.json accepts Claude-shaped additionalContext — injected recall at session start and per prompt, automatic capture on Stop.
Legacy WindsurfThe installer still writes ~/.codeium/windsurf/mcp_config.json (serverUrl key) when it exists — updates, never creates.
Devin cloud sessionsMCP via Settings → Connections on app.devin.ai; SessionStart/SessionEnd hooks do not run in cloud sessions (Cognition’s limitation, all vendors).
Mem0SupermemoryZepMemorySync
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/mcp
devin 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.

MomentWhat happens
Session start / resumeRecalls 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 exhaustedSilent 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

SurfaceRequiresVerified on
MCP (Devin Desktop / CLI / cloud)Any Devin build; legacy Windsurf still worksInstaller verified live on Devin Desktop (Windows): detection, write, documented {url, transport} shape
Devin CLI hooksDevin 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.

Where to go next

Was this page helpful?