Skip to content
Super 1.7.0 is production-ready — transactional installs with automatic rollback, cron runtime caps (kill_after_secs), and panic-free input handling. See what’s new →

Environment Variables

Most configuration lives in conf/super.toml (see Config Reference). A small set of public environment variables lets you configure the daemon and CLI without touching config files — useful for containers, systemd units, and one-off overrides.

Runtime layout

SUPER_ROOT

Instance root directory: holds conf/, data/, logs/, run/, and plugins/. Shared by superd, the super CLI, and licensed plugins so path resolution stays consistent.

Resolution order for the daemon:

  1. SUPER_ROOT (if set, non-empty)
  2. Directory layout inferred from the executable (<root>/bin/superd exists → <root>)
  3. Current working directory

The CLI’s offline tools (super check, super doctor) additionally probe super.toml, conf/super.toml, and /etc/super/super.toml when SUPER_ROOT is unset.

export SUPER_ROOT=/opt/super
superd                  # reads /opt/super/conf/super.toml

Relative Unix socket paths (--server unix://run/superd.sock, [server] socket) and relative pidfiles resolve under SUPER_ROOT. See Config Reference — Instance layout.

CLI authentication

SUPER_TOKEN

Access token or admin Bearer for CLI → daemon requests. Equivalent to super --token <TOKEN>, and takes precedence over a saved ~/.super/cli.json login for that invocation. Relevant when core auth is active (auth_secret set) or the security plugin is loaded. Default loopback OSS without auth_secret accepts requests without a token.

# OSS core auth — same string as [server].auth_secret in conf/super.toml
export SUPER_TOKEN='your-auth-secret'

# Licensed Access Token (security plugin) — sk-… from `super token create`
# export SUPER_TOKEN=sk-...

super list

License (licensed deployments)

SUPER_LICENSE

Base64-encoded signed subscription key, in the same format as [license].key. Overrides the key from super.toml — useful in containers where the key is injected as an env var instead of written to disk.

export SUPER_LICENSE="eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoia183Y2I5NTJhZiJ9..."
superd

SUPER_LICENSE_STRICT

Force strict license verification — equivalent to [license].strict = true. When set to 1 / true / yes, an invalid or incompatible key refuses startup instead of degrading to OSS mode. Recommended for production licensed deployments.

export SUPER_LICENSE_STRICT=1
superd

Without SUPER_LICENSE_STRICT, startup still hard-fails when the key does not verify and any of these deployment signals is present: plugin libraries in $SUPER_ROOT/plugins/, an auth_secret configured, or a non-loopback bind. See Authentication — license verification.

SUPER_HOSTNAME

Optional display hostname for the daemon. When set (non-empty), it overrides the OS hostname for:

  • Notification / webhook payloads and the “Sent from Super · host …” footer
  • system_startup events
  • The SUPER_HOSTNAME value injected into managed children and hooks

Useful in containers and Kubernetes where the kernel hostname is a random pod id:

export SUPER_HOSTNAME=api-prod-1
superd

If unset, Super uses the OS hostname (hostname / gethostname).

Variables injected into children and hooks

The following are written into the environment of managed processes and hook/event scripts (you normally do not set them on children yourself). SUPER_HOSTNAME is special: if set on the daemon process, that value is what gets injected (see above).

VariableWhere it appears
SUPER_ID, SUPER_NAME, SUPER_HOSTNAME, SUPER_GROUPManaged child processes and lifecycle hooks (Lifecycle Hooks)
SUPER_PID, SUPER_EXIT_CODE, SUPER_UPTIME_SECSLifecycle hook scripts (post-start / pre-stop / post-stop)
SUPER_PROCESS_NUM, SUPER_PROCESS_TOTALnumprocs > 1 instances (worker-0, worker-1, …)
SUPER_EVENT, SUPER_USAGE_BYTES, SUPER_LIMIT_BYTES, SUPER_WARN_BYTES, SUPER_RETRY_COUNT, …OSS [[event_hooks]] scripts (System Events)

Was this page helpful? Thanks for your feedback!

Still have questions? Open an issue or browse the source.