Exomem
Local Markdown/Obsidian knowledge substrate for MCP agents with governed memory and hybrid search.
Documentation
MCP memory server
Agents get memory.
You keep the files.
Exomem is an open-source MCP memory server that runs over the Markdown knowledge base you already own — a plain folder, or your Obsidian vault. Claude Code, Codex, and Cursor get durable context; you keep the files, the provenance, and the review loop.
View source →$ pip install exomem
Python · AGPL-3.0 · self-hosted · no account
01 — Why it exists
Memory should be inspectable infrastructure you own — not hidden assistant state in someone else’s cloud.
Exomem gives agents a shared substrate without asking you to move your knowledge into another app. Source material, compiled notes, typed entities, evidence, and supersession history remain plain files — open any of them in a text editor.
The server measures and routes: search, embeddings, extraction, file writes, graph health, review queues. Judgment stays with the human and the client model using the tools.
notes/old-plan.mdplain Markdown
type: decision status: superseded superseded_by: "[[newer-constraint]]"
Batch embeddings at 256 on 16 GB cards. Replaced after [[benchmark-run-014]] showed VRAM headroom, not throughput, is the bound.
Supersession lives in the file, not in a hidden database — grep it, diff it, version it.
02 — Capabilities
The whole stack, local.
01
MCP tools
Search, capture, notes, evidence, audit, and review queues — usable from any MCP client.
02
Hybrid retrieval
Keyword and vector search over typed Markdown knowledge bases. Sub-second at 50,000 notes, measured.
03
Local index
SQLite FTS5 for lexical lanes, sqlite-vec for vectors. No external search service, ever.
04
Media ingestion
Local OCR, ASR, PDF, Office extraction, and CLIP image indexing — screenshots and recordings become searchable.
05
One registry
CLI and REST surfaces generated from the same operation registry as the MCP tools.
03 — Measured at scale
Sub-second at 50,000 notes — measured, not asserted.
Most memory tools claim they scale. Exomem publishes the numbers — and the methodology, so you can reproduce them on your own vault.
864ms
Hybrid find() end-to-end at 50,000 notes — hot cache off, methodology public in the repo.
<10ms
Keyword and lexical lanes, served straight from the SQLite FTS5 index.
0cloud deps
In the lean install. A GPU is optional — never required.
Reference desktop — Ryzen 7 5800X3D · RTX 5080 · 32 GB RAM. See the methodology →
04 — The difference
Your memory stays yours.
Cloud memory services
- Extract your data into a vector database or knowledge graph in their cloud
- The memory is a derived copy — you never get plain files back
- Account and subscription required; your data leaves your machine
Exomem
- Plain Markdown in a vault you own — edit it anywhere, forever
- The index is a local SQLite sidecar — the files themselves are the memory
- Self-hosted, no account — with the lean install, nothing leaves your machine
Full comparison vs mem0, Letta, Zep, cognee, and Basic Memory →
Exomem vs claude-mem: session continuity vs durable knowledge →
How we benchmark memory systems — the fairness rules, before the results →
05 — Install
terminalcopy
$ pip install exomem
$ exomem --help
# extras: local embeddings · CLIP · OCR · ASR
Works with
Claude CodeClaude DesktopCodexCursorany MCP client
The same memory is also reachable from the CLI and a personal REST facade — all generated from one operation registry.
GitHub source →PyPI package →README →
06 — Exomem Hosted
Hosted Exomem is a friends-only private alpha.
Self-hosted Exomem stays the full open-source product you run yourself. Hosted runs it for a small friends cohort while we finish the v1 alpha. Tenant cells process plaintext for search; storage and transport are encrypted. Express interest below; invitations are personally issued and there is no public checkout.
friends-only v1 alphayour data exportable any timeSelf-hosted setup →
Express interest
07 — FAQ
Common questions
Which agents and clients work with Exomem?
Any MCP-capable client — Claude Code, Claude Desktop, Codex, Cursor, or a custom agent. The same memory is also reachable from a CLI (kb / exomem) and a personal REST facade, all generated from one operation registry.
Do my notes ever leave my machine?
No. Your vault stays plain Markdown files you own, and the search indexes are local SQLite sidecar files next to it. The lean install has no cloud dependency — nothing is uploaded.
How fast is search on a large vault?
Measured on a 50,000-note corpus: hybrid search runs end-to-end in 864 ms on the reference desktop, hot cache off, with the keyword and lexical lanes answering in milliseconds from the FTS5 index. The methodology is published in docs/benchmarks.md.
How is Exomem different from cloud memory services?
Cloud memory tools extract your data into a vector database or knowledge graph in their cloud. Exomem keeps your memory as plain Markdown in a vault you own and indexes it locally — your files are the memory, not a derived copy.
Do I need a GPU?
No. The lean install runs keyword and BM25 search out of the box — SQLite's FTS5 engine ships inside Python's standard library. Optional extras add local embeddings, CLIP image search, OCR, and speech-to-text; a GPU accelerates those, but is never required.