Agent memory that reconciles contradictions. An in-process library:
npm i ramfarm, one SQLite file, no daemon.
Gate falls due 2026-09-09 —
0 days out. On that date the stop condition is
evaluated: if the judge is no better than mem0ai/oss, adopt theirs and close the
repo. Printed here rather than kept in a tracker, because a deadline nobody sees is a deadline
that arrives.
Run the MCP server as the fleet's memory layer for two weeks. If it does not survive our own use, there is nothing to launch. The same test governs whether GhostWare should adopt it internally.
| Watch | Now | Why it matters |
|---|---|---|
| W1 extraction over-firing | 19.93/day, 515 with no scope | every write costs an LLM call, and a scopeless fact fires everywhere |
W2 judge over-firing CONTRADICTS | 1.9% of writes superseded something (20) | the largest adoption risk: a wrong verdict silently retires a true memory |
| W3 novelty-gate misses | 12 live pairs at cosine ≥ 0.9 | the fast floor skips the judge, so a real contradiction can slip through |
| W2b judge verdict mix | 3862 pairs judged
— 12 CONTRADICTS, 10 DUPLICATE,
34 REFINES, 3806
UNRELATED; 0 never asked (past
maxNeighbours), 2190 never asked (same
utterance) | the judge is firing CONTRADICTS; spot-check that each retirement was correct |
Snapshot taken 2026-10-22T12:30:12.704Z, received 2026-10-22T12:30:16.019Z. Counts only — no memory text, no subject names, and no scopes are sent to this page.
All three are SQL over the farm DB, not judgement, so they live in
scripts/d1-watch.mjs — read-only, no LLM — and it pushes a snapshot here.
That is the A1 shape from GhostWare's supervision-mechanisms comparison: read-and-report, where a
dead reporter produces silence rather than damage. Which is why the staleness of the snapshot is
printed above rather than hidden.
StdioMcpClient — it is the
only StatefulAIGhostApp consumer that runs as a host process rather than in a
container, so it is the only one an stdio child can reach