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.
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.
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.
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."
Every recall returns a determinism receipt: zero generative-LLM calls, zero data egress. Local by construction, not by promise.
# 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
| Tier (real LoCoMo, 1,982 evidence QA) | recall@5 | recall@10 | MRR | properties |
|---|---|---|---|---|
| no-LLM FTS floor | 52.4% | 59.9% | .393 | offline · zero-cloud · zero-LLM · CI-gated |
| + local vectors (hybrid) | 60.3% | 72.2% | .447 | local Ollama embeddings · 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 →
- import { Memory } from "mem0ai"; + import { Memory } from "@wyrm/mem0-compat"; const m = new Memory(); await m.add("prefers pnpm", { userId:"u1" }); // every add is now a local SQLite write — 0 LLM, 0 cloud
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
Framework adapters for Vercel AI SDK, LangGraph, and OpenAI Agents. Renders into any harness's native slot (MEMORY.md / AGENTS.md / Cursor / Copilot / Windsurf) with wyrm init.