russalo@blog
russalo@blog ~ % cat posts/unspilled-is-not-backed-up.md

Unspilled Is Not Backed Up

Jun 27, 2026 · backups · infrastructure · secrets · security · self-hosting · 4 min read ·

og_unspilled_2026-06-26 Every system collects secrets the way a coat pocket collects lint. A token here. A password there. A key minted in a hurry and pasted into a config file you’ll never think about again — until the machine it lived on dies, and you discover the only copy of the thing that unlocked half your fleet went with it.

An old coat on a hook, one pocket turned out, small antique keys spilling toward the floor like lint.

The spec behind all this existed to end exactly that. (A power cut interrupted me in the middle of building it, which is its own story — but this post is about why it was worth building in the first place.)

The mess it was replacing

Before it, the secrets were scattered — a dozen-odd credentials spread across a handful of machines, each sitting in whatever file happened to consume it. No list of what existed. No copy anywhere but the one place it ran. Deliberately kept out of version control — because you don’t commit secrets — which meant the one safe-from-prying-eyes property doubled as a never-backed-up property. If a machine burned down, recovery wasn’t “restore from backup.” It was archaeology: sitting in front of a blank file asking what was supposed to be in here, rebuilding each value from memory and scattered notes, one at a time, for hours.

And the quieter cost: nobody could answer the simple questions. What secrets do we even have? When was this one last changed? What breaks if I rotate it? Those answers lived in one place — a head — and heads don’t survive power cuts either.

The one idea

The spec’s whole purpose was to convert secrets from artifacts of memory into reproducible artifacts.

The move is almost embarrassingly simple to state: seal every secret as ciphertext, then put the ciphertext where you put everything else you care about — in version control, with history, with an off-machine copy. Plaintext exists only at the exact spot a service reaches for it, and only while it’s being read. The sealed form is the source of truth; the live file is just a projection of it.

A key sealed into a wax-stamped envelope and filed into a long row of identical sealed envelopes; at the far end one is opened for a small machine to read.

That single inversion buys everything else for free:

The price, stated honestly

There is a cost, and the spec doesn’t hide it: you’ve taken risk that used to be smeared across a dozen files on a dozen machines and concentrated all of it into a single key. Lose that key and every sealed secret becomes noise. Leak it and everything opens at once.

But that’s the good trade. Diffuse risk feels safer and is worse — it’s the kind you can’t see, can’t audit, and can’t defend, because it’s everywhere and nowhere at the same time. Concentrated risk you can actually protect: it’s one file. You can copy it to safe places. You can guard it like it matters, because now it visibly does. The spec doesn’t shrink the danger so much as gather it — pull it into one bright spot where it can be watched, instead of leaving it scattered through the whole system in the dark.

What it’s really arguing

Underneath the mechanics, the spec makes one claim: a secret you can only restore from memory isn’t backed up — it’s just unspilled. Its purpose was to stop trusting memory with the things that unlock everything, and to make each of them something you could recreate from record — sealed, versioned, reproducible — so that no single machine’s death, and no single session’s death, could carry a secret into the grave with it.

Which is exactly why a session dying halfway through building it was so survivable. It was assembling the one thing whose entire point is that nothing important should live in only one place. It just hadn’t finished applying that lesson to its own keystone yet — which is the story of the day the power went out.

# comments (0)

no comments yet — be the first.

posted comments are reviewed before they appear.
russalo@blog ~ % cd ..