Run locally

Start a single-node Ursula server and verify the HTTP API.

A single node auto-bootstraps on first start. It is the fastest way to evaluate the HTTP API and stream semantics.

Start the server

cargo run --bin ursula -- serve \
  --node-id 1 \
  --listen 127.0.0.1:4437 \
  --advertise 127.0.0.1:4437 \
  --data-dir ./data

Or use the repo recipe:

just serve --node-id 1 \
  --listen 127.0.0.1:4437 \
  --advertise 127.0.0.1:4437 \
  --data-dir ./data

Smoke test

curl -f http://127.0.0.1:4437/healthz
curl -f http://127.0.0.1:4437/readyz/local

curl -X PUT http://127.0.0.1:4437/demo
curl -X PUT http://127.0.0.1:4437/demo/hello

curl -X POST http://127.0.0.1:4437/demo/hello \
  -H 'Content-Type: application/octet-stream' \
  --data-binary 'hello'

curl 'http://127.0.0.1:4437/demo/hello?offset=-1'

Config file

version = 1

[server]
node_id = 1
listen = "127.0.0.1:4437"
advertise = "127.0.0.1:4437"
data_dir = "data"
hot_payload_backend = "rocksdb"
write_only_leader = false

[cold]
backend = "fs"

Run it:

cargo run --bin ursula -- serve --config ./ursula.toml

Configuration precedence is defaults < TOML < environment < CLI flags.