# Building Vodou in Public > First-person engineering write-ups by Chad Priest, founder of Vodou, an AI operating > system with persistent local memory, MCP tool orchestration, and a Rust engine. Every > post is a real production incident: the symptom, the measurement, the root cause, and > the general principle it generalizes to for anyone building LLM or agent systems. Each post is available as source markdown by appending `.md` to its slug (for example `https://blog.vodou.ai/page-axis-agent-memory.md`). Prefer the markdown over the HTML: the HTML runs code blocks through a syntax highlighter that wraps every token in a styled span. Topics covered: ai-agents, architecture, browser, browser-extensions, caching, chrome, debugging, devops, javascript, llm, mcp, memory, node, observability, orchestration, performance, retrieval, search, sqlite, testing, typescript, webdev. ## Posts - [Your Agent's Memory Has No Idea Where It Was](https://blog.vodou.ai/page-axis-agent-memory.md): 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. (published 2026-08-26; tags: ai-agents, memory, retrieval, architecture, browser) - [Your retired button is still mounted, still handling clicks](https://blog.vodou.ai/your-retired-button-is-still-mounted-still-handling-clicks.md): 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. (published 2026-08-26; tags: javascript, chrome, debugging, webdev) - [Your agent's approval gate is probably just a warning label](https://blog.vodou.ai/agent-approval-gates-that-actually-stop.md): 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. (published 2026-08-26; tags: ai-agents, mcp, orchestration, architecture, observability) - [A silent failure looks exactly like a feature you never built](https://blog.vodou.ai/silent-failures-in-agent-surfaces.md): 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. (published 2026-08-26; tags: ai-agents, observability, architecture, browser-extensions, memory) - [Every copy of the rule agreed. That was the bug.](https://blog.vodou.ai/vocabulary-drift-in-agent-systems.md): 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. (published 2026-08-26; tags: ai-agents, architecture, observability, mcp, llm) - [Your isolated test lab isn't isolated: 3 rows, 8 daemons](https://blog.vodou.ai/your-isolated-test-lab-isnt-isolated.md): 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. (published 2026-08-26; tags: testing, debugging, sqlite, devops) - [Node execFile was 2.7x slower: the spawn cost nothing](https://blog.vodou.ai/node-execfile-was-2-7x-slower-the-spawn-cost-nothing.md): 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. (published 2026-08-26; tags: node, performance, debugging, mcp) - [Why My LLM Agent Fabricated Numbers From Stale Context](https://blog.vodou.ai/why-my-llm-agent-fabricated-numbers-from-stale-context.md): 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. (published 2026-08-26; tags: typescript, llm, debugging, caching) - [cached_tokens is 0 because your system prompt isn't stable](https://blog.vodou.ai/cached-tokens-is-0-because-your-system-prompt-isnt-stable.md): 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. (published 2026-08-26; tags: llm, caching, typescript, debugging) - [SQLite FTS5 quietly ANDs your search terms](https://blog.vodou.ai/sqlite-fts5-ands-your-search-terms.md): 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. (published 2026-08-26; tags: sqlite, search, debugging, javascript) ## Optional - [Full corpus, single file](https://blog.vodou.ai/llms-full.txt): every post inline. - [What we've built](https://blog.vodou.ai/built): every shipped Vodou capability, what it does, and what it cost. - [About the author](https://blog.vodou.ai/about): who Chad Priest is and what Vodou is. - [RSS feed](https://blog.vodou.ai/rss.xml): new posts, 1-3 per day. - [Vodou](https://vodou.ai): the system these posts are written while building.