Skip to main content
Your team already looks at experiment results in Braintrust, or has an internal dashboard. You want results to show up there automatically after NiceEval runs, without exporting them by hand. That is what a Reporter does: during this one run, it sends results to an external system. It only handles reporting for “this run”, and the results NiceEval saves do not change because of it. To reread, compare, or share results afterwards, you still use show, view, and query. One niceeval exp produces all of these at once:

Choose the right way to report

Push to an external system with a Reporter

Configure the project’s default Reporters in reporters in niceeval.config.ts; an eval’s reporters are merged with them. For field descriptions, see the defineConfig reference. A Reporter gets the results known during this run. The external system can receive a run summary, each Attempt’s result, or viewing links. To read the complete results, reopen the saved results with the Run ID from the receipt. A Reporter cannot:
  • treat data in the external system as NiceEval results;
  • replace the verdicts, usage, assertions, or diagnostics NiceEval saves;
  • make query, show, or view read data from the external system instead;
  • write the external system’s results back into .niceeval/record.sqlite.

Output JUnit in CI

The most direct way to connect a CI platform is JUnit:
NiceEval writes a temporary file first, then replaces the target file in one step, so the CI platform never reads half-written content. JUnit only describes this run, and the results NiceEval saves remain authoritative. For the full CI configuration, see Run Evals Automatically in CI.
--json outputs this run’s NDJSON. The last line is the receipt, containing invocationId, createdRunIds, publicationCutoff, the start time, the end time, and completion. External automation can save the receipt, then open the matching Runs with createdRunIds:
When a script needs structured results, first run pnpm --silent exec niceeval query discover to find the available queries. Do not treat progress or diagnostic lines as a long-term result format. They only describe what is happening in this run.

Principles for connecting external systems

  1. External reporting uses only information known during this run.
  2. Credentials go in environment variables and are never written into any output.
  3. CI gates look at the exit status.
  4. Use the receipt’s createdRunIds to link external workflows with the results NiceEval saves.
  5. When results need review, people open that Run with show or view, and automated flows use query.