Operate

Deploy

Sirius is one binary and one image. The same artifact can serve the API, run workers, or apply migrations.

sirius-runtime              # API + workers
sirius-runtime worker       # data plane only
sirius-runtime migrate      # apply Postgres migrations and exit
sirius-runtime healthcheck  # probe /ready

Compose

The installer writes a working Compose file. For production, use the production overlay: require Postgres, a secret store, signing keys, and tenant isolation so a misconfigured process refuses to start instead of silently running in memory.

Kubernetes

Helm charts ship control-plane pods, worker pods, and a migration Job from the same image. Gate load balancers on GET /ready, not only GET /health.

HTTPS

The runtime and the console speak HTTP. Terminate TLS on the ingress controller, load balancer, or reverse proxy in front of them.

On Kubernetes, enable Helm ingress TLS and a certificate secret. On Compose, put Caddy, nginx, or Traefik in front of the published ports.

Then set:

  • SIRIUS_API_BASE_URL to the HTTPS URL the browser uses, and recreate the console so /config.js updates.
  • SIRIUS_HTTP_CORS_ALLOWED_ORIGINS to include that HTTPS origin.
  • SIRIUS_CLUSTER_ADVERTISE_URL to the same HTTPS URL in an HA pool.

HTTP, FHIR, and webhook listeners can terminate TLS on their own port (tls_enabled plus a cert and key). Shared inbound HTTP uses SIRIUS_INGRESS_HTTP_TLS_CERT_FILE and SIRIUS_INGRESS_HTTP_TLS_KEY_FILE.

Laptop installs stay on http://localhost. HTTPS is the production posture, not a different product.

High availability

A pool of Sirius processes elects one primary. That is in-product. Production HA of Postgres and the broker is still yours. See High availability for topologies, setup, and what lives outside the product.

Brokers

NATS JetStream is the default work bus. RabbitMQ is a first-class alternative. The product record stays in Postgres either way.

Upgrades

The Upgrade & Rollback Center snapshots the data layer, expands schema, rolls a canary, and promotes only if health gates pass. One action rolls back both the application image and the database. That is the supported path — not an external runbook you hope someone still has.