If Apache Iggy is useful to you, give it a star on GitHubStar apache/iggy
Apache Iggy
Binary Protocol
These are the docs for Apache Iggy 0.8, kept for reference and no longer updated. Server 0.9.0 changed the wire protocol, so 0.8 clients and servers do not work with 0.9.0. Read the current docs.

Binary Protocol

Binary protocol 0.11.0: one wire format across TCP, QUIC and WebSocket, covering both the client and replica planes.

Iggy speaks one binary protocol over its three binary transports: TCP, QUIC, and WebSocket. Commands, responses, data models, and status codes are the same on all of them. The HTTP transport is separate: it exposes the same operations as JSON REST endpoints, listed in server.http.

This section describes binary protocol version 0.11.0. The protocol version is the semver of the iggy_binary_protocol crate, and it's exchanged and checked during login (see Connection lifecycle). The crate itself is the source of truth: every request and response module carries a Wire format: doc comment, and these pages are written against those.

All multi-byte integers are little-endian unless stated otherwise.

The same 256-byte header layout carries two traffic planes. The pages below cover both:

  • Server ↔ SDK client, everything a client sends or receives:
  • Server ↔ server, the replica-to-replica consensus traffic that never appears on a client connection: