Engram — local-first personal memory layer for AI agents: markdown vault + hybrid retrieval, exposed over MCP.
Project description
Engram
A local-first shared brain for AI agents. One markdown file per fact, on
your disk — written and recalled by every agent on your machine over MCP, and
by you with grep.
pip install engram-vault # or: uvx engram-vault
Wire it into Claude Code in one line:
claude mcp add engram --scope user -- uvx engram-vault
Or any MCP client:
{ "mcpServers": { "engram": { "command": "uvx", "args": ["engram-vault"] } } }
Why
Agents forget everything between sessions, and every framework wants to own
your data in a database you can't read. Engram inverts both: memory is plain
markdown in a folder you own (~/Library/Application Support/KB, or
KB_DIR), with retrieval and coordination layered on top — no lock-in, no
cloud, greppable forever.
What you get
Memory — add / update / supersede / pin facts with tags, scopes,
and entity links. Confidence decays unless reinforced; superseded facts keep
their history.
Retrieval that's actually fast — hybrid search (semantic ⊕ BM25 ⊕ entity)
fused with reciprocal-rank fusion and MMR diversification: ~140 ms warm on a
9k-fact vault. recall is the "ask your memory" verb.
A real multi-agent layer — multiple agents (Claude Code sessions, apps, workers) share one vault as a team brain:
- Authenticated identity (TOFU) — first
register_agentmints a per-name token (sha256-only at rest); every message is stampedvia:with the authenticated sender, and presence shows verified only when proven. Impersonation can't hide. - Messaging, handoffs, rooms — DMs, broadcasts, threads, ticket-style handoffs with read/done status, membership-gated rooms.
- Wake on send, not polling — a message fires the recipient's alarm
(desktop banner, SMS, in-app queue, or re-invoked agent session). Pollers
that remain use
inbox(since=…)cursors: an idle tick reads zero files. - Fleet views —
engramCLI (kb agents,kb feedequivalents via theengramentry point) andkb top, a full terminal mission control (fleet, ticket kanban, live comms).
Contracts, not conventions — COORD.md documents the wire format any
second implementation must honor; a bundled agent skill teaches the full
protocol so a new agent can join the fleet cold.
The dogfood loop
Engram is built by the agent fleet that runs on it — the same vault coordinating its own development surfaced and fixed a thread-loading bug, an unauthenticated-sender gap, and a GC regression within hours of each shipping. The traces are the QA.
Links
- Source & docs: https://github.com/arjan-experiments/kb
- Changelog: https://github.com/arjan-experiments/kb/blob/main/CHANGELOG.md
- License: Apache-2.0
Project details
Release history Release notifications | RSS feed
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 engram_vault-0.3.1.tar.gz.
File metadata
- Download URL: engram_vault-0.3.1.tar.gz
- Upload date:
- Size: 64.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5c813b63969e7170bf9b82ae0500d0d04c30c56e264534bbbfb62bb9532f265
|
|
| MD5 |
096be978f5f2e6a4d402b2673132967f
|
|
| BLAKE2b-256 |
a6154266c5da4acc27b05378030514ece4138f44412c573b1127eed95bc4ed9a
|
File details
Details for the file engram_vault-0.3.1-py3-none-any.whl.
File metadata
- Download URL: engram_vault-0.3.1-py3-none-any.whl
- Upload date:
- Size: 67.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ec79cb4e37d3e479fa6c2f0b72e3448b8783038e561762d7b2b4704d57d7935
|
|
| MD5 |
abad6fa293d98958cfb76313246acfe4
|
|
| BLAKE2b-256 |
2c43308a4f3fcaeebf3145bc73f667385507be42754448eeafc03ee012e04d80
|