Skip to content

Reference

Environment variables, limits, browser support, CLI selftests.

VariableRequiredDefaultNotes
DATABASE_URLyescompose defaultPostgres connection string
REDIS_URLyescompose defaultRedis connection string
SESSION_SECRETyes32+ bytes
CSRF_SECRETyes32+ bytes
PUBLIC_BASE_URLyese.g. https://pulse.example.com
API_CORS_ORIGINSyesComma-separated origins
API_HOSTno0.0.0.0
API_PORTno8080
API_LOG_LEVELnoinfodebug / info / warn / error
WORKER_ENROLLMENT_TOKENyesFirst-worker fallback
WORKER_REGIONyes (worker)Per-worker region label
WORKER_LOG_LEVELnoinfo
API_URLyes (worker)How worker reaches the API
SMTP_HOSTnoLeave blank for dev-log mode
SMTP_PORTno587
SMTP_USERno
SMTP_PASSno
SMTP_FROMnopulse@localhost
SMTP_STARTTLSnotrue
SMTP_TLSnofalseSet true for port 465
GOOGLE_OAUTH_CLIENT_IDnoSet both to enable Google sign-in
GOOGLE_OAUTH_CLIENT_SECRETno
GOOGLE_OAUTH_REDIRECT_URLnoderived${PUBLIC_BASE_URL}/api/v1/auth/google/callback
ENABLE_MULTI_ORGnofalsetrue to expose org switcher
VITE_API_URLbuild-time/api/v1SPA build
VITE_WS_URLbuild-time/wsSPA build
ThingLimitNotes
Monitors per org5,000Soft, scheduler verified at this scale
Alert rules per org500
Channels per org50
Status pages per org20
Components per status page50
Custom domains per status page10
Min monitor interval60s
Max HTTP request timeout30s
Max monitor regionsAll enabled
Idempotency key TTL24h
Refresh token rotation TTL30d
Audit log retention90d

The SPA targets evergreen Chromium, Firefox, and Safari. Specific features that limit older browsers:

  • scrollbar-gutter: stable — Chrome 94+, Firefox 97+, Safari 18.2+. There’s an overflow-y: scroll fallback that works in any browser.
  • Intl.supportedValuesOf("timeZone") — Chrome 99+, Firefox 93+, Safari 15.4+. There’s a hand-curated fallback list of common zones.
  • backdrop-filter — used in the top bar for the frosted-glass effect. Old browsers fall back to an opaque background.

The no-JS status page (/status/<slug>) works on anything that parses HTML, including text browsers and feed readers.

Terminal window
docker compose exec api /pulse/api selftest mail --to you@example.com
docker compose exec api /pulse/api selftest webhook --url https://example.com/hook
docker compose exec api /pulse/api selftest ssrf --url http://10.0.0.1/

Each exits 0 on success, non-zero on failure with a clear message.