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 --buildbash
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 --buildThe 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-1Append 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 demobash
java -jar cli/target/streamstack.jar ds create \
--endpoint http://127.0.0.1:4437 demoTail
bash
java -jar cli/target/streamstack.jar native tail \
--endpoint http://127.0.0.1:4437 demobash
java -jar cli/target/streamstack.jar ds tail -f \
--endpoint http://127.0.0.1:4437 demoAppend
bash
java -jar cli/target/streamstack.jar native append \
--endpoint http://127.0.0.1:4437 demobash
java -jar cli/target/streamstack.jar ds append \
--endpoint http://127.0.0.1:4437 demoappend 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.