Run hive-bench on your machine
A benchmarkable task is a completed Hive coding task in 9-done with a merged
GitHub pull request. The merged PR is the held-out reference; candidates receive
the frozen task inputs but never that patch.
You need Docker, Ruby 3.4, authenticated agent CLIs for the candidates and judges you select, and enough provider quota for complete planning, implementation, review, and judging runs.
Select Hive’s built-in workflow
Install Hive, then initialize a local benchmark project with the named workflow. You do not need to copy a workflow descriptor or clone hive-bench to select it.
Release status: the built-in
benchworkflow is currently available in Hive PR #734, not in the latestv0.4.1release. Use a source checkout of that PR until a release containing it is published.
hive init /path/to/benchmark-project --workflow bench
hive new <project-name> "benchmark my task"
hive status
The normal Hive daemon owns stage ordering, locking, retry behavior, and
per-project concurrency. Hive stores the versioned benchmark harness in
.hive-state/bench-runtime; no separate hive-bench checkout is needed to run
the campaign.
Extract your completed task
Create the corpus entry from the completed task and its merged reference PR:
cd /path/to/benchmark-project
ruby .hive-state/bench-runtime/harness/extract.rb \
--task-dir /absolute/project/.hive-state/stages/9-done/<task-slug> \
--repo owner/repository \
--repo-path /absolute/project \
--out corpus
Keep the generated corpus entry local when the task is private. Candidates do
not receive its held-out reference.patch.
Pre-register and run the campaign
Copy the packaged example into the new task folder reported by hive status,
then edit it as campaign.yml. Pin the
source repository, corpus tasks, candidate ids, judges and reasoning levels,
sample count, timeout, budget declaration, and exclusions before any model
spends tokens. Commit that file inside .hive-state; start a new campaign
instead of amending it after generation begins.
cp /path/to/benchmark-project/.hive-state/bench-runtime/campaign.yml.example \
/path/to/benchmark-project/.hive-state/stages/1-inbox/<campaign-slug>/campaign.yml
git -C /path/to/benchmark-project/.hive-state add \
stages/1-inbox/<campaign-slug>/campaign.yml
git -C /path/to/benchmark-project/.hive-state commit \
-m "Pre-register benchmark campaign"
hive approve <campaign-slug>
hive run <campaign-slug>
You may run stages manually or enroll the project in the Hive daemon. One campaign task processes its matrix in stable order; independent campaign tasks can run concurrently within Hive’s configured limits.
For the campaign contract, candidate profiles, and evidence format, see the benchmark workflow reference.
Submit a task to the public benchmark
Public submission adds a reusable task to the corpus. It does not spend model quota or immediately change the leaderboard.
hive bench submit <task-slug>
# Disambiguate the project when the slug exists more than once:
hive bench submit <task-slug> --project <project-name>
The task must be in 9-done, include worktree.yml and pr.md, belong to a
registered Hive project with a GitHub origin, and point to a merged reference
PR. Review the task for confidential material first: its specification, plan,
provenance, and merged reference diff become public.
Prepare the submission checkout
Running a local campaign uses Hive’s packaged .hive-state/bench-runtime and
does not require a hive-bench clone. Public submission does: use a separate,
clean checkout whose origin is writable—normally your fork—and point
HIVE_BENCH_PATH at its root.
git clone git@github.com:<your-user>/hive-bench.git /path/to/hive-bench
export HIVE_BENCH_PATH=/path/to/hive-bench
The command creates its submission branch from the checkout’s current HEAD,
so start from an up-to-date default branch and keep the checkout free of
unrelated changes.
Submit step by step
When you run hive bench submit <task-slug>, Hive:
- Runs hive-bench’s canonical extractor and secret scanner.
- Writes the generated entry to
corpus/<task-slug>. - Creates a
submit-<task-slug>branch in the checkout. - Commits the corpus entry and pushes the branch to the checkout’s
origin(normally your fork). - Opens a pull request against
ivankuznetsov/hive-bench.
Maintainer-gated CI then validates structure, provenance, candidate-visible answer leakage, secrets, and reference reproducibility before the task can join a public campaign.