Skip to content

stampede server

Run the control plane: REST API, run manager and web UI

Run the Stampede control plane. It needs PostgreSQL (TimescaleDB recommended) and applies database migrations on start.

Environment: STAMPEDE_DATABASE_URL postgres://user:pass@host:5432/stampede STAMPEDE_MASTER_KEY 32 random bytes, base64, for encrypting secrets (generate one with: stampede keygen) STAMPEDE_MASTER_KEY_FILE or read the key from a file STAMPEDE_PUBLIC_URL external URL of the web UI, for links in notifications OTEL_EXPORTER_OTLP_ENDPOINT export traces of the API and of each run over OTLP (OTEL_EXPORTER_OTLP_PROTOCOL=grpc for gRPC)

stampede server [flags]
--abort-errors string stop any run whose error rate stays at or above this (0 disables) (default "90%")
--abort-for duration how long --abort-errors must hold before a run is stopped (default 30s)
--acme-cache string directory for Let's Encrypt account keys and certificates (default <data-dir>/acme, or ./acme)
--acme-domain strings serve HTTPS with certificates from Let's Encrypt for these host names (repeatable; the server must be reachable on port 443 under them)
--acme-email string contact address for the Let's Encrypt account
--addr string listen address (default ":8080")
--data-dir string directory holding CSV/JSON feeder files for runs
--database-url string PostgreSQL URL
--executor string auto (workers when connected, else in-process), workers or local (default "auto")
--ha string how replicas share the work: standby (one serves, others wait) or active (all serve; workers connect to every replica) (default "standby")
-h, --help help for server
--http-redirect-addr string with HTTPS, also listen for plain HTTP here (for example :80) and redirect it, answering ACME HTTP-01 challenges
--join-token string secret workers present to join (required for workers)
--log-format string json or text (default "json")
--log-level string debug, info, warn or error (default "info")
--max-duration duration hard cap on run duration (0 = none)
--max-rate float hard cap on arrival rate for every run (0 = none)
--max-vus int hard cap on virtual users for every run (0 = none)
--metrics-retention string how long to keep per-second run metrics, e.g. 30d (0 keeps them forever; at least 1d). Reports, and with TimescaleDB the 10s and 1m rollups, are kept (default "0")
--migrate-dry-run report pending migrations and exit
--migrate-only apply migrations and exit
--oidc-allowed-domain strings email domain allowed to sign in with SSO (repeatable; default any)
--oidc-client-id string OIDC client ID
--oidc-default-role string role for people signing in for the first time (viewer, runner, editor, admin); empty allows only existing accounts
--oidc-issuer string OpenID Connect issuer URL for single sign-on (the client secret is read from STAMPEDE_OIDC_CLIENT_SECRET)
--oidc-name string label of the sign-in button (default "SSO")
--oidc-redirect-url string OIDC redirect URL (default --public-url + /api/v1/auth/oidc/callback)
--public-url string external URL of the web UI, for links in notifications and the SSO redirect (e.g. https://stampede.example.com)
--scheduler-interval duration how often to look for due schedules (0 disables scheduled runs) (default 15s)
--secure-cookies mark session cookies Secure (use behind HTTPS)
--tls-cert string serve the API and web UI over HTTPS with this certificate (PEM)
--tls-key string the key for --tls-cert (PEM)
--trusted-proxy strings CIDR of a reverse proxy whose X-Forwarded-For is trusted (repeatable)
--worker-addr string gRPC address workers connect to (empty disables workers) (default ":8081")
--worker-mtls mutual TLS with a CA built from the master key: workers enroll with stampede worker --mtls and the join token is never sent
--worker-tls-cert string TLS certificate for the worker port
--worker-tls-key string TLS key for the worker port
  • stampede - Self-hosted, distributed load testing