Outbound OS
Browse documentation

Configuration reference

Updated 24 October 2026 · For version 0.3.0 · Edit on GitHub

Outbound OS reads its settings from .env in the project folder. Only ADMIN_EMAIL is needed to start; everything else is either generated on first boot or belongs to a channel you choose to connect. The complete, commented list is .env.example in the repository.

After changing .env, apply it with docker compose up -d.

Sign-in

SettingDefaultWhat it does
ADMIN_EMAIL—The first admin, created on first boot. Set this before starting.
ADMIN_PASSWORDgeneratedTheir password. Left empty, a random one is printed once in the log.
AUTH_PROVIDERlocallocal for built-in email and password; clerk for Clerk-hosted sign-in.
CLERK_SECRET_KEY, CLERK_PUBLISHABLE_KEY—Only with AUTH_PROVIDER=clerk.
JWT_SECRETgeneratedSigns sessions. Generated into instance-secrets.json if empty.

Your business

Also editable in the setup wizard and Settings → Workspace; values saved there win over .env.

SettingDefaultWhat it does
BUSINESS_NAME, BUSINESS_WEBSITE—Your identity in outgoing messages and emails.
BUSINESS_TIMEZONEUTCAn IANA name such as Europe/London. When “today” starts for limits and reports.
DEFAULT_COUNTRY_CODE—Calling code added to numbers entered without one: 1, 44, 91…
BUSINESS_CURRENCYUSDCurrency for supplier costs, profit and reports.
EMAIL_SIGNATURE_NAME, EMAIL_FOOTER_NOTE—Signature and footer in outreach emails.

Server

SettingDefaultWhat it does
OUTBOUNDOS_PORT3001Port published on the host by Docker Compose.
TRUST_PROXYlocal proxiesHow many proxy hops to trust for client addresses. Behind a CDN, use its hop count.
CORS_ORIGIN—Only if the dashboard is served from a different origin.

WhatsApp

Numbers are connected in Settings → WhatsApp. These are for receiving webhooks and defaults.

SettingDefaultWhat it does
META_APP_SECRET—Verifies Meta webhook signatures. Required to receive replies from the Cloud API.
META_WEBHOOK_VERIFY_TOKEN—Any random string; the same value goes in Meta’s webhook form.
META_TEMPLATE_LANGUAGEenDefault language code of your approved templates.
WA_FIRST_TOUCH_TEMPLATE—First-contact template for numbers without their own default.
WA_WARMUP_WEEK1Warm-up stage, 1–8. Controls how quickly daily volume ramps up.

Email

Mailboxes are added in Settings → Email; their credentials are encrypted in the database.

SettingDefaultWhat it does
BREVO_WEBHOOK_PUBLIC_URL—Your public HTTPS base address, for Brevo event callbacks.
BREVO_WEBHOOK_SECRET—Shared secret Brevo must send with each event.

Encryption and other webhooks

SettingDefaultWhat it does
LEAD_SYNC_ENCRYPTION_KEYgeneratedEncrypts stored channel credentials. Never change it once set.
IMESSAGE_WEBHOOK_SECRET—Required to accept BlueBubbles (iMessage) webhooks.

MCP server

SettingDefaultWhat it does
MCP_SERVICE_TOKEN—Shared between the app and the MCP server so it can call the API.
MCP_BEARER_TOKEN—The token AI clients send. Also the OAuth sign-in password unless OAUTH_PASSWORD is set.
OAUTH_PASSWORD—Optional separate password for the claude.ai OAuth sign-in step.
OUTBOUNDOS_MCP_PORT3010Port published for the MCP server.

Generated secrets

If JWT_SECRET or LEAD_SYNC_ENCRYPTION_KEY is empty, the first boot generates it into instance-secrets.json next to the database, in the data volume. Keep that file with your backups: without the encryption key, saved channel credentials cannot be read. See backups and upgrades.