Self-hosted · MCP · CLI · HTTP

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.

$ docker compose up -d
YouWhich database do we use for sessions?
Recalled by m3m0s · 0.68code:myproject We use SQLite with versioned migrations.
AgentI'll store sessions in the existing SQLite database and add a versioned migration.

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.

1

Capture

The integration reads the session transcript, redacts secrets, and optionally extracts short atomic facts with an LLM of your choice.

2

Store

Facts land in SQLite with embeddings from any OpenAI-compatible endpoint. Duplicates are merged, contradicted facts expire, stale ones fade.

3

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.

Light by design

No extra databases, no daemons for the vector index. It runs on a small ARM board.

1 binarypure Go, no cgo
1 fileSQLite with versioned migrations
~250 MBlive size at 75k memories
armv7amd64 and arm64 too

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
Read the quickstart
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:myproject

Give your agents a memory that lasts.

Open source under the MIT license. Your data stays on your machine.