# Apache Iggy > Apache Iggy is a persistent message streaming platform written in Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing millions of messages per second. Apache Iggy is a message streaming server, not a hosted service: there is no API on this domain to call. This site carries the documentation, blog and community pages. The source, releases and issue tracker live at https://github.com/apache/iggy. These docs describe server 0.9.0, Rust SDK 0.11.0, CLI 0.14.0, Node.js SDK 0.10.0, and the Python, Java, Go and C# SDKs at 0.9.0. Every docs page is also available as Markdown: replace the trailing slash in its URL with `.md`, for example https://iggy.apache.org/docs/introduction/getting-started.md. Each docs section is also available as one file, listed under "Docs by section" below. All the docs pages in one file are at https://iggy.apache.org/llms-full.txt, which is large. ## When to use this site - Running or configuring the server, including storage, networking and clustering: https://iggy.apache.org/docs/server/ and https://iggy.apache.org/docs/clustering/ - Writing a producer or consumer in a given language: https://iggy.apache.org/docs/sdk/ - Talking to the server directly over QUIC, TCP or HTTP: https://iggy.apache.org/docs/binary-protocol/ - Moving data in or out of Iggy without writing code: https://iggy.apache.org/docs/connectors/ - Command line and web administration: https://iggy.apache.org/docs/cli/ and https://iggy.apache.org/docs/web_ui/ - Downloading a release: https://iggy.apache.org/downloads/ - Contributing, or reaching the project's mailing lists and Discord: https://iggy.apache.org/community/ ## Writing Iggy clients - Use the high-level producer and consumer API for anything beyond a first example. It handles consumer groups, offsets, batching and reconnection: https://iggy.apache.org/docs/sdk/rust/high-level-sdk/ - The server and each SDK have their own version numbers. Check that the SDK version you install matches the server: https://iggy.apache.org/docs/sdk/introduction/ - Some connection string keys differ between transports, and an unknown key is an error. Check the key for each transport before reusing a connection string: https://iggy.apache.org/docs/sdk/connection-strings/ - By default a client retries a failed connection forever, and only logs the retries if tracing is set up. For scripts that should fail fast, set `reconnection_retries=0` in the connection string (`reconnection_max_retries=0` for QUIC). ## Docs by section Each file joins every page in one docs section. - [Introduction](https://iggy.apache.org/llms-full/introduction.txt): 9 pages, 88 KB - [Tutorials](https://iggy.apache.org/llms-full/tutorials.txt): 2 pages, 19 KB - [Server](https://iggy.apache.org/llms-full/server.txt): 13 pages, 139 KB - [Clustering](https://iggy.apache.org/llms-full/clustering.txt): 6 pages, 41 KB - [Binary Protocol](https://iggy.apache.org/llms-full/binary-protocol.txt): 7 pages, 59 KB - [Connectors](https://iggy.apache.org/llms-full/connectors.txt): 25 pages, 235 KB - [SDK](https://iggy.apache.org/llms-full/sdk.txt): 20 pages, 185 KB - [CLI](https://iggy.apache.org/llms-full/cli.txt): 2 pages, 23 KB - [Web UI](https://iggy.apache.org/llms-full/web_ui.txt): 1 page, 7 KB - [AI](https://iggy.apache.org/llms-full/ai.txt): 2 pages, 11 KB - [FAQ](https://iggy.apache.org/llms-full/faq.txt): 1 page, 6 KB ## Documentation - [Welcome](https://iggy.apache.org/docs/): Apache Iggy documentation: how Iggy organizes data into streams, topics, partitions and segments, and where to start. - Introduction - [About](https://iggy.apache.org/docs/introduction/about/): What Apache Iggy is: a persistent message streaming platform written in Rust, with QUIC, TCP, WebSocket and HTTP transports. - [Concepts](https://iggy.apache.org/docs/introduction/concepts/): The domain model behind Iggy, and how an append-only streaming log differs from a message broker. - [Coming from Apache Kafka](https://iggy.apache.org/docs/introduction/coming-from-kafka/): How Apache Kafka's topics, partitions, consumer groups and offsets map to Apache Iggy, and what works differently. - [Glossary](https://iggy.apache.org/docs/introduction/glossary/): Short definitions of the terms used across the Apache Iggy docs, with links to where each one is explained. - [Serialising messages](https://iggy.apache.org/docs/introduction/serialising-messages/): Choose a format for your message payloads, and send more than one kind of message to the same topic. - [Architecture](https://iggy.apache.org/docs/introduction/architecture/): Inside the Iggy server: how work is scheduled across cores, how requests are routed, and how a message reaches disk. - [Quickstart](https://iggy.apache.org/docs/introduction/quickstart/): Run the Iggy server and send and receive your first message with the Rust SDK, in one file. - [Getting started (Rust)](https://iggy.apache.org/docs/introduction/getting-started/): A first program with the low-level Rust SDK: create a stream and topic, send messages, then poll them back. - [Getting started (Python)](https://iggy.apache.org/docs/introduction/getting-started-python/): A first program with the Python SDK: create a stream and topic, send messages, then read them back on their own and as a consumer group. - Tutorials - [An event-driven service with a consumer group](https://iggy.apache.org/docs/tutorials/event-driven-service/): Build a small order-processing service in Python: key messages by customer, share a topic between two service instances with a consumer group, and see them take over from each other and resume. - [A Grafana dashboard for the broker](https://iggy.apache.org/docs/tutorials/grafana-dashboard/): Run an Iggy server with Prometheus and Grafana in Docker Compose, and watch the broker on a dashboard. - [Troubleshooting](https://iggy.apache.org/docs/troubleshooting/): What the most common first-run failures look like, what causes them, and how to fix them. - Server - [Introduction](https://iggy.apache.org/docs/server/introduction/): What the Iggy server does, and where its releases and Docker images are published. - [Upgrading from 0.8 to 0.9](https://iggy.apache.org/docs/server/upgrading/): What you need to change when moving from Apache Iggy 0.8 to 0.9: a fresh data directory, matching SDKs, and config changes. - [Configuration](https://iggy.apache.org/docs/server/configuration/): The server's TOML configuration, how a file is merged over the embedded defaults, and what each section controls. - [Topic Options](https://iggy.apache.org/docs/server/topic-options/): Per-topic retention, durability and segment layout options, set when the topic is created. - [Storage Engine](https://iggy.apache.org/docs/server/storage-engine/): The segmented append-only log, and how streams, topics, partitions and segments map onto files on disk. - [Durability](https://iggy.apache.org/docs/server/durability/): What a completed write guarantees, how to select topic durability, and what survives a single-node crash. - [Networking](https://iggy.apache.org/docs/server/networking/): The four transports Iggy serves simultaneously, TCP, QUIC, WebSocket and HTTP, and what each is best suited to. - [Security](https://iggy.apache.org/docs/server/security/): Authentication, authorization, transport encryption and encryption at rest in the Iggy server. - [Monitoring](https://iggy.apache.org/docs/server/monitoring/): Scrape the server's Prometheus metrics: the token the endpoint needs, what it exports, and which metrics are worth alerting on. - [Docker & Helm](https://iggy.apache.org/docs/server/docker/): Run the Iggy server from the official Docker images, and deploy it with the Helm chart. - [Testing with Iggy](https://iggy.apache.org/docs/server/testing/): Run the Iggy Docker image from your own test suite, with examples for Rust, Python and Node.js. - [Linux tuning](https://iggy.apache.org/docs/server/linux-tuning/): Prepare Linux hosts for Iggy and measure the effects of memory, CPU, storage, and network tuning. - [Benchmarking](https://iggy.apache.org/docs/server/benchmarking/): How Iggy is benchmarked, the tooling that ships with it, and the public platform for comparing results. - Clustering - [Viewstamped Replication](https://iggy.apache.org/docs/clustering/vsr/): How Apache Iggy replicates data across a cluster with VSR - [Cluster Durability](https://iggy.apache.org/docs/clustering/durability/): Quorum completion, persisted prepare history, and the failures each topic policy covers. - [Deploy a Cluster](https://iggy.apache.org/docs/clustering/deploy/): Build the binaries and run a three-node Apache Iggy cluster - [Cluster Configuration](https://iggy.apache.org/docs/clustering/configuration/): Reference for the [cluster] settings, consensus timing, and node roster - [Cluster Security](https://iggy.apache.org/docs/clustering/security/): Replica authentication, shared-secret rotation, and TLS for replica traffic - [Client Failover](https://iggy.apache.org/docs/clustering/client-failover/): Local reads, leader redirection, and retryable errors from the client side - Binary Protocol - [Binary Protocol](https://iggy.apache.org/docs/binary-protocol/): Binary protocol 0.11.0: one wire format across TCP, QUIC and WebSocket, covering both the client and replica planes. - [Framing](https://iggy.apache.org/docs/binary-protocol/framing/): The fixed 256-byte header every binary-transport message rides in, and the request, reply and eviction shapes it carries. - [Connection lifecycle](https://iggy.apache.org/docs/binary-protocol/connection-lifecycle/): How the protocol version is packed and checked, and the login-register handshake that authenticates a connection. - [Commands](https://iggy.apache.org/docs/binary-protocol/commands/): The catalog of command codes, their operation bytes, and which commands are replicated. - [Shared encodings](https://iggy.apache.org/docs/binary-protocol/encodings/): The primitives command payloads are built from: names, identifiers, consumers and the other shared encodings. - [Message batches](https://iggy.apache.org/docs/binary-protocol/messages/): The batch layout messages travel and rest in, from the 256-byte batch header down to individual message frames. - [Server-to-server](https://iggy.apache.org/docs/binary-protocol/cluster/): The replica-to-replica plane: its dedicated TCP port, command discriminants, and traffic that never reaches a client. - Connectors - [Introduction](https://iggy.apache.org/docs/connectors/introduction/): The connector runtime: dynamically loaded source and sink plugins, how data flows through them, and what ships today. - [Runtime](https://iggy.apache.org/docs/connectors/runtime/): How the connector runtime loads plugins, resolves its configuration, and manages connector lifecycles. - [SDK](https://iggy.apache.org/docs/connectors/sdk/): The Sink and Source traits, the connector macros, and the decoders and encoders used to read and write Iggy streams. - [Transforms](https://iggy.apache.org/docs/connectors/transforms/): Mutate, filter and convert messages as they pass through the connector runtime, and how each transform is configured. - [Observability](https://iggy.apache.org/docs/connectors/observability/): Logs, Prometheus metrics, the stats endpoint, OpenTelemetry export and per-source state files for the connector runtime. - Sources - [Source](https://iggy.apache.org/docs/connectors/sources/source/): What source connectors do, and the Source trait every one of them implements. - [Elasticsearch Source](https://iggy.apache.org/docs/connectors/sources/elasticsearch/): Poll documents from an Elasticsearch index into Iggy streams, incrementally when a timestamp field is configured. - [InfluxDB Source](https://iggy.apache.org/docs/connectors/sources/influxdb/): Poll InfluxDB on an interval and produce the resulting rows into an Iggy stream, on both InfluxDB V2 and V3. - [Postgres Source](https://iggy.apache.org/docs/connectors/sources/postgres/): Stream rows from PostgreSQL into Iggy topics by incremental table polling or change data capture over logical replication. - [Random Source](https://iggy.apache.org/docs/connectors/sources/random/): Generate random messages into Iggy streams for testing, benchmarking and verifying a connector pipeline. - Sinks - [Sink](https://iggy.apache.org/docs/connectors/sinks/sink/): What sink connectors do, and the Sink trait every one of them implements. - [ClickHouse Sink](https://iggy.apache.org/docs/connectors/sinks/clickhouse/): Insert messages from Iggy streams into ClickHouse tables over the HTTP interface. - [Delta Lake Sink](https://iggy.apache.org/docs/connectors/sinks/delta/): Write messages from Iggy streams into Delta Lake tables on local disk, S3, Azure Blob Storage or Google Cloud Storage. - [Apache Doris Sink](https://iggy.apache.org/docs/connectors/sinks/doris/): Load JSON messages from Iggy streams into a pre-created Apache Doris table through the Stream Load HTTP API. - [Elasticsearch Sink](https://iggy.apache.org/docs/connectors/sinks/elasticsearch/): Index messages from Iggy streams into an Elasticsearch index using the bulk API. - [HTTP Sink](https://iggy.apache.org/docs/connectors/sinks/http/): Deliver messages from Iggy streams to any HTTP endpoint, from webhooks and REST APIs to serverless functions. - [Iceberg Sink](https://iggy.apache.org/docs/connectors/sinks/iceberg/): Consume messages from Iggy topics and store them in Iceberg tables, with REST catalogs and S3-compatible storage. - [InfluxDB Sink](https://iggy.apache.org/docs/connectors/sinks/influxdb/): Write messages from Iggy streams to InfluxDB as line-protocol points, on both InfluxDB V2 and V3. - [Meilisearch Sink](https://iggy.apache.org/docs/connectors/sinks/meilisearch/): Index messages from Iggy streams as documents in a Meilisearch index through the official Rust SDK. - [MongoDB Sink](https://iggy.apache.org/docs/connectors/sinks/mongodb/): Insert messages from Iggy streams into a MongoDB collection, one document per message. - [Postgres Sink](https://iggy.apache.org/docs/connectors/sinks/postgres/): Store messages from Iggy topics in a PostgreSQL table, with optional table creation and configurable payload storage. - [Quickwit Sink](https://iggy.apache.org/docs/connectors/sinks/quickwit/): Send messages from Iggy streams to a Quickwit index over HTTP, creating the index when it does not exist. - [S3 Sink](https://iggy.apache.org/docs/connectors/sinks/s3/): Write messages from Iggy streams to Amazon S3 and S3-compatible object stores such as MinIO, R2, Spaces and B2. - [Stdout Sink](https://iggy.apache.org/docs/connectors/sinks/stdout/): Print messages from Iggy streams to standard output, for debugging and verifying a connector pipeline. - [SurrealDB Sink](https://iggy.apache.org/docs/connectors/sinks/surrealdb/): Write messages from Iggy streams into SurrealDB over the HTTP API, bulk inserts split by the configured batch size. - SDK - [Introduction](https://iggy.apache.org/docs/sdk/introduction/): The official Iggy client SDKs, their packages and registries, and the transports each one supports. - [Connection Strings](https://iggy.apache.org/docs/sdk/connection-strings/): The canonical reference for Iggy connection strings, covering every scheme, credential form and option. - Rust - [Intro](https://iggy.apache.org/docs/sdk/rust/intro/): The Rust SDK, the primary and most complete Iggy client, and where its source lives. - [Examples](https://iggy.apache.org/docs/sdk/rust/examples/): The Rust SDK examples in the core repository, and how to start a server to run them against. - [High-level SDK](https://iggy.apache.org/docs/sdk/rust/high-level-sdk/): IggyProducer and IggyConsumer: batching, consumer groups and offset commits without the boilerplate. - [Stream Builder](https://iggy.apache.org/docs/sdk/rust/stream-builder/): The stream builder, for event-driven applications that would otherwise repeat producer and consumer setup. - Python - [Python SDK](https://iggy.apache.org/docs/sdk/python/intro/): The Python SDK, a PyO3 wrapper around the Rust SDK, and how to install it. - [Examples](https://iggy.apache.org/docs/sdk/python/examples/): Working Python examples from the core repository, covering connection strings, message headers and TLS. - Java - [Java SDK](https://iggy.apache.org/docs/sdk/java/intro/): The Java SDK, with blocking and CompletableFuture clients over TCP, and which servers they pair with. - [Examples](https://iggy.apache.org/docs/sdk/java/examples/): Runnable Java examples from the core repository, built with Gradle, and how to start a server for them. - Go - [Go SDK](https://iggy.apache.org/docs/sdk/go/intro/): The Go SDK, a blocking client speaking the VSR wire protocol over TCP, and which servers it pairs with. - [Examples](https://iggy.apache.org/docs/sdk/go/examples/): Runnable Go examples from the core repository, and how to start a server they can connect to. - Node - [Node.js SDK](https://iggy.apache.org/docs/sdk/node/intro/): The Node.js and TypeScript SDK, from installation to keeping client and server versions in step. - [Examples](https://iggy.apache.org/docs/sdk/node/examples/): Build the local Node.js SDK and run its TypeScript examples. - C# - [C# SDK](https://iggy.apache.org/docs/sdk/csharp/intro/): The async-first C# SDK for .NET applications over TCP and HTTP, from installation to creating a client. - [Guide](https://iggy.apache.org/docs/sdk/csharp/guide/): Client configuration and the full low-level IIggyClient API surface for the C# SDK. - [High-level SDK](https://iggy.apache.org/docs/sdk/csharp/high-level-sdk/): IggyPublisher and IggyConsumer for C#, with background batching, retries and automatic offset commits. - [Examples](https://iggy.apache.org/docs/sdk/csharp/examples/): Producer and consumer samples for the C# SDK, built on the high-level publisher and consumer. - C++ - [C++ SDK (WIP)](https://iggy.apache.org/docs/sdk/cpp/intro/): The C++ SDK, a CXX bridge over the Rust SDK, and how to build it from source with Bazel. - PHP - [PHP SDK](https://iggy.apache.org/docs/sdk/php/intro/): The experimental PHP SDK, a native extension wrapping the Rust SDK, and how to build it from source. - CLI - [Iggy CLI](https://iggy.apache.org/docs/cli/start/): Install the Iggy CLI, connect to a server, authenticate, and manage connection contexts. - [Command Reference](https://iggy.apache.org/docs/cli/commands/): Every iggy CLI command with its arguments, flags, and a runnable example - Web UI - [Iggy Web UI](https://iggy.apache.org/docs/web_ui/start/): The Iggy Web UI dashboard, for monitoring server health and browsing streams, topics, messages and users. - AI - [Introduction](https://iggy.apache.org/docs/ai/introduction/): The AI-related components of Apache Iggy: the MCP server that lets LLM applications work with a running Iggy server. - [MCP Server](https://iggy.apache.org/docs/ai/mcp/): Run and configure the Apache Iggy MCP server, including transport, Iggy credentials and TLS. - FAQ - [FAQ](https://iggy.apache.org/docs/faq/faq/): Common questions about Apache Iggy, including how it compares to Kafka and other message brokers. ## Blog The ten most recent posts. The full list is at https://iggy.apache.org/blogs/. Each post is also available as Markdown: replace the trailing slash in its URL with `.md`. - [Apache Iggy's migration journey to clustering powered by Viewstamped Replication (part 3)](https://iggy.apache.org/blogs/2026/10/27/vsr-clustering-part-3/): 2026-10-27 - [Apache Iggy's migration journey to clustering powered by Viewstamped Replication (part 2)](https://iggy.apache.org/blogs/2026/10/13/vsr-clustering-part-2/): 2026-10-13 - [Apache Iggy's migration journey to clustering powered by Viewstamped Replication (part 1)](https://iggy.apache.org/blogs/2026/09/28/vsr-clustering-part-1/): 2026-09-28 - [Apache Iggy or Apache Kafka: which problems each one is actually for](https://iggy.apache.org/blogs/2026/09/23/apache-iggy-or-apache-kafka/): 2026-09-23 - [Apache Iggy 0.9.0 Release](https://iggy.apache.org/blogs/2026/09/21/release-0.9.0/): 2026-09-21 - [Apache Iggy™ Graduates to a Top-Level Project](https://iggy.apache.org/blogs/2026/08/24/apache-iggy-top-level-project-tlp-graduation/): 2026-08-24 - [Apache Iggy 0.8.0 Release](https://iggy.apache.org/blogs/2026/04/22/release-0.8.0/): 2026-04-22 - [Apache Iggy's migration journey to thread-per-core architecture powered by io_uring](https://iggy.apache.org/blogs/2026/02/27/thread-per-core-io_uring/): 2026-02-27 - [Apache Iggy 0.7.0 Release](https://iggy.apache.org/blogs/2026/02/24/release-0.7.0/): 2026-02-24 - [Apache Iggy 0.6.0 Release](https://iggy.apache.org/blogs/2025/12/09/release-0.6.0/): 2025-12-09