Skip to main content
This page is the self‑hosting configuration guide. It’s structured for quick setup first, then deeper configuration.

Local setup

Fastest path to run Proliferate locally with Docker Compose.

Authentication

Configure OAuth or email/password for your self‑hosted instance.

Modal setup

Deploy and configure the Modal sandbox provider.

GitHub App

Private repo access and GitHub webhook triggers.

Slack App

Connect Slack to create and run automations from chat.

Fastest Setup (Local Dev)

Use this for evaluation or local testing with Docker Compose.
1

Create .env

./scripts/setup-env.sh
2

Set only the essentials

ANTHROPIC_API_KEY=...

# Sandbox provider (Modal by default)
DEFAULT_SANDBOX_PROVIDER=modal
MODAL_APP_NAME=...
MODAL_APP_SUFFIX=local
MODAL_TOKEN_ID=...
MODAL_TOKEN_SECRET=...

# GitHub App (required for repo access unless NEXT_PUBLIC_USE_NANGO_GITHUB=true)
NEXT_PUBLIC_GITHUB_APP_SLUG=...
GITHUB_APP_ID=...
GITHUB_APP_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
GITHUB_APP_WEBHOOK_SECRET=...
./scripts/setup-env.sh creates .env from .env.example and auto-generates required secrets (e.g. BETTER_AUTH_SECRET, SERVICE_TO_SERVICE_AUTH_TOKEN, GATEWAY_JWT_SECRET, USER_SECRETS_ENCRYPTION_KEY).

Production Readiness Checklist

Before you deploy publicly, replace the defaults with production‑grade values:
  • Set your own DATABASE_URL and REDIS_URL
  • Rotate all secrets (BETTER_AUTH_SECRET, SERVICE_TO_SERVICE_AUTH_TOKEN, GATEWAY_JWT_SECRET, USER_SECRETS_ENCRYPTION_KEY)
  • Set public URLs (NEXT_PUBLIC_APP_URL, NEXT_PUBLIC_API_URL, NEXT_PUBLIC_GATEWAY_URL)
  • Confirm your sandbox provider credentials (Modal by default)
Use https:// for NEXT_PUBLIC_GATEWAY_URL in production (it’s the gateway HTTP base URL). WebSocket connections will use wss:// automatically.

Sandbox Provider (Required)

Modal is the default. To switch providers, set DEFAULT_SANDBOX_PROVIDER=e2b.

Optional Features

Required only if NEXT_PUBLIC_INTEGRATIONS_ENABLED=true (or cloud profile).
NANGO_SECRET_KEY=...
NEXT_PUBLIC_NANGO_GITHUB_INTEGRATION_ID=...
NEXT_PUBLIC_NANGO_LINEAR_INTEGRATION_ID=...
NEXT_PUBLIC_NANGO_SENTRY_INTEGRATION_ID=...
Required if EMAIL_ENABLED=true or NEXT_PUBLIC_ENFORCE_EMAIL_VERIFICATION=true.
RESEND_API_KEY=...
EMAIL_FROM=...
# GitHub OAuth
GITHUB_OAUTH_APP_ID=...
GITHUB_OAUTH_APP_SECRET=...

# Google OAuth
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
SLACK_CLIENT_ID=...
SLACK_CLIENT_SECRET=...
SLACK_SIGNING_SECRET=...
PROLIFERATE_SLACK_BOT_TOKEN=...
PROLIFERATE_SLACK_CONNECT_EMAILS=...
Required when NEXT_PUBLIC_USE_NANGO_GITHUB=false.
GITHUB_APP_ID=...
GITHUB_APP_PRIVATE_KEY=...
GITHUB_APP_WEBHOOK_SECRET=...
If you set LLM_PROXY_URL, the proxy must be publicly reachable by your sandbox provider.
LLM_PROXY_URL=...
LLM_PROXY_MASTER_KEY=...
# Optional
LLM_PROXY_KEY_DURATION=...
LLM_PROXY_ADMIN_URL=...
LLM_PROXY_PUBLIC_URL=...
NEXT_PUBLIC_POSTHOG_HOST=...
NEXT_PUBLIC_POSTHOG_KEY=...
NEXT_PUBLIC_INTERCOM_APP_ID=...
NEXT_PUBLIC_SENTRY_DSN=...

Build‑Time Public Settings

NEXT_PUBLIC_* values are baked into the web build. Set them before building your web image.
If you change NEXT_PUBLIC_* values after a build, you must rebuild the web image for the changes to take effect.

Cloud‑Only (Not Required for Self‑Host)

  • Billing (Autumn): AUTUMN_API_KEY, AUTUMN_API_URL, BILLING_JWT_SECRET
  • Verification storage: S3_BUCKET, S3_REGION
For the full canonical list and gating logic, see the repository .env.example and packages/environment/src/schema.ts.