hooks — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited hooks (Hook) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center">
Persistent semantic memory for AI agents — 100% local, MLX-native, Apple Silicon.
</div>
<!-- mcp-name: io.github.jagoff/memo -->
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](https://github.com/ml-explore/mlx) — no Ollama, no Qdrant, no cloud API, no keys. Your prompts and memories never leave the machine.
How memo works
memo is built to spend fewer tokens, not more. Two measured wins (real numbers from the shipped build, commits ee78f05 + 1ad7bdf):
agent tool 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. (core profile = 25 tools, ~2.4k vs ~35k tokens.)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.
# 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 | bashPrefer 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-memoKeep 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](docs/reference.md#install-detail).
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 foundmemo 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](docs/reference.md#mcp-setup).
After install, tools surface inside the agent as mcp__memo__memo_* (memo_save, memo_search, memo_ask, memo_get, memo_unified_briefing).
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/remember calls.Stop hook extracts durable insights from each exchange through a quality gate and saves them. The corpus grows on its own.SessionStart surfaces open loops, a memory of the day, and one-line crash recovery for the last session.memo as-of ask "..." --date 2026-02-01, memo diff --from … --to …. No other agent-memory store offers this..md + frontmatter you can edit in Obsidian/vim; the sqlite index is rebuildable (memo reindex).memo map renders an interactive 2D canvas (UMAP/PCA + Plotly) of the whole corpus.~/Documents/memo/.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.
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.
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, OpenCodeRequisitos: 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](docs/reference.md).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.