Software That Watches Itself
6 min read
I run real infrastructure alone. Coquina, a self-healing memory platform serving ~2,046 memories and ~48,359 auto-linked edges across 25 projects. Forge, a runtime with 32 live autonomous workers. A 25-step overnight chain that runs at 5 AM while I sleep. There is no on-call rotation. There is no second engineer. There's me.
That constraint forces a design decision most teams get to avoid: the system has to watch itself, because I can't.
So the central question of everything I build isn't "does it work." It's "does it know when it stops working, and can it fix itself before I wake up." Reliability stops being an afterthought and becomes the actual product. Here's how that plays out in practice.
A Memory System That Knows When It's Drifting
A memory platform has a quiet failure mode that almost nobody designs for: it gets worse over time without throwing a single error. Embeddings drift as content shifts. Old memories rot. Retrieval slowly degrades while every metric you're watching stays green. By the time you notice, you've been trusting bad recall for weeks.
Coquina has four self-evolution subsystems aimed squarely at that decay. Each one watches a different way the system can quietly go wrong.
Embedding-drift detection. The embedding space isn't static — as the corpus grows and shifts, the geometry of what's "similar" moves underneath you. Coquina watches for that drift instead of assuming the vectors it wrote six months ago still mean what they meant then. Drift detected is drift you can correct. Drift unmonitored is a retrieval system slowly lying to you.
Forgetting metrics. Not everything should survive. A memory layer that only accumulates becomes a junk drawer — technically complete, practically useless. Coquina measures forgetting as a first-class signal, so the system can reason about what's decaying and what should. Knowing what to drop is as much a feature as knowing what to keep.
Two-stage diffusion retrieval. Retrieval isn't one shot. The two-stage design lets the system widen and then refine — cast a broader net, then sharpen — instead of betting everything on a single similarity score. More robust recall, fewer confident misses.
Graph-diffusion consensus. Coquina isn't just a vector store; it's an auto-linking relationship graph with ~48,359 typed edges. Graph-diffusion consensus lets signal propagate across those edges so the system reaches agreement on what's relevant by structure, not just by raw distance. The graph stops being decoration and starts doing retrieval work.
None of these are features a user clicks. They're features that keep the thing a user does click from silently degrading. That's the kind of reliability you only build when nobody's around to catch the slow failures for you.
Three-Tier Self-Healing: Back in Five Seconds
Detection is half the job. The other half is what happens at 3 AM when something falls over and I'm asleep.
Coquina has three-tier self-healing, and the number that matters is this: it comes back in about five seconds. Not "I get paged in five seconds." Not "I start debugging in five seconds." It's recovered in five seconds, before I ever know there was a problem. Tiered means it tries the cheap fix first and escalates only if it has to — the same way you'd triage by hand, except it doesn't wait for a hand.
This runs on native Apple M4 Silicon with embedded ChromaDB and no Docker. There's no orchestration layer to lean on, no managed service quietly restarting my pods. The recovery logic is the system's own. When you don't have a platform team, the platform behavior has to live inside the product.
Forge extends the same philosophy across the runtime: a self-healing daemon checks in on a 60-second loop, and a chain-watchdog worker keeps the overnight DAG honest. The system is built to assume things break — because they do — and to treat recovery as a designed path, not an incident.
A Runtime That Tunes Itself
Self-healing keeps you alive. Self-improvement makes you better. Those are different problems, and Forge has a worker for the second one.
It's called cerebellum, and it does RL edge-tuning. The system observes how its own relationship edges are performing and tunes them with reinforcement learning — the infrastructure learning from its own operation and adjusting, without me hand-editing weights. It's one of 32 workers, and it's not alone in this class: evolution drives the self-evolution subsystems, consolidation compresses and reorganizes memory, basal-ganglia detects habits, amygdala runs a security council. The runtime is a small society of processes, several of which exist purely to make the rest of the society run better tomorrow than it did today.
That's the part I find genuinely interesting as a product person. Most software gets worse after launch — entropy, drift, bit-rot — unless a human actively fights it. I wanted the opposite default: a system whose baseline behavior is to improve, so that the time I'm not spending on it isn't time it's decaying. Cerebellum tuning edges overnight is a small instance of a large idea — the operator's absence should make the system smarter, not more fragile.
Why This Is a Product Position, Not a Brag
I could frame all of this as "look how much I built solo." That's the wrong frame, and it's not why I'm writing it down.
The right frame is that reliability is a feature, and self-monitoring is how you ship it. When I build a memory platform that detects its own drift, measures its own forgetting, heals in five seconds, and tunes its own edges, I'm not gold-plating. I'm making a product an operator can actually trust — and trust is the entire value proposition of infrastructure. Nobody adopts a memory layer that might be quietly wrong. Nobody runs an overnight chain that might silently stop. The monitoring isn't separate from the product. The monitoring is the product, for anything meant to run unattended.
This is also, bluntly, the only way one person runs this much. Thirty-two workers, a 25-step chain, a memory graph with ~48,359 edges, zero cloud API calls, all on hardware in my house — that scale is only survivable because the systems carry their own reliability instead of handing me the pager. Every subsystem that watches itself is a subsystem I don't have to. The leverage isn't that I work harder. It's that I built things that work on themselves.
That's the bet I keep making: don't build software you have to babysit. Build software that watches itself, catches its own failures, and improves while you sleep. Do that, and one operator can run what used to take a team — not by being heroic, but by refusing to ship anything that needs a hero.
If you're building infrastructure that has to run unattended and want to talk about designing reliability in from the start, I'm at reed@grainlabs.io.