Run history
Every flow run records what happened, locally, in a .flowwright/ directory beside
your pipeline.ts.
.flowwright/
├── state.db SQLite: runs and stages — status, timing, exit codes
├── runs/
│ └── <run-id>/
│ ├── run.json summary of one run
│ └── logs/
│ └── <stage-id>.log full output for that stage
├── cache/ content-addressed cache
└── stash/ scratch space, scoped to a run
It's local and disposable — add .flowwright/ to .gitignore. Nothing is uploaded
anywhere. Run IDs look like 20260726-071053-0e4a: local timestamp plus a short
random suffix.
run.json is the summary:
{
"id": "20260726-071053-0e4a",
"pipeline": "acme-api",
"status": "success",
"exitCode": 0,
"durationMs": 717,
"stages": [{ "id": "install", "name": "Install", "status": "success", "durationMs": 403 }]
}
Recording is best-effort: if history can't be written, the run still executes and still reports. It will never fail a build.
flow list
flow list
RUN ID STATUS DURATION STARTED PIPELINE
20260726-071053-0e4a success 717ms 2026-07-26 05:10:53 acme-api
The 50 most recent runs, newest first. Timestamps are UTC. Two things won't appear
here: runs from flow run --no-history, and watch-mode runs — -w forces history
off so a watch session doesn't bury real runs.
flow logs
flow logs # the latest run
flow logs latest # same thing
flow logs 20260726-071053-0e4a
Prints every stage's captured output, in order, with its status.
Narrow it to one stage with --stage, which accepts either the stage ID or its
display name:
flow logs latest --stage lint
flow logs latest --stage Lint
acme-api · 20260726-071053-0e4a · success
✓ Lint (success)
[07:10:53] lint: 0 problems
A stage that produced no output shows (no output) rather than nothing at all.
flow backup
flow backup ./snapshot.db
backup: /path/to/snapshot.db
Writes a consistent snapshot of state.db. It's safe to run while something else is
using the database, so it won't tear a run in progress.
flow clean
flow clean
removed .flowwright/state.db
removed .flowwright/runs
✓ cleaned 533.3 KB — cache kept (use --all to clear it)
Removes run history and logs, keeping the cache — so the next run is still fast.
flow clean --all
removed .flowwright
✓ cleaned 533.3 KB
--all removes the entire .flowwright/ directory: history, logs, cache and
stash. The next run starts from nothing.