skip to content a landlocked captain’s log
- Two gates and a fence bosun-x shows one person everything. Every project, every server, every private note. But I also build things for other people, and they would like to see how it is going without me mailing them a screenshot. Today's work is the mechanism for that. A client login that can only ever reach the projects done for them, enforced in one function, behind a build rule that fails if any other code reads the data directly. control · infrastructure · nextjs · typescript
- Launching the lifeboat An earlier note built the backups but never restored one. Since then bosun-x runs every backup through a real restore once a week, into a throwaway database with no network and no name, and counts what comes back. Any database can be put back from a button that dumps the old contents first, so the move is reversible. The recovery order is written down. And the keys and env files, saved nowhere before, now go off the box nightly, encrypted. infrastructure · control · postgres · docker · age · zstd
- Fitting out a home dockyard A start-to-finish walk through the setup I use to build things with an AI agent at home — the laptop you type on, an old laptop turned into an always-on server, where the projects and their state actually live, the plain-text control layer that keeps a dozen of them straight, and how it all joins into one private network once a project outgrows the house. Every term you might not know is a hover away. workstation · infrastructure · control · docker · ssh · nebula · tailscale · wsl · git
- A lifeboat for every hull Every project I run has a git remote, so the code survives a dead machine. The databases, uploaded files and secrets do not. This is the backup system I built into bosun-x in a day. bosun-x owns the config; a separate agent holds the credentials and does the dumps; the sensitive one is encrypted; and one screen shows whether every project has a current copy off the box. infrastructure · control · postgres · ssh · age · zstd
- What changed since you last played Steam already shows a combined news feed for the games you own, but you cannot search or filter it and the ordering barely makes sense. Here is the feed I built for Playtopia.com.au instead, with the same official posts sorted properly, made searchable and filterable, and everything published since you last played each game marked. infrastructure · nextjs · react · steam-api
- The chart room How I keep twenty-odd projects, five machines, and two AI agents in sync from a single dashboard built entirely out of plain Markdown and YAML files. The folder layout, why every status check is recomputed live instead of stored, and the plain-text handoff format that lets two agents continue each other's work. control · standards · docker · git · yaml · nextjs
- A key with one job A container needed to read three remote machines over SSH without holding a key that could also root them. The exact authorized_keys options that pin a key to one read-only command and a single permitted tunnel, what each one does, and the break-in tests that prove it holds. Copy it for anything that has to phone home from inside a container. infrastructure · openssh · docker