Skip to main content
Version: 1.3

Configuration settings

Route: /backend-config (tab Configuration)

The Configuration tab lists global settings grouped by category. Each field shows a label, a short description under the label, and a control: toggle for yes/no values, number input for durations and counts (with unit hint), or text input for strings.

See also: Overview · Configuration file

Categories on the page​

Settings appear in this order:

Section headerPurposeEditable in UI
Housekeeping / alert retentionCleanup task and retention deletesYes
TimeoutsAuto-unack, auto-unshelve, heartbeatsYes
AlertsDefault alert timeout and list sizesYes
NotificationsDelay plugin timingYes
AuthenticationLogin and tokensYes
App internal emailSignup verification, forgot password, etc. (not alerts)Yes
InstructionsRunbook link templateYes
DatabaseDatabase metadataNo (fields disabled)

Change settings​

  1. Open Management → Backend Config.
  2. Stay on the Configuration tab (default).
  3. Locate the category and field; read the description under the label.
  4. Adjust toggles, numbers, or text. Duration fields show a human-readable hint (for example 2 hours, Never when set to 0). Heartbeat max latency is in milliseconds.
  5. Click Save when the button is enabled.
  6. Wait for Configuration updated successfully. If save fails, revert with Discard if needed.
Destructive or service-wide changes

Incorrect housekeeping intervals can delete alert history sooner than expected. Wrong authentication settings can lock out users. Invalid SMTP values break verification email, not necessarily notification methods which use their own SMTP configuration.

Backend Configuration — all categories on the Configuration tab

Housekeeping / alert retention​

Controls the Celery run_housekeeping task: whether it runs, how often it wakes up, and which alerts it deletes.

FieldControlDescription
Housekeeping enabledToggleMaster switch for run_housekeeping. When off: no deletes, no auto-unack, no auto-unshelve. Open alerts can still become expired via the separate expire_alerts job (~every 5 s).
Housekeeping intervalNumber (seconds)How often Celery Beat runs housekeeping (typical 3600). This is not the retention age — it is how often the cleaner looks.
Retain closed/expiredNumber (seconds)After last_receive_time, delete alerts with status closed or expired. 0 = never delete by this rule.
Retain informationalNumber (seconds)After last_receive_time, delete informational-severity alerts. 0 = never.
Tool history retentionNumber (days)Delete tool executions older than this many days. 0 = never. Also settable as env TOOL_HISTORY_RETENTION_DAYS.
Policy history retentionNumber (days)Delete policy executions older than this many days. 0 = never. Also settable as env POLICY_HISTORY_RETENTION_DAYS.
Notification history retentionNumber (days)Delete notification rule executions older than this many days. 0 = never. Also settable as env NOTIFICATION_HISTORY_RETENTION_DAYS. Default 30.

Retention vs interval​

time until delete ≈ retain seconds  +  (0 … housekeeping interval)

Example: retain = 60, interval = 3600 → an alert eligible after 1 minute may stay until the next hourly run (worst case ~1 hour later). For near-real-time cleanup, lower both values and restart Celery Beat after changing the interval.

Status expiry (open → expired) is controlled by Alert timeout in the Alerts category (ALERT_TIMEOUT), not by these retain fields. Full walkthrough: Settings — Alert lifecycle.

Legacy conf keys

DELETE_CLOSED_AFTER, DELETE_RESOLVED_AFTER, and DELETE_CLEARED_AFTER may still appear in older tobealertd.conf files. They are not applied by the cleanup task and are not shown in this UI. Closed alerts are deleted by the same rule as expired (DELETE_EXPIRED_AFTER / Retain closed/expired).

Changing the interval or retention affects how long historical alerts remain. Plan retention to match compliance needs before lowering values. After changing the interval from the UI, restart Celery Beat if the new schedule does not take effect.

Alerts​

FieldControlDescription
Alert timeoutNumber (seconds)Default timeout when creating/updating alerts. After that time since last receive, the alert becomes expired (status change). Deletion is controlled by housekeeping retention — see Alert lifecycle.
Query limit (legacy)NumberExposed in config; runtime pagination uses Default page size.
Default page sizeNumberDefault number of items per page in paginated API lists

Authentication​

FieldControlDescription
Auth requiredToggleRequire authentication to access the API and WebUI
Local login enabledToggleAllow username/password login (when disabled, use LDAP/SAML or other configured providers)
Signup enabledToggleAllow new users to register with local BasicAuth
Token expiry (days)NumberDays before a session JWT expires
API key expiry (days)NumberDays before an API key expires

Disabling Auth required or Local login enabled without alternate login methods can block access. Coordinate with External auth providers configuration.

Email​

App-internal mail only (signup verification, forgot password, and similar account emails). This SMTP is not used for alert notifications, notification rules, or notification methods — configure those separately. A backend restart may be needed for SMTP changes to take effect in the mailer.

FieldControlDescription
Require signup verificationToggleLocal users must confirm email before sign-in
Internal From addressTextFrom address for verification / password-reset emails
SMTP host (internal mail)TextSMTP for app-internal mail only
SMTP port (internal mail)NumberPort (for example 587)
STARTTLS (internal mail)ToggleSTARTTLS on the internal SMTP
SSL (internal mail)ToggleImplicit SSL/TLS on the internal SMTP

Database​

Read-only display of database connection metadata. Fields are disabled — you cannot change them from this page.

FieldDescription
Database nameName of the database
Database schemaSchema name
Raise on database errorWhether database errors raise exceptions

Use Settings & environment variables for DATABASE_URL and related deployment settings.

Timeouts​

FieldControlDescription
Ack timeoutNumber (seconds)After ack, auto-unack after this period (0 = Never)
Shelve timeoutNumber (seconds)After shelve, auto-unshelve after this period (0 = disabled)
Heartbeat timeoutNumber (seconds)Seconds without receive before a heartbeat is marked expired
Heartbeat max latencyNumber (milliseconds)Maximum acceptable heartbeat latency before it is considered slow

Shelve and acknowledge behavior is also visible on the alerts dashboard.

Notifications​

FieldControlDescription
Delay plugin delayNumber (minutes)Fallback minutes before a new Open alert is stored as delayed (then open). Does not delay notification sending.

Conf / env key: NOTIFICATION_DELAY (minutes).

This setting is not a notification hold

Delay plugin delay is the fallback for the ingest delay plugin. It does not pause notification rules or methods. Rules still decide when to send; a delayed alert can notify on create and again when status becomes open.

The value applies only to new Open alerts that are not duplicates or correlations. If the payload includes minutesDelayed as an integer (including 0), that integer wins and this setting is ignored. Omit the field (or send null) to use the configured minutes. 0 means “do not delay”.

minutesDelayed is not stored. After ingest, check status (delayed) and delayedUntil. The UI may show minutes delayed as 0 even when the alert was delayed.

Simulate always injects a random minutesDelayed (0–60), so raising this setting will not delay those test alerts. For API payloads see Sending alerts.

Instructions​

FieldControlDescription
Instruction link templateTextTemplate for resolving which instruction file opens when an operator clicks Instructions on an alert

Supports `${field}` and `${attributes.key}` placeholders, for example `${resource}_${attributes.namespace}_${event}`. See Instructions from alerts for runbook paths and wiki authoring.

Save and discard​

ActionWhen availableResult
SaveAfter any editWrites changed keys to the configuration file; success toast Configuration updated successfully
DiscardAfter any editRestores values from the last load/save; toast Changes discarded (restored last loaded state)

If you navigate away with unsaved edits, the product warns you before leaving.

Best practices​

  1. Document baseline values before changing retention or timeouts in production.
  2. Test login and API keys after changing Authentication fields.
  3. Do not rely on this page for secrets — SMTP passwords and database URLs belong in env vars or the config file via installation procedures.
  4. Align housekeeping with audit and alert history requirements.
  5. Use notification methods for alert email. Tune Delay plugin delay only as a global fallback for alerts that omit minutesDelayed — it does not hold outbound notifications.