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
Metadata
Release files for membo 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| membo-0.1.1.tar.gz | 11.2 kB | Without provenance | Details for membo-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| membo-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for membo-0.1.1-py3-none-any.whl |
Total release size: 23.7 kB
Release files / membo-0.1.1.tar.gz
| Download URL | membo-0.1.1.tar.gz |
|---|---|
| Size | 11.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cd8ab14e40c820360c8b268bf245af99e5fef78b560099e3ec1099abe502a629
|
|
BLAKE2b-256 checksum How to use checksums |
7e7a6475bfda1aa181e9cabb7f4a56a590d56f83ce7d4be0fcc01dba9a8d7840
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / membo-0.1.1-py3-none-any.whl
| Download URL | membo-0.1.1-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c9b8ca73f2fa409efe9c179e62e9f0a20c7091020de826b50c0af949ab7060dd
|
|
BLAKE2b-256 checksum How to use checksums |
13097982955ff1a3b8bfa006e0b3d417ee84ca3f9867bf06838ca70759be95e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Security for membo 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.