Skip to main content
All configuration lives on one frozen HarnessConfig object. Build it from the environment (every knob has a HARNESS_* variable) with explicit overrides winning:
Three fields have no environment variable and are set programmatically only: thresholds (a per-metric threshold map), signal_weights (forwarded to the platform’s signal aggregation), and session_metrics (the metric set to evaluate). Derived workspace paths (mailbox/, journal.jsonl, …) are computed from HARNESS_ROOT and cannot be overridden individually.

Workspace & CLI

Evaluation & polling

Thresholds & detection

Noticing

Cost & sampling

Rules & retrieval

Validation & the closed loop

Robustness & scale

Platform credentials

The pandaprobe subprocess inherits your environment, so the standard SDK/CLI variables apply unchanged: PANDAPROBE_API_KEY, PANDAPROBE_PROJECT_NAME, and PANDAPROBE_ENDPOINT for self-hosting. The harness itself never reads them — authentication is entirely the CLI’s concern.