tools

The browser

One browser tool on every surface: an embedded Chromium with audits on desktop, a headless webview in the TUI and in scripts. Local addresses by default.

Copy & share

Loading sections…

Connect MCP or install the Empryo skill

Section exports contain only that heading’s content. Markdown and text links fetch the selected content directly, without the rest of the page.

Overview

The agent gets a real browser through ONE tool: browser(action, ...params) - a single flat schema keyed by action, not two dozen separate tools. It exists on every surface:

SurfaceEngineWhat it can do
Desktop appEmbedded, tabbed Chromium (visible panel)Everything: drive, screenshot, audits, throttling, network recording, dev-server runner
TUI + headlessHeadless system webviewDrive, snapshot, screenshot, inspect, eval, tabs - no visible panel, no DevTools profiling

The same prompt works on both: snapshot refs, click/type/key (chords included), scroll, resize presets, wait, highlight, clear_storage.

Local-dev only

open/navigate accept localhost and private-network addresses only. Public internet URLs are blocked by default - the browser is for the app you are building, not for web browsing. Opt out per project with terminalBrowserAllowExternal: true (terminal) or the desktop's network-policy setting.

Snapshot first

browser(action:'snapshot') returns every visible interactive element as a short text tree with a stable ref per node:

  button "Save changes" ref=e7
* textbox "Email" ref=e3 [value=""]
  [scrollable "Results" y=0/1840 ref=e12]

The agent then acts on the ref - browser(action:'click', ref:'e7') - instead of guessing CSS selectors from source. A * marks elements new since the last snapshot, which is how the agent confirms what a click actually did without paying for a screenshot.

Desktop extras

The desktop's Chromium adds the DevTools tier:

  • audit - Core Web Vitals, page weight, a11y and SEO checks, horizontal-overflow detection
  • throttle - slow-3g/4g/offline network emulation plus CPU slowdown
  • network_start / network_stop - record every request (status, size, timing, failures)
  • run_server / stop_server / list_servers - start dev servers from .empryo/launch.json and open them in a tab
  • A visible, tabbed panel you share with the agent - tab leases keep two agents from typing into one page (see tabs)

Terminal browser

On the TUI and in --headless runs the same tool drives a headless system webview: WKWebView on macOS, WebView2 on Windows, Chrome/Chromium on Linux (install one, or point BUN_CHROME_PATH at it - without a Chrome the tool simply is not offered). Screenshots come back to the model as images, which is how the page is "seen" without a panel.

Turn it off entirely with "terminalBrowser": false in config.

Config

KeyDefaultEffect
terminalBrowseron where availableThe browser tool on TUI + headless
terminalBrowserAllowExternalfalseAllow public-internet URLs in the terminal browser
Documentation