NiceEval

AI-Native Eval for Agents.

Docs

Read the quickstart guide, then write an eval and run it across targets without building a bespoke harness.

your-project/
  • agents/web-agent.tsadapter
  • evals/
  • weather-tool.eval.ts
  • image-understanding.eval.ts
  • experiments/compare-models/
  • niceeval.config.tsconfig
$ niceeval
weatherpassed
fixtures/button91.7%
compare-models
  • gpt-5.4100%
  • deepseek-v4-pro60%
1

Connect

Connect your agent — or CC/Codex — via an adapter plus o11y.

2

Define

Write evals and experiments the way you'd write unit tests.

3

Evaluate

Evaluate in parallel.

Eval examples

eval chats, tool calls, and coding agents

Each card is a runnable defineEval file. Click a highlighted line to peek at replies and assertion notes.

multimodalMulti-turn image Q&A
passed
1import { defineEval } from "niceeval";
2
3export default defineEval({
4 description: "Evaluate an agent's multimodal ability across a multi-turn conversation",
5
6 async test(t) {
13
14 await t.group("follow-ups stay grounded in the image context", () => {
16 });
17
18 t.judge.autoevals
19 .closedQA("Does the assistant keep grounding every answer in the turn-one image, across all three turns, instead of making things up?")
21 },
22});

Agents are users too

turn evals into a loop

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.

evalexp localtriageshow @idtraceshow --sourcerefineclaude
terminalniceeval 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