Skip to main content

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.