@ulpi/browse

Comparison

@ulpi/browse vs browser-use

browser-use is a Python library for AI agent web browsing. @ulpi/browse is a TypeScript CLI. browse has 3x more features, uses 2.4x fewer tokens, and runs 2.5x faster.

TL;DR

Choose @ulpi/browse if you need

  • - 152 features vs 51 (3x more capabilities)
  • - 2.4x fewer tokens per session
  • - 2.5x faster multi-step flows (28.5s vs 72.7s)
  • - Node.js ecosystem (works with any AI agent)
  • - @ref workflow, React DevTools, sessions

Choose browser-use if you need

  • - Python-native integration
  • - Simple API for basic browsing
  • - Existing Python AI agent stack

Feature-by-feature comparison

Feature@ulpi/browsebrowser-use
LanguageTypeScript (Node.js)Python
Token efficiency11,388 tokens/session27,331 tokens/session
Speed (10-action flow)28.5s72.7s
Total features15251
@ref element selection
Accessibility tree
Click / Fill / Select
Keyboard input
Tab management
Screenshot
Back / Forward / Reload
Hover / Focus / Drag
File upload
Wait conditions
Session multiplexing
Persistent profiles
React DevTools
Handoff protocol
Network mocking
HAR/Video recording
PDF export
Encrypted credential vault
Content boundaries
Domain allowlist
Device emulation (100+)
Cookie import from browsers

Speed comparison

browse completes a standardized 10-action browsing session in 28.5 seconds vs browser-use's 72.7 seconds — 2.5x faster. browse achieves this through its persistent daemon architecture: the server starts once, and each subsequent command executes in ~100ms over HTTP.

# browse: persistent daemon — ~100ms per command
$ browse goto https://example.com     # Server already running
Navigated (200) — 95ms

# browser-use: Python process per action
# Each action: import library → start browser → execute → close
# Overhead: ~5-7 seconds per action

Migrating from browser-use

If you're using browser-use in a Python AI agent, you can switch to browse without changing your agent framework. browse is a CLI — call it from any language via subprocess or HTTP.

# Install
npm install -g @ulpi/browse

# browser-use (Python):
# browser.goto("https://example.com")
# elements = browser.get_elements()
# browser.click(elements[0])

# @ulpi/browse (CLI — works from any language):
browse goto https://example.com
browse snapshot -i    # @e1 [button] "Submit", @e2 [link] "Home"
browse click @e1      # Click by ref — no element indexing needed

Ready to try @ulpi/browse?

One command to install. Zero configuration.