> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://platform.bctrl.ai/llms.txt.
> For full documentation content, see https://platform.bctrl.ai/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://platform.bctrl.ai/_mcp/server.

# Live View

> Watch a run in real time, with optional human takeover.

Mint a short-lived viewer URL to watch a [run](/sdk/runs) 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

```ts
const live = await bctrl.runs.live(runId, { control: "none" });

console.log(live.url);   // embed this in an iframe
console.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:

```ts
const live = await bctrl.runs.live(runId, {
  control: "input",
  expiresInSeconds: 600,
});
```

While a human controls the runtime, treat it like any other controller - hosted [invocations](/sdk/hosted-agents) on the same runtime will report `runtime.controller_busy`.

## Next

* [Recording](/sdk/recording) - replay after the run ends
* [Events & Activity](/sdk/events) - the structured timeline
* [Runs](/sdk/runs) - the run lifecycle