Skip to content

Browser

The browser launches Chromium on the host, captures screenshots, and streams them to the client as a live image feed.

It also includes a lightweight remote DevTools surface inside the client for browser storage, network traffic, console output, and DOM inspection.

  1. The daemon launches headless Chromium via the Chrome DevTools Protocol (CDP)
  2. It navigates to the target URL and captures screenshots at a configurable interval (default 900ms)
  3. Screenshots are pushed to the client over the live event WebSocket
  4. The client can send interaction commands back to the headless browser

The browser supports remote interaction through CDP:

Action How it works
Tap / click Dispatches mousePressed + mouseReleased events at the tapped coordinates
Scroll Sends mouseWheel events with deltaX / deltaY
Text input Inserts text via Input.insertText
Special keys Sends key events (Enter, Backspace, Arrow keys, etc.)
Navigation Back, forward, and reload via Page.getNavigationHistory and Page.reload
Resize Updates the viewport dimensions dynamically
  • Low-bandwidth environments where downloading full page payloads is slow
  • Heavy pages with lots of JS, images, and fonts where you only need a visual
  • Quick checks without setting up anything else
  • Verifying what a headless browser renders on the host
  • Inspecting cookies, local storage, session storage, and IndexedDB schema from a mobile device
  • Inspecting DOM structure, attributes, and selected element styles from a mobile device
  • Reviewing request traffic and console output without opening a desktop browser

The browser exposes a compact remote DevTools panel in the client:

Panel What you can do
Console View recent console output, exceptions, and browser log entries
Network Inspect requests, response metadata, websocket traffic, and request/response bodies when available
Storage View cookies, localStorage, sessionStorage, quota usage, IndexedDB database schema, and clear or edit supported storage entries
Inspector Browse a partial DOM tree, pick elements from the live preview, and inspect attributes, inline styles, computed styles, and layout box geometry
  • Lower fidelity than a real browser (compressed JPEG screenshots, not native rendering)
  • Frame updates are periodic, not real-time (default every 900ms)
  • The browser runs on the host, so it sees the host’s network and user-agent
  • Built-in DevTools are lighter than full Chrome DevTools and still omit advanced features like full CSS rule tracing, layout tooling, and a complete network waterfall
  • Only supports HTTP/HTTPS targets