Skip to main content
Run your golden dataset against the PR’s version of your agent, then gate the run: an absolute rating floor, a no-regression check against the dataset’s previous run, or both. The gate is a plain exit-code contract, so it drops into any CI system.
The two checks:
  • fail_under - the run’s average judge rating must be at or above the floor. Works from the very first run.
  • no_regression - the average must not drop more than tolerance (default 0.5) below the dataset’s previous completed run. The tolerance exists because judge scores are noisy: an exact comparison would flake builds on variance, not regressions. Requires run history, so point CI at a persistent self-host instance rather than an ephemeral one.
gate() prints a per-check verdict into the CI log and returns a GateResult (passed, exit_code, average_rating, baseline_average, checks). The same check is a plain HTTP call if you’d rather script it raw:

GitHub Actions

Pointing at a persistent self-host instance (recommended - run history enables no_regression):
No persistent instance reachable from CI? Launch an ephemeral engine inside the job and gate on the floor only (a fresh database has no baseline to regress against):

What to gate on

Every recorded gate lands in the dashboard’s CI Gates history - the same list is readable from the SDK for scripting (e.g. a weekly “how often did gates fire” report):
The strongest gate is a dataset curated from production: real failures as regression cases mean “the PR doesn’t re-break what production already taught you.” Pair fail_under (an absolute quality bar) with no_regression (this PR made nothing worse) - they catch different failure modes.

Gate history in the dashboard

Every gate the SDK runs is recorded by default (record=True, with a caller label like "github-actions"), and the dashboard’s CI Gates tab (in the sidebar under Automations) lists that history newest-first: verdict, dataset, average vs baseline, which checks ran, who called. The same page has a preview (“would the latest run pass these thresholds?”) that is never recorded - so exploring thresholds can’t pollute the history real CI jobs write - plus the copy-paste setup snippets. Pass record=False to gate_run() for an unrecorded check from code.

Datasets from Production

Grow the golden dataset the gate runs against

Hosted CI/CD API

The hosted platform’s equivalent pipeline