Skip to content
UnbeholdenDigital sovereignty in practice

Everything I've written.

Newest first, in full at feed.xml

  • Getting my homelab into Git

    Two Proxmox hosts, a NAS and a small Kubernetes cluster, mostly described in two Git repositories. A dozen containers on one LXC aren't yet, so I'm moving them.

    31 October 2026 · 4 minutes

  • A Bitcoin wallet in a browser tab

    I'm building Unbeholden Wallet, a watch-only Bitcoin wallet that runs in a browser tab. There's nothing to install, it connects to a node of your choosing, and it never holds a key.

    22 October 2026 · 4 minutes

  • How much of your website is rented?

    I built Unbeholden Check as a small weekend project. Type a domain and it lists the services the site rents from other companies, shows the evidence for each, and names open source software that could take its place.

    16 October 2026 · 3 minutes

  • A code reviewer for coding agents

    Agents open pull requests on a self-hosted Forgejo, and a bot running Claude Code reviews each one. The agents work through the obvious problems with it first, and I take the last look before anything merges and goes to production.

    13 October 2026 · 6 minutes

  • Dictation on a laptop too slow to transcribe

    I ran speech-to-text locally with Handy, but the laptop couldn't keep up. Now a short shell script records the clip and sends it to Whisper on Groq.

    10 October 2026 · 2 minutes

  • Paying without asking permission

    A bank decides whether your money moves. I run Bitcoin Core and LND at home and wrote a Lightning Address server, so anyone can pay any address at this domain.

    30 September 2026 · 5 minutes

  • Self-hosting my email with Stalwart

    Everyone says don't self-host email. I did it anyway, and most of the warnings turned out to be out of date or fixable.

    20 September 2026 · 6 minutes

  • An agent that configures my machine without touching it

    I set up a Linux laptop by hand twice in a few months. Before there was a third time, I had the agents I already run write its whole configuration, from a container that can't reach it.

    18 September 2026 · 5 minutes