Live View

View as Markdown

Mint a short-lived viewer URL to watch a run as it happens. Embed it in your own UI to give operators eyes on the agent, or hand control to a human when a flow needs intervention.

Watch a run

1const live = await bctrl.runs.live(runId, { control: "none" });
2
3console.log(live.url); // embed this in an iframe
4console.log(live.expiresAt); // lease expiry

The URL is a time-limited lease. Mint a fresh one when it expires.

Human takeover

Set control: "input" to let a human drive the browser through the iframe:

1const live = await bctrl.runs.live(runId, {
2 control: "input",
3 expiresInSeconds: 600,
4});

While a human controls the runtime, treat it like any other controller - hosted invocations on the same runtime will report runtime.controller_busy.

Next