Contexts
Every developer browser is a context with a name.browser_session actions:
Contexts run in parallel and are independent browsers: separate cookies, storage, extensions and windows. Use them for “work” versus “personal” logins, for a clean profile next to a populated one, or to run several scrapers behind different proxies at the same time. Tab ids are unique across contexts, so
browser_tabs shows all of them in one list with their context name.
Profiles
Profiles persist between launches:
Log in once and the session is there next time.
delete wipes it.
Launch options
headless: trueruns without a window. Watch and control it through the live view.devtoolsopens Chrome DevTools on every tab (default on unless headless) so you can follow the agent in the standard panels.proxytakeshttp://host:portorsocks5://host:portand applies to the whole context.extensionsloads unpacked extension directories. They are loaded through the protocol after launch, which is what current Chrome versions require.argsappends raw Chrome switches.chromePathorBROWSPARK_CHROMEpicks the executable when auto-detection finds the wrong browser.downloadDiroverrides~/.browspark/downloads/<context>;browser_downloadreports files landing there.
Live view
Every running context prints a live-view URL inbrowser_status:
CDP endpoint
browser_status and the launch result also print the browser’s WebSocket endpoint. Playwright and Puppeteer can attach to it:
Cleanup
The companion closes every developer browser it launched when it exits (Ctrl-C, stdin closing, SIGTERM).browser_session {action: "close", all: true} does it on demand.