OpenHerd is a decentralized, anonymous, and location-based communication platform. It’s built for people who want to talk without being tracked, post without an account, and speak locally, even when centralized services are down, blocked, or untrustworthy.
- Messages are tied to coordinates, like an anonymous Yik Yak over mesh or Wi-Fi.
- Each post uses a fresh PGP key, with no persistent identity.
- Uses libp2p for decentralized pubsub and direct connections.
- You can use lightweight HTTP-only nodes (relays) can store posts without needing libp2p.
- Relays can optionally register to a global directory for discoverability.
- Devices can sync messages directly or through relays, even without internet.
If you just want to know what to use, you can just go to our Pasture instance
| Project | Description |
|---|---|
pasture |
Full-featured OpenHerd client written in Node.js. Handles post creation, syncing, libp2p comms, and more. Think of it as the Swiss Army knife of the herd. |
relay |
Minimal HTTP relay server for low-resource deployments. Great for Raspberry Pis, dead drops, or public mesh networks. No libp2p required. |
beacon |
Public directory for relays. Relays can advertise themselves here (with optional PoW) for global discovery and indexing. |
meadow |
A full PWA OpenHerd client that runs entirely in the browser. No install, no backend, just one pure decentralized application. |
sprout |
MicroPython version of relay designed for very constrained devices. It works and makes necessary compromises, but it's currently in alpha and not ready for production. |
spec |
The full protocol specification. Covers everything from message formats to chunking, PGP signing, and sync logic. The source of truth. |
Pull requests are welcome across all repos!
You can also open issues, propose enhancements, or help build out reference clients and interfaces.
OpenHerd is still early and experimental.