Tiered memory for AI — episodes, facts, preferences, reflections. Local. Portable. Yours.
Tell Claude something on your laptop, recall it from Cursor on your desktop. Mention a preference to ChatGPT, your custom agent will know it too. Your memory is yours, runs locally, syncs everywhere.
Most AI memory is a flat bag of strings — every "thing remembered" treated the same, ranked against everything else by raw similarity. That collapses fast under real use: a passing chat from last Tuesday, a stable fact about your job, and "the user prefers terse replies" all compete on the same axis.
Hippocamp models memory the way cognition does — distinct kinds, distinct semantics:
- Episodes — what happened, timestamped.
- Facts — what is true (about the user, the project, the world).
- Preferences — what the user wants, with a strength.
- Reflections — higher-order patterns the system distils across many episodes via an LLM (consolidation, via
reflect).
Each kind has its own retrieval weight, its own decay curve, its own supersession rules. Recall a fact and you get the latest assertion (older ones are superseded). Recall an event and recency dominates. Recall a reflection and you get a pattern that spans weeks. Every result comes back with a why-trace — similarity + recency + kind-boost + salience — so you (and the model) can see exactly why a memory ranked where it did.
And it's local. ChatGPT's memory works only in ChatGPT; Claude Code's only in Claude Code; cloud agent-memory services (Mem0, Zep, Letta) put your data on their servers. Hippocamp lives in a directory you control, and any AI that speaks MCP can read or write it — so the same tiered memory follows you across every host and every machine you own.
The supporting wedges:
- First-class forgetting — supersedence, TTL, and tombstones are features, not afterthoughts.
- Conflict-free sync — each device writes to
events/<device_id>.jsonl, so no two machines ever touch the same file. Every cloud-sync service handles this safely by definition. - Local-first — the SQLite index lives on each machine;
events/is the portable source of truth. Wipe the cache anytime;hippocamp syncrebuilds it.
pip install 'hippocamp[mcp,embeddings-lite]'
hippocamp setup claudeThe embeddings-lite extra (~150 MB) uses fastembed — same BGE-small embedder, ONNX runtime instead of PyTorch. For higher recall on hard cases there's also [embeddings] (~900 MB, adds sentence-transformers + Qwen3 as an option).
Restart Claude Code. Try this — and watch the inline "Saved to Hippocamp" annotations as Claude proactively captures the signals:
"I'm building a Python 3.13 project with FastAPI. I prefer terse replies. By the way, hippocamps are half-horse, half-fish — and they're not hippopotamuses."
Three saves happen automatically: a fact (Python 3.13 + FastAPI), a preference (terse replies), and a fact about hippocamps. No "remember" required.
Then in any future Claude session — even a fresh one tomorrow on a different machine — ask "what do you know about my project?" or "what's a hippocamp again?" and it'll come back with the right answer.
Pick a folder your cloud syncs (Dropbox, iCloud, Syncthing — anything). On every machine, run:
hippocamp setup claude --path ~/Dropbox/HippocampThat's literally it. Memory written on your laptop appears on your desktop, your work machine, anywhere. Nothing to configure, nothing to merge, nothing to think about.
hippocamp setup claude-desktop # Claude Desktop
hippocamp setup cursor # Cursor
hippocamp setup gemini-cli # Gemini CLISame memory, every host. Pass the same --path if you want cross-machine sync.
Once wired up, Claude uses Hippocamp proactively — not just when you say "remember":
- Saves automatically when you state a preference, a stable fact about your project or tooling, a decision, or a notable event. Each save is announced inline ("Saved to Hippocamp: preference (terse replies)") so you always know what's been captured.
- Recalls automatically when you reference past context.
- Skips noise — hypotheticals, transient debugging state, code outputs, things already in this session.
If something gets saved that you don't want, just say "forget that" in conversation — Claude calls the forget action. Or run hippocamp inspect to see everything stored.
Raw episodes pile up fast. Periodically Hippocamp runs an LLM pass that reads recent episodes, distils out the durable user-modelling content (facts, preferences, higher-order reflections), and writes it back. Near-duplicate facts are superseded, not duplicated — so recall surfaces clean signal instead of noisy repetition.
Run it on demand, or on a cron:
hippocamp reflect # uses meta.last_reflect_at as cutoff
hippocamp reflect --since 2026-05-01 # explicit cutoffRequires an LLM. The bundled adapter calls Anthropic — install with pip install 'hippocamp[llm]' and set ANTHROPIC_API_KEY. Or pass any object with a complete(prompt, *, system) -> str method via Memory(llm=...). The MCP reflect_memory tool is also auto-exposed when the server boots with ANTHROPIC_API_KEY set, so Claude can call it directly when you ask to "consolidate" or "refresh what you know about me".
Each AI you wired up now has three new tools — recall_memory, update_memory, and reflect_memory — that read and write a private SQLite database on your machine. Memory is yours: never sent to a third party, portable across every AI, lives on every device you own.
~/Dropbox/Hippocamp/ ← cloud-synced (the data — meta + per-device events)
~/Library/Caches/hippocamp/ ← local-only (the index, rebuilt automatically)
That's the whole architecture. Each device writes only to its own events file (no sync conflicts ever); the local cache is rebuilt on demand.
hippocamp inspect # see what's stored, with why-traces
hippocamp inspect --query "python" # ranked recall
hippocamp status # what's stored, where, by which devices
hippocamp sync # rebuild local cache from events
hippocamp sync <local-path> # merge events from a file/dir, then rebuild
hippocamp sync <user@host[:path]> # bidirectional rsync, then rebuild
hippocamp instructions # print the directive (full)
hippocamp instructions --short # compact version (paste into Claude Desktop / ChatGPT custom instructions)
hippocamp reindex [--embedder NAME] # recompute embeddings (after a model swap)
hippocamp reflect # consolidate recent episodes (requires LLM)
hippocamp reflect --since <iso-ts> # explicit cutoff instead of meta.last_reflect_athippocamp sync is one smart command — give it a local path (USB stick, downloaded folder, anything), an SSH peer (user@desktop.local), or no argument at all (just rebuild the cache from whatever Dropbox/iCloud/Syncthing has dropped into your events directory). Memory ends up consistent either way.
import hippocamp as hc
mem = hc.Memory(path="~/Dropbox/Hippocamp")
mem.observe("User asked whether hippocamps swim in lakes (no — saltwater only)")
mem.assert_fact("A hippocamp is half-horse, half-fish, and also a Python package")
mem.assert_preference("Strongly objects to being called a 'hippopotamus'", strength=1.0)
hits = mem.recall("am I a horse, a fish, or a hippopotamus?", limit=5)
for h in hits:
print(h.kind, h.text, h.score, h.why.note)Done automatically. hippocamp setup claude writes a Hippocamp directive into ~/.claude/CLAUDE.md so the assistant prefers Hippocamp over Claude Code's built-in auto-memory. The block is wrapped in <!-- hippocamp:start --> / <!-- hippocamp:end --> markers — re-running setup is idempotent, and any unrelated content in your CLAUDE.md is preserved.
Opt out if you want to manage instructions yourself:
hippocamp setup claude --no-instructionsOr also write the directive into a project-scoped CLAUDE.md:
hippocamp setup claude --project-instructions ~/projects/myapp
# → also writes ~/projects/myapp/CLAUDE.md with the same blockv0.5.0 (alpha). Architecture stable. Ambient memory is live on Claude Code (the directive auto-installs into ~/.claude/CLAUDE.md); Claude Desktop requires a one-time paste from hippocamp instructions --short into Settings → Profile. One hippocamp setup claude command configures Claude Code and Claude Desktop together when both are installed. LLM-driven consolidation (reflect) ships in this release. Cross-machine sync works through any file-sync tool you already use (iCloud, Dropbox, Syncthing, rsync, git). Roadmap to v1.0: encryption at rest, event-log compaction / snapshotting, HTTP/SSE transport for self-hosted always-on stores.
Apache-2.0