# Copy to .env (in the repository root) and fill in values. Never commit .env. # --- Backend --- APP_ENV=development # development | test | production LOG_LEVEL=INFO # DEBUG | INFO | WARNING | ERROR API_HOST=127.0.0.1 API_PORT=8000 # Comma-separated list of browser origins allowed to call the API. CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173 # --- Claude (used from Phase 3; stays server-side only) --- ANTHROPIC_API_KEY= ANTHROPIC_MODEL=claude-sonnet-5-5 ANTHROPIC_MAX_TOKENS=8000 ANTHROPIC_TIMEOUT_SECONDS=120 # Automatic retries the Anthropic SDK makes on connection errors and overloads. ANTHROPIC_MAX_RETRIES=2 # Cache the long system prompts (cheaper, faster). Turned off automatically if Anthropic rejects it. ANTHROPIC_PROMPT_CACHING=true # Claude calls per interpretation, including one corrective attempt. ARCHITECT_MAX_ATTEMPTS=2 # --- Blender --- # Absolute path to the Blender executable, e.g. # Windows: C:\Program Files\Blender Foundation\Blender 4.2\blender.exe # macOS: /Applications/Blender.app/Contents/MacOS/Blender # Linux: /usr/bin/blender BLENDER_EXECUTABLE= # Or a Python 3.13 interpreter with `pip install bpy` (useful for CI); "auto" detects which. BLENDER_MODE=auto BLENDER_TIMEOUT_SECONDS=300 RENDER_TIMEOUT_SECONDS=900 # Saved projects (one JSON file each). Leave unset for output/projects. # PROJECTS_DIR=/absolute/path/to/projects # auto: EEVEE where the machine has a GPU, otherwise Cycles (tested once; the app explains the choice). RENDER_DEFAULT_ENGINE=auto # How long the one-off EEVEE test render may take before Cycles is chosen instead. EEVEE_PROBE_TIMEOUT_SECONDS=45 # --- Frontend (Vite dev server; read in vite.config.ts only, never sent to the browser) --- # Where the Vite dev proxy forwards /api requests. BACKEND_URL=http://127.0.0.1:8000 # --- Storage and limits --- # Where build jobs (scene.json, building.blend, renders) are written. Leave unset for output/jobs. # JOBS_DIR=/absolute/path/to/jobs # The example prompts and specifications served by /api/examples. Leave unset for examples/. # EXAMPLES_DIR=/absolute/path/to/examples # Largest request body accepted, in bytes (1 MB). MAX_REQUEST_BYTES=1048576