Comparison
@ulpi/browse vs agent-browser
Both are headless browser CLIs for AI agents. browse is built on Node.js/Playwright for maximum compatibility and features. agent-browser is built on Rust for raw speed. Here's how they compare.
TL;DR
Choose @ulpi/browse if you need
- - Token-efficient operations (2.7x fewer tokens)
- - @ref workflow (no CSS selectors)
- - React DevTools integration
- - Session multiplexing for parallel agents
- - Handoff protocol for CAPTCHA/MFA
- - Encrypted credential vault
Choose agent-browser if you need
- - Raw speed (~50ms vs ~100ms per command)
- - Rust ecosystem integration
- - Lightweight binary distribution
Feature-by-feature comparison
| Feature | @ulpi/browse | agent-browser |
|---|---|---|
| Language | TypeScript (Node.js) | Rust |
| Token efficiency | 11,388 tokens/session | 31,886 tokens/session |
| Speed | ~100ms/command | ~50ms/command |
| Total features | 152 | 136 |
| @ref element selection | ||
| Session multiplexing | ||
| Persistent profiles | ||
| React DevTools | ||
| Handoff protocol (MFA/CAPTCHA) | ||
| Encrypted credential vault | ||
| Content boundaries (prompt injection) | ||
| HAR/Video recording | ||
| PDF export | ||
| Device emulation (100+ devices) | ||
| Network mocking | ||
| Tab management | ||
| iframe targeting | ||
| File upload | ||
| Cookie import from real browsers | ||
| Claude Code skill install | ||
| Bun auto-detection (2x faster) | ||
| Domain allowlist |
Token usage comparison
In a standardized 10-action browsing session, browse uses 2.8x fewer tokens than agent-browser. This is because browse uses selective snapshot loading — agents only request accessibility trees when needed, not on every action.
# browse: 11,388 tokens for 10 actions
# agent-browser: 31,886 tokens for 10 actions
#
# browse's @ref workflow:
$ browse goto https://example.com # 15 tokens output
$ browse snapshot -i # 120 tokens output
$ browse click @e3 # 8 tokens output
$ browse fill @e5 "user@example.com" # 8 tokens output
#
# agent-browser dumps full snapshot on every action:
# Each action returns ~3,000 tokens of accessibility tree