· via Hacker News – Front Page (hnrss.org)
Parley: a federated chat network that any stock IRC client can join
A newly launched open-source project runs one chat instance per domain, federates signed messages over HTTPS, and exposes the whole network to stock IRC clients such as irssi and WeeChat.
What launched
Parley, an open-source chat network that federates without a central authority while speaking plain IRC to clients, has surfaced on the Hacker News front page. According to the project's README, every person or team runs a small instance for their own domain, instances find each other automatically, and the entire federated network is presented to ordinary IRC clients such as irssi, WeeChat or Textual with no plugins required. The project is candid about maturity: the current release is a working proof of concept that demonstrates the design end to end, but the software is not yet hardened.
Email-style identities
Identities look like email addresses. [email protected] lives on the foo.com instance and [email protected] on bar.com; when Bob types /msg [email protected] hi, delivery works even if the two instances have never encountered each other before. A user's nick is the bare local part and the instance is the host, so alice appears as alice![email protected] in WHO and WHOIS, and any nick visible in NAMES is one that can be messaged directly.
Discovery combines DNS with well-known identity documents, an approach the README says mirrors Salty IM. An SRV record, _parley._tcp.domain, points at the instance, while well-known JSON files served over HTTPS publish the instance's ed25519 public key and inbox and confirm that individual users exist. The wire format is documented separately in the repository.
Signed HTTPS federation
Federation runs over HTTPS. Each event is a JSON document POSTed to a peer's inbox with a detached ed25519 signature in the headers, and the receiver verifies it against a key it discovered itself rather than trusting whatever the sender claims. Peering is open: any instance whose signature checks out can talk to yours, and linked instances exchange the peers they know, so a mesh forms without configuration. The README walks through the flow — a lookup of the recipient's SRV record, key discovery, a signed delivery, and a hello back to the stranger, after which both sides swap channel rosters and peer lists.
The IRC layer
Parley implements the IRCv3 extensions modern clients expect, including server-time, message-tags, echo-message, multi-prefix and setname. TAGMSG carries client-only tags such as typing indicators across the federation, tags on a message survive storage so a reply is still a reply when replayed from history, and a draft multiline extension keeps a pasted paragraph as one message rather than eight.
History follows the account rather than the client: CHATHISTORY pages through channels and private messages alike, a join replays whatever the user has not yet been shown, and a draft read-marker lives on the account, so marking a channel read on a phone clears it on the desktop. Each instance keeps channel history in SQLite with a full-text search index, and a peer returning after an outage pulls what it missed.
Channels come in two flavours. Global channels such as #dev are replicated across every linked instance that has members in them, and because nobody owns them they carry no topic and no operators. Local channels prefixed with & never leave the instance and are invisible to peers. Moderation follows from the lack of ownership: the ban command becomes a block list by mask, covering a single user or an entire instance, with an admin's list applying instance-wide and peering itself managed through an admin tool.
Running an instance
The project ships as the prologic/parley container image with an example compose file, plus a demo that brings up CoreDNS, a local certificate authority and two instances in Docker. Accounts are managed while the server runs — through the parleyctl tool, an admin page, an HTTP API, or single sign-on via OpenID Connect or reverse-proxy identity headers — and users mint IRC tokens for their clients from a settings page. There is no config file; process-level settings live in flags and their matching environment variables. A parleyctl check command probes an instance the way a peer would, reporting faults such as a missing SRV record, which the README identifies as the most common failure.
Why it matters
Text and chat traffic has largely consolidated onto centralised platforms run by single companies. Parley argues for a different split: keep the decades-old, universally supported IRC protocol as the client-facing surface, and place identity, discovery, cryptographic verification and moderation underneath it. Users install nothing new, operators depend on no vendor, and joining the network costs one DNS record and a TLS certificate. Open federation does raise questions the proof of concept does not answer — the project itself flags hardening as outstanding, and peering that accepts any valid signature invites spam and abuse at scale. Even so, as a runnable demonstration that plain IRC and decentralised identity can coexist, Parley is a notable data point for anyone designing federated messaging.
- #irc
- #federation
- #open-source
- #messaging
- #self-hosting