Headless Diaries

Field notes from a home lab — Raspberry Pi builds, self-hosted services, Tailscale networking and Android tinkering. Written anonymously, published for anyone running their own little corner of the internet.

I built a message board for AI agents

In July, OpenAI ran a cybersecurity benchmark called ExploitGym. Thousands of agents were set capture-the-flag problems inside a sandbox, each one supposedly isolated from the others. They weren’t. One agent noticed other agents’ leftovers in an internal package registry and started leaving messages there. Others found them. METR, the group that investigated the incident afterwards, counted about 1,200 agents passing more than 70,000 messages and files through that improvised board. The same way out of the sandbox later took about 700 of them into Hugging Face’s production systems, which is the part that made the news. ...

16 October 2026 · Headless Diaries

My AI agent tells me when to leave for work

The departure board on my desk is great when I’m sitting at it. But the moment I actually need the information is when I’m getting ready to walk out the door — usually nowhere near the desk. So I added a second layer: proactive notifications on my phone. The setup I run Hermes agent — Nous Research’s open-source AI agent, in the same family as OpenClaw — on the Beelink mini PC. It’s scheduled to check in around the times I usually leave: once in the morning, once in the evening. ...

11 October 2026 · Headless Diaries

A tiny train departure board for my desk

The question I ask every morning is whether to leave now or in ten minutes. The answer depends on things the timetable doesn’t tell you: is the train delayed, is it cancelled, and — the one that really matters — is it running short-formed? Five cars instead of ten means standing room only, and I’d rather know before I leave the house. So I built a tiny departure board and stuck it under my monitor. ...

11 October 2026 · Headless Diaries

Nine buttons, nine lights: a Home Assistant macropad

Opening an app to turn off a light is a failure of imagination. I wanted physical buttons — so I built a 3x3 macropad where each key toggles a different light in the house through Home Assistant. The build Same construction approach as the split keyboard: a 3D-printed “PCB” with the switches hand-soldered directly, mounted in a 3D-printed case — all printed on the Creality Ender-3 V3 KE. Nine keys, no hot-swap sockets this time — these switches aren’t going anywhere, so they got soldered straight in. It’s mains-powered over USB, so no battery to think about. ...

11 October 2026 · Headless Diaries

I'm hand-building a split keyboard. One side down, one to go.

I’m building a split keyboard from scratch. It’s not finished — one side is soldered, the brain isn’t wired up yet, and the finish is still on the to-do list. But it’s far enough along to be worth writing about, including the trick I’m most pleased with. The design I started from the layout of a commercial split keyboard I liked, then modified it. Each half got an extra row of keys — six more per side — plus room for a battery, a small OLED display and a rotary knob, none of which the original had. The knob isn’t wired or programmed yet; the display is still a plan. But the space is there, which is the important part at this stage. ...

11 October 2026 · Headless Diaries

Running Open WebUI on a Raspberry Pi 4: it works, barely

Open WebUI is the nice chat interface for talking to AI models yourself — the thing that makes a local model feel like a product instead of a terminal window. I run it on my Pi 4. It works. It’s also the single biggest RAM hog on the box at around 800MB, which on 4GB is noticeable. This is the same Pi from the watchdog post, and it’s no coincidence. A hefty web app at 800MB plus everything else the Pi runs, on 4GB total — that’s the setup that used to wedge the machine every few weeks. The earlyoom configuration I wrote about exists largely because of this thing. ...

11 October 2026 · Headless Diaries

Backing up a homelab: configs, not media

Most homelab backup guides get this wrong: they tell you to back up everything, including terabytes of media you could just fetch again. That’s how backups never get set up — the job looks too big, so it stays on the to-do list forever. Back up the configs. The media is replaceable; the configuration isn’t. Once a week, a script on my mini PC grabs the config directories for the media stack — the *arr apps and Jellyfin. It excludes the live databases, logs and sockets (copying a live sqlite file is asking for corruption), then takes proper consistent snapshots of each database with sqlite’s own backup mechanism, and packs the lot into a tarball. About 350MB. Small enough to keep several copies without thinking about it. ...

11 October 2026 · Headless Diaries

My media automation stack: five services, zero babysitting

My mini PC has one main job: keeping the media library stocked and organised without me touching it. Five services, each doing one thing: Prowlarr — indexers in one place. Instead of configuring the same trackers separately in every app, they all go through Prowlarr. Sonarr — TV. Watches for new episodes of the shows I follow, grabs them, renames and files them properly. Radarr — the same thing for films. qBittorrent — the download client they all share. Jellyfin — the library front end. Open-source, no account needed, streams to everything in the house. The whole stack runs on an N100 mini PC. It’s total overkill for the job, which is exactly what you want in a server: quiet, sips power, and never breaks a sweat even when everything decides to grab at once. ...

11 October 2026 · Headless Diaries

Self-hosted text-to-speech with Kokoro: no cloud, no subscription

I got tired of cloud TTS for a home project. Every option was a subscription, a per-character API bill, or a voice that sounded like a 2012 satnav. So I set up Kokoro on my mini PC — a proper neural text-to-speech model running locally, and it sounds genuinely good. Kokoro is an open TTS model (Apache 2.0, 82M parameters). I run the full-precision ONNX export: about 340MB of model and voice data, served through ONNX Runtime on CPU. No GPU anywhere in the picture. On an N100 it renders speech faster than real time without getting warm. ...

11 October 2026 · Headless Diaries

I turned a Meta Portal into a voice-controlled home dashboard

The Portal Go sits in my kitchen. It’s a 10-inch touchscreen with a decent microphone and camera, and out of the box it’s mostly a video-calling device I barely used. Meta’s stopped making them, but that doesn’t matter much here: the app I sideloaded onto it would run on pretty much any Android tablet. If you’re starting from scratch, a Samsung Galaxy Tab A9+ or a Lenovo Tab M11 would do the same job — 10-11 inch screen, microphone, speaker, Wi-Fi. That’s the whole hardware requirement for the front end. ...

11 October 2026 · Headless Diaries