Skip to content

Configuration

Configuration is driven by environment variables (prefix SWIM_), optionally from a .env file. The active profile (dev / test / prod / desktop) controls a few safety defaults (e.g. whether the auth cookie is HTTPS-only).

Variable What it does
SWIM_AUTH_SECRET JWT signing secret. Required — startup fails if unset.
SWIM_ENV Profile: dev | test | prod | desktop.
SWIM_PUBLIC_BASE_URL Absolute origin used to build links in emails (invite links).

The default is a single SQLite file — zero config. To use Postgres, point the app at it; Postgres is the answer to SQLite’s single-writer limit under a busy, multi-meet, realtime workload.

Variable What it does
SWIM_DB_TARGET sqlite (default) | neon | local-pg.
SWIM_SQLITE_URL SQLite file URL.
SWIM_DB_URL Explicit SQLAlchemy URL — overrides the target toggle (prod/CI).

The schema is portable across SQLite and Postgres; migrations run on startup.

SMTP and the recipient allowlist have their own page — see Email setup. The full, authoritative list of settings lives in the backend’s config.py.