One long-term memory for every agent you use.
m3m0s is a small Go binary that remembers what your coding agents learn and serves it back to Claude Code, pi, opencode, Hermes and any MCP client, from a single SQLite file you own.
code:myproject We use SQLite with versioned migrations.Every agent tool forgets on its own.
Context gets re-explained every session, nothing travels between tools, and cheaper models can't be used because each session has to rediscover everything. m3m0s keeps one memory and shares it.
Shared, not per-tool
What you decide in Claude Code is there when you open pi or opencode. Memories are scoped by domain, such as a project or a topic.
Automatic
Hooks and plugins capture sessions and recall on each prompt. Agents don't have to remember to call a tool.
Quiet by default
Recall only fires above a relevance floor, with at most three hits and about 500 tokens. Unrelated prompts get nothing.
How it works
Three steps, all running on your own hardware.
Capture
The integration reads the session transcript, redacts secrets, and optionally extracts short atomic facts with an LLM of your choice.
Store
Facts land in SQLite with embeddings from any OpenAI-compatible endpoint. Duplicates are merged, contradicted facts expire, stale ones fade.
Recall
On each prompt a vector search runs against your memory and injects the few relevant facts as fenced context, marked as not user input.
Works with your tools
First-class integrations share one binary and one memory.
Claude Code →
Hooks capture sessions and recall memory on every prompt, with an optional read-only MCP server.
pi →
An extension with the same recall and capture loop, fenced as memory and not as user input.
opencode →
A plugin that appends relevant memories to each turn and captures when a session goes idle.
Hermes →
A memory provider for Hermes agents, with a read-only search tool.
Any MCP client →
A stdio MCP server with search, get, recent and stats. Read-only mode available.
Light by design
No extra databases, no daemons for the vector index. It runs on a small ARM board.
Running in five minutes
Start the server with Docker Compose, open the WebUI to create your account, then point any client at it.
- Embedded WebUI to browse, edit and chat with your memory
- Secret redaction before anything is stored or sent out
- Retention and forgetting, with a grace period and restore
- Read-only MCP mode so agents can search but never rewrite
cp .env.example .env # set OPENAI_API_KEY (embeddings)
docker compose up -d
docker compose logs # first start prints your API key
export M3M0S_URL=http://localhost:19234
export M3M0S_API_KEY=<the key from the log>
m3m0s add "We use SQLite with versioned migrations" \
--domain code:myproject
m3m0s search "which database do we use?" \
--domain code:myprojectGive your agents a memory that lasts.
Open source under the MIT license. Your data stays on your machine.