Environment reference
Every environment variable, explained.
How config loads#
There is no DATABASE_URL — the URI is computed from the POSTGRES_* parts, and the Celery broker/result URLs from REDIS_HOST/REDIS_PORT. In production the app refuses to boot if SECRET_KEY or ENCRYPTION_KEY are missing or default.
Required secrets#
SECRET_KEY= # JWT signing — openssl rand -hex 32
ENCRYPTION_KEY= # Fernet key for credential encryption
ENVIRONMENT=productionCore & URLs#
BASE_URL=https://api.yourdomain.com
PUBLIC_BASE_URL=https://api.yourdomain.com
FRONTEND_URL=https://app.yourdomain.com
PUBLIC_APP_BASE_URL=https://app.yourdomain.com
BACKEND_CORS_ORIGINS=https://app.yourdomain.com
ACCESS_TOKEN_EXPIRE_MINUTES=10080Database & Redis#
POSTGRES_SERVER=db
POSTGRES_USER=runmycrew
POSTGRES_PASSWORD=<strong>
POSTGRES_DB=runmycrew
REDIS_HOST=redis
REDIS_PORT=6379Email#
Optional. Without it, invites and password resets are logged to stdout instead of sent. Prefer Resend (HTTP, avoids blocked SMTP ports); SMTP is the fallback.
RESEND_API_KEY=re_...
# or SMTP:
SMTP_HOST= SMTP_PORT=587 SMTP_USER= SMTP_PASSWORD= SMTP_TLS=true
SMTP_FROM=hello@yourdomain.com
SMTP_FROM_NAME=RunMyCrewIntegration OAuth#
Each connectable app needs a client id + secret from that provider’s developer console (only set the ones you use):
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET
SLACK_CLIENT_ID / SLACK_CLIENT_SECRET
GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET
NOTION_CLIENT_ID / NOTION_CLIENT_SECRET
LINEAR_CLIENT_ID / LINEAR_CLIENT_SECRET
MICROSOFT_CLIENT_ID / MICROSOFT_CLIENT_SECRET
DISCORD_CLIENT_ID / DISCORD_CLIENT_SECRET / DISCORD_BOT_TOKEN
META_APP_ID / META_APP_SECRET / META_WEBHOOK_VERIFY_TOKEN
# + Asana, HubSpot, Calendly, Zoom, Box, Dropbox, DocuSign, LinkedInModel keys#
Bring your own LLM keys — set whichever providers you route to:
ANTHROPIC_API_KEY= OPENAI_API_KEY= GEMINI_API_KEY= GROQ_API_KEY=
# also supported: OpenRouter, DeepSeek, Mistral, xAI, Together, Fireworks, Perplexity