OpenEvalDocumentation
GitHub
RUN & INSPECT

Run your benchmark

Plan a small batch, control cost, and keep one aggregate.

On this page

Start with a scoped plan

terminal
bunx --bun @hona/openeval plan \
  --only-eval ask-dialect \
  --only-model provider/candidate-model \
  --only-repetition 1

bunx --bun @hona/openeval run \
  --only-eval ask-dialect \
  --only-repetition 1
ScopeWhat stays in the result
--only-evalOther evals and their active scores
--only-modelOther models and their active scores
--only-repetitionThe configured repetition count
No scope flagsAll missing or changed work

Repeat a scope flag to select multiple values. Scope controls execution, not the benchmark's denominator.

Reuse evidence deliberately

What changed?Next run
NothingReuse the selected candidate and judgment
Prompt, workspace, or candidate runtimeCollect new candidate evidence for affected inputs
Rubric or shared judge instructionsRejudge the retained recording
A new modelAdd its eval / repetition slots
--newCreate a separate benchmark result

Bound candidate and judge work

terminal
bunx --bun @hona/openeval run --max-cost 5
bunx --bun @hona/openeval run --final-only
ControlMeaning
concurrencyShared candidate / judge worker limit; default 10
--max-costAdmission budget using reported spend and reservations
Candidate timeoutAt most 45 minutes per candidate
--final-onlyJudge after the candidate finishes

A scheduling budget stops admitting new work. Active sessions finish normally, so final billing can exceed the admission budget. Work without a cost estimate can be deferred.

eval.ts · opt-in early stopping
import type { Eval } from "@hona/openeval";

export default {
  earlyStop: { minIntervalMs: 45_000, maxChecks: 12, maxCostUSD: 1 },
} satisfies Eval;

Early stopping requires every metric decision to be irreversible and non-null. Monitoring cannot steer the candidate. If monitoring pauses or exhausts its budget, final grading still follows execution.

Find in documentation