Skip to content

System Settings Reference

System settings are global, admin-only configuration values that apply across all environments. They control SSH timeouts, webhook behavior, backup retention and timeouts, the instance timezone, agent thresholds, and more.

System settings are stored as a singleton row in the database and cached in memory for performance. They are accessible at Admin > System Settings in the UI.

Unlike environment settings which are per-environment, system settings apply globally. Changes take effect immediately (the cache is refreshed on update).


All system settings endpoints require admin authentication.

Get current settings:

Terminal window
GET /api/settings/system

Update settings:

Terminal window
PATCH /api/settings/system
Content-Type: application/json
{
"sshCommandTimeoutMs": 120000,
"webhookMaxRetries": 5
}

Reset all to defaults:

Terminal window
POST /api/settings/system/reset

Control how long BRIDGEPORT waits when executing commands over SSH.

SettingTypeDefaultDescription
sshCommandTimeoutMsinteger60000 (60s)Maximum time to wait for an SSH command to complete. Applies to health checks, metrics collection, container discovery, and all other SSH operations. Increase for slow networks or long-running commands.
sshReadyTimeoutMsinteger10000 (10s)Maximum time to wait for an SSH connection to be established before timing out. Increase if servers have slow SSH handshakes.

Control legacy outgoing webhook delivery behavior (the WebhookConfig path — notifications sent to external webhook endpoints).

SettingTypeDefaultDescription
webhookMaxRetriesinteger3Maximum number of retry attempts for failed webhook deliveries
webhookTimeoutMsinteger30000 (30s)Timeout for each webhook HTTP request
webhookRetryDelaysMsstring (JSON)"[1000,5000,15000]"JSON array of delays (in milliseconds) between retry attempts. The array length should match webhookMaxRetries.

Two webhook delivery paths. These three settings tune only legacy outgoing webhooks (WebhookConfig). The newer webhook subscriptions path (WebhookSubscription / WebhookDelivery) is a separate subsystem tuned by the WEBHOOK_DELIVERY_INTERVAL_MS / WEBHOOK_DELIVERY_CONCURRENCY / WEBHOOK_DELIVERY_BATCH_SIZE environment variables, with delivery-record retention controlled by webhookDeliveryRetentionDays. See the Configuration Reference.

How retries work:

When a webhook delivery fails, BRIDGEPORT retries using the delays specified in webhookRetryDelaysMs. With the defaults:

  1. First retry after 1 second
  2. Second retry after 5 seconds
  3. Third (final) retry after 15 seconds

If all retries fail, the delivery is marked as failed and the webhook’s failureCount is incremented.


Timeout for database backup operations.

SettingTypeDefaultDescription
pgDumpTimeoutMsinteger300000 (5 min)Maximum time for a database backup command (e.g., pg_dump) to complete. Increase for large databases.

These settings define the global default GFS retention policy that every database inherits unless it has a per-database override. Admins edit them here; operators set per-database overrides on the database detail page.

SettingTypeDefaultDescription
backupRetentionPresetstring"balanced"Active preset: lean, balanced, long_term, or custom. Selecting a non-custom preset fills the tier fields below.
backupRetentionKeepLastinteger24Most-recent successful backups kept regardless of period (0–100).
backupRetentionDailyinteger7Daily restore points — newest backup per calendar day (0–366).
backupRetentionWeeklyinteger4Weekly restore points — newest per ISO week, weeks start Monday (0–520).
backupRetentionMonthlyinteger6Monthly restore points — newest per calendar month (0–240).
backupRetentionYearlyinteger0Yearly restore points — newest per calendar year (0–50).
backupRetentionMinFloorinteger2Hard floor: always keep at least this many most-recent successful backups (1–10).
backupRetentionMaxTotalBytesbigint | nullnullOptional default storage cap per database (null = off).
backupRotationConfirmThresholdinteger5When an operator saves a policy that would prune more backups than this in one go, the API rejects the save with confirmationRequired and the UI prompts for explicit confirmation. Automatic rotation never prompts.
failedBackupRetentionDaysinteger3Days to keep failed backups before they (and any partial artifact) are deleted. Stuck in_progress backups are marked failed first. Separate from GFS rotation.

A backup survives if any tier selects it — the tiers are a union, not a sum. See the retention model for the full explanation, presets, and inheritance rules.


SettingTypeDefaultDescription
timezonestring (IANA)"UTC"Instance timezone used for backup-rotation period bucketing and display. Examples: Europe/Lisbon, America/New_York.

The timezone determines which calendar day, ISO week, month, and year a backup belongs to during GFS rotation. A backup taken at 02:00 buckets to the local calendar day rather than possibly the previous or next UTC day. ISO weeks start on Monday. Buckets are calendar-based, so a one-hour DST shift never splits a day across two buckets.


Resource limits and display defaults.

SettingTypeDefaultDescription
maxUploadSizeMbinteger50Maximum file upload size in megabytes (for config files and binary attachments)
activeUserWindowMininteger15Minutes of inactivity before a user is considered “inactive” in the active users count (Admin > Users)
registryMaxTagsinteger50Maximum number of tags to fetch when checking a container registry for updates
defaultLogLinesinteger50Default number of log lines to return when no explicit tail is requested. Used by the snapshot logs endpoint, the SSE log stream, the service detail logs viewer (initial fetch and “Load older” page size), and the per-deployment container log capture appended to deployment plan output.

External URLs for notifications and agent communication.

SettingTypeDefaultDescription
publicUrlstring | nullnullPublic URL where BRIDGEPORT is accessible (e.g., https://deploy.example.com). Used in notification emails and webhook payloads to generate clickable links.
agentCallbackUrlstring | nullnullInternal URL for agents to reach BRIDGEPORT (e.g., http://10.30.10.5:3000). When set, agents use this URL instead of the public URL. Useful when agents are on a private network.

Thresholds for determining agent health status.

SettingTypeDefaultDescription
agentStaleThresholdMsinteger180000 (3 min)Time since last metrics push before an agent is marked as “stale”. A stale agent may be experiencing temporary issues.
agentOfflineThresholdMsinteger300000 (5 min)Time since last metrics push before an agent is marked as “offline”. An offline agent likely needs attention.

Agent status flow:

active --> stale --> offline
^ | |
| v v
+--- metrics received ----+
  • Active: Agent pushed metrics within the last agentStaleThresholdMs
  • Stale: Last push was between agentStaleThresholdMs and agentOfflineThresholdMs ago
  • Offline: Last push was more than agentOfflineThresholdMs ago

Automatic cleanup of old data. These are the global, admin-editable retention knobs (in the Retention section of the System Settings page).

SettingTypeDefaultDescription
auditLogRetentionDaysinteger90Days to keep audit log entries. Set to 0 to keep audit logs forever.
databaseMetricsRetentionDaysinteger30Days to keep database monitoring metrics (the time-series data collected by monitoring queries).
notificationRetentionDaysinteger30Days to keep Notification rows.
healthLogRetentionDaysinteger30Days to keep HealthCheckLog entries.
webhookDeliveryRetentionDaysinteger30Days to keep WebhookDelivery records (the webhook-subscription delivery path).
imageDigestRetentionDaysinteger90Pruning age (in days) for unreferenced image digests.