Skip to content

config.toml

These tables show the values in the supplied server/config.toml, or the server default where the file omits a key. See Configuration for how to load an edited file, including with Docker.

Key Default Effect
development true in the supplied file Enable development diagnostics and timeouts. The Docker image overrides this with DEVELOPMENT=false. The server default when omitted is false.
Key Default Effect
poll_interval_minutes 1 Minutes between Twitch checks for live streams and title changes in polling mode.

See Recording for examples and quality settings.

Key Default Effect
max_concurrent 5 in the supplied file Maximum simultaneous live recordings. The server default when omitted is 2.
archive_max_concurrent 1 Maximum simultaneous archive downloads, separate from live recording slots.
archive_max_bytes_per_second 0 Download speed limit per archive in bytes per second. 0 means unlimited.
segment_concurrency 4 Parallel segment downloads per recording.
network_attempts 5 Attempts per segment after network failures.
server_error_attempts 5 Attempts per segment after Twitch 5xx errors.
cdn_lag_attempts 3 Attempts when a segment isn’t available on the CDN yet.
auth_refresh_attempts 2 Attempts to recover from an expired playback token.
max_gap_ratio 0.01 Maximum tolerated fraction of missing segments before the recorder stops with a gap error.
strict false Stop on any gap when enabled.
enable_av1 false Allow AV1 video.
disable_hevc false Exclude HEVC video.
max_restart_gap_seconds 120 Maximum interruption within a recording before capture continues in another part.
streamer_restart_wait_seconds 120 How long a manual recording waits after the broadcast ends.
max_part_bytes 0 Split after this many downloaded source bytes. 0 disables size splitting; negative values are treated as 0.
max_part_seconds 0 Split after this many seconds. 0 disables duration splitting; negative values are treated as 0.
max_part_count 1024 Maximum parts created by size or duration splitting.
signed_url_ttl_hours 168 Maximum lifetime of download links in recording webhooks. 0 disables these links. Auto-delete deadlines can shorten their lifetime.

Part limits are checked between segments, so a part can exceed its source-data limit by one segment. The finished MP4 may be larger or smaller than the downloaded data because its container differs. Leave a margin below any hard file-size limit.

Key Default Effect
type "local" Storage backend: "local" or "s3".
local_path "./data" Storage root for the local backend.

Used when [storage].type = "s3".

Key Default Effect
endpoint Empty Provider endpoint. Empty uses AWS S3.
bucket Empty Bucket name.
region Empty Provider region.
access_key Empty Access key ID.
secret_key Empty Secret access key.
use_path_style Unset Override path-style addressing. Custom endpoints use path-style addressing by default.

Intervals control how often tasks run. Retention values control how long data is kept.

Key Default Effect
enabled true Enable scheduled background tasks.
eventsub_interval_minutes 10 Interval between EventSub quota checks.
eventsub_reconcile_interval_minutes 60 Interval between subscription checks and repairs.
category_art_interval_minutes 1440 Interval between category artwork and IGDB ID updates from Twitch.
category_metadata_interval_minutes 1440 Interval between category description updates from IGDB.
token_cleanup_interval_minutes 60 Interval between expired Twitch app token cleanups.
session_cleanup_interval_minutes 120 Interval between expired user session cleanups.
fetch_logs_retention_days 14 Days to keep Twitch API request logs.
webhook_event_payload_retention_days 7 Days to keep stored EventSub payloads.
webhook_event_retention_days 30 Days to keep EventSub delivery history. 0 keeps it forever.
event_logs_retention_days 14 Days to keep debug and info event logs.
recordings_retention_interval_minutes 60 Interval between checks for recordings past their auto-delete deadline. 0 disables automatic deletion.
storage_scan_interval_minutes 1440 Interval between checks for missing or restored media. 0 disables scanning.
archive_poster_interval_minutes 5 Interval between checks for missing archive posters. 0 disables checking.
recording_webhook_delivery_retention_days 30 Days to keep delivered, rejected, or failed recording webhook history. 0 disables cleanup. Queued deliveries are kept.
Key Default Effect
log_to_file false Write logs to files as well as standard error.
log_dir "./logs" Log directory, created when needed.
log_level "debug" Minimum level: debug, info, warn, or error.

Connection pool settings, used when DATABASE_DRIVER=postgres.

Key Default Effect
max_conns 25 Maximum connections.
min_conns 5 Minimum connections.
max_conn_lifetime_ms 1800000 Maximum connection lifetime: 30 minutes.
max_conn_idle_time_ms 300000 Maximum idle time: 5 minutes.
health_check_period_ms 30000 Pool health check interval: 30 seconds.
Key Default Effect
enabled true in the supplied file Expose GET /api/v1/health without authentication. The supplied Docker health check requires it.

The endpoint returns HTTP 200 when the database responds and storage is attached, or 503 otherwise. The storage field is attached or unattached. Read-only and full storage still count as attached.