Environment Variables
Complete reference of all environment variables.
GitHub OAuth
GITHUB_CLIENT_ID= # GitHub OAuth App client ID
GITHUB_CLIENT_SECRET= # GitHub OAuth App client secret
GITHUB_REDIRECT_URI= # Optional: custom redirect URI
GITHUB_WEBHOOK_SECRET= # Optional: verify webhook signatures
GitLab OAuth
GITLAB_CLIENT_ID= # GitLab OAuth Application ID
GITLAB_CLIENT_SECRET= # GitLab OAuth Application secret
GITLAB_REDIRECT_URI= # Optional: custom redirect URI
GITLAB_INSTANCE_URL= # Default: https://gitlab.com (for self-hosted)
GITLAB_WEBHOOK_SECRET= # Optional: verify webhook signatures
Google OAuth (Login)
GOOGLE_CLIENT_ID= # Google OAuth client ID
GOOGLE_CLIENT_SECRET= # Google OAuth client secret
GOOGLE_REDIRECT_URI= # Optional: custom redirect URI
Google Sheets OAuth
GOOGLE_SHEETS_REDIRECT_URI= # Separate redirect for Sheets OAuth (different scope)
Note: Google Sheets uses the same GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET but a separate redirect URI because it requires different OAuth scopes.
RESEND_API_KEY= # Resend API key for sending invitation emails
EMAIL_FROM= # Sender email address
Application
DATABASE_URL= # Default: postgresql://lastest:lastest@localhost:5432/lastest
MONITORED_BRANCHES= # Default: main,master,develop (comma-separated)
NEXT_PUBLIC_APP_URL= # Your app's public URL (e.g., https://lastest.example.com)
NEXT_PUBLIC_BASE_URL= # Base URL for API calls
BETTER_AUTH_SECRET= # Required in production (random hex)
POSTGRES_PASSWORD= # Required for the bundled docker-compose postgres service
Embedded Browser Stack (required for any test run)
Local Playwright on the host is no longer supported -- every test runs inside an Embedded Browser pod. These vars wire the host app to the EB cluster.
EB_PROVISIONER=kubernetes # Local dev + k8s prod use the kubernetes provisioner
EB_NAMESPACE=lastest # Namespace used for EB Jobs/Pods
EB_IMAGE=lastest-embedded-browser:latest
LASTEST_URL=http://host.k3d.internal:3000 # URL the EB pod uses to reach the app
SYSTEM_EB_TOKEN= # Random hex (`openssl rand -hex 32`); first comma-separated entry is handed to each EB
EB_LAUNCH_INTERVAL_MS= # Optional throttle between EB launches (default 500ms)
In Olares / k8s deployments the same vars apply, with LASTEST_URL pointing at the in-cluster service name instead of host.k3d.internal.
Minimal Setup
You always need at minimum:
- A reachable PostgreSQL via
DATABASE_URL - A
SYSTEM_EB_TOKENso the host can authenticate Embedded Browser pods - A running EB stack (locally:
pnpm stack; in production: cluster with the manifests ink8s/)
Add OAuth / email / sheets variables as you enable those integrations.