Local-first · zero-cloud · MCP-native

Your agent doesn't need more memory. It needs judgment.

Wyrm is the intelligence layer between your AI agent and its memory. It doesn't just store and recall — it blocks repeated mistakes, keeps decisions honest, and learns as a fleet. Deterministic, runs entirely on your machine, no LLM in the hot path.

$npm i -g wyrm-mcp Read the benchmark →
zero cloud calls· zero LLM in memory ops· recall@10 59.9% → 72.0% on real LoCoMo· reproducible offline
The problem

Persistent memory is table stakes now — every tool can recall the past. The real problem is what agents do with it: they repeat the same mistakes, contradict yesterday's decisions, and in a fleet of subagents nothing one learns ever reaches the rest. Recall doesn't fix that. Judgment does.

What Wyrm does that recall can't

Three moves. Only one of them is memory.

✖
01

Blocks the repeat

A recorded failure trips a PreToolUse firewall before the agent re-runs it, and hands back the antidote. Other tools learn only from success — Wyrm learns from failure too.

↯
02

Keeps decisions true

Decisions link to the truths they rest on. When a truth is refuted, recalling a decision built on it warns you: "stop — this rests on something we proved wrong."

⌇
03

Proves it stayed home

Every recall returns a determinism receipt: zero generative-LLM calls, zero data egress. Local by construction, not by promise.

Show me

The moment recall can't give you.

  agent session — wyrm-guard active
# a week ago, this dropped the prod users table. Wyrm remembered.
agent › npm run migrate:prod
✖ BLOCKED by wyrm-guard — failure #1 (command: npm run migrate:prod)
  tried 1×: "ran migrate:prod with no --dry-run; dropped the users table"
  → antidote: --dry-run first, gate on a backup. The call never ran.

agent › wyrm recall "prod migration"
  #1  prod migration corrupted the DB — use --dry-run first
  [attestation] deterministic · 0 generative-LLM calls · 0 bytes egress 
The number

The only agent-memory number you can reproduce with no API key.

Tier (real LoCoMo, 1,982 evidence QA)recall@5recall@10MRRproperties
no-LLM FTS floor52.4%59.9%.393offline · zero-cloud · zero-LLM · CI-gated
+ local vectors (hybrid)60.0%72.0%.443bundled local model · still zero-cloud

This is retrieval recall — did Wyrm return a ground-truth supporting turn? — not end-to-end QA accuracy. We don't claim to beat the cloud players' LongMemEval answer scores; we claim the strongest number you can reproduce offline, with the dataset and harness in the repo. Methodology + repro →

Switch in one line

mem0 is easy to start. Wyrm makes it easy to leave.

Bring your data across

wyrm import --from mem0        dump.json
wyrm import --from zep         export.json
wyrm import --from supermemory data.json
wyrm import --from letta       archive.json
# lands in the review queue, never silently trusted

Then vet what came across

wyrm review
# imported memories stay out of recall until you approve them
# every one is a local SQLite write: 0 LLM, 0 cloud

Renders into any harness's native slot (MEMORY.md / AGENTS.md / Cursor / Copilot / Windsurf) with wyrm render.