Skip to main content

Configuration

OtoDock's settings live in two places, and knowing which is which keeps things simple:

  • config.env (.env on a Docker install) — deployment settings and secrets. Set once, rarely touched.
  • The dashboard — everything you tune day to day, under the Setup pages.

config.env: deployment and secrets​

This is the file you created at install time — .env next to your compose file on a Docker install, config.env in the repository root on a source install. On first boot OtoDock appends its own generated secrets to it, and existing values are never overwritten, so it's safe across upgrades.

It holds the things that belong with the deployment, not the UI:

Secrets — generated for you​

On first run, OtoDock generates and stores its own secrets in this file (signing keys, push-notification keys — the database password is the one you set yourself at install). Don't change or share these — regenerating them logs everyone out, and they should never end up in version control.

Settings you may set​

SettingWhat it's for
DASHBOARD_PUBLIC_URLThe public address users reach OtoDock at (e.g. https://otodock.example.com). Drives login cookies, sign-in redirects, and links in notifications.
PROXY_PORTThe port OtoDock listens on (default 8400).
PROXY_BIND_IPWhich of the server's addresses port 8400 listens on. Empty (the default) means all of them. Set 127.0.0.1 when your reverse proxy runs on the same machine, so only the server itself can connect.
TRUSTED_PROXYThe address your reverse proxy connects from (plain IPs or CIDRs, comma-separated). Set it behind a proxy so the sign-in protections see each visitor's own address. See Reverse proxy & HTTPS.
TZThe server's timezone — used for schedules and timestamps. Also changeable later in the dashboard.
Subnet overridesIf one of OtoDock's internal Docker ranges clashes with your LAN or VPN, override it: OTODOCK_NETWORK_SUBNET (10.200.0.0/24), OTODOCK_MCP_ADDRESS_POOL (10.201.0.0/16), OTODOCK_SOCKETPROXY_SUBNET (10.202.0.0/24), OTODOCK_DATA_SUBNET (10.203.0.0/24) and OTODOCK_INTERNAL_SUBNET (10.204.0.0/24).
OTODOCK_PROXY_MEM_LIMITCaps the server container's memory. OtoDock plans how many agent sessions can run at once from the memory available to it — set this if the host shares its RAM with other workloads.
OTODOCK_MAX_FILE_MBPer-file cap for uploads and remote-machine sync (default 1024 — 1 GB). One knob governs chat attachments, workspace uploads, and file sync alike.
OTO_AUDIOSOCKET_PUBLIC_HOSTPhone calls through a local PBX only: the LAN address where your PBX reaches the phone service (the Docker host's IP on your local network). The phone service's ports listen on this address, and only the server itself can reach them while it's unset.
OTO_PHONE_BINDRarely needed. Only when the address in OTO_AUDIOSOCKET_PUBLIC_HOST isn't one this server owns, such as a hostname or an address your router forwards, set this to the server's own LAN IP so the phone service can listen. Never use 0.0.0.0 on a server the internet can reach, because the call-audio port has no password of its own.
SANDBOX_TMP_SIZE_MBCaps the private /tmp of each server-side agent session (its home, caches, and downloads), so a runaway job fails inside its own sandbox instead of eating the host's memory. Default 4096, never more than half the host's RAM; 0 removes the cap.
LOOP_WATCHDOG_THRESHOLD_SA diagnostic. When the server's main loop stalls for longer than this, the log records the code that is blocking. Default 2 seconds; 0 turns it off. Useful when a slow disk makes the dashboard freeze.
OIDC_*Single sign-on with an identity provider — see below.
OTODOCK_MAX_SESSIONS_PER_USERHow many chats one person can have live at once. Default 8, or 0 for no limit. See Chat.
TASK_MAX_ACTIVE_PER_USER / TASK_MAX_ACTIVE_PER_AGENTHow many scheduled and one-time tasks can be active at once: 25 per person across all their agents (admins aren't limited) and 100 per agent by default. 0 removes a limit. See Tasks.
MAX_WEBHOOK_BODY_BYTESThe largest webhook event OtoDock accepts from an unverified sender (default 2 MB). Signed GitHub events and webhooks with a valid API key can be up to 25 MB.

The database connection is handled for you: on a Docker install the compose file wires OtoDock to the bundled PostgreSQL, and on a source install the setup script configures a local one.

Single sign-on (OIDC)​

SSO takes a handful of OIDC_* settings in the same file: set OIDC_ENABLED=true, your provider's OIDC_DISCOVERY_URL, OIDC_CLIENT_ID, and OIDC_CLIENT_SECRET, and — to map provider groups to OtoDock roles — OIDC_ROLE_ADMIN_GROUP / OIDC_ROLE_CREATOR_GROUP / OIDC_ROLE_MEMBER_GROUP. The redirect URI derives from DASHBOARD_PUBLIC_URL automatically (…/auth/callback). See Users & Access for how roles work.

The dashboard: everything else​

Most settings live in the web interface under Setup, take effect immediately, and need no restart:

  • General — company name and platform-wide agent instructions.
  • AI Engines — connect subscriptions, keys, and models (see Connecting your AI).
  • OtoDock — your license.
  • Audio — the speech-to-text and text-to-speech providers behind Voice.
  • Phone — phone servers, call routes, and call behavior (see Phone Calls).
  • Security — password policy, required two-factor sign-in, email (SMTP), bot protection, and sharing.
  • System Settings — timezone, session timeouts, memory, storage quotas, retention, remote-machine policies, whether subscription usage is read from the providers, and automatic tool updates.

Where your data lives​

OtoDock keeps your data on the machine you run it on. On a Docker Compose install, it lives in named volumes — the database, the agent files, and session state — so stopping and restarting the stack keeps everything intact. Back these up (see Upgrading & Backups).

Next steps​