Membo
A local-first, persistent project context layer that multiple AI coding agents share over MCP.
Git answers what the code is. Nothing answers what the project is — what is being built, why, what was decided, what is blocked, what happens next. So every new session starts with the user re-explaining the project to yet another agent.
Membo is an MCP server holding a project knowledge graph on your machine. Claude works on a project and stops; Codex connects to the same server, calls one tool, and has the current task, the architecture, past decisions, blockers, recent sessions, and the next action. No re-explaining.
Everything runs locally. Nothing is uploaded.
Install
pipx install membo # or: uv tool install membo
Then, once per project, from inside it:
membo init
That writes the memory server into that project's .mcp.json (merging, so
your other MCP servers are left alone) and creates .memory/. Restart your
agent and it is connected.
The first context_load on a fresh project returns instructions telling the
agent to seed itself: read the repo for what it can verify, then ask you for
what it cannot. Point your agent at AGENT_PROTOCOL.md for
the full lifecycle.
Tools
| Tool | |
|---|---|
context_load(task?) |
The handoff. Focus task + one hop out + blockers + rules + last sessions + live git. Not the whole graph. |
recall(query) |
Text search across memory. |
graph_query(name, depth) |
Why does this exist, what depends on it, what does it block. |
remember(type, name, body, ...) |
Record context. The single write path. |
task_update(name, status) |
todo / doing / blocked / done. |
session_end(summary, touched, next_action) |
The handoff record. |
How it stores things
<project>/.memory/memory.db — SQLite, a generic nodes + edges graph. Per
project, so it is committable, shareable with teammates, and it moves with the
repo.
<project>/.memory/*.md — PROJECT.md, ARCHITECTURE.md, DECISIONS.md,
BUSINESS_RULES.md, TASKS.md, KNOWN_ISSUES.md, SESSIONS.md,
CURRENT_STATE.md. Generated from the DB after every write, never edited by
hand. One-way DB→markdown, so there is no dual-write drift: humans read the
markdown, agents read the graph, only one side is writable.
Two rules keep it honest:
- Git is read live, never ingested.
context_loadshells out to git on each call. Zero storage, never stale, git stays authoritative. - Stated is not observed. Every node is
observed(derived from git/files) orstated(an agent's assertion). Stated nodes render as_(stated)_, so a claim is never mistaken for a fact.
What it deliberately does not do
No AST parsing, no code graph. code-review-graph already does that well, incrementally, over MCP. Membo is the layer above: tasks, decisions, business meaning, history, handoffs. When the two are joined (by file path) you get code understanding and project intent; today they are separate servers.
Check
.venv/bin/python -m membo.selfcheck
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file membo-0.1.1.tar.gz.
File metadata
- Download URL: membo-0.1.1.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd8ab14e40c820360c8b268bf245af99e5fef78b560099e3ec1099abe502a629
|
|
| MD5 |
bd8679c96a9a8e4f8c2785d5d40a249e
|
|
| BLAKE2b-256 |
7e7a6475bfda1aa181e9cabb7f4a56a590d56f83ce7d4be0fcc01dba9a8d7840
|
File details
Details for the file membo-0.1.1-py3-none-any.whl.
File metadata
- Download URL: membo-0.1.1-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9b8ca73f2fa409efe9c179e62e9f0a20c7091020de826b50c0af949ab7060dd
|
|
| MD5 |
b68d0d77aa01c2829cdef3f4a948e6d3
|
|
| BLAKE2b-256 |
13097982955ff1a3b8bfa006e0b3d417ee84ca3f9867bf06838ca70759be95e5
|