Why I Built Hrth

I hate the name. I needed something not taken. We’ll deal with it later.

The short version

It’s dangerous out in the world. People are being silenced by legitimately authoritarian regimes. We’ve let the internet become centralised for convenience and now it’s being weaponised against us in the worst ways. The US hasn’t been going in a great direction the past year and I’m being a little forward-thinking.

Secure communication that isn’t easy is secure communication that nobody uses. So the goal is: secure, and easy enough that it can be set up on as local or as large a level as desired. Families can run their own instance with their own security if they want. Mod it. I don’t care, as long as the greater network is free.

The problem with centralisation

Centralisation makes things easy. That’s what people want. But it’s always a matter of when, not if, the platform gets turned against you. Every centralised service is one policy change, one acquisition, one government order away from becoming hostile to its own users. The convenience is the trap.

I was thinking in terms of protocols. How do you connect people easily enough and securely enough in a way that can’t be co-opted — or at least, if it is, the threat surface is minimal? How do you make the federated and secure route the default, not the fallback for paranoid people?

The moderation problem

When you have a billion users and there’s an obvious need to moderate, you’re going to have issues with broad strokes. They work in simulations, less so in the real world. The collateral damage is real people getting silenced, and the people who should be silenced finding workarounds anyway.

So: make something simple enough that instances can be small. A village takes care of, and polices, its own. When people know each other, it’s easier to hold people accountable and call them out. Shame still works. Distributed moderation isn’t a burden when the groups are small enough that people actually know who they’re talking to.

You can’t completely exclude someone from the wider network. But you can relegate them outside the main network with enough effort. The point isn’t perfect control — it’s that social pressure actually functions at the right scale.

What Hrth actually is

Federated messaging. End-to-end encrypted, zero server-side message storage. Messages exist in transit queues with TTLs and then they’re gone. Not written to a database. Not stored for later. They arrive, they’re delivered, they evaporate.

Users are user@node.domain. Nodes discover each other through a registry, route messages through consent-based networks. Instance owners can purge their entire database whenever they want. The data is mostly metadata, but even routing information could be useful to the wrong people. I wanted it removable.

The crypto is serious — X3DH key agreement, Double Ratchet for 1:1, Sender Key for groups, browser-side key management. But the point was never to build the most technically impressive chat app. The point is the protocol.

Infrastructure, not an app

If I make this simple enough, it can become a default. It’s the protocol that matters, not my particular app. It’ll be much harder to stamp out if it’s simple enough to run on a Pi. Maybe passed over Meshtastic one day.

Two instances are live now — village.hrth.chat and chatter.j4f.org.uk. Federation is partially working. Multi-device needs work. Mobile and desktop apps are coming. The bones are there.

The goal was never to build a product. It’s to build something that works well enough that other people can take the idea and run with it. Families, communities, organisations — whatever scale makes sense. The network doesn’t need to be big. It needs to be free.