hush-protocol — Overview

hush-protocol is the wire protocol specification for the hush ecosystem. It defines how any sync client communicates with any relay. It is pure documentation — no code, no library, no repository dependency.

Any relay that implements hush-protocol accepts any client that implements hush-protocol. Any client that implements hush-protocol works against any relay. The spec is the contract. The implementations are interchangeable.

What hush-protocol Defines

  • Wire framing — the byte layout of every message on the wire
  • Message types — Push, Deliver, Heartbeat, Ack, Error — their byte tags and semantics
  • Push body layout — how a sender addresses a blob to a recipient
  • Ack semantics — what Ack means and what it guarantees
  • Error semantics — permanent rejection, non-retryable
  • Protocol-level envelope size maximum — enforced by both client and relay

What hush-protocol Does Not Define

  • Relay storage policy — TTL, reap interval, infrastructure choices
  • Noise handshake patterns — defined by the Noise Protocol spec, used by implementors
  • Envelope format and sync semantics — defined by hush-sync
  • Client-side delivery guarantees — outbox, replay, ordering

Current Implementors

hush-sync — client-side implementation. Opens Push Sessions to send blobs, Receive Sessions to receive them.

hush-relay — server-side implementation. Accepts Push and Receive Sessions, routes blobs between devices.

See Wire Format for the full specification.