Reference

Configuration

Every production setting, where it belongs, and whether users can see it.

API values

Set these on Railway, Fly.io, or your own API runtime. Treat every value as secret unless the table says otherwise.

VariableRequired value
DATABASE_URLPostgreSQL URL for normal API traffic. For Supabase transaction mode, add sslmode=require&default_query_exec_mode=simple_protocol.
MIGRATION_DATABASE_URLSession-pooler or direct PostgreSQL URL for migrations. Falls back to DATABASE_URL, but transaction pooling is not safe for the migration lock.
REDIS_URLredis:// or rediss:// URL.
DATA_ENCRYPTION_KEYBase64 encoding of exactly 32 random bytes. Back it up separately.
DATA_ENCRYPTION_KEY_VERSION1 for a new installation.
DATA_ENCRYPTION_READ_KEYSEmpty initially. Old version:base64 entries during key rotation.
CLERK_ISSUERClerk HTTPS issuer origin, without a path.
CLERK_JWKS_URLClerk HTTPS JWKS URL, with its path.
CLERK_ALLOWED_DASHBOARD_ORIGINSComma-separated dashboard origins, with no paths or trailing slashes.
WEBSOCKET_AUTHENTICATION_TIMEOUT5s. Allowed range: 1s to 30s.
RELAY_PAIRING_GRANT_TTL10m. Allowed range: 1m to 30m.
LOG_LEVELinfo. Allowed: debug, info, warn, error.
MEDIA_S3_ENDPOINTS3 HTTPS endpoint, including a provider base path when required, without a trailing slash.
MEDIA_S3_BUCKETExisting private bucket name.
MEDIA_S3_REGIONRegion reported by the storage provider.
MEDIA_S3_ACCESS_KEY_IDServer-side S3 access key.
MEDIA_S3_SECRET_ACCESS_KEYServer-side S3 secret key.
MEDIA_S3_ADDRESSING_STYLEpath for Supabase, R2, and MinIO; virtual for AWS S3.
HTTP_ADDR:8080 on Fly.io or self-managed hosts. Leave unset on Railway so its PORT wins.
GIN_MODErelease.

MEDIA_S3_COMPOSE_ENDPOINT, POSTGRES_*, REDIS_PORT, and API_PORT are local Compose settings. Do not copy them to a cloud API service.

Dashboard build values

VariableVisibilityValue
VITE_CLERK_PUBLISHABLE_KEYPublicClerk production publishable key
VITE_API_BASE_URLPublicPublic HTTPS API origin, no path or trailing slash

Vite embeds both values in browser JavaScript. A VITE_ prefix never protects a secret.

Relay build value

VariableValue
COOP_RELAY_SERVER_URLPublic HTTPS API origin used when building Relay

Provider-specific storage examples

ProviderEndpointAddressing style
Supabase Storagehttps://<project>.storage.supabase.co/storage/v1/s3path
Cloudflare R2https://<account>.r2.cloudflarestorage.compath
AWS S3https://s3.<region>.amazonaws.comvirtual
MinIOProvider-specific originpath