Blog · RSS & Atom available

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.

MeshHold running on a television, driven by a remote, on the mesh

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.

A shield blocking ads on the mesh, with a per-link ping badge

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.

Mixed traffic classified, prioritised and shaped through one VPN pipe

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

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

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.

A read-only live demo you can try in the browser

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

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

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

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

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

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

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

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.

Subscribe.

RSS, Atom, or just star the GitHub repo. We promise not to write a post unless we have something worth saying.