browser_live_view_url provided when you create a Kernel browser:
Query parameters
Thebrowser_live_view_url supports additional query parameters to customize the live view:
readOnly(bool): when set totrue, the view will be non-interactive.
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
Both terminal events carry the same
reason, so branch on it instead of matching message text:
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.KERNEL_CONNECTION_FAILED requires a browser image that includes the connect-failure fix. On images without it the client fails silently instead, so treat a missing KERNEL_CONNECTION_FAILED as unknown rather than as a successful start, and keep gating on KERNEL_PLAYING. On images before that fix, KERNEL_CONNECTION_TIMEOUT carries reason: 'connection timeout' rather than a stage name.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 onKERNEL_PLAYING. It fires only once frames actually arrive, so it is the signal that distinguishes a working viewer from one that is still connecting or has silently failed. The terminal events below tell you when the client has stopped trying. Start a timer when you mount the iframe and remount if KERNEL_PLAYING has not arrived:
Typescript/Javascript
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.
KERNEL_CONNECTION_FAILED and KERNEL_CONNECTION_TIMEOUT are both terminal, and a failed connect posts one of them, never both. Whichever arrives, nothing further happens until the iframe reloads. Surface a persistent message rather than remounting blindly: a peer or unsupported reason is a property of the browser environment, so a remount repeats it, while a transport reason is worth one retry.
The client does not retry a connect itself, so whatever reason you get is the first failure, and whether to try again is your call.
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 thekiosk_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.