# Core LLM provider configuration # Required for live LLM-powered runtime: set at least one API key below. OPENROUTER_API_KEY= LLM_API_KEY= OPENAI_API_KEY= LLM_BASE_URL=https://openrouter.ai/api/v1 EMBEDDING_MODEL=openai/text-embedding-3-small # Runtime tuning LLM_TEMPERATURE=0.7 LLM_MAX_TOKENS=2500 LLM_TIMEOUT_SECONDS=25 LLM_RETRIES=2 # 3-layer lane tuning (Planner/Referee and Narrator) # Referee lane should stay strict/structured. LLM_REFEREE_MODEL=openai/gpt-4o-mini LLM_REFEREE_TEMPERATURE=0.2 LLM_REFEREE_FREQUENCY_PENALTY=0.0 LLM_REFEREE_PRESENCE_PENALTY=0.0 # Narrator lane can be faster/more flavorful. LLM_NARRATOR_MODEL=google/gemini-3-flash-preview LLM_NARRATOR_TEMPERATURE=0.8 LLM_NARRATOR_FREQUENCY_PENALTY=0.0 LLM_NARRATOR_PRESENCE_PENALTY=0.0 # Semantic storylet selection tuning # Higher floor => broader/more diverse picks. LLM_SEMANTIC_FLOOR_PROBABILITY=0.05 # Higher penalty => less immediate repetition. LLM_RECENCY_PENALTY=0.3 # Optional database override DW_DB_PATH=worldweaver.db # API cache behavior STATE_MANAGER_CACHE_MAX_SIZE=500 STATE_MANAGER_CACHE_TTL_SECONDS=3600 NAVIGATOR_CACHE_MAX_SIZE=32 NAVIGATOR_CACHE_TTL_SECONDS=3600 # Runtime feature-flag defaults WW_ENABLE_CONSTELLATION=true WW_ENABLE_STAGED_ACTION_PIPELINE=true WW_ENABLE_FRONTIER_PREFETCH=true WW_ENABLE_ASSISTIVE_SPATIAL=true WW_ENABLE_DEV_RESET=true # Optional client-only overrides can go in `client/.env.local`. # Compose sets VITE_PROXY_TARGET=http://backend:8000 for containerized client. VITE_PROXY_TARGET=http://localhost:8000