This is an automated email from the ASF dual-hosted git repository.
hubcio pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git
The following commit(s) were added to refs/heads/master by this push:
new 5d33f9d11 docs: refresh the README (#4208)
5d33f9d11 is described below
commit 5d33f9d11b641220f4a186f25aeb44a319bb7a19
Author: Justin Mclean <[email protected]>
AuthorDate: Mon Sep 21 16:53:15 2026 +1000
docs: refresh the README (#4208)
---
README.md | 104 +++++++++++++++++++++++++++++++++++++++++-------------
assets/cli.png | Bin 231092 -> 151099 bytes
assets/server.png | Bin 1176428 -> 756489 bytes
assets/web_ui.png | Bin 145001 -> 136258 bytes
4 files changed, 80 insertions(+), 24 deletions(-)
diff --git a/README.md b/README.md
index 8dd887b46..a447f0387 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
<div align="center">
-[Website](https://iggy.apache.org) | [Getting
started](https://iggy.apache.org/docs/introduction/getting-started/) |
[Documentation](https://iggy.apache.org/docs/) |
[Blog](https://iggy.apache.org/blogs/) |
[Discord](https://discord.gg/apache-iggy) |
[Crates](https://crates.io/crates/iggy) | [Mailing
list](https://iggy.apache.org/community/mailing-lists/)
+[Website](https://iggy.apache.org) | [Getting
started](https://iggy.apache.org/docs/introduction/quickstart/) |
[Documentation](https://iggy.apache.org/docs/) |
[Blog](https://iggy.apache.org/blogs/) |
[Discord](https://discord.gg/apache-iggy) |
[Crates](https://crates.io/crates/iggy) | [Mailing
list](https://iggy.apache.org/community/mailing-lists/)
</div>
<p align="center">
@@ -39,6 +39,27 @@
<a title="Discord" target="_blank"
href="https://discord.gg/apache-iggy"><img alt="Chat with Apache Iggy community
on Discord"
src="https://img.shields.io/discord/1144142576266530928?label=Discord&logo=Discord&style=social"></a>
</p>
+**Contents:** [What is Apache Iggy?](#what-is-apache-iggy) ·
+[Features](#features) ·
+[Architecture](#architecture) ·
+[Clustering](#clustering) ·
+[Version](#version) ·
+[Supported languages SDK](#supported-languages-sdk) ·
+[CLI](#cli) ·
+[Web UI](#web-ui) ·
+[Connectors](#connectors) ·
+[Kafka gateway](#kafka-gateway) ·
+[Model Context Protocol](#model-context-protocol) ·
+[Docker](#docker) ·
+[Kubernetes](#kubernetes) ·
+[Configuration](#configuration) ·
+[Run the server](#run-the-server) ·
+[Try the CLI](#try-the-cli) ·
+[Examples](#examples) ·
+[SDK](#sdk) ·
+[Benchmarks](#benchmarks) ·
+[Contributing](#contributing)
+
---
## What is Apache Iggy?
@@ -109,11 +130,21 @@ This is the high-level architecture of the Iggy message
streaming server, where
---
+## Clustering
+
+Clustering is built into the standard `iggy-server` binary, with no separate
build or feature flag. The same server runs as a single node or as a cluster,
and `cluster.enabled` in the configuration chooses which. Clustering is
disabled by default.
+
+Replicas stay consistent using [Viewstamped Replication
(VSR)](https://github.com/apache/iggy/blob/master/assets/vsr.pdf), which
commits on a quorum and elects a new primary when the current one fails. See
the [clustering documentation](https://iggy.apache.org/docs/clustering/vsr) for
configuration and deployment.
+
+---
+
## Version
-The official releases follow the regular semver (`0.7.0`) or have `latest` tag
applied (`apache/iggy:latest`).
+The official releases follow semver (for example `server-0.9.0`), and the
Docker images also carry the `latest` tag (`apache/iggy:latest`).
+
+The server, SDKs and CLI are versioned independently. For example, server
0.9.0 ships with Rust SDK 0.11.0 and CLI 0.14.0. The [server compatibility
table](https://iggy.apache.org/docs/sdk/introduction#server-compatibility)
lists the SDK version for each server release.
-We do also publish edge/dev/nightly releases (e.g. `0.7.0-edge.1` or
`apache/iggy:edge`), for both, SDKs and the Docker images, which are typically
compatible with the latest changes, but are not guaranteed to be stable, and as
the name states, are not recommended for production use.
+We also publish edge releases (versions with an `-edge.N` suffix, and
`apache/iggy:edge`) for the SDKs and the Docker images. They track the latest
changes, but are not guaranteed to be stable and are not recommended for
production use.
---
@@ -186,6 +217,12 @@ fields = ["email", "created_at"]
---
+## Kafka gateway
+
+The [Kafka gateway](https://github.com/apache/iggy/tree/master/gateways/kafka)
is a Kafka wire protocol listener in front of Iggy, intended to let existing
Kafka clients use Iggy. It is in development and not yet part of a release. See
its [README](gateways/kafka/README.md) for the current status and how to run it.
+
+---
+
## Model Context Protocol
The [Model Context Protocol](https://modelcontextprotocol.io) (MCP) is an open
protocol that standardizes how applications provide context to LLMs. The
**[Iggy MCP Server](https://github.com/apache/iggy/tree/master/core/ai/mcp)**
is an implementation of the MCP protocol for the message streaming
infrastructure. It can be used to provide context to LLMs in real-time,
allowing for more accurate and relevant responses.
@@ -196,31 +233,45 @@ The [Model Context
Protocol](https://modelcontextprotocol.io) (MCP) is an open p
## Docker
-The official Apache Iggy images can be found in [Docker
Hub](https://hub.docker.com/r/apache/iggy), simply type `docker pull
apache/iggy` to pull the image.
+The official images are on [Docker Hub](https://hub.docker.com/r/apache/iggy).
Images tagged `latest` are built from stable releases, and `edge` images are
built from the latest `master` branch. Images for the other tools, such as the
connectors runtime and the MCP server, are also on [Docker
Hub](https://hub.docker.com/u/apache?page=1&search=iggy).
+
+The published image listens on `127.0.0.1` inside the container, so the host
can't reach it by default. This command makes it reachable and sets the root
credentials:
+
+```bash
+docker run -d --name iggy \
+ --cap-add=SYS_NICE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 \
+ -e IGGY_ROOT_USERNAME=iggy -e IGGY_ROOT_PASSWORD=iggy \
+ -e IGGY_TCP_ADDRESS=0.0.0.0:8090 -e IGGY_HTTP_ADDRESS=0.0.0.0:3000 \
+ -e IGGY_NODE_ADVERTISED_ADDRESS=localhost \
+ -p 8090:8090 -p 3000:3000 \
+ -v iggy:/app/local_data \
+ apache/iggy
+```
-You can also find the images for all the different tooling such as Connectors,
MCP Server etc. at [Docker
Hub](https://hub.docker.com/u/apache?page=1&search=iggy).
+The CLI is on the image's `PATH`:
-Please note that the images tagged as `latest` are based on the official,
stable releases, while the `edge` ones are updated directly from latest version
of the `master` branch.
+```bash
+docker exec -it iggy iggy -u iggy -p iggy stream list
+```
-You can find the `Dockerfile` and `docker-compose` in the root of the
repository. To build and start the server, run: `docker compose up`.
+The `SYS_NICE` capability, the seccomp setting and the unlimited locked memory
are required. The [Docker & Helm](https://iggy.apache.org/docs/server/docker)
page explains why, and has a `docker-compose.yml` example and the Helm chart.
-Additionally, you can run the `CLI` which is available in the running
container, by executing: `docker exec -it iggy-server /iggy`.
+On operating systems other than Linux, Docker runs in a VM, so the container
might run slower.
+
+To build the image from source instead, run `docker compose up` from the root
of the repository. That image listens on all interfaces and keeps its data in
`/local_data`. The container is named `iggy-server`, and the CLI is at `/iggy`.
Set `IGGY_ROOT_USERNAME` and `IGGY_ROOT_PASSWORD` in `docker-compose.yml`.
Otherwise the server generates a root password and prints it once in the
container log.
+
+---
-Keep in mind that running the container on the OS other than Linux, where the
Docker is running in the VM, might result in the performance degradation.
+## Kubernetes
-Also, when running the container, **make sure to include the additional
capabilities**, as you can find in
[docker-compose](https://github.com/apache/iggy/blob/master/docker-compose.yml)
file:
+A Helm chart for the server and the Web UI is in
[helm/charts/iggy](helm/charts/iggy):
-```yml
-cap_add:
- - SYS_NICE
-security_opt:
- - seccomp:unconfined
-ulimits:
- memlock:
- soft: -1
- hard: -1
+```bash
+helm install iggy ./helm/charts/iggy --set server.image.tag=0.9.0
```
+See the chart [README](helm/charts/iggy/README.md) and the [Docker &
Helm](https://iggy.apache.org/docs/server/docker) page for its settings.
+
---
## Configuration
@@ -247,7 +298,7 @@ For the detailed documentation of the configuration file,
please refer to the [c
---
-## Quick start
+## Run the server
Build the project (the longer compilation time is due to
[LTO](https://doc.rust-lang.org/rustc/linker-plugin-lto.html) enabled in
release [profile](https://github.com/apache/iggy/blob/master/Cargo.toml#L2):
@@ -276,8 +327,7 @@ $env:IGGY_ROOT_USERNAME = "iggy"
$env:IGGY_ROOT_PASSWORD = "iggy"
```
-By default, `iggy-server` will generate a randomized root user password and
print it to `stdout`, when there's
-NO users created.
+If no root credentials are set and no users exist yet, `iggy-server` generates
a random root user password and prints it once in the server log.
Start the server:
@@ -315,7 +365,11 @@ To quickly generate the sample data:
`cargo run --bin data-seeder-tool`
-*Please note that all commands below are using `iggy` binary, which is part of
release (`cli` sub-crate).*
+---
+
+## Try the CLI
+
+The commands below use the `iggy` CLI from the `core/cli` crate, run against
the server started above.
Create a stream with name `dev` (numerical ID will be assigned by server
automatically) using default credentials and `tcp` transport (available
transports: `quic`, `websocket`, `tcp`, `http`, default `tcp`):
@@ -357,7 +411,7 @@ Finally, restart the server to see it is able to load the
persisted data.
The HTTP API endpoints can be found in
[server.http](https://github.com/apache/iggy/blob/master/core/server/server.http)
file, which can be used with [REST
Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client)
extension for VS Code.
-To see the detailed logs from the CLI/server, run it with `RUST_LOG=trace`
environment variable. See images below:
+To see the detailed logs from the CLI/server, run it with the `RUST_LOG=trace`
environment variable.
---
@@ -367,6 +421,8 @@ You can find comprehensive sample applications under the
`examples/rust` directo
For detailed information about available examples and how to run them, please
see the [Examples README](examples/rust/README.md).
+There are also examples for [C#](examples/csharp/README.md),
[Go](examples/go/README.md), [Java](examples/java/README.md),
[Node.js](examples/node/README.md), [PHP](examples/php/README.md) and
[Python](examples/python/README.md).
+
---
## SDK
diff --git a/assets/cli.png b/assets/cli.png
index 43acc469d..8c677c5ca 100644
Binary files a/assets/cli.png and b/assets/cli.png differ
diff --git a/assets/server.png b/assets/server.png
index 02e27e0e7..a922d4faf 100644
Binary files a/assets/server.png and b/assets/server.png differ
diff --git a/assets/web_ui.png b/assets/web_ui.png
index 1fa0d7db6..7bc862f49 100644
Binary files a/assets/web_ui.png and b/assets/web_ui.png differ