# --- LLM (OpenRouter) — slugs vérifiés sur https://openrouter.ai/models le 2026-09-05 OPENROUTER_API_KEY= OPENROUTER_BASE_URL=https://openrouter.ai/api/v1 MODEL_TUTOR_PRIMARY=anthropic/claude-fable-5.1 MODEL_TUTOR_FALLBACK=openai/gpt-5.5 MODEL_REASONING=anthropic/claude-opus-4.6 MODEL_FAST=openai/gpt-5.4-nano MODEL_VISION=anthropic/claude-sonnet-4.6 # OpenRouter n'expose pas de modèle d'embeddings : endpoint OpenAI-compatible optionnel (sinon BM25 seul) EMBEDDINGS_BASE_URL= EMBEDDINGS_API_KEY= MODEL_EMBEDDINGS= LLM_MONTHLY_BUDGET_USD=2000 # --- Recherche web FIRECRAWL_API_KEY= # --- Données (défaut : SQLite dans DATA_DIR ; PostgreSQL via DATABASE_URL) DATA_DIR=./data DATABASE_URL= REDIS_URL= # --- Sandbox (service séparé sandbox-runner) SANDBOX_URL=http://127.0.0.1:8191 SANDBOX_TIMEOUT_S=30 SANDBOX_TOKEN= # --- Auth JWT_SECRET=change-me ALLOWED_EMAIL_DOMAINS=uqo.ca INVITED_EMAILS= PROFESSOR_EMAILS=prof@uqo.ca ADMIN_EMAILS= # Courriels (invitation « choisis ton mot de passe », mot de passe oublié) : Resend d'abord, SMTP en repli RESEND_API_KEY= MAIL_FROM=UQO-Chat MAIL_REPLY_TO= INVITE_TTL_DAYS=14 RESET_TTL_MINUTES=60 SMTP_HOST= SMTP_PORT=587 SMTP_USER= SMTP_PASSWORD= SMTP_FROM=no-reply@uqo-chat.app # --- App APP_ENV=development APP_URL=http://localhost:8190 PORT=8190 CORS_ORIGINS=http://localhost:5173,http://localhost:8190 LOG_LEVEL=INFO TERM_LABEL=Automne 2026 COURSES=IMM1003,IMM1033 # --- Frontend (build-time) VITE_API_URL=/api/v1 VITE_USE_OFFICIAL_LOGO=false VITE_COURSES=IMM1003,IMM1033 # --- ngrok (operator k8s ou agent sur le nœud) NGROK_API_KEY= NGROK_AUTHTOKEN=