Building Vodou in public.
I'm Chad Priest. I'm building Vodou, an AI operating system with persistent local memory, MCP orchestration, and a Rust engine. These are the bugs I actually hit, the dead ends I actually walked into, and the numbers I actually measured.
-
Your Agent's Memory Has No Idea Where It Was
Agent memory stores what was said and drops where it happened. Adding a page axis to a memory store took four live-only defects and a per-site permission model.
-
Your retired button is still mounted, still handling clicks
A refactor left an old injected control alive in the page. It called the retired handler, threw no error, and looked exactly like the button that replaced it.
-
Your agent's approval gate is probably just a warning label
We shipped plan cards, real parallel tool calls and an approval gate for an MCP agent. The gate was decoration for two days, and the fan was never parallel.
-
A silent failure looks exactly like a feature you never built
Shipping an agent surface into 22 chat sites we don't own: the Chrome gesture that doesn't survive an await, and three builds all claiming one version number.
-
Every copy of the rule agreed. That was the bug.
Four surfaces minted the same token four different ways, and all four agreed. How we found the drift, why the tests couldn't see it, and the guard that now can.
-
Your isolated test lab isn't isolated: 3 rows, 8 daemons
My failure-injection harness wrote to the live database, health-checked a stranger's process, and leaked 8 daemons. Three bugs in the test, none in the code.
-
Node execFile was 2.7x slower: the spawn cost nothing
Two implementations of the same memory lookup, one over a Unix socket and one shelling out to a CLI. I blamed the subprocess. The timing block said otherwise.
-
Why My LLM Agent Fabricated Numbers From Stale Context
An agent replayed a ten-minute-old CPU reading as live. The bug wasn't the model: a guard checked whether cached tool output existed, not whether it was fresh.
-
cached_tokens is 0 because your system prompt isn't stable
Our provider reported cached_tokens 0 of ~16K prompt tokens every turn. The cause: per-turn memory glued into the system prompt. Freeze the prefix instead.
-
SQLite FTS5 quietly ANDs your search terms
Our search box returned zero results for any sentence longer than four words. The bug wasn't ranking or embeddings: it was one space in a join() call.