Skip to content

What --sync-env pushes

Always pushed

  • DASHBOARD_PASSWORD
  • DASHBOARD_SESSION_SECRET
  • DASHBOARD_USERNAME
  • DATABASE_URL
  • GITHUB_APP_ID
  • GITHUB_APP_INSTALLATION_ID
  • GITHUB_APP_PRIVATE_KEY
  • GITHUB_TARGET_REPO
  • GITHUB_WEBHOOK_SECRET

Plus LLM_PROVIDER, and GITHUB_APP_INSTALLATION_ID once it is set locally (it is optional, so an empty value is not an error).

Every provider's model var

  • GROQ_MODEL
  • LLM_MODEL
  • VERTEX_MODEL

All of them, not just the active provider's: a database override can activate any provider with no redeploy, so a provider whose model var was never pushed would read a missing value on the service.

Provider credentials

  • GCP_SERVICE_ACCOUNT_KEY
  • GEMINI_API_KEY
  • GROQ_API_KEY

The selected provider's is always pushed. Another provider's is pushed only if you happen to have it set locally -- an unselected provider's key is never demanded.

Each credential also has numbered key-rotation slots: additional vars named {credential}_2, {credential}_3, and so on -- the naming scheme is registry.slot_env_name()'s ({base} for slot 0, {base}_{n} for slot n>=1). Any slot that is configured locally is pushed too, for every provider, the same as the base credential above; this reference cannot say how many exist for you, since that would mean reading your local configured values, which this generator never does.

Operational settings

  • DEFAULT_RETRY_AFTER_SECONDS
  • DISPATCHER_BACKOFF_JITTER_SECONDS
  • DISPATCHER_FAILURE_BASE_BACKOFF_SECONDS
  • DISPATCHER_FAILURE_MAX_BACKOFF_SECONDS
  • DISPATCHER_IDLE_SLEEP_SECONDS
  • DISPATCHER_MAX_FAILURE_ATTEMPTS
  • DISPATCHER_MAX_NOTICE_POST_ATTEMPTS
  • DISPATCHER_MIN_RETRY_AFTER_SECONDS
  • DISPATCHER_NOTICE_SWEEP_BATCH_SIZE
  • GCP_LOCATION
  • GCP_PROJECT
  • LLM_REQUEST_TIMEOUT_SECONDS

Never pushed: database-only settings

  • DISPATCHER_REREVIEW_COOLDOWN_FACTOR
  • DISPATCHER_REREVIEW_COOLDOWN_MAX_SECONDS
  • DISPATCHER_REREVIEW_COOLDOWN_SECONDS
  • KEY_USAGE_RESET_TIME_UTC
  • KEY_USAGE_TOKEN_CAP
  • REVIEW_DRAFT_PRS

These live only in the runtime_config table, never as a Render env var, because the dispatcher must be able to change them with no redeploy. uv run python -m bot.scripts.deploy --sync-config-db pushes them there. Editing one and redeploying does nothing on its own.

Never pushed: operator-machine settings

  • PUBLIC_BASE_URL
  • RENDER_SERVICE_NAME

These configure your local tooling, not the service. Setting them on Render would create dead env vars.