Skip to content

Quickstart

Java 17+ (Java 21 recommended). Maven. Docker.

Each node includes the S3Stream storage engine, the WAL, JRaft metadata, and the HTTP API. All of that lives in the same server.

Start a node

bash
mvn clean package
cp harness/local/.env.example harness/local/.env
docker compose --env-file harness/local/.env \
  -f harness/local/docker-compose.minio.yml \
  -f harness/local/docker-compose.native.yml \
  up -d --build
bash
mvn clean package
cp harness/local/.env.example harness/local/.env
docker compose --env-file harness/local/.env \
  -f harness/local/docker-compose.minio.yml \
  -f harness/local/docker-compose.ds.yml \
  up -d --build

The node listens on 127.0.0.1:4437. MinIO console: http://127.0.0.1:9001 (minioadmin / minioadmin).

If the node comes up before the buckets exist (NoSuchBucket):

bash
docker restart local-node1-1

Append and tail

Create a stream, then tail in one terminal and append in another.

Create

bash
java -jar cli/target/streamstack.jar native create \
  --endpoint http://127.0.0.1:4437 demo
bash
java -jar cli/target/streamstack.jar ds create \
  --endpoint http://127.0.0.1:4437 demo

Tail

bash
java -jar cli/target/streamstack.jar native tail \
  --endpoint http://127.0.0.1:4437 demo
bash
java -jar cli/target/streamstack.jar ds tail -f \
  --endpoint http://127.0.0.1:4437 demo

Append

bash
java -jar cli/target/streamstack.jar native append \
  --endpoint http://127.0.0.1:4437 demo
bash
java -jar cli/target/streamstack.jar ds append \
  --endpoint http://127.0.0.1:4437 demo

append reads stdin. Type a line, press enter, repeat. tail prints each line as it lands (with its sequence number on Stream Stack).

The tabs pick the protocol. Both speak HTTP on the same port; run the node with the matching compose file from Start a node.