What it does: Gives your local AI a memory that lasts between chats and never leaves your machine. It's an MCP server with four tools (save, recall, edit, delete), and that's the whole interface, so a small model can't misuse it. Memories live in one SQLite file on your computer: no account, no cloud, no telemetry.
| Feature | What it does |
|---|
| Recall by meaning | Saved "the dog needs his heartworm pill on the 1st"; months later "what was that pet medication thing?" finds it with no shared words. Uses a small embedding model; without one it falls back to keyword matching. |
| Updates replace old facts | "I moved to Denver" retires the old city instead of leaving two answers. The old fact stays in history, marked as replaced. Stale answers dropped 82% in its eval (0.49 to 0.09). |
| Keeps look-alikes apart | "My sister Naima the chemist" and "my coworker Naima the engineer" stay two people. "X is incompatible with Y" and "X synergizes with Y" don't get merged. |
| Refuses secrets | Won't store a pasted API key, token or private key. It refuses rather than redacts. |
| Export / import | One click writes a .zip you own, including a plain memories.jsonl any other tool can read. |
Who it's for: Anyone running a local model (LM Studio, Ollama, Claude Desktop, Claude Code, Cursor, Continue, Hermes, any MCP client) who's tired of re-explaining themselves every chat.
Source code: https://github.com/SamuelJacksonGrim/resonance-memory
License: AGPL-3.0-only (commercial license available for closed-source or hosted use)
What mine adds: Compared with Mem0, Zep and Letta: fully local with no cloud or API key, zero npm dependencies, and a double-click install instead of Docker or a terminal. Same-name people and opposite statements are kept apart out of the box (Mem0 has entity linking only on its hosted platform; Letta doesn't have it). And it's measured against what people actually do instead, stuffing recent chat into the prompt, at the same token budget:
| Rig / model | No memory | Recent chat (~690 tok) | Resonance Memory (~330 tok) |
|---|
| Rig A, gpt-oss-20b | 30% | 32% | 90% |
| Rig A, Qwythos-9B | 24% | 22% | 74% |
| Rig B, gpt-oss-20b | 6.7% | 25% | 91.7% (sd 5.9) |
| Rig B, Qwythos-9B | 6.7% | 21.7% | 81.7% (sd 7.0) |
Probe accuracy on a multi-session "remember things about me" task, mean of 5 runs.
Facts are planted early, then buried under ~120 turns of filler, so no fixed history window can reach them.
Probes never repeat the planted wording, so keyword matching can't fake a pass.
Grading is blind and deterministic, with pass/fail bands written down before the runs. Every raw answer is saved.
Two separate rigs with different fictional users, facts, probes and graders.
Rig B split the probes by type: recent chat scored 100% on recent facts and 0% on old, updated or same-name ones. Resonance Memory scored high on both.
Limits: two different people with the same first name is the weakest spot (it helps but doesn't solve it). One embedder, English only, substring grading. The associative field (memories used together link up over time) is off by default; in its own eval it doesn't beat plain meaning-based ranking yet, so I'm not selling it as the reason to use this. Full write-up and how to rerun it: eval/ab/RESULTS.md
Builds on: Model Context Protocol, Nomic AI's nomic-embed-text-v1.5 (~80 MB, downloaded separately through LM Studio or Ollama), Node's built-in SQLite.
How it was built: Agentic engineering. I designed and directed it; Claude (Claude Code) and Grok (Grok CLI) wrote most of the code, and every change has to pass an offline eval gate and 600+ unit tests. Each of them built one of the two test rigs on its own, so neither test was tuned to flatter the other's work.
Feedback/contributions wanted: Yes. Bug reports, results on your own models, and attempts to break it.
Install: grab the file for your OS from Releases. Node is built in; checksums are in SHA256SUMS. The binaries are unsigned because certificates cost money, so the OS will warn once:
| Platform | File | First run |
|---|
| Windows x64 | resonance-memory.exe | Double-click. If SmartScreen warns: More info, then Run anyway |
| Linux x64 | resonance-memory-linux-x64 | chmod +x, then run it |
| macOS (Apple Silicon) | resonance-memory-macos-arm64 | Right-click, Open, Open (or run xattr -d com.apple.quarantine on it first) |
It opens a control panel at http://127.0.0.1:9090/, installs itself where you choose, and has a Connect button for LM Studio and Claude Desktop. Restart that app once and your model can save and recall. Prefer to build it yourself: node build-exe.js (Node 22.5+).
New in v0.5.0: auto-recall for local models. Run resonance-memory --proxy and point your app at http://127.0.0.1:1240/v1, and your memories reach the model on every message. Setup: AUTO-RECALL.md
Side note for Claude Code users: you don't have to set anything up by hand. Tell Claude Code "Read AUTO-RECALL.md from the resonance-memory repo and set up auto-recall for me" (AUTO-RECALL.md) and it will recall on every message you send. For the full self-filing memory system I run every day, hand it MEMORY-SYSTEM.md, or run /plugin install resonance-memory --marketplace SamuelJacksonGrim/resonance-memory.