name xplshn/wire-docs
last change 2026-07-12
clone url
https://srcdump.net/xplshn/wire-docs.git

commit briefs

cc3e10e
xplshn  ·  2026-07-12
master

branches

refs

tree

readme


Wire is a text-based, line-oriented, UTF-8 chat protocol. It replaces IRC and Discord idioms with orthogonal primitives. It is not backwards compatible with IRC or any derivative.

The design goals, in order:

  1. Orthogonal - primitives compose, they don't overlap
  2. Transparent - no hidden state, all context is explicit
  3. Extensible - features are optional namespaces
  4. Efficient - one line per logical unit
  5. Human-legible - minimal clients are first-class citizens, raw wire lines are readable without tooling

The protocol (ELI5 explanation)

Every line follows the same shape:

VERB key=value key=value :optional payload

A few real examples:

MSG cid=01JXYZ456 mid=01JXYZ789 :hello world
REACT mid=01JXYZ789 eid=thumbsup
SUB rid=/wire.example.org/acme/general
ERR code=NOPERM :you are not allowed to do that

Tags are unordered. Unknown tags are silently ignored. No special-casing per verb. IDs are 26-char Crockford base32 ULIDs, user IDs are derived from Ed25519 public keys and are stable across servers.

Transport: TCP with mandatory TLS 1.3. Default port: 6789

Spec

The normative specification is docs/wire_spec-0.8.txt. The implementation notes with Go code examples are in docs/IMPL.md. When in doubt, check the spec.


3rd party Implementations:

Clients:

  1. cable, by sr.ht/~chld