Running and debugging
Running a flow
A run is one execution of a flow. Start one by hand or let a schedule start it, then watch it on the board: each process lights up as it runs, each object as it is generated, and every step keeps what it did.
Starting a run
Connect the start
The round play button at the right of the toolbar, Run flow, stays disabled until the Start node points at a process. Its tooltip then reads Connect the start node to a process first.
Press Run
A run always runs the whole flow, from the start. If the board changed since its last saved version, starting a run saves a new version first, so every run knows exactly which board it ran.
Watch it on the board
The new run opens on the board, which turns read-only and shows the run's version. A banner says Run #12 is running on version 7. Press Back to the board to return to editing while the run goes on.
Reading the board during a run
The open run refreshes every second and a half. Each process card takes the colour of its step, and its subtitle says the status in words:
Objects turn green as they are generated, with the subtitle Generated, or In state approved when they are in a state, and that state's pill is highlighted. Hover an object to see what it holds. Double-click a process or object to focus the run panel on it.
The run panel
The panel beside the board tells the run's story, top to bottom:
- Run #N and its status, and where it came from: The run of X in run #P for a run of a procedure or recorded flow process, A re-run of run #R from X for a re-run.
- Started … by …, took …; its agents used …: who started it, how long it took, and the tokens and cost its agents used.
- Stop run, while it is going.
- Its steps, in order. Each folds open; a step that is done starts folded. What a step shows is covered in Debugging a run.
Stopping
| Button | What it stops |
|---|---|
| Stop run | The whole run: steps still going are cancelled, and the run ends interrupted. |
| Stop step | One agent, script or Sentry step. That step fails and its branch ends, while the rest of the run goes on. A stopped step is not retried, and no failure handler takes it. |
While a run is shown, the button on a running card is a Stop button too.
How a run ends
| Status | Means |
|---|---|
| Running | Something is still going, or a person has yet to decide. |
| Done | Nothing is left to run, and no failure went unhandled. |
| Failed | Some branch failed and no failure handler took it. |
| Interrupted | A person stopped it, or the server restarted while it ran. |
| Terminated | A step generated a unique value another run already stored, a duplicate. Reviews still waiting end undecided. See Stored objects. |
Past runs and their data
The Runs group in the sidebar lists the flow's runs, newest first: Run #N with its status, its version, when it started and how long it took, and a clock for one a schedule started. Nested under a run are the runs of its recorded flow processes (one per list item) and its re-runs. Click one to open it on the board. A flow that never ran says No runs yet. Press play to run the flow.
Data in the toolbar opens a table of every run, one row each: the run, its status, when it started, the item it worked on, and a group of columns per object with its state and each field. Pick the columns with Columns. Click a cell to see it in full, or Show the whole object. Values a run was given rather than generated, such as the item a run of a recording flow process worked on, are styled apart: It was given to the run.
Searching and sorting the data
The query bar at the top of the Data page searches the runs the way Datadog's log explorer searches logs. The search runs on the server over every stored run, up to 20 000, not only the 200 the table shows. The footer says how many match, such as 12 of 340 runs match, and says when the 20 000 limit was reached. A shared struct's Records page is searched the same way.
As you type, the bar colours the query and underlines a key that doesn't exist. It suggests keys, then their values with how many rows have each; pick one with Tab or ↓. A row has to match every term, and matching ignores case.
| Query | Finds the rows |
|---|---|
timeout, "in sync" | With a value holding the text, or the phrase |
status:failed | Whose value for a key is that |
-status:done, NOT status:done | That don't match |
status:(failed OR interrupted), a OR b | That match either; brackets group terms |
title:*crash* | Matching a wildcard: * stands for any text |
@Invoice.amount:>100, :<=5, :[10 TO 20] | With a number above, at most, or between |
started:>now-1d, started:2026-10-16 | From a time: now-15m, now-4h, now-7d, or a date |
@Bug.owner:*, [email protected]:* | With any value for the key, or with none |
The table's own columns are keys as they are: run, status, started, started_by, item and parent on the Data page, and id, state, updated and run on the Records page. An object's fields take an @ and the object's name: @Invoice.amount, @Invoice.state, or @Invoice for an object without fields. The @ can be left out, and so can the object: title finds @Bug.title. Spaces in names become underscores, as in @Exception_Details.subject.
- Facets. Facets shows a panel on the left listing each column's values with how many rows have each. Tick values to include them, click a value's name to show only it, or tick no value. The other values keep their counts while one is ticked. A facet whose values are mostly all different starts folded. Values over 200 characters, such as an agent's long write-up, aren't listed, but searching for their text finds them.
- Time range. The menu beside the query bar, from Any time to Past 30 days, writes
started:>now-…into the query, orupdated:>now-…on the Records page. - Sorting. Click a column's name to sort by it one way, again for the other way, and a third time to stop. Times sort newest first on the first click. Columns you've hidden can still be searched and sorted by.
- From a cell. Click a short value in a cell for Show only these and Leave these out, which add it to the query.
- Links. The query and the sort are kept in the page's address, as
?q=…&sort=…, so a link opens the same view. The page also remembers each flow's last search.