Skip to main content
The box browser is a real Chromium, and you can drive it with the tools you already use. cdpUrl() returns an authenticated Chrome DevTools Protocol WebSocket URL that Playwright, Puppeteer, or Stagehand can connect to directly. There is no browser to install and nothing to manage.
Like live view URLs, the CDP URL carries its auth token in the URL. Anyone who has it gets full control of the browser, so treat it as a secret.

Playwright

playwright-core is enough here, since you connect to the box’s Chromium instead of launching one locally:

Puppeteer

scrape.ts

Stagehand

Stagehand can use the box browser as its local browser:
agent.ts

Mixing CDP and SDK control

CDP clients and the SDK drive the same browser and the same tabs. A page opened by Playwright shows up in box.browser.listTabs(), and a tab created by the SDK is visible to Playwright. You can script the predictable steps like login and pagination with Playwright, hand the tab to act or run for the steps that are easier to describe in natural language, and watch either through Live View. As a rule of thumb: use CDP when you want precise, repeatable scripting with no LLM in the loop. Use AI Actions when describing the task is easier than scripting it.