# LLM provider: one of openai, claude, anthropic, groq PROVIDER=groq # API keys (set the one matching your PROVIDER) OPENAI_API_KEY= ANTHROPIC_API_KEY= GROQ_API_KEY= # Optional model overrides # OPENAI_MODEL=gpt-4o-mini # CLAUDE_MODEL=claude-3-5-haiku-20241022 # GROQ_MODEL=openai/gpt-oss-120b # JWT signing secret — use a long random string in production SECRET_KEY=change-me-in-production # ── Production (HF Space + Netlify) ────────────────────────────────────────── # Netlify proxies all API calls, so cookies are same-origin from the browser. # These are the correct values for the HF + Netlify setup: COOKIE_SECURE=true COOKIE_SAMESITE=lax # Set to your Netlify site URL to restrict CORS (optional but recommended) # CORS_ORIGINS=https://yourapp.netlify.app # Structured JSON logs (recommended in production) LOG_JSON=true # ── Optional integrations ───────────────────────────────────────────────────── # Sentry DSN — error tracking activates only when this is set # SENTRY_DSN=https://...@sentry.io/... # Upstash Redis URL — enables Redis rate limiting + response cache # REDIS_URL=rediss://... # Neon/Supabase Postgres — leave unset to use SQLite (fine for demo) # DATABASE_URL=postgresql://... # ── Dev-only ────────────────────────────────────────────────────────────────── # Workaround for Anaconda SSL cert issues with Groq API # GROQ_SSL_VERIFY=false # Skip startup env-var check (useful for running tests without all keys) # SKIP_ENV_CHECK=1