Skip to content

Environment variables

This page is for operators who run their own OttoTester instance. On a hosted OttoTester, configuration is managed for you — you can skip this.

.env.example at the repo root is the source of truth. It lists every variable with a documented default and a comment explaining it. Copy it to .env and fill in real values. The groups below are an overview, not a replacement for that file.

OttoTester’s agents call an LLM. You set the provider and model:

  • OPENAI_API_KEY / ANTHROPIC_API_KEY / GOOGLE_GENERATIVE_AI_API_KEY — the provider key. Set the one your model needs.
  • DEFAULT_MODEL — the global model, as a provider:model spec (for example anthropic:claude-3-5-sonnet).
  • <AGENT>_MODEL — per-agent overrides (PLANNER_MODEL, GENERATOR_MODEL, HEALER_MODEL, and so on). Wiring each agent explicitly is recommended over relying on DEFAULT_MODEL.
  • MONGODB_URI — the MongoDB connection string.
  • MASTER_KEY — encrypts stored credentials. The server won’t start without it. Back it up — if it’s lost, every encrypted credential is unrecoverable.
  • BETTER_AUTH_SECRET / BETTER_AUTH_URL — session signing, and the URL the auth flow returns users to.
  • VITE_API_URL / VITE_WS_URL — where the frontend reaches the backend.
  • VITE_DOCS_BASE_URL — the docs origin the in-app help panel fetches from. Leave it unset to use the build-mode default.
  • VITE_BROWSER_TYPE (chromium / firefox / webkit), VITE_BROWSER_HEADLESS, and the VITE_BROWSER_VIEWPORT_* size variables — the default browser configuration for Playwright runs.
  • MAX_AGENT_ITERATIONS / MAX_PLANNER_ITERATIONS — caps on how long an agent loops before it stops. They protect a run from consuming unbounded LLM cost.