Kage — a framework for collaborative agent memory
Git-native memory for coding agents<br>Your coding agent forgets everything. Kage gives it memory that's verified against your code.
Open, git-native memory your team's coding agents read and write together.<br>Every lesson an agent learns becomes a file in your repo: versioned in git,<br>reviewed in pull requests, shared across the whole team. Kage checks each one<br>against your code, so deleted and stale citations get caught before they<br>mislead anyone.
npx -y @kage-core/kage-graph-mcp install<br>{this.textContent='copied';setTimeout(()=>this.textContent='copy',1200)})">copy
One command sets up everything, then restart your agent. Or just tell your agent:
Set up Kage in this repo (https://github.com/kage-core/Kage): run npx -y @kage-core/kage-graph-mcp install, then tell me to restart you.<br>{this.textContent='copied';setTimeout(()=>this.textContent='copy',1200)})">copy
Install in 60s<br>★ Star on GitHub<br>Read the docs
100/100 trust benchmark ·<br>0 dependencies ·<br>no account, no API key ·<br>free & open source —<br>or try it before installing anything: npx -y @kage-core/kage-graph-mcp scan --project .
Kage · savings receiptexample week
412K tokens saved<br>this week≈ $6.18
Recalls served from memory38
Stale memories caught & withheld4
Hallucinated citations rejected2
Caller questions answered from the graph11
your numbers, from your repo · kage gains or the viewer's live feed
How it works<br>Install once. It runs itself.
1 · Install<br>One command creates repo memory, builds the code graph, and auto-wires every agent on your machine.
2 · It takes notes<br>Learnings become packets — explicit or auto-distilled — and every citation is verified against your repo before it's written.
3 · Sessions start warm<br>A "previously…" digest opens each session; verified memory is injected the moment the agent reads a cited file.
4 · Diffs get checked<br>kage pr check warns when your change invalidates team memory — before the PR lands.
Capture — with proof<br>It takes notes. Then it checks them.
Learnings become packets as the agent works — explicitly, or auto-distilled from the session with a signal gate. Every citation is validated against your repo before it's written. A memory citing a file that doesn't exist is refused on the spot.
How a packet earns trust →
gotcha09:24
Don't merge the retry paths — one uses idempotency keys<br>✓ citations verified · src/payments/retry.ts · fingerprinted
decision09:41
Auth uses jose, not jsonwebtoken — CVE in the transitive dep<br>✓ citations verified · src/auth/session.ts · fingerprinted
refused09:52
"Use the helper in src/ghost.ts"<br>✗ rejected on write — no such path in this repo
stale10:05
Legacy retry helper is the fallback<br>⊘ withheld from recall — cited file deleted since capture
Recall — already warm<br>Every session starts knowing.
A "previously…" digest and a timeline of recent memory open each session automatically — and when the agent reads a file, verified packets citing that file are injected right then. Each recall prints the receipt.
Watch memory stream in, live →
SessionStart · injected~800 tokens
# Previously (Kage)<br>Working on: payment retry consolidation<br>Learned: retry paths must stay separate (gotcha, 2d)<br>Drafts awaiting review: 1 · kage inbox
# Recent memory<br>[a3f9c2e1] gotcha retry paths — idempotency keys (2d)<br>[7b21d4f8] decision auth uses jose, not jsonwebtoken (5d)<br>[e8c50a93] runbook npm test --prefix mcp before release (1w)
↳ saved ~12K tokens vs re-reading source
Catch — before it merges<br>Your diff gets fact-checked.
No other memory tool does this: when your change invalidates what the team knows, kage pr check says so — in the same review as the code, with the fix one command away.
The stale-catch commands →
⚠ Your changes invalidated 2 team memories
Auth uses jose, not jsonwebtoken<br>cites src/auth/session.ts — file changed in this diff<br>fix: kage reverify --packet auth-jose · or kage supersede
Webhook retries are capped at 3<br>cites src/webhooks/retry.ts — constant removed<br>fix: kage learn (update) — then this warning disappears
Sync — no account<br>Memory that follows you.
Personal memory lives in ~/.kage/memory and syncs over a private git remote you own. Conflicts resolve newest-wins with both versions kept — and synced packets are re-verified against the local checkout before any recall trusts them.
The sync & cloud design →
git@github.com:you/kage-memory.git● synced · 2 machines
kage syncyour remote, your keys
$ kage sync<br>pushed 2, pulled 1, resolved 0<br>$ kage learn --personal --learning "Always run the full suite before releasing"<br>✓ captured · personal · re-verified on every machine
Compare<br>Remembering is solved. Trusting isn't.
Capture-everything memory solves remembering. Kage solves trusting what's remembered — and a memory system that never re-verifies its own claims gets less trustworthy the longer you use it.
Kage<br>claude-mem<br>mem0 / Zep
Automatic capture + session-start recall<br>via SDK
Hallucinated citations...