Skip to main content
Humans-in-the-loop can access the live view of Kernel browsers in real-time to resolve errors or take unscripted actions. To access the live view, visit the browser_live_view_url provided when you create a Kernel browser:

Query parameters

The browser_live_view_url supports additional query parameters to customize the live view:
  • readOnly (bool): when set to true, the view will be non-interactive.
Example:

Embedding in an iframe

The live view URL can be embedded in an iframe to integrate the browser view into your own application or dashboard. If your environment restricts outbound traffic, allow the Live View domains and ports before you embed it.
Embedded third-party iframes like live view must have focus to receive keyboard events. On Safari, focus requires a user-initiated event — calling .focus() on the iframe element within a user-initiated event handler is recommended.To enable clipboard sharing, add allow="autoplay; clipboard-read; clipboard-write" to the iframe element.If your application uses a Content Security Policy (CSP), you must add the following directives to allow the live view iframe and its WebSocket connection. See Network access for the complete firewall and CSP requirements.

Parent frame events

When the live view is embedded in an iframe, the client posts messages to the parent window as the connection and playback state change, and accepts one message back. Use them to tell a working viewer apart from one that never starts.

Sent to the parent

Accepted from the parent

KERNEL_CONNECTION_TIMEOUT, KERNEL_READ_ONLY_CHANGED and KERNEL_SET_READ_ONLY require a recent browser image. KERNEL_CONNECTED, KERNEL_PLAYING and KERNEL_PAUSED are available on all current images, but capabilities is sent only by recent ones — older images post { type: 'KERNEL_CONNECTED', connected: true }, so treat a missing capabilities as unknown rather than unsupported.Messages are exchanged with the parent origin derived from document.referrer. If the referrer is unavailable — for example under a restrictive Referrer-Policy — the client cannot resolve your origin and will reject KERNEL_SET_READ_ONLY.

Detecting a viewer that never starts

Gate on KERNEL_PLAYING. It fires only once frames actually arrive, so it is the one signal that distinguishes a working viewer from one that is still connecting or has silently failed. Start a timer when you mount the iframe and remount if KERNEL_PLAYING has not arrived:
Typescript/Javascript
Do not gate on KERNEL_CONNECTION_TIMEOUT alone. The watchdog behind it is cleared once negotiation begins, so a connection that stalls after that point never emits it. Log it alongside KERNEL_PLAYING to capture the connection state at the moment things stalled.

Kiosk mode

Kiosk mode provides a fullscreen live view experience without browser UI elements like the address bar and tabs. You can enable kiosk mode when creating a browser by setting the kiosk_mode parameter to true.
Kiosk mode triggers a Chromium restart, which can take several seconds. Use browser pools to access kiosk mode browsers faster.

URL lifetime

browser_live_view_url becomes invalid once the browser is deleted manually or via timeout.