Skip to content

Browser Automation

The web_browser tool drives a real browser over the Chrome DevTools Protocol. The session persists across calls, so an agent can navigate, interact, and extract across multiple tool invocations.

experimental The CDP-backed browser tool works

today; some provider integrations are newer than others. See the Status per backend column below.

Supported backends

Glue ships with seven browser backends today. Each implements the same BrowserEndpointProvider interface (packages/glue_strategies/lib/src/web/browser/providers/) — picking one is a config change, not a code change.

BackendWhere it runsStatusBest for
localYour machine · Puppeteer-launched ChromeshippingQuick iteration. headed: true lets you watch it work.
dockerLocal container (browserless/chrome)shippingIsolation from your host without leaving your machine.
browserbaseCloud · browserbase.comexperimentalHosted sessions with session replays.
browserlessCloud or self-hosted · browserless.ioexperimentalCheap scale-out; self-hostable.
steelCloud · steel.devexperimentalAgent-focused cloud sessions.
anchorCloud · anchorbrowser.ioexperimentalAgentic browser sessions with live view and managed automation features.
hyperbrowserCloud · hyperbrowser.aiexperimentalAgent-focused cloud sessions with fast launches and a live view.

Available actions

The tool exposes a small, stable surface: navigate, screenshot, click, type, extract_text, and evaluate. Actions run against the current session so a single prompt can chain steps.

Configuration

Configure the backend under web.browser in ~/.glue/config.yaml.

local — local Chrome or Chromium

yaml
web:
  browser:
    backend: local
    headed: false # set true to watch the browser interact live

docker — headless Chrome in a container

yaml
web:
  browser:
    backend: docker
    docker:
      image: browserless/chrome:latest
      port: 3000

The container is ephemeral: one per session, torn down when the session closes. No state leaks into your host.

browserbase — cloud via Browserbase

yaml
web:
  browser:
    backend: browserbase
    browserbase:
      api_key: your-key
      project_id: your-project

browserless — cloud or self-hosted

yaml
web:
  browser:
    backend: browserless
    browserless:
      api_key: your-key
      base_url: https://chrome.browserless.io

Point browserless.base_url at your own deployment to self-host.

steel — cloud via Steel

yaml
web:
  browser:
    backend: steel
    steel:
      api_key: your-key

anchor — cloud via Anchor Browser

yaml
web:
  browser:
    backend: anchor
    anchor:
      api_key: your-key

hyperbrowser — cloud via Hyperbrowser

yaml
web:
  browser:
    backend: hyperbrowser
    hyperbrowser:
      api_key: your-key

Credentials

Cloud backends need an API key. Prefer env vars or ~/.glue/credentials.json over writing keys into config.yaml.

Pairing with runtimes

For risky or noisy browsing, pair the browser backend with a runtime that doesn't touch your host:

GoalRuntime + backend
Develop an automation quicklyhost runtime + local browser (headed: true)
Untrusted site inspectiondocker runtime + docker browser
High-volume scrapingdaytona / sprites / modal runtime + steel / browserbase browser
Agent-driven multi-step workflowsAny runtime + steel, browserbase, anchor, or hyperbrowser

Providers we're evaluating

More backend options are tracked in the backlog — see TASK-28: Evaluate and add new browser-automation providers. Next up: a first-party platform browser (Cloudflare Browser Rendering) and a residential-proxy scraping backend (Bright Data Scraping Browser).

See also

Released under the MIT License.