agent-browser · git:20260912.6c490fd · 2026-09-12 · sha256 32bf6e4716e781ce

agent-browser git:20260912.6c490fdB

Immutable. This exact content is served forever at /api/v1/blob/32bf6e4716e781ce.

---
name: agent-browser
description: Browser automation via the deferred ``browser`` tool (open/snapshot/click/fill/screenshot) or agent-browser CLI via terminal. Use for interactive web browsing, login flows, or dynamic pages.
---

# Agent Browser

Interactive browser control uses the unified **`browser`** tool (recommended) or the [agent-browser](https://github.com/vercel-labs/agent-browser) CLI via **`terminal`**.

## Recommended: `browser` tool (deferred)

1. Activate agent mode: `scenario(action='activate', scenario_key='agent')`
2. Load the tool schema: `tool_search(query='select:browser')`
3. Run actions on one session:

```
browser(action='open', url='https://example.com')   # opens live view in EvoPanel browser side panel
browser(action='snapshot')
browser(action='click', ref='@e2')
browser(action='fill', ref='@e3', text='search text')
browser(action='press', key='Enter')
browser(action='snapshot')
browser(action='screenshot')   # optional still capture for history
browser(action='close')
```

Actions: `open`, `snapshot`, `click`, `fill`, `press`, `scroll`, `screenshot`, `back`, `close`.

## Fallback: terminal + agent-browser CLI

There are no legacy built-in `browser_*` tools — run CLI commands in the same terminal session for a multi-step flow.

## Prerequisites

```bash
npm install -g agent-browser
agent-browser install
```

Desktop installs bundle `tools/agent-browser/`; dev: `make setup-agent-browser`.

Optional CDP (logged-in Chrome): `EVOFLOW_BROWSER_CDP_URL=http://127.0.0.1:9222`

## Core workflow (snapshot + ref)

Use one terminal session and reuse `--session evoflow` (or any fixed name):

```bash
agent-browser --session evoflow open https://example.com
agent-browser --session evoflow snapshot -c
agent-browser --session evoflow click @e2
agent-browser --session evoflow fill @e3 "search text"
agent-browser --session evoflow press Enter
agent-browser --session evoflow snapshot -c
agent-browser --session evoflow close
```

Rules:

1. **Always snapshot** before choosing refs (`@e1`, `@e2`, …).
2. **Re-snapshot** after navigation or clicks that change the page.
3. Prefer refs from the latest snapshot over guessing CSS selectors.

## Common commands

| Command | Purpose |
|---------|---------|
| `open <url>` | Navigate |
| `snapshot -c` | Compact aria tree with refs (**primary way to “see” the page**) |
| `click @eN` | Click element |
| `fill @eN "text"` | Clear and type |
| `type @eN "text"` | Append text |
| `press Enter` | Keyboard |
| `scroll down 800` | Scroll |
| `screenshot <path>` | PNG capture (**pixels only — see below**) |
| `back` | History back |
| `close` | End session |

JSON output (for scripting): append `--json` before the subcommand, e.g. `agent-browser --session evoflow --json snapshot -c`.

## Seeing the page: snapshot vs screenshot

**Default — use `snapshot -c` (text)**

The compact snapshot returns an aria tree with `@e1`, `@e2`, … refs. The main agent reads this **text** to click, fill, and judge page state. Use this for almost all interactive browsing.

**When you need pixels — `screenshot` + `view_image`**

`terminal` running `screenshot` only saves a file and returns **text output** (path/status). It does **not** inject image pixels into the model context.

To let the main agent **see** a screenshot:

1. Activate agent mode if needed: `scenario(activate, agent)` (loads `view_image`).
2. Save under session outputs (absolute path or virtual path):

```bash
agent-browser --session evoflow screenshot /mnt/user-data/outputs/page.png
```

On Windows, use the resolved outputs path from the workspace block, e.g. `D:\...\outputs\page.png`.

3. Immediately call **`view_image`** with the same path (not another terminal command):

```
view_image(image_path="/mnt/user-data/outputs/page.png")
```

`ViewImageMiddleware` injects the PNG into the next model turn as multimodal input.

- Remote http/https image URLs are also supported by `view_image(image_path="https://…")`.

**When to screenshot**

| Need | Use |
|------|-----|
| Click, fill, read structure | `snapshot -c` |
| CAPTCHA, dense layout, visual-only UI | `screenshot` → `view_image` |
| Deliver a picture to the user | `screenshot` → cite `@@outputs/…@@` |

## When to use what

| Task | Approach |
|------|----------|
| Read article / static page | `web_fetch` first (cheaper) |
| Login, forms, multi-step UI | This skill + `terminal` + `snapshot -c` |
| Visual proof / layout check | `screenshot` → `view_image` |
| One-shot page text | `open` → `snapshot -c` → `close` |

## Tips

- Keep the same `--session` name across steps in one user task.
- Prefer **`snapshot -c`** over screenshot unless pixels are required.
- After **`screenshot`**, always follow with **`view_image`** if you need to understand the image yourself.
- Call `close` when done to free the browser.
- Do not use `agent-browser chat` unless the user explicitly wants the standalone AI mode (separate from EvoFlow's model).