Connect
Connect your agent — or CC/Codex — via an adapter plus o11y.
Read the quickstart guide, then write an eval and run it across targets without building a bespoke harness.
$ niceevalConnect your agent — or CC/Codex — via an adapter plus o11y.
Write evals and experiments the way you'd write unit tests.
Evaluate in parallel.
Eval examples
Each card is a runnable defineEval file. Click a highlighted line to peek at replies and assertion notes.
1import { defineEval } from "niceeval";23export default defineEval({4 description: "Evaluate an agent's multimodal ability across a multi-turn conversation",56 async test(t) {const first = await t.sendFile("evals/sample.png", "What is in this image?");t.succeeded();first.usedNoTools();const second = await t.send("What color is the background?");second.messageIncludes(/blue|white|square/i);await t.send("What color is the shape in the middle?");1314 await t.group("follow-ups stay grounded in the image context", () => {t.messageIncludes(/white/i);16 });1718 t.judge.autoevals19 .closedQA("Does the assistant keep grounding every answer in the turn-one image, across all three turns, instead of making things up?").gate(0.7);1/0.721 },22});
Agents are users too
The NiceEval CLI is designed for agents as much as for humans — not just an evaluation tool, but a framework that loops: build evals, run them, improve the agent system. Every output has an agent-readable face, so a coding agent drives the whole loop over bash.
niceeval exp local --output agent --force$ niceeval exp local --output agent --force NICEEVAL RESULT failed summary: 14 passed, 1 failed, 0 errored failures: - @1k2m9qtr weather/brooklyn [local] gate: tool was never called next: niceeval show @1k2m9qtr niceeval show @1k2m9qtr --execution