Benchmarks

Every number has a receipt.

Each result below states what was measured, the command that reproduces it in the open repo, and — because a benchmark that hides its limits is marketing — what it does not show.

The headline result

The live reuse A/B — where memory pays, and where it doesn't

A real coding agent ran through the real proxy against the same repository, with and without Kage memory. When the fact the agent needed was not in the code — tribal knowledge — memory changed the outcome. When it was in the code, memory honestly made no measurable difference.

Fact NOT in the code measured
0/3 → 3/3correct answers, without → with memory
Cost per task−41%
Turns per task8.3 → 3.3
Live agent runs through the shipped proxy; harness committed in benchmarks/reuse-ab-live.mjs
Fact IS in the code measured
5/5 = 5/5both arms correct — no measurable difference
Cost delta−1.2% (noise)
Agents read code fine. Kage does not pretend otherwise.

What this does NOT show: a team-wide token saving over weeks of real traffic. That number can only come from your own receipts — which is what kage report team accumulates.

Precision

The injection gate — measured on hostile prompts

The gate must inject nothing on content-free prompts ("fix it", "thanks"), nothing on topics the store cannot answer, and the right memory on direct questions. The acceptance bench holds all four properties at once, and is drift-checked against the shipped recall code:

benchmarks/injection-relevance-kage.mjs measured
False-injection rate (content-free prompts)0
Absent-topic injection rate0
Small-store recall (direct questions)1.0
Expected top-hit rate1.0
Injection precision0.636
Re-run: npm run bench:injection --prefix mcp (use --assert-baseline in CI)

What this does NOT show: relevance on your corpus. The gate normalizes against each store's own score distribution, and every live decision is recorded so your real rate shows up in kage report team — not just our fixtures.

Context efficiency

History digestion — reversible, and honest about the alternative

Single-body compression on real traffic measures ~0% net — we ship that number rather than the wish. The real waste is history: old tool outputs re-sent verbatim on every turn. Opt-in history digestion reduces them to deterministic digests, with the exact original always retrievable from the content-addressed store:

12-turn session, real repo bodies measured
−93.33%whole-session request bytes
Final-turn request−92.93%
Reversibilityexact originals retrievable
Cache stabilitydeterministic digests
Re-run: npm run bench:compression --prefix mcp
Single-body compression, real bodies measured
~0%median net saving — reported, not hidden
Real git diff~0.1%
Source / JSONpassthrough
Compression only pays where payloads repeat. The pipeline passes through rather than claim a saving it didn't achieve.

What this does NOT show: token-level savings on cached providers (a digested prefix re-keys the provider cache once, then stays stable — bytes are the measured unit here), and history digestion is off by default until you opt in.

Safety as tests

The honesty gates — enforced, not documented

Suite + gates measured
Backend aggregate1474 / 1474
Portal tests109 / 109
Workspace vs real PostgreSQL176 / 176
Cross-tenant reads · raw payloads synced · self-approvals0 · 0 · 0
Duplicate syncs · invalid webhooks accepted0 · 0
Local memory during workspace outagefully working
Re-run: npm test --prefix mcp · gate: node --test mcp/dist/vnext/phase-e-gate.test.js

What this does NOT show: production pilots. No design-partner pilot has run yet; the GA report says so and exits non-zero rather than pretending. Live GitHub/Stripe/identity-provider interop is fixture-proven, not exercised against production accounts.

Run them yourself

The repo is open; every bench is a committed script with its baseline recorded.