The design choice that matters here is storage: memory is Markdown on disk, so you can read it, edit it, and check it into a repo, and the SQLite index is rebuilt around it rather than being the source of truth. Because the workspace is a directory rather than a hosted account, several clients can share one identity, and a second project just means a second directory.
A local-first memory server that gives an agent long-term facts, a user profile, an entity graph and daily logs that survive between sessions. Memory lives in readable Markdown — `MEMORY.md`, `USER.md`, `AGENTS.md`, `RELATIONS.md` and dated files under `daily/` — indexed in SQLite so the same workspace can be attached to Claude Desktop, Cursor, Cline or Open WebUI at once.
- Load the whole memory context at the start of a session — long-term facts, user profile, agent instructions, relations and daily logs — with `memory_bootstrap`
- Write a fact to a chosen tier with `memory_write`, so preferences and decisions go to long-term memory and progress notes go to the daily log
- Search across tiers together or one at a time with `memory_read`, combining BM25 keyword scoring and vector similarity in a single ranked query
- Record typed relationships between entities with `memory_relate`, with near-duplicate triples suppressed by cosine similarity
- An optional `memory_list` tool, and a dispatcher mode that routes every action through a single `memory_tool` call for clients that do better with a small tool surface
Nothing by default: with `provider: none` it runs on SQLite with FTS5 alone — no API key, no GPU, no extra dependencies. Python 3.12 or newer; the package is `groundmemory` (0.6.13 in pyproject) and `groundmemory-mcp` serves HTTP at `http://127.0.0.1:4242/mcp`, with stdio also supported. `docker compose up -d` gives the same endpoint. Semantic search is optional and takes a local sentence-transformers model or any OpenAI-compatible endpoint, configured through `GROUNDMEMORY_EMBEDDING__PROVIDER` and friends.
One command — pip install groundmemory && groundmemory-mcp
