
Memo
- 10 repo stars
- Updated July 28, 2026
- jagoff/memo
Memo is an MCP server that stores agent memory as local markdown with sqlite-vec and BM25 hybrid search, with no cloud backend.
About
Memo MCP provides local, MLX-oriented long-term memory for AI agents: notes live as markdown on disk, while sqlite-vec and BM25 hybrid search retrieve relevant prior context without a hosted memory vendor. Developers who care about privacy, offline work, or repeatable local dev environments install it during Build when agent-tooling needs persistent recall across weeks of shipping. The server is published as mlx-memo on PyPI with stdio transport and a memo-mcp runtime hint, version 0.8.0 at catalog time. It is intermediate complexity—you run Python tooling, manage on-disk stores, and tune what gets embedded versus keyword-indexed. Memo complements cloud context services by keeping sensitive repo and customer details on your machine while still letting Claude Code, Cursor, or Codex query memory through MCP.
- Markdown-on-disk storage with sqlite-vec and BM25 hybrid retrieval
- MLX-native local stack—zero cloud dependency for memory operations
- PyPI package mlx-memo version 0.8.0 with stdio transport (runtime hint memo-mcp)
- Privacy-friendly recall for solo builders on Apple Silicon MLX paths
- Fits long-horizon agent projects that must remember decisions offline
Memo by the numbers
- Data as of Jul 28, 2026 (Skillselion catalog sync)
claude mcp add mlx-memo -- memo-mcp mlx-memoAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| repo stars | ★ 10 |
|---|---|
| Package | mlx-memo |
| Transport | STDIO |
| Auth | None |
| Last updated | July 28, 2026 |
| Repository | jagoff/memo ↗ |
What it does
Give coding agents durable local memory with hybrid search—markdown on disk, sqlite-vec plus BM25—without sending recall to the cloud.
Who is it for?
Best when you're on MLX-friendly setups and want private, offline-capable agent memory without a SaaS recall layer.
Skip if: Skip if you need multi-user synced cloud memory or Windows-only workflows without Python/PyPI MCP setup.
What you get
Agents retrieve and update durable local memory through MCP using hybrid vector and keyword search on your disk.
- stdio MCP server exposing local read/write memory tools
- Hybrid sqlite-vec + BM25 search over agent-stored markdown
- Offline-capable memory layer with no required cloud API
By the numbers
- Package version 0.8.0 (mlx-memo on PyPI)
- Transport: stdio; registryType pypi
- Storage pattern: markdown-on-disk with sqlite-vec + BM25 hybrid
README.md
memo gives any MCP-aware agent (Claude Code, Codex, Devin, OpenCode, Cursor, Cline, Continue, …) a long-term memory that runs entirely on your Mac. Each memory is a plain Markdown file in an Obsidian-friendly folder; embeddings live in a single sqlite file; the LLM, embedder, and reranker run in-process via Apple MLX — no Ollama, no Qdrant, no cloud API, no keys. Your prompts and memories never leave the machine.
Why it pays for itself — in tokens
memo is built to spend fewer tokens, not more. Two measured wins (real numbers from the shipped build, commits ee78f05 + 1ad7bdf):
- 96.4% smaller MCP surface. The default
agenttool profile exposes 5 tools / ~589 schema tokens, versus 118 tools / ~16,157 tokens for a full surface — that overhead is paid every session, in every client. memo trims it to almost nothing. (coreprofile = 25 tools, ~2.4k vs ~35k tokens.) - Recall injects the answer instead of re-deriving it. Ambient recall surfaces the top memory before the agent answers, on a tight ~160-token budget, with the directive sent only on the first turn. The agent stops re-explaining what it already figured out last week.
On a ~200-memory corpus, memo's ROI meter estimates ~80k tokens of model work avoided (≈62.6k from 179 grounded facts + ≈17.1k from 19 re-asks it prevented; ~259 tokens/response). The estimate is corpus-specific — memo roi shows yours.
Install — one step
# One-line installer: pipx under the hood, installs GitHub master,
# downloads MLX models, and wires up Claude Code / Codex / OpenCode / Windsurf.
curl -fsSL https://raw.githubusercontent.com/jagoff/memo/master/install.sh | bash
Prefer a published release? Any of these work and expose the same two binaries — memo (CLI) and memo-mcp (MCP server):
pipx install mlx-memo
uv tool install mlx-memo
brew tap jagoff/memo && brew install mlx-memo
Keep memo isolated as its own tool (pipx / uv tool / Homebrew). Don't vendor it inside another project's
.venv— its MLX runtime, model cache, sqlite state, andmemo-mcpshould move together as one subsystem.memo doctor --strict-runtimeverifies the install.
First install downloads ~7 GB of MLX models (5–15 min); later installs hit the HuggingFace cache. Full installer knobs, model list, and "move to a new Mac" steps live in docs/reference.md.
Hand it to your agent
memo is designed so you can give the repo (or just the install line) to an AI coding agent and it installs itself. The whole setup is three commands:
curl -fsSL https://raw.githubusercontent.com/jagoff/memo/master/install.sh | bash
memo doctor --strict-runtime # verify the runtime is healthy
memo install-slash # register MCP + /memo for every client found
memo install-slash configures Claude Code, Codex, Devin, Windsurf, and OpenCode where each supports it — it writes the MCP server entry (pinned to the absolute memo-mcp path) and the /memo skill, forwarding your MEMO_* env so GUI clients inherit the right model profile. Per-client setup (Claude Desktop, Cursor, Cline, Continue, manual JSON) is in docs/reference.md.
After install, tools surface inside the agent as mcp__memo__memo_* (memo_save, memo_search, memo_ask, memo_get, memo_unified_briefing).
Quick start
memo doctor # self-check: models, vault path, sqlite-vec
memo save 'MLX prefill ~30% faster than Ollama on M3 Max' --title 'MLX bench' -t mlx -t bench
memo search 'how fast was the MLX benchmark' # search by meaning, not just keywords
memo list --limit 5 # most recent
memo ask 'what changed in the embedder this month?' # RAG — cites memories by id
What you get
- Ambient recall — with the Claude Code plugin, every prompt silently consults memory and injects the top memories as context, with a warm recall daemon (<200 ms). No
/remembercalls. - Auto-capture — a
Stophook extracts durable insights from each exchange through a quality gate and saves them. The corpus grows on its own. - Session briefing —
SessionStartsurfaces open loops, a memory of the day, and one-line crash recovery for the last session. - 🕰️ Time-machine — rewind the corpus to any past date:
memo as-of ask "..." --date 2026-02-01,memo diff --from … --to …. No other agent-memory store offers this. - Hybrid retrieval + reranker — vec + BM25 (FTS5, diacritic-folding for Spanish) fused via RRF, then an optional MLX cross-encoder rerank.
- Markdown is the source of truth — plain
.md+ frontmatter you can edit in Obsidian/vim; the sqlite index is rebuildable (memo reindex). - Semantic map —
memo maprenders an interactive 2D canvas (UMAP/PCA + Plotly) of the whole corpus.
Requirements
- macOS on Apple Silicon (M1–M4) — MLX is the load-bearing piece. memo does not run on Linux / Windows / Intel Macs.
- Python ≥ 3.13.
- ~8 GB free disk for the default model set (the installer downloads it).
- Optional: an Obsidian vault. Without one, memo defaults to
~/Documents/memo/.
Documentation
The README is the front door; the full manual lives in docs/.
| Topic | Where |
|---|---|
| Full install detail, installer knobs, new-Mac migration | docs/reference.md › Install |
Per-client MCP setup + the /memo slash command |
docs/reference.md › MCP setup |
| Tools exposed over MCP | docs/reference.md › MCP tools |
| Ambient memory, recall daemon, capture & recall tuning | docs/reference.md › Ambient memory |
| Session briefing, semantic map, time-machine | docs/reference.md › Surfaces |
Full CLI reference + live dashboard (memo tui) |
docs/reference.md › CLI |
All MEMO_* configuration, model profiles, upgrading the embedder |
docs/reference.md › Configuration |
| Design notes & how memo compares to mem0 / letta / cognee / … | docs/reference.md › Design & comparison |
| Architecture / install / ambient-loop / time-machine diagrams | docs/architecture.svg · install-flow · ambient-loop · time-machine |
Contributors: git clone https://github.com/jagoff/memo && cd memo && uv pip install -e '.[dev]'. See CONTRIBUTING.md.
License & provenance
MIT — see LICENSE. Forked philosophically from mem-vault (storage layout + frontmatter schema); the MLX backend pieces are ported from obsidian-rag. memo is one of three sovereign systems in a wider stack (Memflow, Synapse) — the integration is opt-in everywhere; single-Mac users see zero behaviour change.
Español
memo es memory semántica persistente para agentes de IA: 100% local, sobre Apple Silicon con MLX. Cada memory es un archivo Markdown; los embeddings viven en un único sqlite; el LLM, el embedder y el reranker corren en proceso vía MLX — sin Ollama, sin nube, sin API keys. Tus prompts y memories nunca salen de la Mac.
Por qué ahorra tokens: la superficie MCP por defecto son 5 tools (~589 tokens) contra 118 (~16.157) → 96,4% menos contexto por sesión; y el recall inyecta la respuesta (presupuesto ~160 tokens) en vez de que el agente la vuelva a deducir. En un corpus de ~200 memories, memo roi estima ~80k tokens de trabajo del modelo evitados.
Instalación en un paso:
curl -fsSL https://raw.githubusercontent.com/jagoff/memo/master/install.sh | bash
memo doctor --strict-runtime # verifica el runtime
memo install-slash # registra el MCP + /memo en Claude Code, Codex, Devin, Windsurf, OpenCode
Requisitos: macOS en Apple Silicon (M1–M4), Python ≥ 3.13, ~8 GB de disco para los modelos. La documentación completa está en inglés en docs/reference.md.
Recommended MCP Servers
How it compares
Local hybrid-search memory MCP—not a hosted cross-tool context account like CacheTank.
FAQ
Who is Memo for?
Developers running local AI agents who need persistent markdown Memory and hybrid search without cloud recall services.
When should I use Memo?
Use it while building agent features when sessions must remember architecture decisions and notes across days, entirely on your machine.
How do I add Memo to my agent?
Install mlx-Memo from PyPI, configure the stdio MCP server with runtime hint Memo-mcp in your client, and ensure the on-disk markdown store path is writable.