Ultra-fast browser CLI for LLM agents. Rust/CDP based, 50x less memory than Playwright.
npm install airbrowUltra-fast browser CLI for LLM agents. Rust/CDP based.
Add the skill to your AI coding assistant for richer context:
``bash`
npx add-skill RenKoya1/airbrow
Works with Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, Goose, OpenCode, and Windsurf.
| Metric | airbrow | agent-browser | playwright-cli |
|--------|------|---------------|----------------|
| Memory | 2.3MB | 1.9MB* | 60MB |
| Context | ~6KB | ~90KB | ~89KB |
| Binary | 1.8MB | 670KB* | Node.js |
*agent-browser CLI only; requires Playwright backend
| Tool | Hacker News | GitHub | Total | vs airbrow |
|------|-------------|--------|-------|---------|
| airbrow | ~3KB | ~3KB | ~6.6KB | 1x |
| agent-browser | ~60KB | ~30KB | ~90KB | 14x larger |
| playwright-cli | ~58KB | ~31KB | ~89KB | 13x larger |
14x smaller context. 25x less memory. Zero dependencies.
`bash`
cargo build --release
./target/release/airbrow
`bash`
npm install -g airbrow
airbrow install # Download Chromium (optional if Chrome installed)
airbrow
``
> open # Start browser
> goto https://example.com # Navigate
> observe # Get interactive elements
{"e":[["r1","a","More info"],["r2","btn","Search"]],"n":2,"t":"Example","u":"https://example.com/"}
> click r1 # Click by ref
> fill r2 "hello world" # Fill input
> screenshot shot.png # Take screenshot
> quit # Close
| Feature | airbrow | agent-browser |
|---------|------|---------------|
| Focus | Speed & minimal context | Semantic understanding |
| Context size | ~6KB | ~90KB (14x larger) |
| Element refs | r1, r2 | @e1, @e2 |
| Output | Compact JSON | Full YAML tree |
| PII redaction | Manual | Automatic |
| Use case | LLM agents | Complex semantic tasks |
| Feature | airbrow | playwright-cli |
|---------|------|----------------|
| Focus | LLM optimization | Full Playwright API |
| Memory | 2.3MB | 60MB (25x more) |
| Context | ~6KB | ~89KB (13x larger) |
| Startup | 1.8s | 5.6s (3x slower) |
| Tracing | No | Yes |
| MCP support | No | Yes |
| Use case | LLM agents | MCP/IDE integration |
| Metric | airbrow | Competitors | Advantage |
|--------|------|-------------|-----------|
| Context | ~6KB | ~90KB | 14x smaller |
| Memory | 2.3MB | 60MB | 25x less |
| Dependencies | None | Node.js+Playwright | Zero |
| Start browser (add --headed to show) |
| reconnect | Reconnect to existing browser |
| quit | Close browser and exit |$3
| Command | Description |
|---------|-------------|
| goto | Navigate to URL |
| back | Go back |
| forward | Go forward |
| reload | Reload page |$3
| Command | Description |
|---------|-------------|
| observe | Get interactive elements with refs (r1, r2...) |
| snap | Get URL and title only |
| snapshot | Full page with text content |
| content | Get main HTML |$3
| Command | Description |
|---------|-------------|
| click | Click element |
| fill | Fill input field |
| type | Type character by character |
| press | Press key (Enter, Tab, Escape...) |
| hover | Hover over element |$3
| Command | Description |
|---------|-------------|
| scroll [up\|down\| | Scroll viewport |
| scrollto | Scroll element into view |
| top | Scroll to top |
| bottom | Scroll to bottom |
| pageup | Page up |
| pagedown | Page down |$3
| Command | Description |
|---------|-------------|
| newtab [url] | Open new tab |
| tabs | List all tabs |
| tab | Switch to tab |
| closetab [n] | Close tab |$3
| Command | Description |
|---------|-------------|
| block | Block URLs matching pattern |
| unblock | Clear all blocks |
| blockimages | Block image loading |
| blockmedia | Block video/audio |
| blockfonts | Block web fonts |$3
| Command | Description |
|---------|-------------|
| cookies [domain] | Get cookies |
| setcookie | Set cookie |
| clearcookies | Clear all cookies |
| storage get | Get localStorage item |
| storage set | Set localStorage item |
| storage clear | Clear localStorage |$3
| Command | Description |
|---------|-------------|
| screenshot [path] | Save PNG screenshot |
| pdf [path] | Save PDF |
| eval | Execute JavaScript |$3
| Command | Description |
|---------|-------------|
| viewport | Set viewport size |
| mobile | Mobile emulation (375x667) |
| dark | Dark color scheme |
| light | Light color scheme |$3
| Command | Description |
|---------|-------------|
| wait | Wait milliseconds |
| wait [timeout] | Wait for element |Selectors
| Type | Example | Description |
|------|---------|-------------|
| Ref |
r1, r2 | From observe output |
| CSS | #id, .class | CSS selector |
| XPath | //div[@id='x'] | XPath expression |
| Text | text:Submit | By text content |
| Role | role:button | By ARIA role |
| Label | label:Email | By label text |
| Placeholder | placeholder:Search | By placeholder |Output Format
Minimal JSON optimized for LLM context:
`json
{
"e": [["r1","btn","Submit"],["r2","in","Email"]],
"n": 2,
"t": "Page Title",
"u": "https://example.com"
}
`-
e: Elements array [ref, type, label]
- n: Element count
- t: Page title
- u: Current URLElement types:
btn (button), in (input), a (link), sel (select), txt (text)$3
airbrow (Compact JSON):
`json
{"e":[["r1","a","Hacker News"],["r2","a","new"]],"n":50,"t":"Hacker News","u":"https://news.ycombinator.com/"}
`agent-browser (Full YAML Tree):
`yaml
- document:
- table:
- rowgroup:
- row "Hacker News":
- cell "Hacker News" [ref=e1]:
- link "new" [ref=e5]:
- /url: newest
`Result: airbrow output is 14x smaller
LLM Agent Integration
$3
`python
Python pseudocode
def browse(cmd):
return subprocess.run(["airbrow"], input=cmd, capture_output=True).stdoutbrowse("open")
browse("goto https://example.com")
result = json.loads(browse("observe"))
result: {"e":[["r1","btn","Login"]],"n":1,"t":"Example","u":"..."}
browse("click r1")
``| Tool | observe output | Tokens (~) |
|------|----------------|------------|
| airbrow | ~200 chars | ~50 |
| agent-browser | ~3000 chars | ~750 |
| playwright-cli | ~3000 chars | ~750 |
Smaller context = Lower cost + Faster response + Better focus
| Feature | airbrow | agent-browser | playwright-cli |
|---------|:----:|:-------------:|:--------------:|
| Navigation | ✅ | ✅ | ✅ |
| Click/Input | ✅ | ✅ | ✅ |
| Screenshot | ✅ | ✅ | ✅ |
| PDF Output | ✅ | ✅ | ✅ |
| Tab Management | ✅ | ✅ | ✅ |
| Network Blocking | ✅ | ✅ | ✅ |
| Cookies/Storage | ✅ | ✅ | ✅ |
| Mobile Emulation | ✅ | ✅ | ✅ |
| Dark Mode | ✅ | ✅ | ✅ |
| Tracing | ❌ | ✅ | ✅ |
| Video Recording | ❌ | ✅ | ❌ |
| PII Redaction | ❌ | ✅ | ❌ |
| MCP Support | ❌ | ❌ | ✅ |
| Aspect | airbrow | agent-browser | playwright-cli |
|--------|------|---------------|----------------|
| Sandbox | Chrome default | Playwright | Playwright |
| Dependencies | Minimal | Playwright | Node.js + Playwright |
| Attack Surface | Low | Medium | High |
| PII Protection | Manual | Automatic | Manual |
- SKILL.md - Full command reference for LLM agents
- ../README.md - Project overview
- ../COMPARISON.md - Detailed benchmark results
MIT