GOOGLE_API_KEY=your-gemini-key-here GROQ_API_KEY=your-groq-key-here PYTHONIOENCODING=utf-8 # --- LLM providers --- # groq (default) | gemini | claude_local. claude_local runs the claude CLI on this machine with your own Claude # subscription: local runs only (refused in the clouds, CI, containers and with a cloud STATE_BACKEND), and # `serve` needs --host 127.0.0.1. # MAIN_LLM_MODEL=groq # EVAL_LLM_MODEL=groq # the judge and ingest-batch's question writer # CLAUDE_LOCAL_MODEL=haiku # haiku | sonnet | opus # CLAUDE_LOCAL_EFFORT=low # CLAUDE_LOCAL_MAX_CONCURRENCY=2 # --- Persistent state snapshots --- # STATE_BACKEND=local # local | azure_blob | s3 # LOCAL_DIR=/tmp/state/.local # DATA_DIR=/tmp/state/data # AZURE_STORAGE_ACCOUNT_URL=https://.blob.core.windows.net # AZURE_STATE_CONTAINER=rag-state # AZURE_STORAGE_CONNECTION_STRING= # Azurite only # S3_STATE_BUCKET= # --- MCP server (HTTP transport at /mcp) --- # Localhost-only Host header check. Keep it on locally; public deployments set it to false. # MCP_DNS_REBINDING_PROTECTION=true # --- Classical routing --- # A chunk at least this similar to the question overrules the classifier's "no retrieval". # Measured on 2026-10-02 (.plan.md, Phase 7); re-measure after large batches. # CORPUS_PROBE_THRESHOLD=0.55