Skip to main content
Each application has an .env.example; production Compose also uses docker/.env for substitution. Values in frontend/launcher builds are public once shipped, so never place secrets in VITE_* or browser bundle variables.

Gateway

PUBLIC_API_URL must be the external origin providers use for Telegram and other callbacks. CLIENT_URL is the public console origin. Use different random values for both JWT secrets and for AI_TOOL_SECRET.

Agent

See model providers before changing provider or embedding dimension.

Console and launcher

Launcher MinIO credentials belong only in its deployment process, never in the generated browser asset.

Worker

The worker needs REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, MONGODB_URI, EMAIL_PROVIDER, sender values, MailHog host/port when selected, AWS credentials/region for SES, and WORKER_CONCURRENCY.

Docker substitution

docker/.env supplies MongoDB, Redis, and MinIO credentials; API_HOST, WEB_HOST, CDN_HOST, and LOG_HOST; MINIO_PUBLIC_URL; API_URL_PRODUCTION; and LOG_VIEWER_PORT.
Never commit .env files, provider keys, JWT secrets, database credentials, or AI_TOOL_SECRET. Use different credentials in every environment and keep MongoDB, Redis, Qdrant, and MinIO private behind the application network.
Run docker compose --env-file docker/.env -f docker/docker-compose.yml config before deployment. It catches missing substitutions and shows the effective configuration—review output carefully because it can contain secrets.
Last modified on July 17, 2026