@ulpi/browse

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/browseagent-browser
LanguageTypeScript (Node.js)Rust
Token efficiency11,388 tokens/session31,886 tokens/session
Speed~100ms/command~50ms/command
Total features152136
@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

Ready to try @ulpi/browse?

One command to install. Zero configuration.