> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usecadence.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> The settings a Cadence server reads from its environment.

A Cadence server reads its settings from `.env`. `.env.example` in the repository lists every one with a comment. This page covers the ones you are most likely to need.

Settings are read on every start. Change `.env`, then recreate the services.

## Required

| Setting | What it is |
| - | - |
| `POSTGRES_PASSWORD` | Password for the database owner, which runs migrations. |
| `POSTGRES_APP_PASSWORD` | Password for the login the app uses. It cannot bypass row-level security. |
| `BETTER_AUTH_SECRET` | Signs sessions. 32 or more random characters. |
| `ENCRYPTION_KEY` | Encrypts stored credentials. 64 hex characters. Never change it on a running server. |
| `SCREEN_PROXY_SECRET` | Signs access to bot computer screens. |
| `BETTER_AUTH_URL`, `WEB_ORIGIN`, `API_URL` | Your public address, for example `https://app.example.com`. |
| `SANDBOX_SUPERVISOR_TOKEN` | Needed when bot computers run in Docker. |

Use a different random value for every secret.

## Sign-up

| Setting | Effect |
| - | - |
| `SIGNUPS_ENABLED` | `false` turns off open sign-up. Invites still work. |
| `SIGNUP_ALLOWLIST` | Comma-separated emails that may sign up. Empty allows anyone when sign-ups are on. |

With an allowlist and email configured, people must verify their email before they can sign in.

## Models

| Setting | Effect |
| - | - |
| `OPENROUTER_API_KEY` | A server-wide OpenRouter key bots can use. |
| `ANTHROPIC_API_KEY` | A server-wide Anthropic key. |
| `PI_DEFAULT_PROVIDER`, `PI_DEFAULT_MODEL` | The model new bots use when nobody picked one. |
| `CADENCE_PLUS_LOCAL_MODELS`, `CADENCE_PLUS_LOCAL_MODELS_URL` | Models served by a local OpenAI-compatible server such as Ollama. |

Server keys are optional. People can connect their own model accounts in the app. See [Models](https://docs.usecadence.gg/bots/models.md).

## Computers

| Setting | Effect |
| - | - |
| `SANDBOX_PROVIDER` | `docker`, `e2b`, `daytona`, `createos`, `boat` or `none`. |
| `CADENCE_PLUS_COMPUTER_BROWSER` | `chromium` (default), `chrome` or `brave` for Docker computers. |
| `CADENCE_PLUS_COMPUTER_MEMORY`, `CADENCE_PLUS_COMPUTER_CPUS` | Resource limits per Docker computer. |
| `SANDBOX_IDLE_MS` | How long an idle computer stays on before it stops. |
| `SANDBOX_MAX_COMPUTERS_PER_SPACE` | A cap on computers per space. `0` means no cap. |

## Channels

Each channel turns on when its settings are present. See [Channels](https://docs.usecadence.gg/work/channels.md) for what each one does.

| Channel | Settings |
| - | - |
| Slack | `SLACK_CLIENT_ID`, `SLACK_CLIENT_SECRET`, `SLACK_SIGNING_SECRET` (or `SLACK_BOT_TOKEN` and `SLACK_SIGNING_SECRET` for one workspace) |
| WhatsApp | `WHATSAPP_ACCESS_TOKEN`, `WHATSAPP_PHONE_NUMBER_ID`, `WHATSAPP_APP_SECRET`, `WHATSAPP_VERIFY_TOKEN` |
| Telegram | `TELEGRAM_BOT_TOKEN`, `TELEGRAM_WEBHOOK_SECRET_TOKEN` |
| Feishu | `LARK_APP_ID`, `LARK_APP_SECRET`, `LARK_VERIFICATION_TOKEN`, `LARK_DOMAIN` |
| iMessage (Sendblue) | `SENDBLUE_API_KEY_ID`, `SENDBLUE_API_SECRET`, `SENDBLUE_SIGNING_SECRET`, `SENDBLUE_PHONE_NUMBER` |

## Integrations

| Setting | Effect |
| - | - |
| `COMPOSIO_API_KEY` or the `PIPEDREAM_*` settings | Turns on the managed app catalog for one-click app connections. |
| `MCP_STDIO_ENABLED` | Lets people add MCP servers that run as local commands. |

## Storage and email

| Setting | Effect |
| - | - |
| `DATA_DIR` | Where app data lives on disk. |
| `OBJECT_STORAGE_*` | Keep bot homes in S3-compatible storage instead of on disk. |
| `MAX_UPLOAD_SIZE_MB` | Largest upload allowed. Default 10. |

Email (verification, password reset, invites and sign-in codes) needs SMTP settings. See `docs/self-host.md` for the full list, including single sign-on, backups and logging.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.