This is an automated email from the ASF dual-hosted git repository.
kparisa pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iggy-website.git
The following commit(s) were added to refs/heads/main by this push:
new 0fdcb2bd8 docs: add a quickstart and update wording for 0.9.0 (#108)
0fdcb2bd8 is described below
commit 0fdcb2bd8ab0a45e0ec6d68bfde843e3f91596ad
Author: Justin Mclean <[email protected]>
AuthorDate: Thu Sep 17 11:51:12 2026 +1000
docs: add a quickstart and update wording for 0.9.0 (#108)
Adds a one-file Rust quickstart and points the Get Started button and
docs card to it. Adds a server compatibility table to the SDK
introduction. Replaces pre-release wording and pins image and package
versions to the 0.9.0 release. Please merge once 0.9.0 is published.
Co-authored-by: Justin Mclean <[email protected]>
---
content/docs/ai/mcp.mdx | 6 +-
content/docs/cli/start.mdx | 14 ++--
content/docs/clustering/vsr.mdx | 2 +-
content/docs/connectors/introduction.mdx | 2 +-
content/docs/connectors/runtime.mdx | 2 +-
content/docs/introduction/about.mdx | 14 ++--
content/docs/introduction/getting-started.mdx | 6 +-
content/docs/introduction/meta.json | 2 +-
content/docs/introduction/quickstart.mdx | 107 ++++++++++++++++++++++++++
content/docs/sdk/csharp/intro.mdx | 4 +-
content/docs/sdk/go/intro.mdx | 6 +-
content/docs/sdk/introduction.mdx | 16 ++++
content/docs/sdk/java/examples.mdx | 2 +-
content/docs/sdk/java/intro.mdx | 19 ++---
content/docs/sdk/node/examples.mdx | 2 +-
content/docs/sdk/node/intro.mdx | 9 +--
content/docs/sdk/php/intro.mdx | 2 +-
content/docs/sdk/python/examples.mdx | 2 +-
content/docs/server/docker.mdx | 14 ++--
content/docs/server/introduction.mdx | 2 +-
content/docs/web_ui/start.mdx | 12 +--
src/app/(home)/page.tsx | 2 +-
src/components/architecture-diagrams.tsx | 2 +-
23 files changed, 182 insertions(+), 67 deletions(-)
diff --git a/content/docs/ai/mcp.mdx b/content/docs/ai/mcp.mdx
index 22d3f4e64..c9fba97b0 100644
--- a/content/docs/ai/mcp.mdx
+++ b/content/docs/ai/mcp.mdx
@@ -15,7 +15,7 @@ IGGY_MCP_IGGY_USERNAME=iggy IGGY_MCP_IGGY_PASSWORD=iggy cargo
run --bin iggy-mcp
These are the development credentials configured in that guide. Use your
broker's credentials or a PAT when connecting to an existing installation.
-The [docker image](https://hub.docker.com/r/apache/iggy-mcp) is available, and
can be fetched via `docker pull apache/iggy-mcp:edge`.
+The [docker image](https://hub.docker.com/r/apache/iggy-mcp) is available, and
can be fetched via `docker pull apache/iggy-mcp:0.5.0`.
## Configuration
@@ -215,7 +215,7 @@ docker run -d --name iggy-server --network iggy-mcp \
-e IGGY_ROOT_USERNAME=iggy -e IGGY_ROOT_PASSWORD=iggy \
-e IGGY_TCP_ADDRESS=0.0.0.0:8090 \
-e IGGY_NODE_ADVERTISED_ADDRESS=iggy-server \
- apache/iggy:edge
+ apache/iggy:0.9.0
```
After the broker is ready, run the MCP server on the same network:
@@ -227,7 +227,7 @@ docker run --rm --network iggy-mcp -e
IGGY_MCP_TRANSPORT=http \
-e IGGY_MCP_IGGY_USERNAME=iggy \
-e IGGY_MCP_IGGY_PASSWORD=iggy \
-p 127.0.0.1:8082:8082 \
- apache/iggy-mcp:edge
+ apache/iggy-mcp:0.5.0
```
The HTTP endpoint uses the configured Iggy account for every MCP client. This
example publishes it only on the host loopback interface.
diff --git a/content/docs/cli/start.mdx b/content/docs/cli/start.mdx
index eacef4a2a..037ec987f 100644
--- a/content/docs/cli/start.mdx
+++ b/content/docs/cli/start.mdx
@@ -11,22 +11,22 @@ This page covers installing the CLI, connecting to a
server, authenticating, and
### Cargo
-These docs target server 0.9.0 and the CLI built from the same source
checkout. The CLI has its own version number. From the root of that checkout,
install it with:
+These docs target server 0.9.0 and CLI 0.14.0, which was released with it. The
CLI has its own version number, so use the version that matches your server.
Install it from crates.io with:
```bash
-cargo install --path core/cli --locked
+cargo install iggy-cli --version 0.14.0 --locked
```
-A published edge package is also available from crates.io. Version
`0.14.0-edge.7` predates the new durability flags and CLI fixes documented
here; use the source build for those commands:
+This builds and installs the `iggy` binary. With
[cargo-binstall](https://github.com/cargo-bins/cargo-binstall), you can
download a prebuilt binary instead. It builds from source if there isn't one
for your platform:
```bash
-cargo install iggy-cli --version 0.14.0-edge.7
+cargo binstall iggy-cli --version 0.14.0
```
-This builds and installs the `iggy` binary. If you have
[cargo-binstall](https://github.com/cargo-bins/cargo-binstall), it can fetch a
matching prebuilt binary when one is available, otherwise it falls back to
compilation:
+To build it from source instead, use the same checkout as your server and run
this from its root:
```bash
-cargo binstall iggy-cli --version 0.14.0-edge.7
+cargo install --path core/cli --locked
```
### Docker
@@ -34,7 +34,7 @@ cargo binstall iggy-cli --version 0.14.0-edge.7
The official `apache/iggy` image ships the CLI alongside the server, installed
as `/usr/local/bin/iggy`. The image entrypoint is the server, so override it to
run the CLI:
```bash
-docker run --rm -it --network host --entrypoint iggy apache/iggy:edge -u iggy
-p iggy ping
+docker run --rm -it --network host --entrypoint iggy apache/iggy:0.9.0 -u iggy
-p iggy ping
```
`--network host` works on **Linux**. On macOS and Windows, point the CLI at
the host instead: `--tcp-server-address host.docker.internal:8090`.
diff --git a/content/docs/clustering/vsr.mdx b/content/docs/clustering/vsr.mdx
index 24ec83596..9f145c69d 100644
--- a/content/docs/clustering/vsr.mdx
+++ b/content/docs/clustering/vsr.mdx
@@ -66,7 +66,7 @@ The Rust SDK needs no feature flags. Depend on the published
crate:
```toml
[dependencies]
-iggy = "0.11.0-edge.7"
+iggy = "0.11.0"
tokio = { version = "1", features = ["full"] }
```
diff --git a/content/docs/connectors/introduction.mdx
b/content/docs/connectors/introduction.mdx
index 77f1150c0..390015c16 100644
--- a/content/docs/connectors/introduction.mdx
+++ b/content/docs/connectors/introduction.mdx
@@ -5,7 +5,7 @@ description: "The connector runtime: dynamically loaded source
and sink plugins,
The highly performant and modular runtime for statically typed, yet
dynamically loaded connectors. Ingest the data from the external sources and
push it further to the Iggy streams, or fetch the data from the Iggy streams
and push it further to the external sources. Create your own Rust plugins by
simply implementing either the `Source` or `Sink` trait and build custom
pipelines for the data processing.
-The [docker image](https://hub.docker.com/r/apache/iggy-connect) is available,
and can be fetched via `docker pull apache/iggy-connect:edge`.
+The [docker image](https://hub.docker.com/r/apache/iggy-connect) is available,
and can be fetched via `docker pull apache/iggy-connect:0.5.0`.
## Architecture
diff --git a/content/docs/connectors/runtime.mdx
b/content/docs/connectors/runtime.mdx
index d89e62523..074a80d34 100644
--- a/content/docs/connectors/runtime.mdx
+++ b/content/docs/connectors/runtime.mdx
@@ -14,7 +14,7 @@ By default, runtime will look for the configuration file, to
decide which connec
Set the broker credentials and connector configuration directory before
starting the runtime. The embedded default has an empty connector directory and
cannot start unchanged. For a complete setup, follow the [quick
start](/docs/connectors/introduction#quick-start).
-The [docker image](https://hub.docker.com/r/apache/iggy-connect) is available,
and can be fetched via `docker pull apache/iggy-connect:edge`.
+The [docker image](https://hub.docker.com/r/apache/iggy-connect) is available,
and can be fetched via `docker pull apache/iggy-connect:0.5.0`.
## How configuration is resolved
diff --git a/content/docs/introduction/about.mdx
b/content/docs/introduction/about.mdx
index 6d40d11d3..9b6fab912 100644
--- a/content/docs/introduction/about.mdx
+++ b/content/docs/introduction/about.mdx
@@ -51,7 +51,7 @@ Historical startup screenshot from server 0.5.0. See
[configuration](/docs/serve
- Optional server-side as well as client-side **data encryption** using
AES-256-GCM
- Optional metadata support in the form of **message headers**
- Prometheus metrics and **OpenTelemetry** logs & traces in the [connector
runtime](/docs/connectors/observability). Server export has [known
limitations](/docs/server/configuration#telemetry).
-- Built-in **[CLI](/docs/cli/start)** to manage the streaming server
installable via `cargo install iggy-cli --version 0.14.0-edge.7 --locked`
+- Built-in **[CLI](/docs/cli/start)** to manage the streaming server
installable via `cargo install iggy-cli --version 0.14.0 --locked`
- Built-in **[Web UI](/docs/web_ui/start)** dashboard (Svelte) that can be
embedded directly in the server binary or run as a standalone container
- Built-in **[benchmarking app](/docs/server/benchmarking)** to test the
performance, with published results on the [benchmarks
dashboard](https://benchmarks.iggy.apache.org)
- **Single binary deployment** without an external broker or database;
operating-system libraries are still required by dynamically linked builds
@@ -75,14 +75,14 @@ Historical startup screenshot from server 0.5.0. See
[configuration](/docs/serve
The interactive CLI is implemented under `core/cli`, to provide the best
developer experience. This is a great addition to the Web UI, especially for
developers who prefer using the console tools.
-Iggy CLI can be installed with `cargo install iggy-cli --version 0.14.0-edge.7
--locked` and then simply accessed by typing `iggy` in your terminal. It
supports named connection contexts (profiles) for managing multiple server
connections, shell completions for bash/zsh/fish/elvish/powershell, and
session-based login through platform credential stores on Linux, macOS and
Windows when the default `login-session` feature is enabled.
+Iggy CLI can be installed with `cargo install iggy-cli --version 0.14.0
--locked` and then simply accessed by typing `iggy` in your terminal. It
supports named connection contexts (profiles) for managing multiple server
connections, shell completions for bash/zsh/fish/elvish/powershell, and
session-based login through platform credential stores on Linux, macOS and
Windows when the default `login-session` feature is enabled.
### Web UI
The Web UI provides a comprehensive dashboard for the Iggy server, built with
SvelteKit and TypeScript. It can run in two modes:
- **Embedded** - compiled into the server binary (with the `iggy-web` feature
and [built static assets](/docs/web_ui/start)), served at the `/ui` endpoint
when `http.web_ui = true`
-- **Standalone** - as a separate container via `docker pull
apache/iggy-web-ui:edge`
+- **Standalone** - as a separate container via `docker pull
apache/iggy-web-ui:0.4.0`
Features include stream/topic/partition management, a message browser with
JSON/string/XML decoders, and user listing and creation with initial
permissions. Editing or deleting existing users and changing their permissions
are placeholders. The logs and terminal pages are also placeholders, and the
server settings page has a disabled Save action rather than an operational
configuration editor.
@@ -92,17 +92,17 @@ Iggy provides a highly performant and modular
**[runtime](/docs/connectors/runti
The source tree contains 16 sinks and 4 sources. Sinks include PostgreSQL,
MongoDB, Elasticsearch, ClickHouse, InfluxDB, Apache Iceberg, Delta Lake,
Quickwit and S3. Sources include PostgreSQL, Elasticsearch, InfluxDB and random
data generation. See the [connectors
documentation](/docs/connectors/introduction) for the full catalog.
-The [docker image](https://hub.docker.com/r/apache/iggy-connect) is available,
and can be fetched via `docker pull apache/iggy-connect:edge`.
+The [docker image](https://hub.docker.com/r/apache/iggy-connect) is available,
and can be fetched via `docker pull apache/iggy-connect:0.5.0`.
## 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](/docs/ai/mcp)** is an implementation of the MCP protocol
for message streaming infrastructure. It exposes 40+ tools covering streams,
topics, partitions, messages, consumer groups, users, and more. It supports
both HTTP and stdio transports, making it compatible with tools like Claude
Desktop and other MCP clients.
-The [docker image](https://hub.docker.com/r/apache/iggy-mcp) is available, and
can be fetched via `docker pull apache/iggy-mcp:edge`.
+The [docker image](https://hub.docker.com/r/apache/iggy-mcp) is available, and
can be fetched via `docker pull apache/iggy-mcp:0.5.0`.
### Docker
-The official Apache Iggy images can be found on [Docker
Hub](https://hub.docker.com/r/apache/iggy). These docs prepare for server
0.9.0. Use `docker pull apache/iggy:0.9.0` when that release is available, or
`docker pull apache/iggy:edge` for a development image. SDK and tooling
versions are independent of the server version; the CLI command above pins a
published edge version.
+The official Apache Iggy images can be found on [Docker
Hub](https://hub.docker.com/r/apache/iggy). These docs target server 0.9.0. Use
`docker pull apache/iggy:0.9.0`, or `docker pull apache/iggy:edge` for a
development image. SDK and tooling versions are independent of the server
version.
You can also find the images for all the different tooling such as Connectors,
MCP Server etc. [here](https://hub.docker.com/u/apache?page=1&search=iggy).
@@ -130,7 +130,7 @@ ulimits:
Or when running with `docker run`:
```
-docker run --cap-add=SYS_NICE --security-opt seccomp=unconfined --ulimit
memlock=-1:-1 -p 8090:8090 -e IGGY_TCP_ADDRESS=0.0.0.0:8090 -e
IGGY_NODE_ADVERTISED_ADDRESS=localhost apache/iggy:edge
+docker run --cap-add=SYS_NICE --security-opt seccomp=unconfined --ulimit
memlock=-1:-1 -p 8090:8090 -e IGGY_TCP_ADDRESS=0.0.0.0:8090 -e
IGGY_NODE_ADVERTISED_ADDRESS=localhost apache/iggy:0.9.0
```
### Helm Charts
diff --git a/content/docs/introduction/getting-started.mdx
b/content/docs/introduction/getting-started.mdx
index 645502cbf..102deb8bc 100644
--- a/content/docs/introduction/getting-started.mdx
+++ b/content/docs/introduction/getting-started.mdx
@@ -5,6 +5,8 @@ description: "A first program with the low-level Rust SDK:
create a stream and t
## Before we start
+On Linux the server needs kernel 5.19 or newer. macOS has no kernel
requirement. Under WSL2, run `wsl --update` first. See [System
requirements](/docs/server/introduction#system-requirements) for the details.
+
This tutorial uses the **low-level Rust SDK** to show how things work under
the hood - creating streams, topics, sending and polling messages step by step.
This is great for understanding the fundamentals.
For real-world applications, you might typically prefer the **[high-level
SDK](/docs/sdk/rust/high-level-sdk)**, which provides `IggyProducer` and
`IggyConsumer` builders with auto-batching, consumer groups, offset management,
reconnection, and retry logic out of the box. Check the [Stream
Builder](/docs/sdk/rust/stream-builder) docs for the most ergonomic API.
@@ -21,7 +23,7 @@ The completed sample can be found in the
[repository](https://github.com/apache/
For our purpose, we will focus on the basic scenario in order to keep things
simple. Before we begin implementing the consumer and producer apps, we need to
start the Iggy streaming server.
-This guide targets server **0.9.0**. Once that release is published, you can
use its [official Docker image](https://hub.docker.com/r/apache/iggy). During
release preparation, use a matching `edge` build or the source build below:
+This guide targets server **0.9.0**. Use its [official Docker
image](https://hub.docker.com/r/apache/iggy):
```bash
docker run --rm \
@@ -95,7 +97,7 @@ From that point on, we will focus on implementing the message
streaming between
## Building the producer
-We will begin with installing the Iggy client crate - use the SDK from the
same source checkout as your server. With `iggy-sample` beside the `iggy`
repository, execute `cargo add iggy --path ../iggy/core/sdk` in your terminal.
Published SDK releases can expose different APIs. Next, install
[tokio.rs](https://tokio.rs) dependency with `cargo add tokio --features
macros,rt-multi-thread,time` as we will use the asynchronous runtime.
Eventually, modify your `main.rs`, so it looks like this:
+We will begin with installing the Iggy client crate - execute `cargo add iggy`
in your terminal. Next, install [tokio.rs](https://tokio.rs) dependency with
`cargo add tokio --features macros,rt-multi-thread,time` as we will use the
asynchronous runtime. Eventually, modify your `main.rs`, so it looks like this:
```rust
use std::error::Error;
diff --git a/content/docs/introduction/meta.json
b/content/docs/introduction/meta.json
index 8c36d433d..bc9eadbb9 100644
--- a/content/docs/introduction/meta.json
+++ b/content/docs/introduction/meta.json
@@ -1,4 +1,4 @@
{
"title": "Introduction",
- "pages": ["about", "concepts", "architecture", "getting-started"]
+ "pages": ["about", "concepts", "architecture", "quickstart",
"getting-started"]
}
diff --git a/content/docs/introduction/quickstart.mdx
b/content/docs/introduction/quickstart.mdx
new file mode 100644
index 000000000..06717b541
--- /dev/null
+++ b/content/docs/introduction/quickstart.mdx
@@ -0,0 +1,107 @@
+---
+title: Quickstart
+description: "Run the Iggy server and send and receive your first message with
the Rust SDK, in one file."
+---
+
+This page gets a server running and a message sent and received, in one file.
To build separate producer and consumer applications step by step, see [Getting
started](/docs/introduction/getting-started). For other languages, see the [SDK
section](/docs/sdk/introduction).
+
+On Linux the server needs kernel 5.19 or newer. macOS has no kernel
requirement. See [System
requirements](/docs/server/introduction#system-requirements).
+
+## Start the server
+
+```bash
+docker run --rm \
+ --cap-add=SYS_NICE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 \
+ -p 8090:8090 \
+ -e IGGY_TCP_ADDRESS=0.0.0.0:8090 \
+ -e IGGY_NODE_ADVERTISED_ADDRESS=localhost \
+ -e IGGY_ROOT_USERNAME=iggy -e IGGY_ROOT_PASSWORD=iggy \
+ apache/iggy:0.9.0
+```
+
+See [Docker & Helm](/docs/server/docker) for what each option does.
+
+## Send and receive a message
+
+Create a project and add the SDK and the async runtime:
+
+```bash
+cargo new iggy-quickstart
+cd iggy-quickstart
+cargo add iggy
+cargo add tokio --features macros,rt-multi-thread
+```
+
+Replace `src/main.rs` with:
+
+```rust
+use iggy::prelude::*;
+use std::str::FromStr;
+
+#[tokio::main]
+async fn main() -> Result<(), Box<dyn std::error::Error>> {
+ let client =
IggyClient::from_connection_string("iggy://iggy:[email protected]:8090")?;
+ client.connect().await?;
+
+ // Re-running this example is fine: an existing stream or topic is not an
error.
+ match client.create_stream("my-stream").await {
+ Ok(_) | Err(IggyError::StreamNameAlreadyExists(_)) => {}
+ Err(e) => return Err(e.into()),
+ }
+ // Every topic knob rides `TopicCreateOptions`; fields left as `None`
+ // resolve against the server's defaults at admission.
+ match client
+ .create_topic(
+ &"my-stream".try_into()?,
+ "my-topic",
+ &TopicCreateOptions {
+ partitions_count: Some(1),
+ message_expiry: Some(IggyExpiry::NeverExpire),
+ ..TopicCreateOptions::default()
+ },
+ )
+ .await
+ {
+ Ok(_) | Err(IggyError::TopicNameAlreadyExists(_, _)) => {}
+ Err(e) => return Err(e.into()),
+ }
+
+ let msg = IggyMessage::from_str("hello world")?;
+ client
+ .send_messages(
+ &"my-stream".try_into()?,
+ &"my-topic".try_into()?,
+ &Partitioning::partition_id(0),
+ &mut [msg],
+ )
+ .await?;
+ println!("Message sent");
+
+ let polled = client
+ .poll_messages(
+ &"my-stream".try_into()?,
+ &"my-topic".try_into()?,
+ Some(0),
+ &Consumer::default(),
+ &PollingStrategy::next(),
+ 10,
+ true,
+ )
+ .await?;
+
+ for message in &polled.messages {
+ let payload = std::str::from_utf8(&message.payload)?;
+ println!("Offset: {}, Payload: {}", message.header.offset, payload);
+ }
+
+ Ok(())
+}
+```
+
+Run it with `cargo run`. Partition IDs are **0-based**, so the first partition
of a topic is partition `0`.
+
+## Next steps
+
+- Build a producer and a consumer as two applications: [Getting
started](/docs/introduction/getting-started).
+- Use the producer and consumer builders with batching and offset management:
[High-level SDK](/docs/sdk/rust/high-level-sdk).
+- Use another language: [SDK section](/docs/sdk/introduction).
diff --git a/content/docs/sdk/csharp/intro.mdx
b/content/docs/sdk/csharp/intro.mdx
index 916b05c41..78d68244c 100644
--- a/content/docs/sdk/csharp/intro.mdx
+++ b/content/docs/sdk/csharp/intro.mdx
@@ -10,10 +10,10 @@ The SDK is built around the `IIggyClient` interface, which
aggregates every feat
## Installation
```bash
-dotnet add package Apache.Iggy --version 0.9.0-edge.9
+dotnet add package Apache.Iggy --version 0.9.0
```
-The SDK targets .NET 8 and .NET 10 (`net8.0` and `net10.0`). Stable `0.8.0`
uses TCP framing that predates the server 0.9.0 protocol. These pages prepare
for server 0.9.0 and use the `0.9.0-edge.9` prerelease, which includes both
topic durability options. When building from source, use the server and SDK
from the same checkout.
+The SDK targets .NET 8 and .NET 10 (`net8.0` and `net10.0`). Version `0.9.0`
matches the server 0.9.0 protocol and includes both topic durability options.
Version `0.8.0` uses the older TCP framing. When building from source, use the
server and SDK from the same checkout.
To use the source SDK with these release-preparation examples, run from the
Iggy checkout root:
diff --git a/content/docs/sdk/go/intro.mdx b/content/docs/sdk/go/intro.mdx
index 7a120bdf8..43fff6a4a 100644
--- a/content/docs/sdk/go/intro.mdx
+++ b/content/docs/sdk/go/intro.mdx
@@ -7,7 +7,7 @@ The Iggy Go SDK is a client library for interacting with the
Iggy server from Go
## Server compatibility
-The SDK and the server must speak the same wire protocol. Tagged releases up
to `v0.8.0` predate VSR (and the current API) and pair only with servers of the
same era. The current SDK speaks VSR only. This page prepares for server
`0.9.0`; use a compatible SDK release or edge version. When working from
source, build the SDK and the server from the same repository checkout.
+The SDK and the server must speak the same wire protocol. Tagged releases up
to `v0.8.0` predate VSR (and the current API) and pair only with servers of the
same era. The current SDK speaks VSR only. This page targets server `0.9.0`;
use a compatible SDK release or edge version. When working from source, build
the SDK and the server from the same repository checkout.
## Installation
@@ -17,10 +17,10 @@ The current source requires Go 1.25 or newer. Run these
commands from your appli
go get github.com/apache/iggy/foreign/go
```
-`go get` without a version does not automatically select prereleases. For
prerelease testing, pin a compatible VSR edge version, for example:
+To pin the release that matches server 0.9.0:
```bash
-go get github.com/apache/iggy/foreign/[email protected]
+go get github.com/apache/iggy/foreign/[email protected]
```
For unreleased changes, use the local SDK replacement shown in the [repository
examples](/docs/sdk/go/examples). A published edge tag need not contain every
change in your checkout.
diff --git a/content/docs/sdk/introduction.mdx
b/content/docs/sdk/introduction.mdx
index ee2a8a716..f81cec984 100644
--- a/content/docs/sdk/introduction.mdx
+++ b/content/docs/sdk/introduction.mdx
@@ -20,6 +20,22 @@ Python, C++, and PHP wrap the Rust SDK, so they inherit all
transport protocols
The Rust SDK is always the first to receive new features.
+## Server compatibility
+
+Server 0.9.0 introduced a new binary wire protocol shared by all SDKs, and the
SDKs don't fall back to the older one. Use the SDK version that matches your
server:
+
+| Component | Server 0.9.0 | Server 0.8.0 |
+|-----------|--------------|--------------|
+| Rust SDK (`iggy`) | `0.11.0` | `0.10.0` |
+| CLI (`iggy-cli`) | `0.14.0` | `0.13.0` |
+| Python SDK (`apache-iggy`) | `0.9.0` | `0.8.0` |
+| Java SDK (`org.apache.iggy:iggy`) | `0.9.0` | `0.8.0` |
+| Node.js SDK (`apache-iggy`) | `0.10.0` | `0.8.0` |
+| Go SDK (`github.com/apache/iggy/foreign/go`) | `v0.9.0` | `v0.8.0` |
+| C# SDK (`Apache.Iggy`) | `0.9.0` | `0.8.0` |
+
+The C++ and PHP SDKs are not published to a registry. Build them from the same
source checkout as the server.
+
## Prerequisites
The examples below use the `iggy`/`iggy` root credentials. For a new local
development instance, with no `IGGY_ROOT_USERNAME` or `IGGY_ROOT_PASSWORD`
overrides, use:
diff --git a/content/docs/sdk/java/examples.mdx
b/content/docs/sdk/java/examples.mdx
index 441b8abc4..735c34802 100644
--- a/content/docs/sdk/java/examples.mdx
+++ b/content/docs/sdk/java/examples.mdx
@@ -7,7 +7,7 @@ Runnable examples live in the
[examples/java](https://github.com/apache/iggy/tre
## Starting the server
-These examples prepare for server **0.9.0** and speak the VSR (Viewstamped
Replication) wire protocol. Build the SDK and server from the same checkout for
unreleased changes. The examples log in as `iggy`/`iggy`. From the repository
root, start a disposable development server with no `IGGY_ROOT_USERNAME` or
`IGGY_ROOT_PASSWORD` overrides:
+These examples target server **0.9.0** and speak the VSR (Viewstamped
Replication) wire protocol. Build the SDK and server from the same checkout for
unreleased changes. The examples log in as `iggy`/`iggy`. From the repository
root, start a disposable development server with no `IGGY_ROOT_USERNAME` or
`IGGY_ROOT_PASSWORD` overrides:
```bash
cargo run --bin iggy-server -- --fresh --with-default-root-credentials
diff --git a/content/docs/sdk/java/intro.mdx b/content/docs/sdk/java/intro.mdx
index 884aae570..c954d5a46 100644
--- a/content/docs/sdk/java/intro.mdx
+++ b/content/docs/sdk/java/intro.mdx
@@ -7,30 +7,22 @@ The Iggy Java SDK is a client library for interacting with
the Iggy server from
## Server compatibility
-This documentation prepares for server **0.9.0**. The TCP transport speaks the
VSR (Viewstamped Replication) wire protocol. The released Java artifact `0.8.0`
uses the older protocol; use the `0.9.0-SNAPSHOT` build below for the
pre-release SDK. When working from source, build the SDK and the server from
the same repository checkout.
+This documentation targets server **0.9.0** and SDK **0.9.0**. The TCP
transport speaks the VSR (Viewstamped Replication) wire protocol. The Java
artifact `0.8.0` uses the older protocol. When working from source, build the
SDK and the server from the same repository checkout.
## Installation
-Use Java 17 or newer. These examples use the ASF snapshot repository until the
`0.9.0` artifact is published to Maven Central.
+Use Java 17 or newer. The SDK is published to Maven Central.
### Maven
-Add the repository and dependency under the `project` element in `pom.xml`:
+Add the dependency under the `project` element in `pom.xml`:
```xml
-<repositories>
- <repository>
- <id>apache-snapshots</id>
-
<url>https://repository.apache.org/content/repositories/snapshots/</url>
- <snapshots><enabled>true</enabled></snapshots>
- </repository>
-</repositories>
-
<dependencies>
<dependency>
<groupId>org.apache.iggy</groupId>
<artifactId>iggy</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.0</version>
</dependency>
</dependencies>
```
@@ -40,11 +32,10 @@ Add the repository and dependency under the `project`
element in `pom.xml`:
```groovy
repositories {
mavenCentral()
- maven { url =
uri('https://repository.apache.org/content/repositories/snapshots/') }
}
dependencies {
- implementation 'org.apache.iggy:iggy:0.9.0-SNAPSHOT'
+ implementation 'org.apache.iggy:iggy:0.9.0'
}
```
diff --git a/content/docs/sdk/node/examples.mdx
b/content/docs/sdk/node/examples.mdx
index a338baac0..51bf3c5f9 100644
--- a/content/docs/sdk/node/examples.mdx
+++ b/content/docs/sdk/node/examples.mdx
@@ -16,7 +16,7 @@ Examples are available in the
[examples/node](https://github.com/apache/iggy/tre
## Running the examples
-These examples target server **0.9.0**. Start the server from the same source
checkout; see [Getting started](/docs/introduction/getting-started) for
prerequisites:
+These examples target server **0.9.0**. See [Getting
started](/docs/introduction/getting-started) for prerequisites:
```bash
cargo run --bin iggy-server -- --fresh --with-default-root-credentials
diff --git a/content/docs/sdk/node/intro.mdx b/content/docs/sdk/node/intro.mdx
index 717a947b8..5226b2eaa 100644
--- a/content/docs/sdk/node/intro.mdx
+++ b/content/docs/sdk/node/intro.mdx
@@ -5,12 +5,12 @@ description: "The Node.js and TypeScript SDK, from
installation to keeping clien
The Iggy Node.js SDK is a client library that allows you to interact with the
Iggy API from your Node.js and TypeScript applications. It communicates with
the Iggy server over TCP or TLS using the binary protocol. The package is
available on [npm](https://www.npmjs.com/package/apache-iggy) and the source
code can be found on
[GitHub](https://github.com/apache/iggy/tree/master/foreign/node).
-These docs target server **0.9.0**. Use the Node SDK's `edge` package with
server 0.9.0 or `edge`; the stable Node package 0.8.0 uses the older protocol.
The current SDK speaks only the VSR wire protocol and doesn't fall back to
older formats.
+These docs target server **0.9.0** and Node SDK **0.10.0**. The Node package
0.8.0 uses the older protocol. The current SDK speaks only the VSR wire
protocol and doesn't fall back to older formats.
## Installation
```bash
-npm install apache-iggy@edge
+npm install [email protected]
```
## Quick start
@@ -18,16 +18,15 @@ npm install apache-iggy@edge
The samples below expect an Iggy server on `127.0.0.1:8090`. See [Getting
started](/docs/introduction/getting-started) for the server prerequisites:
```bash
-# Development image for the 0.9.0 release
docker run --rm \
--cap-add=SYS_NICE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 \
-p 8090:8090 \
-e IGGY_TCP_ADDRESS=0.0.0.0:8090 \
-e IGGY_NODE_ADVERTISED_ADDRESS=localhost \
-e IGGY_ROOT_USERNAME=iggy -e IGGY_ROOT_PASSWORD=iggy \
- apache/iggy:edge
+ apache/iggy:0.9.0
-# Or from the matching repository root
+# Or from a 0.9.0 source checkout
cargo run --bin iggy-server -- --fresh --with-default-root-credentials
```
diff --git a/content/docs/sdk/php/intro.mdx b/content/docs/sdk/php/intro.mdx
index 37857efe2..6651e479e 100644
--- a/content/docs/sdk/php/intro.mdx
+++ b/content/docs/sdk/php/intro.mdx
@@ -34,7 +34,7 @@ On macOS the library is `libiggy_php.dylib`.
## Quick start
-The sample below targets Iggy 0.9.0 on `127.0.0.1:8090`. When testing
unreleased SDK changes, build the server from the same source checkout:
+The sample below targets Iggy 0.9.0 on `127.0.0.1:8090`. Start the server:
```bash
# Server 0.9.0
diff --git a/content/docs/sdk/python/examples.mdx
b/content/docs/sdk/python/examples.mdx
index 7852bb261..f04f76f1f 100644
--- a/content/docs/sdk/python/examples.mdx
+++ b/content/docs/sdk/python/examples.mdx
@@ -11,7 +11,7 @@ Working examples are available in the
[examples/python](https://github.com/apach
## Running the examples
-These examples target Iggy 0.9.0. For unreleased changes, use the server and
Python SDK from the same source checkout:
+These examples target Iggy 0.9.0. Start the server:
```bash
# Server 0.9.0
diff --git a/content/docs/server/docker.mdx b/content/docs/server/docker.mdx
index f8e7e9414..663385633 100644
--- a/content/docs/server/docker.mdx
+++ b/content/docs/server/docker.mdx
@@ -5,7 +5,7 @@ description: "Run the Iggy server from the official Docker
images, and deploy it
## Docker
-You can easily run the Iggy server with Docker - the official images can be
found [here](https://hub.docker.com/r/apache/iggy), use `docker pull
apache/iggy:edge` while preparing for 0.9.0, or `apache/iggy:0.9.0` once
released.
+You can easily run the Iggy server with Docker - the official images can be
found [here](https://hub.docker.com/r/apache/iggy), use `docker pull
apache/iggy:0.9.0`, or `apache/iggy:latest` for the newest stable release.
These properties of the published image matter for deployment:
@@ -20,7 +20,7 @@ The examples use a permissive syscall profile and unlimited
locked memory for de
```yaml
services:
iggy:
- image: apache/iggy:edge
+ image: apache/iggy:0.9.0
container_name: iggy
restart: unless-stopped
cap_add:
@@ -59,7 +59,7 @@ docker run -d --name iggy \
-e IGGY_NODE_ADVERTISED_ADDRESS=localhost \
-p 8090:8090 -p 3000:3000 \
-v iggy:/app/local_data \
- apache/iggy:edge
+ apache/iggy:0.9.0
```
### Why these capabilities?
@@ -106,12 +106,12 @@ Helm charts for Kubernetes deployment are available in
the [repository](https://
### Quick start
```bash
-helm install iggy ./helm/charts/iggy --set server.image.tag=edge
+helm install iggy ./helm/charts/iggy --set server.image.tag=0.9.0
```
### Chart components
-- **Server Deployment** - runs `apache/iggy` with the pod security context the
server needs: seccomp profile `Unconfined` (for `io_uring`) plus the `IPC_LOCK`
capability (for memory locking). Listener addresses are set to `0.0.0.0` via
`server.env`, and the data volume mounts at `/app/local_data`. The chart
supplies `IGGY_NODE_ADVERTISED_ADDRESS` as the in-cluster Service DNS name;
override it with `server.advertisedAddress` when clients arrive through a
LoadBalancer or an Ingress. The s [...]
+- **Server Deployment** - runs `apache/iggy` with the pod security context the
server needs: seccomp profile `Unconfined` (for `io_uring`) plus the `IPC_LOCK`
capability (for memory locking). Listener addresses are set to `0.0.0.0` via
`server.env`, and the data volume mounts at `/app/local_data`. The chart
supplies `IGGY_NODE_ADVERTISED_ADDRESS` as the in-cluster Service DNS name;
override it with `server.advertisedAddress` when clients arrive through a
LoadBalancer or an Ingress. The s [...]
- **Server Service** - exposes the `http` (3000), `quic` (8080/UDP), `tcp`
(8090), and `websocket` (8092) ports.
- **Web UI Deployment + Service** - a separate `apache/iggy-web-ui` deployment
on port 3050, enabled by default (`ui.enabled`).
- **Secret** - root user credentials from `server.users.root` (default
`iggy`/`changeit`). Point `server.users.root.existingSecret.name` at your own
Secret in production; `usernameKey` and `passwordKey` select its keys.
@@ -157,7 +157,7 @@ ui:
enabled: true
image:
repository: apache/iggy-web-ui
- tag: "edge"
+ tag: "0.4.0"
podSecurityContext:
seccompProfile:
@@ -174,5 +174,5 @@ resources: {}
Save the excerpt as `my-values.yaml`, customize it for your environment, and
deploy with:
```bash
-helm install iggy ./helm/charts/iggy -f my-values.yaml --set
server.image.tag=edge
+helm install iggy ./helm/charts/iggy -f my-values.yaml --set
server.image.tag=0.9.0
```
diff --git a/content/docs/server/introduction.mdx
b/content/docs/server/introduction.mdx
index e8b87fe4d..f19c5aad9 100644
--- a/content/docs/server/introduction.mdx
+++ b/content/docs/server/introduction.mdx
@@ -7,7 +7,7 @@ Iggy server is the most important part of the system as it's
responsible for han
<ServerEcosystem />
-The releases are published to GitHub and can be found
[here](https://github.com/apache/iggy/tags). The official Docker images can be
found [here](https://hub.docker.com/r/apache/iggy), use `docker pull
apache/iggy:edge` while preparing for 0.9.0, or `apache/iggy:0.9.0` once
released.
+The releases are published to GitHub and can be found
[here](https://github.com/apache/iggy/tags). The official Docker images can be
found [here](https://hub.docker.com/r/apache/iggy), use `docker pull
apache/iggy:0.9.0`, or `apache/iggy:latest` for the newest stable release.
If you compile the source code in release mode, linking takes longer because
[LTO](https://doc.rust-lang.org/cargo/reference/profiles.html#lto) is enabled
in the `[profile.release]` section of the workspace
[Cargo.toml](https://github.com/apache/iggy/blob/master/Cargo.toml).
diff --git a/content/docs/web_ui/start.mdx b/content/docs/web_ui/start.mdx
index 9d5e23afa..25fd07586 100644
--- a/content/docs/web_ui/start.mdx
+++ b/content/docs/web_ui/start.mdx
@@ -7,7 +7,7 @@ Iggy Web UI provides a comprehensive dashboard for Iggy server.
It allows you to

-These instructions target Iggy server 0.9.0. The container examples use `edge`
while the release is being prepared. Use the matching source checkout for local
builds.
+These instructions target Iggy server 0.9.0. Use a matching source checkout
for local builds.
## How it connects
@@ -47,8 +47,8 @@ If the server is compiled without the `iggy-web` feature and
`web_ui = true`, a
Start an Iggy server with HTTP enabled, as shown in [Getting
started](/docs/introduction/getting-started), then run the Web UI as a separate
container:
```bash
-docker pull apache/iggy-web-ui:edge
-docker run -e PUBLIC_IGGY_API_URL=http://localhost:3000 -p 3050:3050
apache/iggy-web-ui:edge
+docker pull apache/iggy-web-ui:0.4.0
+docker run -e PUBLIC_IGGY_API_URL=http://localhost:3000 -p 3050:3050
apache/iggy-web-ui:0.4.0
```
`PUBLIC_IGGY_API_URL` is consumed by the browser: if the Iggy server also runs
in Docker, use the host-published HTTP port here, not the container's network
alias.
@@ -91,7 +91,7 @@ Here's the full example of the `docker-compose.yml` file that
starts the Iggy se
```yaml
services:
iggy:
- image: apache/iggy:edge
+ image: apache/iggy:0.9.0
container_name: iggy
restart: unless-stopped
cap_add:
@@ -125,7 +125,7 @@ services:
- iggy:/app/local_data
init-iggy:
- image: apache/iggy:edge
+ image: apache/iggy:0.9.0
container_name: init-iggy
networks:
- iggy
@@ -144,7 +144,7 @@ services:
"
iggy-web-ui:
- image: apache/iggy-web-ui:edge
+ image: apache/iggy-web-ui:0.4.0
container_name: iggy-web-ui
restart: unless-stopped
environment:
diff --git a/src/app/(home)/page.tsx b/src/app/(home)/page.tsx
index cb6fbba73..0b84c57b0 100644
--- a/src/app/(home)/page.tsx
+++ b/src/app/(home)/page.tsx
@@ -182,7 +182,7 @@ export default function HomePage() {
{/* CTA Buttons */}
<div className="mx-auto mt-14 flex max-w-3xl flex-col flex-wrap
items-center justify-center gap-5 sm:flex-row">
<Link
- href="/docs/introduction/getting-started"
+ href="/docs/introduction/quickstart"
className="inline-flex items-center rounded-lg bg-[#ff9103] px-8
py-3.5 text-lg font-semibold text-[#0e0f11] transition-colors
hover:bg-[#ffa703]"
>
Get Started
diff --git a/src/components/architecture-diagrams.tsx
b/src/components/architecture-diagrams.tsx
index 58b7484a0..0e0bb7bac 100644
--- a/src/components/architecture-diagrams.tsx
+++ b/src/components/architecture-diagrams.tsx
@@ -1128,7 +1128,7 @@ export function DocsHero() {
];
const links = [
- { title: "Getting Started", href: "/docs/introduction/getting-started",
desc: "Install, configure, send your first messages", icon: "M13 10V3L4
14h7v7l9-11h-7z" },
+ { title: "Getting Started", href: "/docs/introduction/quickstart", desc:
"Run the server and send your first message", icon: "M13 10V3L4
14h7v7l9-11h-7z" },
{ title: "Architecture", href: "/docs/introduction/architecture", desc:
"Thread-per-core, io_uring, partition ownership", icon: "M4 5a1 1 0 011-1h14a1
1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zm0 8a1 1 0 011-1h6a1 1 0 011 1v2a1 1
0 01-1 1H5a1 1 0 01-1-1v-2zm10 0a1 1 0 011-1h4a1 1 0 011 1v2a1 1 0 01-1 1h-4a1
1 0 01-1-1v-2z" },
{ title: "Connectors", href: "/docs/connectors/introduction", desc:
"Source & sink plugins for data integration", icon: "M8 7h12m0 0l-4-4m4 4l-4
4m0 6H4m0 0l4 4m-4-4l4-4" },
{ title: "SDKs", href: "/docs/sdk/introduction", desc: "Rust, Python,
Java, Go, Node.js, C#, C++, PHP", icon: "M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"
},