v0.11 · Memory + Product Map · MIT

Give your coding agent a map of your product.

A local-first, cross-agent memory layer for Claude Code, Cursor, Codex, and Gemini. It helps your agent remember why decisions were made across sessions — then catches when your README, docs, and code drift apart, with file:line evidence.

No account. No cloud. One SQLite file on your machine.

up to 99%
Tokens saved on re-reads
6
Memory layers
0
Cloud dependencies
Watch the map catch drift
linksee-memory map · live
Terminal demo: linksee-memory map explain and affects detecting doc/code drift with file:line evidence
Three pillars

Built on three things nobody else combines.

read_smart

Token savings, measured.

AST- and heading-aware diff cache on file reads. 86% saved on a typical TS edit, 99% on unchanged re-reads.

🔗
cross-agent

One SQLite file. Every agent.

Claude Code, Cursor, Windsurf, OpenAI Codex, Gemini CLI — all share one brain at ~/.linksee-memory/memory.db. No cloud, no account, no lock-in.

🧠
WHY-first

Six layers, not a flat log.

goal / context / emotion / implementation / caveat / learning. Forgetting is tuned per layer — caveats are protected.

v0.11 · 11 tools + a product map

Memory is the entry point. The product map is the new surface.

3 core memory tools (remember / recall / read_smart) + 8 drift & map tools = 11 MCP tools total — including where_am_i, which locates the current file on your product map and reports its blast radius. Plus the full MCP protocol surface: Tools + Resources + Prompts + Sampling + Roots + Elicitation.

🗺️
Map

where_am_i + linksee-memory map.

A map.yaml (git source of truth) describes how value reaches your user; the CLI answers where am I, what did this file promise, what does the code do, and what else must change — with file:line evidence. Add --lang ja for Japanese.

📚
Resources (NEW)

Memory as @-mentionable URIs.

memory://stats / memory://hot / memory://recent / memory://caveats + 3 templates (memory://entity/{name}, memory://layer/{layer}, memory://memory/{id}). Browse memory in your IDE without a tool call.

📝
Prompts (NEW)

5 reusable templates.

summarize-session / extract-caveats / weekly-consolidation / recall-and-write / entity-handoff. Memory-before-action discipline, baked in.

🤖
Sampling (NEW)

Server asks your LLM.

Auto-consolidation on startup can optionally ask the client's LLM to rewrite cluster summaries. Falls back to the heuristic when the client declines. No server-side LLM key needed.

📂
Roots (NEW)

Auto-scope to your workspace.

recall{path, scope_to_roots:true} reads the client's working roots and filters file history matches. Skips silently if the client doesn't expose roots.

Elicitation (NEW)

User-in-the-loop on destructive ops.

remember{forget:true, memory_id:N} asks the user to confirm via the client UI before deleting. Newer MCP primitive — graceful degrade on clients without support.

The WHY structure

Six layers that make retrieval explainable.

Every memory is tagged with exactly one layer. Recall composites relevance × heat × momentum × importance and returns match_reasons so you — and the agent — know why a row came back.

🎯
goal

goal

The outcome the user is working toward. Persists across sessions so the agent doesn't drift.

🧭
context

context

Why this, why now. Surrounding constraints and stakeholders that shape the right answer.

💗
emotion

emotion

Tone cues from the user. Frustration, excitement, exhaustion — signals that change how to reply.

🛠
implementation

implementation

How something was done — including what failed. The difference between a clean diff and a scar.

⚠️
caveat

caveat

The "never do this again" drawer. Protected from auto-forgetting, always surfaced on recall.

🌱
learning

learning

Patterns distilled over time. Auto-consolidation compresses cold memories into protected learning entries on startup.

Drift detection — v0.11

Forgetting is bad. Drifting is worse.

Last week you decided "FTS5, not vector search." This week a fresh session installs pgvector — nobody's fault, the context just died. Memory tools record what you did. Nothing watches when reality diverges from what you decided. That's the layer Linksee adds.

A drift is a question, not a verdict — "which one is correct now?"

📌1 · declare

Anchor your decisions.

"We use FTS5" / "never ship without tests" — declared explicitly, never mined from chat. 4 species: hypothesis, constraint, commitment, source-of-truth.

📡2 · watch

Reality is reconciled against intent.

Committed code is checked against your anchors. Four states: 🔴 drift · 🟡 review · ⚪ held · 🔵 aligned. Recorded evolution stays quiet — only unaccounted gaps fire.

🛡️3 · guard

Re-injection, before the action.

A hook re-surfaces the locked decision before the agent runs the violating command. It asks first; it only blocks the rules you explicitly hardened.

Resolve in conversation: fix the code / the direction changed / false positive — plus two gates: harden (block) and soften (warn).

Terminal — any MCP client
drift_status · local
> what's drifting?
28 anchors: 🔴 1 drift · ⚪ 1 held · 🔵 26 aligned
🔴 DRIFT"We use FTS5, not vector search"
reality: pgvector added in db/schema.ts — no recorded resolution
→ which one is correct now? [fix] [direction changed] [false positive]
🛡 guard: held `npm i pgvector` — anchor #7 re-injected before action

Three spells to remember

"use linksee"recall before acting
"linksee this"save it now
"what's drifting?"reconcile reality vs decisions
Get started in 5 minutes

Not a developer? Start here.

We'll walk through everything — installing Node.js, setting up Claude Desktop, and verifying it works. No terminal experience required for Claude Desktop.

Claude Desktop (recommended for non-developers)

Claude Desktop uses a settings file. We'll add linksee-memory to it with one paste.

  1. 1

    Open Claude Desktop settings

    Launch Claude Desktop → Settings → Developer → "Edit Config". A JSON file opens in your editor.

  2. 2

    Paste the linksee-memory block

    Inside "mcpServers": { ... }, add the linksee key shown below. If mcpServers already has entries, add a comma before the linksee line.

    "linksee": {
      "command": "npx",
      "args": ["-y", "linksee-memory"]
    }
  3. 3

    Restart Claude Desktop

    Fully quit and reopen (not just close the window). linksee-memory loads on the next launch.

  4. 4

    Verify it works

    Start a new chat and type: "Can you remember that I prefer TypeScript over JavaScript?" Claude should confirm it saved this to linksee-memory.

How it compares

The features most agent-memory tools quietly skip.

FeatureMem0 / Letta / ZepClaude auto-memorylinksee-memory
Cross-agent (Claude + GPT + Gemini)
WHY-layered structure flat flat 6 layers
AST-aware file diff cache
Active forgetting (curve-based)
Local-first · no account required
match_reasons on recall
Pro tier — Summer 2026

Cross-device sync and team sharing, on Pro

$19/mo. First 100 seats lock launch pricing forever. Cancel anytime — your memories stay in your local SQLite.

🔄

Cross-device sync

Start a task on your MacBook, continue on the office Linux box — the agent has the full context.

👥

Team-shared caveat layer

When one teammate's agent hits a pitfall, every other teammate's agent knows — no more repeating war stories across PRs.

🌐

Web dashboard

Browse, edit, and search your memories in a web UI. Export / import. See memory growth over time.

📈

Priority support + early access

Direct access to the builder. Responsive email support. Early access to experimental features (semantic recall, multi-agent coordination).

Who it's for: solo devs with multiple machines, or small teams (3–10) sharing agent workflows.

Drift detection and the memory core stay local and free, forever. Pro only adds sync, team sharing, and the web dashboard.

One email, max. No newsletter spam. Unsubscribe is just not replying.

Give your agent a brain it can trust next week.

MIT-licensed. One binary. Stays on your machine.