# yedir-ai environment template # Copy this file to .env.local and fill real values locally or in your hosting platform. # Never commit real secrets. # ----------------------------------------------------------------------------- # Core / Auth # ----------------------------------------------------------------------------- # Generate with: openssl rand -base64 32 AUTH_SECRET=replace-with-random-secret # Stable pepper for user Access Key hashes. Generate independently from AUTH_SECRET. ACCESS_KEY_PEPPER=replace-with-random-secret # Authorizes trusted third-party services to provision user-scoped MCP keys. # Must contain at least 32 characters. Never expose it to end users or browsers. MCP_KEY_PROVISIONING_SECRET=replace-with-random-secret # Public application URL. Required for production and self-hosted Auth.js. AUTH_URL=https://your-domain.com NEXTAUTH_URL=https://your-domain.com NEXT_PUBLIC_APP_URL=https://your-domain.com # Only enable behind a trusted reverse proxy with validated Host headers. AUTH_TRUST_HOST=false # Optional OAuth providers. GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= # Optional initial admin provisioning. ADMIN_EMAIL= ADMIN_PASSWORD= # Optional email verification. RESEND_API_KEY= RESEND_FROM_EMAIL= EMAIL_VERIFICATION_SECRET= # Optional scheduled job protection. CRON_SECRET= # ----------------------------------------------------------------------------- # Database # ----------------------------------------------------------------------------- POSTGRES_URL=postgres://user:password@localhost:5432/yedir_ai # Production-safe defaults used by lib/db/index.ts. POSTGRES_MAX_CONNECTIONS=10 POSTGRES_IDLE_TIMEOUT_SECONDS=20 POSTGRES_CONNECT_TIMEOUT_SECONDS=5 POSTGRES_MIGRATION_TIMEOUT_SECONDS=120 # ----------------------------------------------------------------------------- # Object Storage # ----------------------------------------------------------------------------- # Vercel Blob fallback. BLOB_READ_WRITE_TOKEN= # S3-compatible storage fallback. Database-configured storage takes precedence. S3_ENDPOINT= S3_REGION=auto S3_BUCKET= S3_ACCESS_KEY_ID= S3_SECRET_ACCESS_KEY= S3_PUBLIC_URL= # ----------------------------------------------------------------------------- # AI Providers # ----------------------------------------------------------------------------- AI_GATEWAY_API_KEY= NEXT_PUBLIC_DEFAULT_CHAT_MODEL= # DashScope / Qwen OpenAI-compatible endpoint. DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 DASHSCOPE_API_KEY= # Third-party GPT-compatible provider. GTP5_API_URL= GTP5_API_KEY= GTP5_MODEL=gpt-5-nano # FAL image/video/realtime providers. FAL_KEY= FAL_API_KEY= FAL_BASE_URL=https://fal.run FAL_MODEL= FAL_REALTIME_MODEL= # Realtime Canvas fallback providers. REPLICATE_API_TOKEN= BFL_API_KEY= BFL_KEY= BFL_BASE_URL= BFL_MODEL= RUNWARE_MODEL= # 3D / CAD providers. TRIPO_API_KEY= TRIPO_BASE_URL=https://api.tripo3d.ai/v2/openapi WORLDLABS_API_KEY= WORLDLABS_BASE_URL= WORLDLABS_IMPORT_TOKEN= WORLDLABS_KEY_POOL_IMPORT_TOKEN= WORLDLABS_API_TIMEOUT_MS=180000 WORLDLABS_TASK_CREATE_TIMEOUT_MS=180000 WORLDLABS_TASK_STATUS_TIMEOUT_MS=180000 KITTYCAD_API_TOKEN= KITTYCAD_API_KEY= KITTYCAD_BASE_URL=https://api.zoo.dev ZOO_API_TOKEN= ZOO_BASE_URL=https://api.zoo.dev # Pascal Editor self-hosted workspace. In local development, leaving this blank # makes /pascal-editor auto-detect http://localhost:3002. For production or a # fixed deployment, point this to your self-hosted Pascal service or static # /vendor/pascal-editor/index.html bundle. NEXT_PUBLIC_PASCAL_EDITOR_URL= PASCAL_EDITOR_URL= # Shared only by the main app, Nginx, and the private Pascal service. Generate a # long random value; never expose it through NEXT_PUBLIC_* variables. PASCAL_PROXY_SECRET= # RUXA / video callback. RUXA_CALLBACK_URL= RUXA_VIDEO_CALLBACK_URL= # ----------------------------------------------------------------------------- # Product Planning Integrations # ----------------------------------------------------------------------------- PRODUCT_PLANNING_DETAIL_PLUS_BASE_URL= PRODUCT_PLANNING_DETAIL_PLUS_INTERNAL_BASE_URL= PRODUCT_PLANNING_DETAIL_PLUS_API_KEY= PRODUCT_PLANNING_QA_TOKEN= TAOBAO_API_KEY= TAOBAO_API_SECRET= TAOBAO_SALE_API_TOKEN= PRODUCT_PLANNING_DB_HOST= PRODUCT_PLANNING_DB_PORT=3306 PRODUCT_PLANNING_DB_DATABASE= PRODUCT_PLANNING_DB_NAME= PRODUCT_PLANNING_DB_USER= PRODUCT_PLANNING_DB_PASSWORD= PRODUCT_PLANNING_DB_CHARSET=utf8mb4 PRODUCT_PLANNING_DB_SSL=false # ----------------------------------------------------------------------------- # Home Performance / Queues # ----------------------------------------------------------------------------- # Legacy image queue fields: 0 = unrestricted; model/user admission caps are disabled. CANVAS_IMAGE_TASK_CONCURRENCY=0 CANVAS_IMAGE_TASK_BATCH_DISPATCH_INTERVAL_MS=0 EXTERNAL_IMAGE_API_MAX_CONCURRENT=3 EXTERNAL_IMAGE_API_MAX_QUEUE=20 EXTERNAL_IMAGE_API_QUEUE_TIMEOUT_MS=120000 # Browser direct uploads use signed OSS/S3 URLs. Configure CORS and lifecycle # with the scripts below after changing the default storage bucket. DIRECT_UPLOAD_CORS_ORIGINS=https://ai.yydd.ai,https://yydd.ai DIRECT_UPLOAD_ABORT_INCOMPLETE_DAYS=2 DIRECT_UPLOAD_LIFECYCLE_PREFIX=uploads/direct/ DIRECT_UPLOAD_LIFECYCLE_RULE_ID=abort-incomplete-direct-upload-parts # ----------------------------------------------------------------------------- # Agent / PSD Runtime # ----------------------------------------------------------------------------- AGENT_FORCE_LLM_PLANNER=false AGENT_FORCE_QWEN3VL_FALLBACK=false AGENT_IMAGE_GEN_LLM_OPTIMIZER_ENABLED=true AGENT_LLM_PROMPT_OPTIMIZER_ENABLED=true AGENT_REPLACEMENT_PARALLEL_WORKER_COUNT=2 AGENT_PSD_LOCAL_CACHE_DIR= AGENT_PSD_REMOTE_ASSET_CACHE_DISABLED=false AGENT_PSD_REMOTE_ASSET_CACHE_MAX_BYTES= AGENT_PSD_REMOTE_ASSET_CACHE_MAX_ENTRY_BYTES= AGENT_PSD_REMOTE_ASSET_CACHE_TTL_MS= AGENT_PSD_RENDER_PNG_COMPRESSION_LEVEL=6 AGENT_PSD_RENDER_TASK_CONCURRENCY=2 NEXT_PUBLIC_AGENT_STYLE_PERF_MONITOR=true NEXT_PUBLIC_AGENT_STYLE_PERF_SAMPLE_RATE=0.01 NEXT_PUBLIC_AGENT_STYLE_OPTIMIZED_RENDER=true # ----------------------------------------------------------------------------- # Logging / Observability # ----------------------------------------------------------------------------- # debug | info | warn | error | silent LOG_LEVEL=info # Stack traces remain disabled in production unless explicitly enabled. LOG_INCLUDE_STACK=false # Client logs are silent in production unless this is true. NEXT_PUBLIC_ENABLE_CLIENT_LOGS=false # ----------------------------------------------------------------------------- # Optional Jobs # ----------------------------------------------------------------------------- VIDEO_ARCHIVE_DELAY_HOURS=24 # ----------------------------------------------------------------------------- # Test / Local Dev # ----------------------------------------------------------------------------- PORT=3001 PLAYWRIGHT=false CI_PLAYWRIGHT=false PLAYWRIGHT_TEST_BASE_URL=http://127.0.0.1:3001 SMOKE_BASE_URL=http://127.0.0.1:3001 SMOKE_TIMEOUT_MS=20000 DISABLE_PERF_GUARD_AUTO_INSTALL=false