Scout

Config file

Every key in scout.config.json in one place — baseUrl, model, engine, profiles, recordVideo, videoSpeed — plus the environment variables that override them at run time.

scout.config.json lives at your project root and is created by scout init. It holds the few things Scout needs that aren’t a scenario: where your app runs, which model to verify with, and the auth profiles your flows use.

// scout.config.json
{
  "baseUrl": "http://localhost:3000",
  "model": "claude-sonnet-4-6",
  "engine": "agent-sdk",
  "recordVideo": false,
  "videoSpeed": 0.35,
  "defaultViewport": "mobile",
  "viewports": {
    "wide": { "width": 1920, "height": 1080 },
    "phone-xl": { "device": "iPhone 13", "width": 414 }
  },
  "profiles": {
    "anon": { "description": "Logged-out session" },
    "subscriber": {
      "description": "User with active subscription",
      "env": ["QA_SUB_EMAIL", "QA_SUB_PASSWORD"]
    }
  }
}

Keys

KeyTypeDefaultWhat it does
baseUrlstringThe URL every scenario is relative to. Overridable per run (see precedence below).
modelstringclaude-sonnet-4-6The model used for verification and healing. Scout infers the provider and engine from it — see Providers & credentials.
engine"agent-sdk" | "ai-sdk"inferredForces the run engine. Anthropic defaults to agent-sdk; Google/OpenAI use ai-sdk. Usually best left unset.
recordVideobooleanfalseWhen true, a verified scenario also produces a paced demo MP4 (enable per-run with --demo-video). Needs ffmpeg. See Run artifacts.
videoSpeednumber (0,1]0.35Playback pacing for the demo video. 0.35 is slower (easier to watch); 1 is natural speed.
defaultViewportstringmobileThe viewport a scenario runs in when it declares none. Must name a built-in or a viewports entry.
viewportsobjectNamed viewports, merged over the built-ins mobile/desktop/tablet (a same-named entry overrides one). Each value is a Playwright device preset and/or explicit fields (width, height, deviceScaleFactor, isMobile, hasTouch, userAgent) — they compose. Names are limited to [a-z0-9-]. See Viewports.
testIdAttributestringdata-testidThe attribute the selector ladder prefers when recording a stable handle for each interaction. Set it to data-test, data-qa, … if your app uses a different convention — the ladder reads it and getByTestId resolves it on replay.
profilesobjectNamed auth profiles. Each has a description and an optional env array naming the env vars its login needs. See Auth profiles & secrets.

Environment overrides

Some keys can be overridden at run time without editing the file — handy for CI and parallel worktrees:

VariableOverridesNotes
SCOUT_BASE_URLbaseUrlPrecedence: --base-url flag > SCOUT_BASE_URL > config.
SCOUT_ENGINEengineagent-sdk or ai-sdk. Note: ai-sdk can’t reuse a Claude Code session — Anthropic then needs ANTHROPIC_API_KEY.
SCOUT_RECORD_VIDEOrecordVideoSet to 1 to enable the demo video for one run.
SCOUT_VIEWPORTForces every scenario into this one viewport for the run (ad-hoc; mirrors scout go --viewport). Must exist in the registry; the run never persists a script.
FFMPEG_PATHPath to ffmpeg if it isn’t on PATH.
SCOUT_VIDEO_FONTPath to a .ttf for the burned-in video captions (otherwise autodetected).

Never put a literal secret in the config. Application secrets belong in profiles.<name>.env and $ENV: placeholders — see Auth profiles & secrets.