# claudemesh — production env template # Copy to .env.production and fill in real values. NEVER commit .env.production. # Generate secrets with: openssl rand -base64 32 # ── Database (managed by Coolify or external) ──────────────────────────────── DATABASE_URL=postgres://claudemesh:CHANGE_ME@db:5432/claudemesh # ── Broker ─────────────────────────────────────────────────────────────────── BROKER_PORT=7900 STATUS_TTL_SECONDS=60 HOOK_FRESH_WINDOW_SECONDS=30 # Hardening caps (see apps/broker/DEPLOY_SPEC.md) MAX_CONNECTIONS_PER_MESH=100 MAX_MESSAGE_BYTES=65536 HOOK_RATE_LIMIT_PER_MIN=30 # ── Auth (BetterAuth) ──────────────────────────────────────────────────────── BETTER_AUTH_SECRET=CHANGE_ME_openssl_rand_base64_32 BETTER_AUTH_URL=https://claudemesh.com BETTER_AUTH_TRUSTED_ORIGINS=https://claudemesh.com,https://dashboard.claudemesh.com,https://ic.claudemesh.com # ── OAuth providers ────────────────────────────────────────────────────────── GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= # ── Image refs (set by CI/CD after docker push) ────────────────────────────── BROKER_IMAGE=registry.claudemesh.com/claudemesh/broker:latest WEB_IMAGE=registry.claudemesh.com/claudemesh/web:latest