Environment configuration notes
The root .env file is the shared configuration for the Customer 360
services. Use .env.example as its template. The ads-server service is
independent and uses ads-server/.env from ads-server/.env.example.
General guidance
- Copy
.env.exampleto.envbefore local development. - Compose overrides
DB_HOST,DB_PORT,REDIS_HOST, andREDIS_PORTinside containers. *_HOST_BINDcontrols the host interface for a published port.*_HOST_PORTcontrols the host port for a published service.- Published services default to loopback. Change the bind address only when needed.
SSO_LOGIN=falsekeeps local authentication enabled without Keycloak.
Database and cache
DB_HOST: PostgreSQL hostname. Default:localhostDB_PORT: PostgreSQL port. Default:5432DB_USER: PostgreSQL superuser name. Default:postgresDB_PASSWORD: PostgreSQL password. Default:change_me_postgres_passwordDB_NAME: Application database name. Default:customer360DB_SCHEMA: Primary schema for application objects. Default:customer360POSTGRES_HOST_PORT: Host-published PostgreSQL port. Default:5432POSTGRES_HOST_BIND: Bind address for the published PostgreSQL port. Default:127.0.0.1REDIS_HOST: Redis hostname. Default:localhostREDIS_PORT: Redis port. Default:6580REDIS_DB: Redis database number. Default:0REDIS_PASSWORD: Redis password. Default:change_me_redis_passwordREDIS_HOST_PORT: Host-published Redis port. Default:6580REDIS_HOST_BIND: Bind address for the published Redis port. Default:127.0.0.1CACHE_ENABLED: Enables the response cache layer. Default:trueCACHE_TTL_SECONDS: Cache TTL in seconds. Default:60
API and database pool settings
DB_POOL_SIZE: SQLAlchemy pool size. Default:10DB_MAX_OVERFLOW: SQLAlchemy maximum overflow connections. Default:20DB_POOL_RECYCLE_SECONDS: Connection recycle interval. Default:1800DB_POOL_PRE_PING: Enables SQLAlchemy pre-ping for connection health checks. Default:trueDB_ECHO_SQL: Enables SQL echo for debugging. Default:falseAPI_DEFAULT_PAGE_SIZE: Default API page size. Default:100API_MAX_PAGE_SIZE: Maximum API page size. Default:1000C360_API_HOST: Host bind address for the published API port. Default:127.0.0.1C360_API_PORT: Host-published API port. Default:8008UVICORN_RELOAD: Enables auto-reload for the development server. Default:false
Frontend admin settings
FRONTEND_API_HOSTNAME: Browser-visible API base URL. Default:https://c360.example.com/c360apiFRONTEND_TENANT_ID: Tenant identifier used by the admin UI. Default:11111111-1111-1111-1111-111111111111FRONTEND_HOST_BIND: Host bind address for the frontend port. Default:127.0.0.1FRONTEND_HOST_PORT: Host-published frontend port. Default:8890FRONTEND_UVICORN_RELOAD: Enables auto-reload for the frontend dev server. Default:falseFRONTEND_ROOT_PATH: URL prefix for the frontend. Default:/c360LEO_OBSERVER_LOG_DOMAIN: Observer log domain. Default:c360.example.comLEO_OBSERVER_TRACKING_URI: Observer tracking path. Default:/data/api/v1/tracking/logsLEO_OBSERVER_TRACKING_ENDPOINT: Full observer tracking URL. Default:https://c360.example.com/data/api/v1/tracking/logsLEO_OBSERVER_CDN_JS: Observer SDK URL.
Identity resolution and background jobs
CIR_BATCH_SIZE: Batch size for identity resolution processing. Default:5000CIR_POLL_INTERVAL_SECONDS: Interval between identity resolution worker polls. Default:90ANALYTICS_DATA_SOURCE_LIMIT: Data sources processed per analytics run. Default:10ANALYTICS_LOCK_TTL_SECONDS: Analytics Redis lock lifetime. Default:3600DAGSTER_UI_HOST: Host interface for the Dagster UI. Default:127.0.0.1DAGSTER_UI_PORT: Port for the Dagster UI. Default:3000
Authentication and SSO
SSO_LOGIN: Enables Keycloak-based authentication. Default:falseDEFAULT_ROOT_USERNAME: Local bootstrap admin username. Default:adminDEFAULT_ROOT_PASSWORD: Local bootstrap admin password. Default:change_me_root_passwordDEV_JWT_SECRET: Shared secret used for local JWT issuance when SSO is disabled. Default:change_me_dev_jwt_secret_min_32_bytes_longDEV_JWT_EXPIRES_MINUTES: Token lifetime for local dev JWTs. Default:480C360_AUTH_RATE_LIMIT_MAX_ATTEMPTS: Failed login attempts per window. Default:10C360_AUTH_RATE_LIMIT_WINDOW_SECONDS: Login rate-limit window. Default:60SSO_LOGIN_URL: Base URL of the Keycloak server. Default:https://c360.example.com/authKEYCLOAK_REALM: Keycloak realm name. Default:leocdpKEYCLOAK_CLIENT_ID: Keycloak client ID. Default:leocdpKEYCLOAK_CLIENT_SECRET: Keycloak client secret. Default:change_me_keycloak_client_secretKEYCLOAK_CALLBACK_URL: OAuth callback URL. Default:https://c360.example.com/KEYCLOAK_VERIFY_SSL: Whether to verify SSL certificates for Keycloak requests. Default:false
Keycloak container settings
KEYCLOAK_ADMIN: Keycloak admin username. Default:adminKEYCLOAK_ADMIN_PASSWORD: Keycloak admin password. Default:change_me_keycloak_admin_passwordKEYCLOAK_HOST_PORT: Host-published Keycloak port. Default:8080KEYCLOAK_HOST_BIND: Bind address for the published Keycloak port. Default:127.0.0.1KEYCLOAK_VERSION: Keycloak image tag. Default:26.7KEYCLOAK_COMMAND: Startup command for the Keycloak container. Default:start-devKEYCLOAK_HOSTNAME: Public hostname advertised by Keycloak. Default:https://c360.example.com/auth
MinIO (development-only object storage)
MINIO_ROOT_USER: MinIO root username. Default:change_me_minio_root_userMINIO_ROOT_PASSWORD: MinIO root password. Default:change_me_minio_root_passwordMINIO_BUCKET: Default bucket created for development. Default:customer360-events-devMINIO_API_HOST_PORT: Host-published MinIO API port. Default:9000MINIO_CONSOLE_HOST_PORT: Host-published MinIO console port. Default:9001MINIO_HOST_BIND: Bind address for the published MinIO ports. Default:127.0.0.1
CDP data tracking object storage
C360_TRACKING_API_HOST: Bind address for the tracking API. Default:127.0.0.1C360_TRACKING_API_PORT: Host-published tracking API port. Default:8010TRACKING_MAX_EVENTS_PER_REQUEST: Maximum events accepted in one batch. Default:1000TRACKING_QUEUE_BACKEND:redis_streamfor the durable production handoff ormemoryfor isolated tests. Default:redis_streamTRACKING_STREAM_NAME: Redis Stream carrying immutable tracking batches. Default:data-tracking:eventsTRACKING_STREAM_GROUP: Redis consumer group used by S3 workers. Default:s3-writersTRACKING_STREAM_MAX_LENGTH: Hard Redis Stream work-queue capacity; acknowledged entries are deleted. Default:100000TRACKING_STREAM_BLOCK_MS: Maximum worker wait for new stream entries. Default:1000TRACKING_STREAM_CLAIM_IDLE_MS: Idle time before another worker can reclaim a pending entry. Default:60000TRACKING_STREAM_RETRY_SECONDS: Delay before retrying a failed S3 write. Default:1.0OBJECT_STORAGE_MODE:s3for production orminiofor a host-run dev service.S3_ENDPOINT_URL: S3-compatible endpoint; dev Compose sets this tohttp://minio:9000.S3_REGION: AWS region. Default:us-east-1S3_ACCESS_KEY_ID/S3_SECRET_ACCESS_KEY: Optional explicit credentials; omit them in AWS when using IAM roles.S3_FORCE_PATH_STYLE: Required for MinIO. Default:falseS3_AUTO_CREATE_BUCKETS: Createdata-tracking-[data_source_id]on first write. Default:trueTRACKING_REDIS_KEY_PREFIX: Prefix for tracking session and rate-limit keys. Default:data-tracking-apiTRACKING_SESSION_TTL_SECONDS: Session metadata TTL. Default:86400TRACKING_RATE_LIMIT_REQUESTS/TRACKING_RATE_LIMIT_WINDOW_SECONDS: Per-IP request window. Defaults:1000/360TRACKING_RATE_LIMIT_FAIL_OPEN: Allow ingestion when Redis rate limiting is unavailable. Default:true; usefalsefor strict enforcement.TRACKING_BOT_FILTER_ENABLED: Enable configured user-agent filtering. Default:trueTRACKING_BOT_USER_AGENT_PATTERNS: Comma-separated case-insensitive user-agent substrings to discard.
GenAI settings
LEO_GOOGLE_GENAI_API_KEY: Google GenAI key. Default:YOUR_GOOGLE_GENAI_API_KEYLEO_GOOGLE_GENAI_MODEL: Google GenAI model. Default:gemini-3.5-flash-liteLEO_OPENAI_API_KEY: OpenAI key. Default:YOUR_OPENAI_API_KEYLEO_OPENAI_MODEL_NAME: OpenAI model. Default:gpt-5.6-lunaLEO_OPENAI_BASE_URL: OpenAI-compatible API URL. Default:YOUR_OPENAI_BASE_URL
Independent ads-server settings
These keys belong only to ads-server/.env. They are not part of the root
global .env file.
Ad server API
LEO_AD_API_HOST: API listen address. Default:localhostLEO_AD_API_PORT: API listen port. Default:9009LEO_AD_TRACKING_BASE_URL: Customer 360 tracking API URL. Default:http://localhost:8010
Ad server PostgreSQL
LEO_AD_DB_HOST: PostgreSQL host. Default:localhostLEO_AD_DB_PORT: PostgreSQL port. Default:5432LEO_AD_DB_USER: PostgreSQL user. Default:postgresLEO_AD_DB_PASSWORD: PostgreSQL password. Set a private value.LEO_AD_DB_NAME: Database name. Default:customer360LEO_AD_DB_SCHEMA: Ads schema. Default:leo_ads
Ad server Redis
LEO_AD_REDIS_HOST: Redis host. Default:localhostLEO_AD_REDIS_PORT: Redis port. Default:6580LEO_AD_REDIS_DB: Redis database number. Default:0LEO_AD_REDIS_PASSWORD: Redis password. Set a private value.