Generated environments
On the Environments page, pick a harness and a training set, and the training set’s successful examples become the task list, one JSON object per line:task is what the agent is asked to do and expect is the known-good outcome the judge grades against. Tasks can also carry an explicit verifier tag, which the bare form is shorthand for:
expect as evidence of what success looks like rather than the only acceptable answer. A different approach or format than the reference still passes; empty or task-echoing attempts fail without a judge call. The judge is deliberately never the model under test (set JUDGE_MODEL to change it; the runner warns if you point it at the model under test), and swapping in your own agent per task is one variable: BELVEDIR_HARNESS_CMD, a shell command that receives the task on stdin and prints the attempt.
Only harnesses that accept a task list can back an environment: the Belvedir Runner, the agent scaffolds from the catalog (OpenClaw, Hermes, OpenCode, Prime Agent, Pi, QM, Mastra) or a repo of your own that reads the file at BELVEDIR_TASKS_FILE and handles that format.
Synthesized verifiers
On hosted Belvedir, the wizard offers Synthesize verifiers: instead of grading every task against its recorded output alone, Belvedir writes a rubric per task — specific, checkable criteria distilled from the training set’s own successes and failures — and the runner grades each criterion independently with partial credit. Rubrics only ship if they survive two gates: they must reproduce the outcomes of held-out examples the synthesis never saw (pass the recorded successes, fail the recorded failures), and no-effort attempts must not pass them. A synthesis that fails its gates falls back to the standard judge automatically, and the wizard tells you. Synthesis takes a few minutes and needs a training set slightly above the usual floor (the held-out gate set comes on top of the 50 tasks). Complete suites like SWE-bench bring their own tasks and are refused. The generated task set caps at 512 KB, and very long inputs or outputs are truncated per field so 50 tasks always fit; a training set whose examples are too long to be useful is refused with a clear message. Environment runs are ordinary benchmark runs: same sandbox, same pricing, same results contract. The Environments page can also run simulations: scripted episodes of an environment against an agent model you pick, without a full benchmark launch (belvedir simulations run <simulation-id> --episodes 8 from the CLI).
Use your own codebase as the harness
The best harness is your own codebase: pick one of the project’s connected repos and the sandbox clones your real agent (private repos authenticate through your GitHub connection automatically; no token to paste), so the model is benchmarked in the exact harness it runs in production. Your repo needs a small entrypoint that reads the task file, runs each task through your agent, and writesresults.json with a numeric score; the same automatic authentication applies to any harness whose repo is connected to the project.