LinkLore vs. AI's built-in memory vs. Plain markdown
Stored in a local SQLite file and reloaded automatically with brief() at the start of every session.
LinkLoreCLAUDE.md / MEMORY.md persists on disk and Claude Code reloads it automatically each session.
AI built-in memoryFiles stick around on disk across sessions too. Nothing agent-specific needed.
Plain markdownOptional backend sync layer with viewer/member/owner roles. Shared across teammates and your own machines.
LinkLoreMachine-local by design, per Claude Code's own docs. Not shared across teammates or even your own other machines.
AI built-in memoryCommitting the file to git gets it in front of teammates, but it's a manual push with no roles or access control.
Plain markdownadd() checks new entries against existing ones and flags contradictions instead of letting them silently coexist.
LinkLoreNothing checks the memory file against what's currently true. It can state something already-corrected and never catch up.
AI built-in memoryFully manual. A stale note sits there looking just as confident as a current one.
Plain markdownSame MCP server works in Claude Code, Cursor, Windsurf, Gemini CLI. One memory, not one per agent.
LinkLoreTied to Claude Code's own memory feature. Switch tools and this specific memory doesn't come with you.
AI built-in memoryPlain text opens anywhere, but every agent needs its own manual pointer to the file. No shared discovery.
Plain markdownSurfaced automatically (brief(), drift flags) instead of requiring a manual search. But it's still context the agent can choose to ignore.
LinkLoreBy Claude Code's own description, this is context, not something enforced. Nothing stops the agent from acting against it.
AI built-in memoryEntirely manual. Someone has to remember to open, read, and follow it every time.
Plain markdownStored in a local SQLite file and reloaded automatically with brief() at the start of every session.
CLAUDE.md / MEMORY.md persists on disk and Claude Code reloads it automatically each session.
Files stick around on disk across sessions too. Nothing agent-specific needed.
Optional backend sync layer with viewer/member/owner roles. Shared across teammates and your own machines.
Machine-local by design, per Claude Code's own docs. Not shared across teammates or even your own other machines.
Committing the file to git gets it in front of teammates, but it's a manual push with no roles or access control.
add() checks new entries against existing ones and flags contradictions instead of letting them silently coexist.
Nothing checks the memory file against what's currently true. It can state something already-corrected and never catch up.
Fully manual. A stale note sits there looking just as confident as a current one.
Same MCP server works in Claude Code, Cursor, Windsurf, Gemini CLI. One memory, not one per agent.
Tied to Claude Code's own memory feature. Switch tools and this specific memory doesn't come with you.
Plain text opens anywhere, but every agent needs its own manual pointer to the file. No shared discovery.
Surfaced automatically (brief(), drift flags) instead of requiring a manual search. But it's still context the agent can choose to ignore.
By Claude Code's own description, this is context, not something enforced. Nothing stops the agent from acting against it.
Entirely manual. Someone has to remember to open, read, and follow it every time.
Lore saved us from repeating the same design debates. The rejection rationale from 3 months ago was still there.
One brief() call and I had the full project context. Nothing like reading 5 scattered .md files.
Flat markdown would cost 300–500K tokens. Each call costs 200 to 3,000. That's 100 to 1,000x.
One brief() call at session start and I never ask 'what were we doing?' again.
The core delivers — brief() alone is worth it.
Lore saved us from repeating the same design debates. The rejection rationale from 3 months ago was still there.
One brief() call and I had the full project context. Nothing like reading 5 scattered .md files.
Flat markdown would cost 300–500K tokens. Each call costs 200 to 3,000. That's 100 to 1,000x.
One brief() call at session start and I never ask 'what were we doing?' again.
The core delivers — brief() alone is worth it.
Lore = history, code = current invariant. This distinction is what lets AI make real decisions.
I don't have to remember to search — it just interrupts me with what's relevant.
Git tells me what changed. Lore tells me why. That cross-reference has no substitute.
After every non-trivial decision, add() became muscle memory. Three months later, the lore pays for itself.
Tag discovery with show(action='tags') was a game changer for onboarding.
Lore = history, code = current invariant. This distinction is what lets AI make real decisions.
I don't have to remember to search — it just interrupts me with what's relevant.
Git tells me what changed. Lore tells me why. That cross-reference has no substitute.
After every non-trivial decision, add() became muscle memory. Three months later, the lore pays for itself.
Tag discovery with show(action='tags') was a game changer for onboarding.