Skip to main content
Use .env.example as the source of truth. Store production values in your deployment secret manager or a permission-restricted .env file.

Application and database

Branding

Set these on the admin. Each one wins over the name and logo that the deployment’s first owner chooses during onboarding, so leave them empty to let that owner choose. Give them to the admin build as well, as Docker build arguments with the same names, so the prerendered sign-in pages show them without first asking the server. The dashboard’s links to pages outside it come from five more variables. Next.js writes them into the admin build, so pass them as Docker build arguments with the same names, and rebuild after changing one. Leave one unset or empty to link to LobbyStack’s page. The SMS HELP reply opens with the app name. Emails, the API, and other text messages still say LobbyStack.

Internal services

Voice calls

OpenAI’s GPT-Live model answers browser calls and phone calls. Phone calls reach it through your Twilio SIP trunk. The admin starts each call and the worker runs it.

Redis and file storage

Local storage fits a single-host deployment. Use S3 when the admin and worker run on different hosts or when you need storage managed outside the Docker host.

Public API and webhooks

Webhook deliveries refuse private, loopback, link-local and cloud metadata addresses on every deployment, including self-hosted ones. Point endpoints at a public HTTPS URL. Plain http:// URLs work only when NODE_ENV=development.

Observability

An empty OTLP endpoint does not disable container stdout logs, application health endpoints, direct product analytics, or direct error reporting.

Providers

Never place secrets in NEXT_PUBLIC_* variables. Next.js includes those values in browser bundles.