This page documents all available environment variables for XTM One. The .env.sample file is the canonical source and includes inline comments for each variable.
SECRET_KEY
This is the most critical value. It encrypts all stored integration credentials. If you lose it or change it, all encrypted data becomes unrecoverable.
ADMIN_PASSWORD
The platform resets the admin password to the value in .env on every startup. This means .env is a standing password reset mechanism — anyone with read access to the file can take over the admin account by restarting the service. Treat .env as a privileged secret (owner-only permissions, never committed to version control). After first login, consider rotating the password via the UI and keeping the .env value in sync.
Security
Variable
Required
Default
Description
SECRET_KEY
Yes
—
JWT signing + Fernet encryption key. Generate with python -c "import secrets; print(secrets.token_urlsafe(48))". Never change after deployment.
ADMIN_EMAIL
Yes
—
Default admin account email. Created or updated on every startup.
ADMIN_PASSWORD
Yes
—
Default admin account password. Reset to this value on every startup.
ADMIN_TOKEN
No
—
Programmatic API token for the admin (must start with fcp-, min 16 chars).
URLs
Variable
Required
Default
Description
BASE_URL
Yes
http://localhost:4000
Public URL of the platform. Used for OAuth/SAML callbacks and email links.
FRONTEND_URL
Yes
http://localhost:4000
Public URL of the frontend. Usually same as BASE_URL.
Platform mode
Variable
Required
Default
Description
PLATFORM_MODE
No
xtm_one
xtm_one (default, open) or copilot (requires Filigran license).
PLATFORM_REGISTRATION_TOKEN
No
—
Shared token for OpenCTI/OpenAEV registration. Must match across services.
ENTERPRISE_LICENSE
No
—
Enterprise license PEM. Can also be configured from Settings UI.
PLATFORM_NAME
No
Mode default
Display name override. DB value takes precedence.
PLATFORM_LOGO
No
Mode default
Logo override (data URI). DB value takes precedence.
Database
Variable
Required
Default
Description
DATABASE_URL
No
Built from DB_PASSWORD
Full asyncpg connection string. Override when using external PostgreSQL.
Comma-separated list of feature flag ids to turn on experimental/in-development features, e.g. MY_FLAG,OTHER_FLAG. Use * to enable all of them. Leaving this unset enables none of them. Changing it requires a restart — there is no toggle in the Settings UI. An unrecognized flag id (e.g. left over from another branch) is logged as a warning and ignored — it never enables anything and never prevents the platform from starting.
The resolved list of enabled flags is also sent to the frontend (as part of the public, boot-time GET /auth/config response), so a flag can control both backend behavior and whether a UI element is shown — with the backend independently enforcing the same flag on any route it gates.