Runs and run history
Every execution of a workflow produces a run. Runs have a status, a trace, and a retention window. The dashboard surfaces them in real time.
What's in a run
id— UUID assigned by the device, idempotent across upload retries.workflowIdandworkflowVersionId— what was running and which version.deviceId— which paired phone produced it.status—queued,running,success,failed,cancelled.startedAt,endedAt— ISO-8601 timestamps in UTC.trace— an ordered list of trace events; one per node executed.errorMessage— populated when status isfailed.
Trace events
Each trace event records which node ran, what kind it was (e.g. action.tapByText), the outcome (ok / skipped / failed), an optional message, and the wall-clock duration. The trace is what the dashboard renders when you click a run.
Where runs are stored
Runs are written to a local Room database on the device first, then uploaded to the cloud via runs.report. If the device is offline, runs queue locally and upload when network returns. The local queue is durable across reboots and app restarts.
Retention
Each user has a runRetentionDays setting (default 30). A background job prunes runs older than the configured window. Free plan caps the maximum retention; Pro and Team unlock longer windows.
Real-time updates
The dashboard subscribes to run.updated via Server-Sent Events. When a run finishes on your phone and uploads to the cloud, the activity feed updates within a second, no refresh needed.
Debugging a failed run
- Open the run from the dashboard or the Runs page.
- Read the trace. The last event with
outcome: "failed"is your culprit. - Common causes: a target text element didn't exist on screen (tap by text with no match), the targeted app wasn't installed, an HTTP call returned non-2xx, or the run exceeded the 10-minute hard cap.
Exporting runs
Pro and Team plans can export the last 90 days of runs as JSON from Settings → Data export. Free plan can export the last 30 days. Useful for offline analysis or for moving data into a spreadsheet.