Skip to content

Config Reference

Edition legend

MarkMeaning
💎 SubscriptionRequires valid [license].key in conf/super.toml and matching authorized plugin libraries. OSS ignores unknown subscription-only fields.
(no mark)Available in OSS (with or without plugins).

Pre-release: Licensed plugins are documented for the target architecture. Subscription delivery is not open yet — do not treat 💎 fields as production-supported for paying customers until maintainers announce GA.

Licensed-plugin fields in this reference (quick index):

LocationKeys / file
Root (super.toml)auth_secret 💎
[license]key 💎 — cryptographically signed subscription token from your vendor
[[programs]][programs.resource_limits] (cpu_quota, memory_limit) 💎
conf/notify.toml (separate file)[[channels]] 💎 — see Event Notifications

Not licensed-only: [webhook] in super.toml is parsed but not wired at runtime. [programs.hooks] and [[event_hooks]] work in OSS.

OSS security: See Configuration — OSS security defaults for fail-closed bind, log path confinement, and other defensive defaults.

Instance layout (SUPER_ROOT)

PathPurpose
conf/super.tomlDaemon settings (this file)
conf/notify.tomlLicensed notify plugin config (optional)
data/Persisted registry / auth state
logs/Daemon (app.log) and child process logs
run/Runtime files; default pidfile run/superd.pid when self-daemonizing
plugins/Licensed .so / .dylib libraries

[server]

Global settings for the daemon.

KeyTypeDefaultDescription
hoststring127.0.0.1Bind address for API/Web UI.
portint9002Bind port.
allow_insecure_public_bindboolfalseExplicit opt-in to bind on a non-loopback address without the security plugin. OSS refuses startup when host is not loopback and this is false. Licensed deployments always load security — this flag applies to OSS only.
shutdown_timeoutint10Seconds to wait for SIGTERM before SIGKILL during shutdown.
flapping_windowint60Time window (seconds) to detect restart loops.
flapping_thresholdint5Max restarts allowed within the window.
enable_docsboolfalseEnable Swagger UI (/api/docs) when the binary is built with the docs feature.
daemonboolfalseUnix only: self-daemonize after start (like nginx daemon on). Keep false under systemd/Docker (Type=simple / PID 1). CLI: --daemon / --foreground override this.
pidfilestringOptional pidfile path. Relative paths resolve under SUPER_ROOT. When daemonizing and unset, defaults to run/superd.pid. Foreground writes a pidfile only when this (or --pidfile) is set. CLI: --pidfile.
[server]
# Optional self-daemonize when not using systemd/Docker:
# daemon = true
# pidfile = "run/superd.pid"   # default when daemonizing

Root keys (Licensed 💎)

Top-level fields in super.toml (sibling to [server], not inside it):

KeyTypeDefaultDescription
auth_secret 💎stringPlugin only (security). Required for licensed startup. Root Admin Bearer for bootstrap; Admins may explicitly disable login with it after creating an Admin Access Token. See Authentication.

[license] — subscription key (Licensed 💎)

Optional section in conf/super.toml. When present and valid, superd loads authorized plugins from plugins/ and requires the bundled security plugin (security.so + auth_secret) or refuses startup. See Licensed deployments require security.

KeyTypeDefaultDescription
key 💎stringBase64-encoded signed subscription key. Obtain from your subscription vendor. Override: SUPER_LICENSE env (same format).
[license]
key = "eyJjbGFpbXMiOnsiaXNzdWVkX3RvIjoi..."

[webhook] — reserved, not active

super.toml accepts an optional [webhook] block for historical schema compatibility. The OSS daemon does not read or use this section at runtime — setting it has no effect today.

KeyTypeDescription
urlstringParsed but not connected to any notifier.
typestringDefault generic. Ignored at runtime.

Use licensed notifications instead: configure webhooks in a separate conf/notify.toml file ([[channels]]), not in super.toml. Requires the notify plugin. See Event Notifications.

Do not confuse [webhook] in super.toml with type = "webhook" channels in notify.toml — only the latter is functional.

[storage] / [logging] / [child_logging]

See Configuration for examples. Keys mirror ServerConfig in common/src/config.rs.

[[programs]]

You can have multiple program blocks.

Field naming: Keys such as autostart, autorestart, exitcodes, startsecs, and stopsecs align with Supervisor for migration. Newer keys (retry_limit, health_check, depends_on, …) use snake_case. In TOML, stopwaitsecs is accepted as an alias for stopsecs.

Identity & execution

KeyTypeDefaultDescription
namestringRequired. Unique program name.
commandstringRequired. Path to the executable.
argslist[]Command-line arguments.
envdict{}Inline environment variables (KEY = "VAL").
env_filestringPath to a .env file loaded at spawn time.
cwdstringWorking directory.
userstringRun as this user (requires root).
groupstringLogical group for batch control (e.g. @backend).

Restart & stop behaviour

autostart and autorestart are independent:

  • autostart — start the program when superd boots.
  • autorestart — restart the program after it exits (crash recovery).

Example: autostart = false with autorestart = "true" gives a manually started service that still recovers from crashes.

KeyTypeDefaultDescription
autostartbooltrueStart on daemon boot. Cron programs skip boot-time start regardless.
autorestartstringunexpectedunexpected — restart unless exit code is in exitcodes; true — always restart; false — never restart on exit.
exitcodeslist[0]Exit codes treated as success when autorestart = "unexpected".
retry_limitint3Max consecutive crash restarts before status becomes Fatal.
startsecsint10Seconds of stable uptime before an exit resets the retry counter.
stopsecsint[server].shutdown_timeoutPer-program seconds to wait after SIGTERM before SIGKILL. Omit to use [server].shutdown_timeout (default 10). TOML alias: stopwaitsecs.
priorityint999Boot-time autostart order; lower values start first.

Logging

KeyTypeDefaultDescription
stdout_logfilestring{log_dir}/{uuid}.outCustom stdout log path (must resolve under storage.log_dir).
stderr_logfilestring{log_dir}/{uuid}.errCustom stderr log path (must resolve under storage.log_dir).

Orchestration

KeyTypeDefaultDescription
depends_onlist[]Program names that must be Healthy before this one starts.
cronstringCron expression (e.g. 0 0 * * * *). See Scheduled Tasks.

[programs.hooks]

Per-program lifecycle shell hooks. Full behavior table: Lifecycle Hooks.

KeyTypeDefaultDescription
pre_startstringRun before spawn; non-zero exit aborts start.
post_startstringRun after PID assigned (async).
pre_stopstringRun before stop signal (sync).
post_stopstringRun after process exits (async).

[programs.health_check]

KeyTypeDefaultDescription
typestringRequired. tcp, http, or exec.
portintFor tcp checks.
urlstringFor http checks.
commandstringFor exec checks.

[programs.resource_limits] 💎

Commercial only. Linux cgroups CPU/memory limits; requires the isolation plugin on Linux. See Resource Isolation.

KeyTypeDefaultDescription
cpu_quota 💎floatCPU quota percentage (100.0 = one core).
memory_limit 💎intHard memory limit in bytes.

[[event_hooks]] (OSS)

Global event listeners (local scripts, JSON on stdin). Distinct from licensed conf/notify.toml webhooks (notify plugin). Full reference: Event Hooks.

KeyTypeDefaultDescription
commandstring(required)Shell command (sh -c). Receives JSON on stdin.
eventslist["*"]Event names (process_fatal, …) or "*".
programslist["*"]Program names to match, or "*".
asyncbooltrueRun hook in background task.
timeout_secsint30Kill hook script after N seconds.
idstringOptional label for logs.

conf/notify.toml 💎

Licensed plugin only (notify). Separate from super.toml. Hot-reloadable webhook / IM channels. Schema and presets: Event Notifications.

System events & reactions

Super emits System Events (process_fatal, process_started, etc.). Where to configure reactions:

MechanismConfig fileEditionStatus
Lifecycle hooks[[programs]][programs.hooks]OSS✅ Active
Event hookssuper.toml[[event_hooks]]OSSEvent Hooks
Webhook notificationsconf/notify.toml💎 Licensed (notify)Event Notifications
[webhook] in super.toml[webhook]⚠️ Parsed only — not wired