Skip to content

Configuration

All configuration is read from the environment exactly once into a frozen Settings object (src/agent/config.py). No other module calls os.getenv.

Run agent doctor to see what resolved.

Credentials

Variable Required Effect if missing
ANTHROPIC_API_KEY one of these four MissingCredentialsError at first model call
GROQ_API_KEY " "
OPENAI_API_KEY " "
HF_TOKEN / HUGGINGFACEHUB_API_TOKEN " " (also gates GAIA attachments and gold answers)
TAVILY_API_KEY no web_search returns an "unavailable" message
E2B_API_KEY no python_repl returns an "unavailable" message
LANGSMITH_API_KEY / LANGCHAIN_API_KEY no no traces; logs and metrics unaffected

Provider selection is first-match in the order above.

Models

Variable Default
ANTHROPIC_MODEL claude-sonnet-5
GROQ_MODEL openai/gpt-oss-120b
OPENAI_MODEL gpt-4o-mini
HUGGINGFACE_MODEL Qwen/Qwen2.5-Coder-32B-Instruct
LLM_BASE_URL provider default
LLM_TEMPERATURE 0.0

LLM_TEMPERATURE is not universal

Sonnet 5 rejects temperature with a 400, so the Anthropic client never sends it; depth is controlled by the effort settings below. The field still applies to the OpenAI-compatible providers.

Reasoning effort

Anthropic only. low|medium|high|xhigh|max; an unrecognised value is dropped with a warning rather than sent.

Variable Default Why
ROUTER_EFFORT medium picks one name and writes a sentence. At low it
returned an empty object and lost a task
SPECIALIST_EFFORT medium level-1 tasks are lookups and small computations
FINALIZER_EFFORT low formats an answer it has already been handed

Budgets

Variable Default Bounds
MAX_SUPERVISOR_STEPS 4 delegation rounds per task
MAX_WEB_ITERATIONS 5 web specialist tool calls, not turns
MAX_CODE_ITERATIONS 6 code specialist tool calls, not turns
HISTORY_WINDOW 8 messages replayed per model call
PER_QUESTION_TIMEOUT_S 300 hard cap per task
TOTAL_BUDGET_S 6000 hard cap for a whole run
MAX_ANSWER_TOKENS 128 finalizer output
MAX_ROUTER_TOKENS 512 router output; generous because thinking spends it
MAX_SPECIALIST_TOKENS 1024 client-wide default
REFUSAL_FALLBACK_MODEL claude-haiku-4-5 retried here when a classifier
declines a request. Empty disables the retry
TOKENS_PER_MINUTE 0 inter-task pacing; 0 disables. Set it only for a
provider with a known tight ceiling
MAX_TASK_COST_USD 0.50 stops the run if one task costs more
MAX_RUN_COST_USD 5.00 stops the run at this total. 0 disables
LLM_TIMEOUT_S 60 single request
LLM_MAX_RETRIES 2 fail fast rather than sit in backoff

Tools

Variable Default Purpose
MAX_SCRAPE_CHARS 30000 main driver of token spend
MAX_FILE_CHARS 60000 attachment read size
MAX_CODE_OUTPUT_CHARS 15000 sandbox output cap
SCRAPE_TIMEOUT_S 20 HTTP timeout
SANDBOX_TIMEOUT_S 60 sandbox lifetime
SEARCH_RESULTS 3 results per search

Paths and benchmark

Variable Default
AGENT_LOG_DIR logs
AGENT_DOWNLOAD_DIR logs/downloads
SCORING_API_URL the course scoring API
LOG_LEVEL INFO