SR-42), a trigger chip showing how it started, and a run detail page that acts as mission control while calls are in flight, then settles into a full report once the last call lands.
Runs execute a configured plan: agent targets, customer flows, metrics, and run settings. If you haven’t built one yet, start with Run Plans.
Ways to trigger a run
Every run row carries a trigger chip telling you how it started:Run now
From Simulate → Simulations, click New Run, configure the run, and hit Run simulation. The split button’s menu also offers Schedule recurring… and Run once, later… if you’d rather not run immediately. Tick Save as plan if you want to keep the configuration. Otherwise the run is grouped under the One-off runs card on the runs hub. To run an existing plan, open it and click Run now.If your plan has without default values, a modal collects them before the run starts. See Variables.
Via API
Trigger a plan programmatically and pass runtime variables:simulationRunPlanJobId you can poll via GET /v1/simulation/plan/job/{jobId}.
The REST API keeps the older naming: customer flows are called
scenarios, so flow-scoped runtime variables are passed as an array of { scenarioId, variables } objects.Run statuses
Runs show one of five statuses:The API exposes finer-grained backend statuses (
CREATING_SNAPSHOTS, CREATING_SIMULATIONS, RUNNING_SIMULATIONS, ENDING_SIMULATIONS, CANCELLING). All of these render as Running in the UI, and TIMED_OUT renders as Failed.Watching a live run
Open a run while it’s executing and you get mission control. The header shows the plan name (or “One-off run #N”), the SR-number, Inbound/Outbound and template badges, the agents under test, and a pulsing Running · mm:ss clock. Banners walk you through the phases: “Starting the run”, then “All calls landed, compiling the report”.- Progress strip: how many calls are done, in flight, and still queued.
- Live now board: every active conversation. Voice calls (Phone, WebRTC, LiveKit) stream audio so you can listen in as they happen; chat sessions (WebSocket, ElevenLabs, Google CES, Kore) show a live transcript instead. Pending conversations show their state: Dialing, Connecting, or Waiting for call.
- What we’re measuring: the run’s checks, so you know what pass/fail will be judged on.
- Calls table: click any call to open a split detail pane with the transcript, agent expectations, and audio for voice calls.
Cancelling a run
Click the red Cancel run button in the header. Cancellation is graceful: queued calls stop, but in-flight calls run to completion and still appear in the results. The run settles with status Cancelled.The settled report
Once every call lands, the page becomes a report with four sections:
The verdict hero leads with a check pass-rate ring and a plain-language narrative (“Clean sweep: every check passed on every conversation.”), backed by stat cards: Clean calls, Calls run, and Trend or Weakest check.
Below it, the Success criteria card is the pass/fail decision itself: a PASSED or FAILED pill, one row per check with the pass rate it achieved against the minimum it had to clear, and the reasons any run failed. The score alongside it is the mean of the check rates, shown for trend lines only: a run can score 95 and still fail when one check missed its own bar. A plan carrying no pass/fail check reports no verdict, since there was nothing to judge. See Success criteria, and CI/CD for gating a pipeline on the same verdict.
Use the Export button to download the run’s results as a CSV. A run-name dropdown in the header switches between the plan’s executions (the newest is tagged “Latest”), or open the Comparison tab to view runs side by side.
Calls that don’t count
Not every call a run places ends up in its results. Every figure in the report, from the pass-rate ring to the per-check rates, the success criteria and the calls list, is built only from calls that tested what they were meant to test. Everything else falls into one of three groups, each shown separately so nothing disappears silently. Calls that couldn’t run on Roark’s side. Occasionally a simulation fails for a reason that has nothing to do with your agent: the speech pipeline couldn’t start, capacity wasn’t available, or post-call analysis failed. These are left out of every list and count. The calls list shows a quiet note (“N simulations could not run on our side”) with a link to reveal them. A call that fails this way before a conversation starts is retried once automatically and doesn’t take an extra concurrency slot, so the run still gets the calls it planned. Calls your agent caused to fail. When your agent didn’t answer, was busy, declined, hung up right away or went silent, that is a real result about your agent. These calls stay in the report as failures. Excluded calls. A call that ran but didn’t exercise what the run is testing is marked Excluded, with a one-line reason, and left out of every figure. The Show excluded toggle on the calls list reveals them.Over the API
GET /v1/simulation/job/{jobId} (and each job in GET /v1/simulation/plan/job/{jobId}) reports both on every job:
failureOwner: for aFAILEDorTIMED_OUTjob, who it failed because of.ROARKmeans the simulation itself failed on Roark’s side and says nothing about your agent;AGENTmeans your agent under test caused it. It isnullwhen the job didn’t fail.invalidation: present on an excluded job, with thereasonfrom the table above, a one-sentencedetail, andinvalidatedAt.
failureOwner: "ROARK" isn’t evidence about your agent, so don’t count it as a failure in your own reporting. Treat an invalidation reason you don’t recognise as “excluded”: new reasons may be added.
Re-running
The settled report’s Re-run menu offers two distinct modes:
Re-runs land in the same plan’s run history, so the Comparison tab picks them up automatically.
Iterations and concurrency
Set in the plan’s Advanced → Run settings:- Iterations: runs per test case, up to 100. Useful for catching intermittent failures. Outbound runs are limited to 1 iteration. See Inbound vs Outbound.
- Concurrency: parallel calls. The default is 5, capped by your account quota. Start there and raise it once you’ve confirmed your agent handles the load.
Next steps
Run Plans
Build reusable test suites
Schedules
Put plans on a cadence
Variables
Parameterize flows with runtime values
Enriched Simulations
Score metrics from your agent’s side of the call