Promptfoopromptfoo 0.123.0 · Node 22.22+ · Python 3
0%
1
Curious builder0 XP earned · 300 to level 2
0 daysFinish a lesson to begin
Badge collection0 of 6 unlocked
25 small wins to finish your pathNext lesson

promptfoo view: every run kept

The table scrolls away. Every run is also written to a local database, and one command opens it in a browser.

This is the tool worth learning early. Once you can see a run rather than remember it, everything after this lesson can be checked instead of trusted.

Where runs are kept

Promptfoo writes results under your home directory, in ~/.promptfoo, and keeps them until you delete them. Nothing is uploaded. The list of what is there is a command:

Example
promptfoo eval > /dev/null; promptfoo eval > /dev/null; promptfoo list evals -n 5

Each line is one run: its id, when it happened, and how it did. Two runs of the same config appear as two rows, which is what makes a comparison possible at all.

Opening the viewer

bash
promptfoo view

That starts a small web server on port 15500 and opens a browser at it. You get the same grid as the terminal, except every cell can be clicked: the full answer, every assertion with its score and reason, and the exact prompt that was sent. When an answer is long, the terminal truncates and the viewer does not.

The viewer also holds the run history. You pick an older eval from a menu and the grid changes to that run, which is how you check whether last night's change helped.

The viewer is read only, and local. It serves what is already in ~/.promptfoo. Nothing leaves your machine unless you run promptfoo share, which is a separate command and tells you before it uploads anything.

Reading a failure in it

This is the part worth the visit. In the terminal a failed cell says the check did not pass. In the viewer the same cell lists every assertion on that test, each with its own verdict, score and reason, so you can see that three checks were fine and the fourth was not. Lesson 11 gives those checks names, and the viewer shows the names.

Try it yourself
  • Run promptfoo view and click the failing cell from lesson 2.
  • Run the eval twice, then use the viewer's eval picker to switch between the two runs.
  • Find where promptfoo stores its data: ls ~/.promptfoo.

This is what real progress feels like.