Reference for server/config.toml. Grouped by section.
| Key | Default | Notes |
|---|
development | true | Enables /debug pprof endpoints and looser timeouts. Set false in production. |
| Key | Default | Notes |
|---|
allowed_origins | ["http://localhost:3000"] | CORS allow-list. Add the dashboard origin for cross-origin deployments. |
poll_interval_minutes | 1 | Helix poll interval used by SERVER_MODE=poll for live detection and title tracking. |
Recording behaviour. See Recording for narrative.
| Key | Default | Notes |
|---|
max_concurrent | 5 | Cap on parallel recordings across the server. |
preferred_quality | "1080" | Target HLS variant. "1080", "720", "480", "360", "audio_only". |
segment_concurrency | 4 | Parallel HLS segment fetches per recording. |
network_attempts | 5 | Retry budget for generic network failures. |
server_error_attempts | 5 | Retry budget for Twitch 5xx. |
cdn_lag_attempts | 3 | Retry budget when a segment isn’t on the CDN yet. |
auth_refresh_attempts | 2 | Retry budget for expired playback tokens. |
max_gap_ratio | 0.01 | Tolerated fraction of dropped segments before “incomplete” badge. |
strict | false | If true, any gap fails the recording. |
enable_av1 | false | Allow AV1 variants. |
disable_hevc | false | Refuse HEVC variants. |
max_restart_gap_seconds | 120 | Stream-drop window for appending to the same VOD. |
| Key | Default | Notes |
|---|
type | "local" | "local" or "s3". |
local_path | "./data" | Used when type = "local". |
Used only when [storage].type = "s3".
| Key | Default | Notes |
|---|
endpoint | (empty) | S3-compatible endpoint URL. Empty means AWS S3. |
bucket | (empty) | |
region | (empty) | |
access_key | (empty) | |
secret_key | (empty) | |
use_path_style | (unset) | Force path-style addressing. Custom endpoints default to path-style. |
| Key | Default | Notes |
|---|
enabled | true | Master switch for the scheduled-task runner. |
eventsub_interval_minutes | 10 | EventSub quota-snapshot cadence. |
eventsub_reconcile_interval_minutes | 60 | Periodic full reconcile of EventSub subscriptions. |
category_art_interval_minutes | 1440 | Backfill box_art_url on categories from Helix /games. |
token_cleanup_interval_minutes | 60 | Drop expired Twitch app tokens. |
session_cleanup_interval_minutes | 120 | Drop expired user session tokens. |
fetch_logs_retention_days | 14 | Retention sweep for the Helix fetch-log table. |
webhook_event_payload_retention_days | 7 | Trims the stored EventSub payload column. |
event_logs_retention_days | 14 | Retention sweep for debug + info event-log rows. |
| Key | Default | Notes |
|---|
log_to_file | false | Mirror logs to a file in log_dir in addition to stderr. |
log_dir | "./logs" | Directory for log files. Created on first write. |
log_level | "debug" | debug, info, warn, error. |
sample_rate | 1.0 | Fraction of high-volume events to record (0.0–1.0). |
Pool tuning. Used only when DATABASE_DRIVER=postgres.
| Key | Default | Notes |
|---|
max_conns | 25 | |
min_conns | 5 | |
max_conn_lifetime_ms | 1800000 | 30 min. |
max_conn_idle_time_ms | 300000 | 5 min. |
health_check_period_ms | 30000 | 30 s. |
| Key | Default | Notes |
|---|
enabled | true | Exposes unauthenticated GET /api/v1/health (200 on DB ping success, 503 on failure). The bundled Docker healthcheck depends on this. |