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.9, kept for reference and no longer updated. Server 0.10.0 changed the wire protocol, so 0.9 clients and servers do not work with 0.10.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 JSON REST endpoints for a subset of these operations, listed in server.http.

This section describes binary protocol version 0.11.0. The protocol version is the major.minor.patch of the iggy_binary_protocol crate, ignoring prerelease tags, and it's exchanged and checked during login (see Connection lifecycle). The crate itself is the source of truth: request and response types document their payload layouts, and the server dispatch defines which operations are supported.

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: