APP_ENV=production # Required secrets: generate unique values for every customer environment. FERNET_KEY=replace-with-32-plus-character-fernet-key JWT_SECRET=replace-with-32-plus-character-jwt-secret # Database credentials used by docker-compose.prod.yml. MYSQL_ROOT_PASSWORD=replace-with-strong-root-password MYSQL_DB=clover MYSQL_USER=clover MYSQL_PASSWORD=replace-with-strong-db-password DATABASE_URL=mysql+pymysql://clover:replace-with-strong-db-password@mysql:3306/clover MONGO_URI=mongodb://mongo:27017/clover_trace REDIS_URL=redis://redis:6379/0 # Public URLs. # If frontend and API share the same domain through nginx, keep NEXT_PUBLIC_* empty. # If using split domains, set them to the public backend origin, such as https://api.example.com. # NEXT_PUBLIC_* are build-time variables. After changing them, rebuild the frontend image. NEXT_PUBLIC_API_BASE_URL= NEXT_PUBLIC_SSE_BASE_URL= # Production should use the real customer domain(s). Do not use "*" in production. CORS_ALLOW_ORIGINS=https://your-domain.example # Image/text provider routing. IMAGE_PROVIDER_PRIMARY=gpt IMAGE_PROVIDER_FALLBACK=gemini IMAGE_MODEL=gpt-image-2 MODEL_IMAGE=gpt-image-2 MODEL_TEXT=claude-opus-4-8 # Vision model used by verify_real_image script (leave empty to skip real-image checks). MODEL_VISION= APIPORTS_BASE_URL=https://www.apiports.com/v1 CODEPROXY_BASE_URL= # Override only if calling Claude through a non-default gateway. CLAUDE_API_URL= GEMINI_API_URL=https://generativelanguage.googleapis.com/v1beta # Optional platform keys. Normal customer keys should be entered in the UI. APIPORTS_KEY= CODEPROXY_KEY= MAX_CONCURRENT_TASKS_PER_USER=5 UVICORN_WORKERS=2 UPLOAD_BASE_PATH=uploads/packages UPLOAD_ABS_ROOT=/app/uploads