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.
Connect 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";2import { pattern } from "niceeval/expect";34export default defineEval({5 judge: true,6 description: "Evaluate an agent's multimodal ability across a multi-turn conversation",78 async test(t) {const first = await t.sendFile("evals/sample.png", "What is in this image?");await first.succeeded().orStop();first.usedNoTools();const second = await t.send("What color is the background?");t.check(second.message, pattern(/blue|white|square/i));const third = await t.send("What color is the shape in the middle?");1516 await t.group("follow-ups stay grounded in the image context", () => {t.check(third.message, pattern(/white/i));18 });1920 t.judge.autoevals21 .closedQA("Does the assistant keep grounding every answer in the turn-one image, across all three turns, instead of making things up?", {22 input: "A user asks about a blue image with a white square, then asks for its background and shape colors.",23 output: [first.message, second.message, third.message].join("\n"),24 }).gate(0.7);1/0.726 },27});
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 query discover niceeval query run --request runs-list.json