Skip to main content
After a run ends, you might read results in the terminal, browse conversations in a browser, or have a CI script read JSON. All three see the same results with different layouts. This page explains where results are stored, how they are read out, and what each of the three read entry points is responsible for.

Results are stored in one file

Each project’s run results are stored in .niceeval/record.sqlite. This is Record. When niceeval exp starts, it creates a Run and records every Attempt planned for this run. Each Attempt publishes on its own as soon as it finishes and can be read right away, without waiting for the whole Run to end. Published Attempts and ended Runs are never modified again. After a run has fully ended, the file itself can be copied or archived. To read a copy someone gave you, add --record <file> to query or show. NiceEval fully validates the file first, then opens it read-only.

NiceEval fixes the read rules

When results are read, NiceEval’s fixed built-in queries decide which Runs to select, up to which point to read, which results are missing, what issues exist, which evidence to use, and how to compare. A query returns plain data. It never hands the caller a database connection, a file path, or a reader object. The built-in queries cover Runs, Attempts, traces, diffs, sources, artifacts, and comparisons between Runs. You cannot customize reads with ad hoc SQL, JSON paths, or formulas.

Three read entry points

  • niceeval show starts with an overview in the terminal, then drills into one Attempt’s conversation, timing, and changes. Both you and Coding Agents use it to investigate problems.
  • niceeval query outputs structured JSON for scripts and CI. Agents also use it when they need exact fields.
  • niceeval view is for people in a browser. It opens an access-protected Insight interface that listens only on a local address.
All three entry points read the same query result. Each one only handles its own layout: JSON, terminal text, or browser page. None of them selects results on its own or recomputes pass rates or scores, so the same Run reaches the same conclusions in all three places. For the full commands, see CLI. For how the results file is copied and validated, see Record.