| name | browser |
| description | Browser automation for AI agents. Use when the user needs to interact with websites — navigating, filling forms, clicking buttons, extracting data, taking screenshots, or automating any browser task. PinchTab (primary) for fresh automation, Chrome Relay (fallback) for the user's existing browser tabs. |
| allowed-tools | ["Bash","Read"] |
Browser Skill
Two engines, pick the right one:
| Engine | When to Use | How |
|---|
| PinchTab | Fresh automation, scraping, form filling, stealth browsing, any task that doesn't need the user's existing login | pinchtab CLI |
| Chrome Relay | Reading/interacting with tabs the user already has open, using their existing cookies/logins | alma browser CLI |
PinchTab (Primary Engine)
PinchTab is a standalone HTTP server that controls Chrome via accessibility tree refs. 12MB Go binary, zero dependencies, token-efficient.
Installation
curl -fsSL https://pinchtab.com/install.sh | bash
npm install -g pinchtab
Setup
PinchTab server must be running. Start it in the background if needed:
which pinchtab || curl -fsSL https://pinchtab.com/install.sh | bash
curl -s http://localhost:9867/health 2>/dev/null || pinchtab &
Core Workflow
Every PinchTab automation follows: Navigate → Snapshot → Interact → Re-snapshot
pinchtab nav https://example.com
pinchtab snap -i -c
pinchtab click e5
pinchtab fill e3 "user@example.com"
pinchtab press e7 Enter
pinchtab snap -i
Essential Commands
pinchtab nav <url>
pinchtab nav <url> --new
pinchtab snap -i
pinchtab snap -i -c
pinchtab snap
pinchtab click e1
pinchtab fill e2 "text"
pinchtab type e2 "text"
pinchtab press e1 Enter
pinchtab select e3 "option"
pinchtab text
pinchtab screenshot
pinchtab screenshot --full
pinchtab eval 'document.title'
pinchtab tabs
pinchtab tab close <tabId>
pinchtab instances
pinchtab instances create --profile=work
Ref Lifecycle
Refs (e1, e2...) are invalidated when the page changes. ALWAYS re-snapshot after:
- Clicking links/buttons that navigate
- Form submissions
- Dynamic content loading (modals, dropdowns)
pinchtab click e5
pinchtab snap -i
pinchtab click e1
Profile Persistence (Login Once, Reuse)
pinchtab --profile myapp nav https://app.example.com/login
pinchtab snap -i
pinchtab fill e1 "user@example.com"
pinchtab fill e2 "password123"
pinchtab click e3
pinchtab --profile myapp nav https://app.example.com/dashboard
Stealth Mode
PinchTab patches navigator.webdriver, spoofs UA, hides automation flags:
pinchtab stealth-status
Batch Actions
pinchtab action --batch '[{"kind":"fill","ref":"e1","value":"user@example.com"},{"kind":"fill","ref":"e2","value":"pass123"},{"kind":"click","ref":"e3"}]'
Chrome Relay (Fallback — User's Real Browser)
Use when you need the user's existing Chrome tabs, cookies, and login sessions.
alma browser status
alma browser tabs
alma browser read <tabId>
alma browser click <tabId> <cssSelector>
alma browser type <tabId> <cssSelector> "text" [--enter]
alma browser eval <tabId> "javascript code"
alma browser screenshot [tabId]
alma browser read-dom <tabId>
alma browser scroll <tabId> <up|down> [amount]
alma browser goto <tabId> <url>
alma browser open [url]
alma browser back <tabId>
alma browser forward <tabId>
Decision Guide
- Need to scrape/automate a site from scratch? → PinchTab
- Need stealth to avoid bot detection? → PinchTab
- Need to read what the user is currently looking at? → Chrome Relay
- Need the user's existing login session? → Chrome Relay (or PinchTab with saved profile if you've logged in before)
- Need parallel sessions? → PinchTab (multi-instance)
- Need token efficiency? → PinchTab (text extraction ~800 tokens vs screenshots ~10k tokens)