Skip to content

Configuration Reference

The hub’s Settings page is the primary configuration surface — email, alerts, webhooks, AI diagnosis, retention, and the status page are all editable there, hot-reloadable, and persisted to the hub’s SQLite database. Most users never need to touch an environment variable after the initial docker-compose.yml in the Quick Start.

The variables listed below are equivalent defaults for users who prefer declarative deployments (Docker Compose, Kubernetes, Ansible). For keys that appear both here and in the UI, the DB value wins.

SMTP / Email

VariableDefaultDescription
INSIGHTD_SMTP_HOST(none)SMTP server hostname
INSIGHTD_SMTP_PORT587SMTP port (587 for TLS, 465 for SSL)
INSIGHTD_SMTP_USER(none)SMTP username
INSIGHTD_SMTP_PASS(none)SMTP password or app password
INSIGHTD_SMTP_FROM(from user)From address for emails

Digest

VariableDefaultDescription
INSIGHTD_DIGEST_TO(none)Recipient email for weekly digest
INSIGHTD_DIGEST_CRON0 8 * * 1Digest schedule (Monday 8am)
TZUTCTimezone for cron schedules

Alerts

VariableDefaultDescription
INSIGHTD_ALERTS_ENABLEDfalseEnable real-time alerts
INSIGHTD_ALERTS_TO(digest recipient)Alert email recipient
INSIGHTD_ALERT_COOLDOWN60Minutes between the first reminders for a persistent alert. With backoff on, this is the base — each subsequent reminder doubles the gap.
INSIGHTD_ALERT_REMINDER_BACKOFFtrueSlow down reminders for long-lived alerts. Each reminder doubles the previous gap (60m → 2h → 4h → 8h → …) until the cap. Prevents the inbox from filling with the same alert.
INSIGHTD_ALERT_REMINDER_MAX1440Upper bound on the gap between reminders, in minutes. Default 1440 = once per day.
INSIGHTD_ALERT_DOWNtrueAlert on container down
INSIGHTD_ALERT_CPU90Container CPU threshold (%)
INSIGHTD_ALERT_MEMORY0Container memory threshold (MB, 0=disabled)
INSIGHTD_ALERT_RESTART3Restart count in 30min window
INSIGHTD_ALERT_UNHEALTHYtrueAlert on unhealthy containers
INSIGHTD_ALERT_HOST_CPU90Host CPU threshold (%)
INSIGHTD_ALERT_HOST_MEMORY0Host low memory threshold (MB, 0=disabled)
INSIGHTD_ALERT_LOAD0Host load threshold (0=disabled)
INSIGHTD_ALERT_DISK90Disk usage threshold (%)
INSIGHTD_ALERT_EXCLUDE(none)Exclude containers from alerts (comma-separated globs, e.g. dev-*,test-*)
INSIGHTD_ALERT_ENDPOINT_DOWNtrueAlert when HTTP endpoints go down
INSIGHTD_ALERT_ENDPOINT_FAILURES3Consecutive failures before alerting

Web UI

VariableDefaultDescription
INSIGHTD_WEB_ENABLEDtrueEnable the web UI
INSIGHTD_WEB_PORT3000Web UI port
INSIGHTD_WEB_HOST0.0.0.0Bind address
INSIGHTD_ADMIN_PASSWORD(none)Admin password for settings/webhooks
INSIGHTD_EXTERNAL_HOST(auto)Hostname shown in agent setup commands
INSIGHTD_STATUS_PAGEfalseEnable public status page at /status (no auth)

MQTT (Hub Mode)

VariableDefaultDescription
INSIGHTD_MQTT_URL(none)MQTT broker URL (enables hub mode)
INSIGHTD_MQTT_USER(none)MQTT username
INSIGHTD_MQTT_PASS(none)MQTT password
INSIGHTD_HOST_IDlocalHost identifier (falls back to NODE_NAME in k8s mode)

Container Runtime

VariableDefaultDescription
INSIGHTD_RUNTIMEautoContainer runtime: auto, docker, or kubernetes
INSIGHTD_ALLOW_ACTIONSfalseEnable container start/stop/restart from UI (Docker only)
INSIGHTD_ALLOW_UPDATESfalseEnable remote agent self-updates (Docker only)

Host Grouping

VariableDefaultDescription
INSIGHTD_HOST_GROUP(none)Optional logical group label (e.g. production-cluster, basement). Surfaces as collapsible sections on the Hosts page. The agent reports its group; a manual override on the Hosts page detail (PUT /api/hosts/:id/group) always wins over the env var.

AI Diagnosis (Gemini)

The container detail page has a “Diagnose with AI” button that sends the diagnosis context (metrics, baselines, restart history, log signals) to Google Gemini and persists the response. Disabled by default — set the API key to enable it. All settings are also available on Settings → AI Diagnosis in the web UI.

VariableDefaultDescription
GEMINI_API_KEY(none)Google Gemini API key. Free tier is sufficient. Get one at aistudio.google.com/apikey.
GEMINI_MODELgemini-2.5-flashModel name. Default is the free, fast model. gemini-2.0-flash is also free but returns limit: 0 on new AI Studio projects.
GEMINI_TIMEOUT_MS20000Abort the Gemini request after this many milliseconds.

Cache hits via sha256(context) + 24h TTL avoid duplicate requests. Rate limit responses (429) surface in the UI with a live cooldown countdown.

Kubernetes (DaemonSet Mode)

VariableDefaultDescription
NODE_NAME(none)Required — node name (set via downward API in DaemonSet)
NODE_IP(none)Node IP, used to build kubelet URL (set via downward API)
INSIGHTD_KUBELET_URLhttps://${NODE_IP}:10250Override the kubelet endpoint URL

Container Actions

VariableDefaultDescription
INSIGHTD_ALLOW_ACTIONSfalseEnable start/stop/restart/remove from the UI
INSIGHTD_ALLOW_UPDATESfalseEnable remote agent updates from the hub

Status Page

VariableDefaultDescription
INSIGHTD_STATUS_PAGEfalseEnable public status page at /status
INSIGHTD_STATUS_PAGE_TITLESystem StatusTitle shown on the public status page

Collection

VariableDefaultDescription
INSIGHTD_COLLECT_INTERVAL5Minutes between collection cycles
INSIGHTD_DISK_WARN_THRESHOLD85Disk warning threshold (%)

Data Retention

VariableDefaultDescription
INSIGHTD_RETENTION_RAW_DAYS30Days to keep full-resolution snapshots (min 7). Older raw data is rolled up into hourly aggregates before deletion.
INSIGHTD_RETENTION_ROLLUP_DAYS365Days to keep hourly rollups (min 30). Rollups give you long-term trends without unbounded growth.

Log Tailing

VariableDefaultDescription
INSIGHTD_LOG_LINES100Default log lines to fetch
INSIGHTD_LOG_MAX_LINES1000Maximum log lines (agent-side cap)
INSIGHTD_LOG_TIMEOUT15000MQTT log request timeout (ms)

Paths

VariableDefaultDescription
INSIGHTD_DATA_DIR/dataDatabase storage directory
INSIGHTD_HOST_ROOT/hostHost filesystem mount point
DOCKER_HOST/var/run/docker.sockDocker socket path

Update Checks

VariableDefaultDescription
INSIGHTD_UPDATE_CHECK_CRON0 3 * * *Daily image update check schedule