Built on Open Knowledge Format · Google Cloud ↗

Google shipped OKF. Kage keeps it true.

Google OKF made agent memory an open standard — Markdown in your repo with no lock-in — but left out the part that keeps it honest. Kage is that part: every memory is checked against your code, so your agent never acts on a stale fact. And one proxy brings that verified memory to every agent you run.

$ npx -y @kage-core/kage-graph-mcp install && kage up

One proxy fronts the Anthropic, OpenAI-compatible, and Gemini wire formats — Claude Code, Codex CLI, Cursor, aider, Gemini CLI — with zero per-agent plugins. No account, no API key. Or try it before installing anything: npx -y @kage-core/kage-graph-mcp scan --project .

live reuse a/b · same agent, same repomeasured
0/3 → 3/3 tasks answered correctly when the needed fact is not in the code — without vs. with memory
cost per task−41%
turns to the answer8.3 → 3.3
when the fact IS in the code5/5 both arms
real agent through the real proxy, this repo. Memory pays where knowledge is tribal — when the code already says it, we measure no difference, and we say so.
Open Knowledge Format · Google Cloud

Open Knowledge Format is now the standard.

Kage always kept agent memory as plain files in your repo — no cloud, no lock-in — while everyone else built memory clouds. In June 2026, Google Cloud shipped OKF: the same idea, now an open standard. We adopted it on day one — and added the verification layer it's missing.

1 · Verification

Every concept is checked against your real code; hallucinated citations are refused on write.

2 · Freshness

OKF has no notion of staleness. Kage catches drift the moment code changes and withholds it.

3 · Code-grounding

A code graph anchors each concept to the exact symbols it describes.

OKF standardizes the store. Kage is the verification layer Google left out — carried in OKF-legal x-kage-* fields, so a Kage bundle stays 100% conformant and readable by any OKF consumer.

orders.md — a Kage memory, as an OKF concept · verified ✓
# OKF fields — readable by any OKF consumer
type: Decision
title: Auth uses jose, not jsonwebtoken
resource: src/auth/session.ts
tags: [auth, security]
# Kage's verification layer (OKF-legal extension)
x-kage-verified: fresh
x-kage-anchors: [src/auth/session.ts@9f3c1a…]
x-kage-freshness: { ttl_days: 365, policy: source_hash }
---
# … prose + citations, kept true to the code.
How it works

Capture → verify → inject → receipts. A loop, not a database.

Agents write down what they learn. Kage decides — deterministically, against the code — what is still true enough to say back.

1 · Capture

Learnings become markdown in git

Decisions, gotchas, runbooks — written as OKF concept files under .agent_memory/. No lock-in: teammates get the memory by cloning the repo.

2 · Verify

Every claim is checked against the repo

Citations are resolved against the real code, deterministically. A memory that cites a file that changed under it is flagged — not silently trusted.

3 · Inject

Only verified memory reaches the prompt

Verified, approved claims inject where relevant. Stale memory is withheld with a stated reason. Injecting nothing is a first-class outcome.

4 · Receipts

Everything measurable gets measured

Bytes, injections, recalls served, stale withheld — receipts on your real traffic. Anything estimated is labelled an estimate.

One proxy, every agent

One command. Zero per-agent plugins.

kage up starts a local proxy that fronts three wire formats. Any agent that speaks one of them gets injection, reversible history compression, and the same honesty gates — with no per-agent wiring at all.

How the proxy works →
anthropic
Anthropic Messages API

Claude Code, Codex CLI, aider — anything that honors ANTHROPIC_BASE_URL, or just kage run -- claude.

openai
OpenAI-compatible

Cursor and the wide world of OpenAI-format clients, pointed at the same local port.

gemini
Gemini

Gemini CLI and Gemini-format tools, through the same proxy with the same gates.

The honesty gates

The gate that says nothing when it should.

Most memory tools optimize recall. Kage also measures the other side: never injecting on absent topics, never injecting what the code disproves. Both rates are benchmarked at zero — and drift-checked so they stay there.

A store audit of 367 real packets shows what earns its keep: ops and verification runbooks are the most-recalled class (~1.0–1.4 uses per packet); reference dumps that restate the code measure 0.00. Kage stores what code cannot say.

Full benchmark table →
injection gatemeasured
false-injection rate0
absent-topic injection0
recall1.0
top-hit precision1.0
benchmarks/injection-relevance-kage.mjs · drift-checked in CI
Compare

Remembering is solved. Trusting isn't.

Capture-everything memory solves remembering. Kage solves trusting what's remembered — it re-checks every claim against your code.

Kageclaude-memmem0 / Zep
Automatic capture + session-start recallvia SDK
Hallucinated citations rejected at write time
Stale memory withheld at recall
Diff-time stale-catch before the PR lands
Memory reviewed in git, same PR as the code✓ plain filesSQLite + cloudhosted API
Works with every agent through one proxy✓ 3 wire formatsClaude onlyper-SDK
Savings receipts (measured, never estimated)per-recall token index
Cross-machine syncyour own git remotetheir cloudtheir cloud
Account / API key requirednonecloud optionalyes

Already running claude-mem? Audit your existing store — read-only, no account: npx -y @kage-core/kage-graph-mcp audit-claude-mem classifies every observation as verified, drifted, gone, or uncited.

History digestion · opt-in

Long sessions, digested. Nothing lost.

Turned on, the proxy digests conversation history into compact form — reversibly. The exact originals are always retrievable. Measured on real repo bodies over a 12-turn session, not on synthetic filler.

The honest caveat: compressing a single body on real traffic measures roughly 0%. History is where the savings are — which is why this works on history.

How it is measured →
history digestion · 12-turn sessionmeasured
−93.33% total request bytes across the whole session, real repo bodies
final-turn request bytes−92.93%
single body, real traffic~0%
exact originals retrievablealways
reversible by construction · npm run bench:compression
Team workspace

Shared memory, with a report your lead can trust.

A workspace syncs approved memory across the team — review-gated, tenant-isolated, and proven against a real PostgreSQL, not a mock. If the workspace goes down, local memory keeps working. kage report team answers the only question that matters: is this actually helping?

workspace · real postgresqlmeasured
cross-tenant reads0
raw payloads synced0
self-approvals0
duplicate syncs0
invalid webhooks accepted0
test suite1474/1474 + 109/109
backend aggregate + portal suites · local memory keeps working when the workspace is down

$ kage report team

One command, measured on your traffic:

  • Recalls served and stale withheld — counted, not sampled
  • Live injection rate with confidence
  • Store composition by derivability — what memory holds that code cannot say
  • Dark areas: subsystems with zero memory coverage
  • Review health across the team
Pricing

Free where it matters. Verified everywhere.

The open-source core is complete on its own — verification, receipts, the all-agent proxy, sync over your own git remote. Local-first, private by default.

Open source · $0 forever

Everything on this page: verified OKF memory, the injection gate, history digestion, receipts, the team report, viewer + portal, and sync over your own private git remote. No account, no API key.

Team workspace · self-host today

The review-gated team server — tenant-isolated Postgres, approved-only sync, audit log — is code-complete and self-hostable now (Docker + backup/restore in the repo). Raw prompts never leave your machines.

Managed team · in pilot readiness

The same workspace, run for you. Honest status: the technical gates pass, but no design-partner pilot has completed yet — that is the bar we hold before charging anyone. Book a demo to be an early partner.

Quickstart

Two commands. Then any terminal.

Requires Node.js 18+. No account, no API key. Memory lives in your repo as markdown — review it in the same PR as the code.

your repozsh
$ npx -y @kage-core/kage-graph-mcp install   # memory store + code graph, once per repo
$ kage up                                    # background proxy: anthropic · openai-compatible · gemini
$ kage run -- claude                         # or: export ANTHROPIC_BASE_URL=http://localhost:8788
$ kage status --project .                    # receipts for what it measured
$ kage down                                  # stop it when you are done

kage up starts in audit mode — measurement only; your bytes are forwarded unchanged and nothing is injected until you opt in with kage up --mode assist. Off by default is a feature, not a limitation.

What we will not claim

Where the value is conditional: the A/B above shows memory is transformative when the needed fact is tribal — not written in the code — and makes no measurable difference when the code already answers (5/5 in both arms). If your pain is purely code-derivable, Kage will not speed you up, and its own store audit filters those restatements out.

Where we are: every number on this page comes from this repository's own benchmarks and test suites, reproducible from the source. There are no customer pilots yet; nothing here is a testimonial. "Works with all agents" means the three wire formats named above — Anthropic, OpenAI-compatible, and Gemini — not literally everything.

Stop letting your agent forget.

The open-source core installs in 60 seconds. Demos are 30 minutes, your repo, live.