Obot Configuration Reference
The Obot server is configured via environment variables. The following configuration is available:
| Environment Variable | Description | Default |
|---|---|---|
OPENAI_API_KEY | The foundation of Obot is a large language model that supports function-calling. The default is OpenAI and specifying an OpenAI key here will ensure none of the users need to worry about specifying their own API key. | - |
ANTHROPIC_API_KEY | You can also provide an Anthropic API key in place of or in addition to an OpenAI API key. | - |
GITHUB_AUTH_TOKEN | Obot makes heavy use of repositories hosted on GitHub. Care is taken to cache these and only re-check when necessary. However, rate-limiting can happen. Setting a read-only token here can alleviate many of these issues. No grants are required for either a 'classic' or 'fine-grained' token to access public repos (read-only). If you want to give the token access to private repos, you will need to give it repo (for a 'classic' token) or contents (read-only) and metadata (read-only). | |
OBOT_SERVER_DSN | Obot uses a database backend. By default, it will use a sqlite3 local database when running the plan Obot binary. The Obot container will use an internal PostgreSQL database (not recommended for production). This environment variable allows you to specify another database option. For example, you can use a postgres database with something like OBOT_SERVER_DSN=postgres://user:password@host/database. | - |
OBOT_SERVER_HOSTNAME | Tell Obot what its server URL is so that things like OAuth, LLM proxying, and invoke URLs are handled correctly. | - |
OBOT_SERVER_DAILY_USER_INPUT_TOKEN_LIMIT | The maximum number of prompt/input tokens allowed per user per day. Set to a negative value to disable this limit. | 10000000 |
OBOT_SERVER_DAILY_USER_OUTPUT_TOKEN_LIMIT | The maximum number of completion/output tokens allowed per user per day. Set to a negative value to disable this limit. | 100000 |
OBOT_SERVER_IDLE_AGENT_SHUTDOWN_HOURS | The interval in hours to check for idle agents and shut them down. Set to -1 to disable idle shutdown. | 72 (3 days) |
OBOT_SERVER_SINGLE_USER_IDLE_SERVER_SHUTDOWN_HOURS | The interval in hours to check for idle single-user MCP servers and shut them down. Set to -1 to disable idle shutdown. | 24 (1 day) |
OBOT_SERVER_MULTI_USER_IDLE_SERVER_SHUTDOWN_HOURS | The interval in hours to check for idle multi-user MCP servers and shut them down. Set to -1 to disable idle shutdown. | 168 (7 days) |
NAH_THREADINESS | Sets the number of concurrent threads that can run in the Obot controller. | 10 |
KINM_DB_CONNECTIONS | Sets both the maximum open and idle connection counts in the Kinm database pool. KINM_DB_MAX_CONNECTIONS and KINM_DB_MAX_IDLE_CONNECTIONS override the corresponding values. | 5 |
KINM_DB_MAX_IDLE_CONNECTIONS | The maximum number of idle connections in the Kinm database pool. Overrides the idle connection count set by KINM_DB_CONNECTIONS. | 2 |
KINM_DB_MAX_CONNECTIONS | The maximum number of open connections in the Kinm database pool. Overrides the open connection count set by KINM_DB_CONNECTIONS. | 5 |
KINM_DB_MAX_CONNECTION_LIFETIME_SECONDS | The maximum lifetime of a connection in the Kinm database pool, in seconds. | 180 |
OBOT_AUTH_PROVIDER_POSTGRES_MAX_IDLE_CONNECTIONS | The maximum number of idle connections in the PostgreSQL database pool used by authentication providers. | 2 |
OBOT_AUTH_PROVIDER_POSTGRES_MAX_CONNECTIONS | The maximum number of open connections in the PostgreSQL database pool used by authentication providers. | 5 |
OBOT_AUTH_PROVIDER_POSTGRES_CONNECTION_LIFETIME_SECONDS | The maximum lifetime of a connection in the PostgreSQL database pool used by authentication providers, in seconds. | 180 |
OBOT_SERVER_ENABLE_AUTHENTICATION | Enables authentication for Obot | false |
OBOT_SERVER_UNAUTHENTICATED_RATE_LIMIT | Rate limit for unauthenticated requests (requests per second). Unauthenticated requests are tracked by source IP address. | 100 |
OBOT_SERVER_AUTHENTICATED_RATE_LIMIT | Rate limit for authenticated non-admin requests (requests per second). Authenticated requests are tracked by user ID. Admin users are exempt from rate limiting. | 200 |
OBOT_SERVER_ENCRYPTION_PROVIDER | Configures an encryption provider for credentials in Obot. One of aws, gcp, azure, custom, or none | none |
OBOT_SERVER_ENCRYPTION_CONFIG_FILE | The path to a file containing the encryption configuration. Only used when OBOT_SERVER_ENCRYPTION_PROVIDER is custom | - |
OBOT_SERVER_ENCRYPTION_KEY | Sets the key to be used for encryption. Should only be set if OBOT_SERVER_ENCRYPTION_PROVIDER is custom | - |
OBOT_BOOTSTRAP_TOKEN | Sets a bootstrap token. If authentication is enabled, one will be autogenerated for you if this is not set. | - |
OBOT_SERVER_AUTH_OWNER_EMAILS | A comma separated list of email addresses that will have the Owner role in Obot. Email matching is case-insensitive. | - |
OBOT_SERVER_AUTH_ADMIN_EMAILS | A comma separated list of email addresses that will have the Admin role in Obot. Email matching is case-insensitive. | - |
OBOT_SERVER_MCPAUDIT_LOG_RETENTION_DAYS | The number of days to retain MCP audit logs before they are automatically deleted. Set to 0 to disable automatic cleanup. Use the audit log export functionality to preserve logs beyond this period. | 90 |
OBOT_SERVER_MCPAUDIT_LOG_PERSIST_INTERVAL_SECONDS | The interval in seconds at which buffered MCP audit logs are flushed to the database. | 5 |
OBOT_SERVER_MCPAUDIT_LOGS_PERSIST_BATCH_SIZE | The number of MCP audit log entries written to the database in a single batch. | 1000 |
OBOT_SERVER_LLMAUDIT_LOG_RETENTION_DAYS | The number of days to retain LLM audit logs before they are automatically deleted. Set to 0 to disable automatic cleanup. | 90 |
OBOT_SERVER_DISABLE_LLMAUDIT_LOG | Disables collection and persistence of new LLM gateway audit logs. Existing logs remain available. | false |
OBOT_SERVER_DEFAULT_MCPCATALOG_PATH | The path to the default MCP catalog (accessible to all users). | - |
OBOT_SERVER_DEFAULT_SYSTEM_MCPCATALOG_PATH | The path to the default System MCP catalog. | - |
OBOT_SERVER_MDM_ASSET_SOURCE | The source for MDM assets. Can be a local directory, a tar archive path, or an HTTP(S) tarball URL. | https://github.com/obot-platform/obot-sentry/releases/download/v0.1.1/mdm-assets.tar.gz |
OBOT_SERVER_AUDIT_LOGS_MODE | Configures the storage backend for audit logs in Obot. Can be 'off', 'disk', or 's3' | off |
OBOT_SERVER_AUDIT_LOGS_STORE_S3BUCKET | The name of the S3 bucket to store audit logs in. | - |
OBOT_SERVER_AUDIT_LOGS_STORE_S3ENDPOINT | If config.OBOT_SERVER_AUDIT_LOGS_MODE is 's3' and you are not using AWS S3, this needs to be set to the S3 api endpoint of your provider. | - |
OBOT_SERVER_AUDIT_LOGS_COMPRESS_FILE | Controls whether or not to compress audit log files | true |
OBOT_SERVER_AUDIT_LOGS_STORE_USE_PATH_STYLE | Whether to use path style for S3 object names | - |
OBOT_SERVER_MCPBASE_IMAGE | Deploy MCP servers in the kubernetes cluster or using docker with this base image. | ghcr.io/obot-platform/mcp-images/stdio-wrapper:v0.24.1 |
OBOT_SERVER_MCPIMAGE_PULL_SECRETS | Comma-separated Kubernetes secret names to use as static image pull secrets for every MCP server Deployment. When set, managed image pull secrets are disabled. See Image Pull Secrets. | - |
OBOT_SERVER_MCPSECRET_BINDING_ALLOWED_LABEL | Kubernetes Secret label key required before a Secret can be selected or resolved by MCP secret bindings. Only label presence is checked; the label value is ignored. Secrets without this label are not shown as bindable targets in the admin UI and are treated as unavailable when Obot resolves a secret binding at runtime. | obot.obot.ai/allow-secret-binding |
OBOT_SERVER_NANOBOT_AGENT_IMAGE | Deploy the Nanobot agent in the cluster using this image. | ghcr.io/obot-platform/nanobot-agent:v0.0.89 |
OBOT_SERVER_MCPHTTPWEBHOOK_BASE_IMAGE | Deploy MCP HTTP webhook servers in the cluster using this base image. | ghcr.io/obot-platform/mcp-images/http-webhook-mcp-converter:v0.24.1 |
OBOT_SERVER_MCPRUNTIME_BACKEND | The runtime backend to use for running MCP servers: docker or kubernetes. | kubernetes in the helm chart, docker otherwise |
OBOT_SERVER_MCPCLUSTER_DOMAIN | The cluster domain to use for MCP services. Only matters if OBOT_SERVER_MCPBASE_IMAGE is set. | cluster.local |
OBOT_SERVER_SERVICE_NAME | The Kubernetes service name for the obot server. Automatically set by the helm chart when using kubernetes backend. Used to construct the internal service FQDN for token exchange endpoints. | - |
OBOT_SERVER_SERVICE_NAMESPACE | The Kubernetes namespace where the obot server runs. Automatically set by the helm chart when using kubernetes backend. Used to construct the internal service FQDN for token exchange endpoints. | - |
OBOT_SERVER_DISALLOW_LOCALHOST_MCP | Disallow MCP servers that try to connect to localhost. Set to false only when you intentionally need MCP servers to reach localhost from the Obot runtime environment. | true |
OBOT_SERVER_DISALLOW_PRIVATE_IPMCP | Disallow MCP servers that resolve to private IP addresses. Set to false only when you intentionally need MCP servers to reach private network services from the Obot runtime environment. | true |
OBOT_SERVER_DISALLOW_LINK_LOCAL_MCP | Disallow MCP servers that resolve to link-local addresses. Set to false only when you intentionally need MCP servers to reach link-local services from the Obot runtime environment. | true |
OBOT_SERVER_MCPNETWORK_POLICY_PROVIDER_CHART_REPO | Helm repository URL for the MCP server egress control provider chart. Used with OBOT_SERVER_MCPNETWORK_POLICY_PROVIDER_CHART_NAME. | - |
OBOT_SERVER_MCPNETWORK_POLICY_PROVIDER_CHART_NAME | Helm chart name for the MCP server egress control provider. Setting this enables MCP server egress control. | - |
OBOT_SERVER_MCPNETWORK_POLICY_PROVIDER_CHART_VERSION | Helm chart version for the MCP server egress control provider. | - |
OBOT_SERVER_MCPNETWORK_POLICY_PROVIDER_CHART_PATH | Local filesystem path to an MCP server egress control provider chart. Setting this enables MCP server egress control and cannot be combined with chart repo, name, or version. | - |
OBOT_SERVER_MCPNETWORK_POLICY_PROVIDER_VALUES | YAML or JSON values blob merged into the MCP server egress control provider chart values. | - |
OBOT_SERVER_MCPDEFAULT_DENY_ALL_EGRESS | Default new MCP servers to deny all egress when MCP server egress control is enabled and no egress domains are configured. | false |
OBOT_SERVER_MCPPOD_SECURITY_ENABLED | Enable Pod Security Admission labels on the MCP namespace. Only applies when using kubernetes backend. | true |
OBOT_SERVER_MCPPOD_SECURITY_ENFORCE | Pod Security Standards level to enforce for MCP namespace (privileged, baseline, or restricted). Only applies when using kubernetes backend. | restricted |
OBOT_SERVER_MCPPOD_SECURITY_ENFORCE_VERSION | Kubernetes version for the PSA enforce policy. Only applies when using kubernetes backend. | latest |
OBOT_SERVER_MCPPOD_SECURITY_AUDIT | Pod Security Standards level to audit for MCP namespace (privileged, baseline, or restricted). Only applies when using kubernetes backend. | restricted |
OBOT_SERVER_MCPPOD_SECURITY_AUDIT_VERSION | Kubernetes version for the PSA audit policy. Only applies when using kubernetes backend. | latest |
OBOT_SERVER_MCPPOD_SECURITY_WARN | Pod Security Standards level to warn about for MCP namespace (privileged, baseline, or restricted). Only applies when using kubernetes backend. | restricted |
OBOT_SERVER_MCPPOD_SECURITY_WARN_VERSION | Kubernetes version for the PSA warn policy. Only applies when using kubernetes backend. | latest |
OBOT_SERVER_DISABLE_UPDATE_CHECK | Disable the Obot server update check. | false |
OBOT_SERVER_HIDE_K8S_DETAILS | Hide Kubernetes configuration details such as the Server Scheduling page from the UI. | false |
OBOT_SERVER_MCPOAUTH_CLIENT_EXPIRATION | The expiration time for dynamically registered MCP OAuth clients. Must be a valid duration string and may include days, hours, or minutes. | 30d |
OBOT_SERVER_ENABLE_MESSAGE_POLICIES | Enable Message Policies for LLM proxy content enforcement. When enabled, Obot exposes the Message Policies and Message Policy Violations admin views and evaluates configured policies on user messages and tool calls. | false |
OBOT_SERVER_LICENSE_KEY | A license key for Obot Enterprise. If set via configuration, the license key cannot be updated in the UI. | - |
OBOT_ENABLE_AGENTS | Controls whether Obot Agent features (agents and workflows) are available. Tri-state: true force-enables them regardless of existing data, false force-disables them even if agents already exist, and when unset Obot enables them only if the deployment already has at least one agent. New deployments therefore start with Obot Agent disabled, while existing deployments that already use agents stay enabled across upgrades with no migration required. The effective value is resolved once at server startup. | unset |
OBOT_ARTIFACT_STORAGE_PROVIDER | Storage provider for published workflows. Supported values: s3, gcs, azure, custom. If unset, Obot stores published workflows on local disk. | - |
OBOT_ARTIFACT_STORAGE_BUCKET | Bucket or container name used for published workflow storage when OBOT_ARTIFACT_STORAGE_PROVIDER is set. | - |
OBOT_ARTIFACT_S3_REGION | AWS region for published workflow storage when using s3 or custom. | - |
OBOT_ARTIFACT_S3_ACCESS_KEY_ID | Access key ID for published workflow storage when explicit S3-compatible credentials are required. | - |
OBOT_ARTIFACT_S3_SECRET_ACCESS_KEY | Secret access key for published workflow storage when explicit S3-compatible credentials are required. | - |
OBOT_ARTIFACT_S3_ENDPOINT | Endpoint URL for published workflow storage when using custom S3-compatible storage such as MinIO or Cloudflare R2. | - |
OBOT_ARTIFACT_GCS_SERVICE_ACCOUNT_JSON | Inline GCS service account JSON for published workflow storage. If unset, Obot uses Application Default Credentials. | - |
OBOT_ARTIFACT_AZURE_STORAGE_ACCOUNT | Azure storage account name for published workflow storage. | - |
OBOT_ARTIFACT_AZURE_TENANT_ID | Azure tenant ID for published workflow storage when using explicit Azure credentials. | - |
OBOT_ARTIFACT_AZURE_CLIENT_ID | Azure client ID for published workflow storage when using explicit Azure credentials. | - |
OBOT_ARTIFACT_AZURE_CLIENT_SECRET | Azure client secret for published workflow storage when using explicit Azure credentials. | - |
OBOT_DEFAULT_SKILL_REPO_URL | The default skill repository URL. Must be a full HTTPS GitHub URL (e.g. https://github.com/org/repo). Only used on first-time setup (before the first owner user is created). A SkillRepository resource will be created from this URL and synced automatically. | https://github.com/obot-platform/skills |
OBOT_DEFAULT_SKILL_REPO_REF | The ref (branch, tag, or commit SHA) for the default skill repository. If empty, the repository's default branch is used. Only used on first-time setup. | - |