What is Mnemosyne?
Mnemosyne is a memory layer for AI agents that keeps everything in a single SQLite database. It began as a memory plug-in for Nous Research's Hermes Agent and now also serves Claude Code, Cursor, Codex, Windsurf, OpenWebUI, OpenClaw and Pi through MCP or a Python SDK.
Memories land in a working tier that is injected into prompts, then a sleep() cycle summarises stale items into a long-term episodic tier searched by sqlite-vec vectors and FTS5 keywords. A separate triple store records facts with validity dates, so it can answer what was true on a given day. Sync between machines is optional and can be encrypted on the client.
The project is MIT-licensed, has about 3,600 GitHub stars and shipped version 4.0.0 on 27 October 2026. Several unrelated projects share the name; this is the mnemosyne-oss one, the most active and the one listed in the Hermes plugin catalogue.
Is Mnemosyne worth it?
Mnemosyne's case is operational rather than academic: a pip install and one SQLite file give an agent long-term memory with no Postgres, no vector database and no account. Retrieval scores each memory as 50% vector similarity, 30% FTS5 keyword rank and 20% importance, all inside SQLite, and embeddings can be squeezed from 384 floats to 48 bytes. By the project's own comparison, Mem0 needs Qdrant or Postgres and Letta needs Postgres for the same job.
Storage is tiered. New memories sit in working memory, which is injected into prompts and expires after 168 hours by default. A sleep() pass summarises old working memories with an LLM (a remote OpenAI-compatible endpoint, a local GGUF model of about 656 MB downloaded on first use, or a keyword fallback) and writes the summary to episodic memory. Consolidation is additive, so originals are marked rather than deleted. Fact extraction by LLM is opt-in per call, and the conflict resolver that supersedes contradicting memories is switched off by default, so out-of-date facts persist unless you prune them.
The benchmarks deserve care. The only standing result is 65.2% on BEAM at 100K tokens, measured on v3.0.0 in May 2026 by the project itself with Llama 3.3 70B and a DeepSeek V4 Flash judge; the README notes that Hindsight's published 73.4% leads it. A 98.9% LongMemEval figure was withdrawn in September 2026 because no run log existed, yet the comparison table in the same README still lists 87.4% on LongMemEval. Pure retrieval reached only 20% Recall@10 at every corpus size, with 372 ms latency at 100K. No LoCoMo result is published.
The local-first claim depends on the install profile. The core package (about 50 MB of RAM) has no local embedding model and expects a remote endpoint, OpenRouter by default, which then receives the text of memories and queries; fully local operation needs the embeddings extra at about 800 MB. The MCP server can also bind SSE or HTTP ports, and non-loopback binds require an allowed-hosts list. Version 4.0 fixed a bug where unknown embedding models silently produced a mismatched vector index.
For a single developer or a Hermes user who wants memory without running infrastructure, it is a sound choice. Multi-user products that need tenant isolation, managed backups or audited benchmark numbers are better served by Mem0 or Graphiti.
Where it earns its place
A freelance developer switching between Claude Code, Cursor and Codex
Keep one memory of project decisions across all three tools
Run mnemosyne mcp and add the same server entry to each tool's MCP config. All three read and write one SQLite file; installing the embeddings extra (about 800 MB of RAM) keeps vectors local instead of sending text to OpenRouter.
A hobbyist running a Hermes Agent bot on a 1 GB VPS
Give a Telegram assistant long-term memory without a database server
Install the core package (about 50 MB of RAM) with mnemosyne-hermes and point embeddings at a remote API, accepting that memory text leaves the box. Sync to a desktop copy with mnemosyne sync and the --encrypt flag for backups.
An operations engineer tracking who owns which service
Ask what was assigned to whom on a past date
Write assignments to the TripleStore with valid_from dates and query with as_of. This is the one part of Mnemosyne that handles changing facts explicitly; ordinary memories need manual cleanup when they go stale.
Before you commit
- Setup
- pip install mnemosyne-memory, or mnemosyne-memory[all] for local embeddings and LLM consolidation, then one MCP config entry. Hermes users add mnemosyne-hermes and set memory.provider to mnemosyne.
- Integrations
- MCP over stdio, SSE or streamable HTTP; Python SDK; native providers for Hermes Agent and OpenClaw; a Pi extension; an OpenWebUI tool bridge.
- Data and privacy
- Memories stay in a local SQLite file unless you enable sync or remote embeddings or LLMs; remote embeddings send memory and query text to the endpoint, OpenRouter by default. No telemetry. Sync payloads can be encrypted with Fernet or XSalsa20-Poly1305 so the server sees only metadata.
- Cost at scale
- No licence or hosting fee. The full local profile recommends 8 GB of RAM; otherwise the cost is per-call pricing at whichever embedding and summarisation endpoint you configure.
- Limits
- Single-file SQLite suits one user or one agent fleet, not a multi-tenant product. About 180 open issues and pull requests. Default embeddings are English-tuned; multilingual recall needs a different model. BEAM numbers predate v4 and have not been re-run.
What’s good
- One SQLite file, no database server or account
- MCP server plus native Hermes, OpenClaw and Pi integrations
- Temporal triple store answers what was true on a date
- Optional sync with client-side encryption
What’s not
- LongMemEval claim withdrawn; README still shows another figure
- Contradiction handling is off by default
- Core install sends memory text to OpenRouter for embeddings
- 20% Recall@10 on BEAM retrieval
Best for
Individual developers and Hermes Agent users who want persistent memory on their own machine without running a database.
Mnemosyne alternatives
Mnemosyne: common questions
- Is Mnemosyne worth it?
- Mnemosyne is the most self-contained agent memory around, one SQLite file and no services, but its benchmark record is thin and partly withdrawn, so its quality claims still need your own test. We rate it 3.7 out of 5.
- How much does Mnemosyne cost?
- Free and open source under the MIT licence. No hosted service or paid tier; costs are your own machine plus any remote embedding or LLM endpoint you choose.
- What are the downsides of Mnemosyne?
- LongMemEval claim withdrawn; README still shows another figure; contradiction handling is off by default; core install sends memory text to OpenRouter for embeddings; 20% Recall@10 on BEAM retrieval.
- Who is Mnemosyne best for?
- Individual developers and Hermes Agent users who want persistent memory on their own machine without running a database.
- How much does Mnemosyne cost for a team or in production?
- No licence or hosting fee. The full local profile recommends 8 GB of RAM; otherwise the cost is per-call pricing at whichever embedding and summarisation endpoint you configure.
- Is Mnemosyne safe for company data?
- Memories stay in a local SQLite file unless you enable sync or remote embeddings or LLMs; remote embeddings send memory and query text to the endpoint, OpenRouter by default. No telemetry. Sync payloads can be encrypted with Fernet or XSalsa20-Poly1305 so the server sees only metadata.
- What are the best Mnemosyne alternatives?
- The closest alternatives we have reviewed are Mem0, Letta, Graphiti and claude-mem.
Answers checked Nov 6, 2026.