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 showstarts 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 queryoutputs structured JSON for scripts and CI. Agents also use it when they need exact fields.niceeval viewis for people in a browser. It opens an access-protected Insight interface that listens only on a local address.