Skip to content

DOCS

Deploy

Replicas are stateless. Histories and settings live in Postgres. Occupancy, throttle, and MCP creds live in Redis.

Compose

From the sveda repo: docker compose up --build starts Postgres 16, Redis 7, and sveda-server on :8787. This is the local path that matches production wiring.

docker compose up --build
curl -s http://127.0.0.1:8787/sveda/ready

Stores

SVEDA_DATABASE_URL is required for durable histories and admin settings. SVEDA_REDIS_URL is required for occupancy, embed throttle, MCP creds, and settings revision across replicas. If either URL is set and unreachable, the process fails closed at boot. SVEDA_ADMIN_API_KEY is required when Postgres is configured. First-boot POST /sveda/admin/setup is memory/dev only.

SVEDA_DATABASE_URL=postgres://sveda:sveda@postgres:5432/sveda
SVEDA_REDIS_URL=redis://redis:6379
SVEDA_APP_KEY=...
SVEDA_ADMIN_API_KEY=...
SVEDA_EMBED_ENABLED=true

Probes

GET /sveda/health is liveness (process up). GET /sveda/ready pings Postgres and Redis when those URLs are set. Kubernetes uses health for liveness and ready for readiness. An SSE turn stays on one pod for the HTTP connection; the next request can land on any replica.

Image

ghcr.io/neresson/sveda-server. Docker Hub neresson/sveda-server is published when Hub credentials are configured on the repo. Bind 0.0.0.0:8787.

docker pull ghcr.io/neresson/sveda-server:latest

Helm

Chart charts/sveda-server. Production sets databaseUrl and redisUrl to managed stores. postgresql.enabled and redis.enabled bundle single-replica official images for kind/k3d only — not HA. SVEDA_INDEX_ROOT stays optional and per-pod. It is not a shared code index.

helm install sveda charts/sveda-server \
  --set postgresql.enabled=true \
  --set redis.enabled=true \
  --set secrets.appKey=dev-app-key-change-me \
  --set secrets.adminApiKey=dev-admin-key-change-me \
  --set secrets.hostApiKey=dev-host-key-change-me

Bind the runtime. Mint from the host.

Compose or Helm. Same HTTP contract.

Get started