Release notes & deep-dives.
Every release. Every retrospective. Every time we change our minds about something and write a long post about why. Subscribe by RSS or just check back when there's a new tag.
Reaching further: a third agent, the TV, and pairing beyond the LAN
The last couple of weeks went inward; this one went outward. A third AI agent joins Claude and OpenCode, MeshHold learns to run on the living-room TV, key-pairing reaches past your own network, and the mesh quietly starts giving away less about itself.
The little things: ad blocking, per-link ping, and pairing without a clipboard
After a fortnight of heavy plumbing, this week was deliberately smaller: the quality-of-life things you actually notice day to day. Ads gone from the built-in browser and VPN, a ping on every mesh link, and a way to pair a device that has no clipboard.
One pipe, many priorities: VPN routing, QoS, and a connection flood that wouldn't quit
Last week was storage; this week was the network. The exit-VPN went from "it works" to "it's configurable, and it survives being abused" — per-destination routing, pluggable transports, router-grade QoS, and a week-long fight with a connection flood that kept killing DNS.
Heads-down: debugging, polish, and storage that holds
No new headline feature this stretch — on purpose. The breadth is there now; the job is making each piece hold up. Storage that survives the awkward cases, and a long tail of debugging and polish.
One flat network for all your nodes: the mesh LAN
The tunnel browser and the VPN forwarders were always pointing at the same destination: giving your machines one private network of their own. This week it arrived — a flat, Tailscale-style mesh LAN, with MagicDNS and per-key ACLs, on Linux, Windows, and Android.
Try it without installing anything: the live demo
"Self-hosted, peer-to-peer, encrypted" is a hard thing to picture from a feature list. So there's now a live demo — the real daemon, seeded with example content, that you can click around in your browser without installing a thing.
MeshHold has a home: the website is live
Three weeks ago this was an architecture doc and an empty Go module. Today it has a website — with a blog, docs, and a forum — which, depending on your perspective, is either a milestone or a very productive way to procrastinate.
An AI agent that lives inside your mesh
You can now run a coding agent as a first-class node in your mesh and reach it from any paired device over libp2p — streaming output, approval prompts, and all. The mesh already moved your files and your calls; now it moves your agent's tokens too.
Calls over the mesh
Voice and video calls, peer to peer, over the same encrypted libp2p circuits that move your files. No SFU, no third-party server, nobody in the middle. Turns out a storage mesh makes a perfectly good phone.
Press play: streaming and a built-in media player
Your music and video were already on the mesh. Now you can actually play them — streamed block by block, without downloading the whole file first.
MeshHold goes Android — a full node in your pocket
The phone app isn't a thin client phoning home to a server. It runs the same daemon as your NAS, as a real node in the mesh — it just happens to fit in your pocket.
The mesh comes alive
Two daemons said hello to each other, exchanged encrypted blocks, agreed their catalogs matched, and passed a chat message. It doesn't sound like much until it's your own code doing it.
Day one: the idea, and an empty Go module
Every project starts as one commit. Today that commit is an architecture doc and an empty Go module — and a stubborn idea: your data should live on machines you own, replicated across people you trust, encrypted end to end, with nobody's cloud in the middle.