# Copy this file to .env and fill in real values. Never commit .env. # DM model provider: "xai" (default, cloud) or "lmstudio" (local, free, no API cost) LLM_PROVIDER=xai # x.ai API (Grok) — used when LLM_PROVIDER=xai. Get a key at https://console.x.ai XAI_API_KEY= DM_MODEL=grok-4.6 # LM Studio local server — used when LLM_PROVIDER=lmstudio. Use host.docker.internal, not a # LAN IP — the backend runs inside Docker and can't necessarily reach the host's LAN address # (e.g. a WSL2-internal IP the host itself sees but containers can't route to). LMSTUDIO_BASE_URL=http://host.docker.internal:1234/v1 LMSTUDIO_API_KEY= # When LLM_PROVIDER=lmstudio, also set DM_MODEL above to the model id LM Studio reports at # GET /v1/models, e.g. DM_MODEL=qwen2.5-14b-instruct # Auth secrets — generate with: python -c "import secrets; print(secrets.token_urlsafe(32))" JWT_SECRET= RESET_PASSWORD_SECRET= VERIFICATION_TOKEN_SECRET= # Postgres POSTGRES_USER=dnd POSTGRES_PASSWORD= POSTGRES_DB=dnd DATABASE_URL=postgresql+asyncpg://dnd:changeme@postgres:5432/dnd # SMTP (password reset emails). Leave empty in dev — emails are logged to console instead. SMTP_HOST= SMTP_PORT=587 SMTP_USER= SMTP_PASSWORD= SMTP_FROM=no-reply@dungeonsdragons.tstratmann.de # Frontend / CORS FRONTEND_ORIGIN=http://localhost:5173