I found myself using the handoff skill too much — between sessions in different roles, and between different platforms (Codex and Claude for me). So, like programmers do, I wrote a solution for it: a shared memory for a fleet of agents, where each agent group has its own memory scope.
After some time using it, I saw the memory become a pile of junk, so I added a judge to each scope — an independent agent that acts as a gate to that scope's memory. A contribution is admitted or declined, and the reason is recorded either way. Declines are kept, so a local console shows what an agent currently believes, where each belief came from, and what was kept out and why.
It ended up as a cross-platform governed memory system that works for me, so I open-sourced it.
It used to admit things it shouldn't — in an early run (v1.12) it stored an irrelevant note about an office coffee machine. That's fixed once a scope states its purpose (or has enough memory to imply one).
What it still doesn't do, all stated in the README:
- A brand-new empty scope with no stated purpose still accepts that kind of note (https://github.com/oren198/Strata/issues/210).
- If you write a rule like "support never stores customer account details", the judge doesn't yet reliably use that rule to reject such notes when someone contributes them (https://github.com/oren198/Strata/issues/212). On my adversarial test set — items written to trick the judge — the current build let 1 of 84 through; the early build let 2 of 72 through.
After some time using it, I saw the memory become a pile of junk, so I added a judge to each scope — an independent agent that acts as a gate to that scope's memory. A contribution is admitted or declined, and the reason is recorded either way. Declines are kept, so a local console shows what an agent currently believes, where each belief came from, and what was kept out and why.
It ended up as a cross-platform governed memory system that works for me, so I open-sourced it.
It used to admit things it shouldn't — in an early run (v1.12) it stored an irrelevant note about an office coffee machine. That's fixed once a scope states its purpose (or has enough memory to imply one).
What it still doesn't do, all stated in the README:
- A brand-new empty scope with no stated purpose still accepts that kind of note (https://github.com/oren198/Strata/issues/210). - If you write a rule like "support never stores customer account details", the judge doesn't yet reliably use that rule to reject such notes when someone contributes them (https://github.com/oren198/Strata/issues/212). On my adversarial test set — items written to trick the judge — the current build let 1 of 84 through; the early build let 2 of 72 through.
The judge model is set in config. I use qwen3-235b via OpenRouter, which I picked after trying six models on the same test suites; the numbers, and which cells are missing, are here: https://github.com/oren198/Strata/blob/main/docs/evidence/ju...
Feel free to use it or contribute. I'd most like to hear where write-back breaks on someone else's setup