Showcase

Browser for your agents

Start the server and one instance first:

terminal
pinchtab
pinchtab
terminal
pinchtab instance start
curl -s -X POST http://127.0.0.1:9867/instances/start \  -H "Content-Type: application/json" \  -d '{"mode":"headless"}' | jq .
Response
{
  "id": "inst_0a89a5bb",
  "profileId": "prof_278be873",
  "profileName": "instance-1741400000000000000",
  "port": "9868",
  "headless": true,
  "status": "starting"
}

Starting an instance may be optional, depending on strategy/config.

terminal
pinchtab nav https://github.com/pinchtab/pinchtab
curl -s -X POST http://127.0.0.1:9867/navigate \  -H "Content-Type: application/json" \  -d '{"url":"https://github.com/pinchtab/pinchtab"}' | jq .
Response
{
  "tabId": "CDP_TARGET_ID",
  "title": "GitHub - pinchtab/pinchtab",
  "url": "https://github.com/pinchtab/pinchtab"
}

Snapshot

terminal
pinchtab snap -i -c
curl -s "http://127.0.0.1:9867/snapshot?filter=interactive" | jq .
Response
{
  "nodes": [
    {
      "ref": "e0",
      "role": "link",
      "name": "Skip to content"
    },
    {
      "ref": "e1",
      "role": "link",
      "name": "GitHub Homepage"
    },
    {
      "ref": "e14",
      "role": "button",
      "name": "Search or jump to…"
    }
  ]
}

Extract Text

terminal
pinchtab text
curl -s http://127.0.0.1:9867/text | jq .
Response
{
  "text": "High-performance browser automation bridge and multi-instance orchestrator...",
  "title": "GitHub - pinchtab/pinchtab",
  "url": "https://github.com/pinchtab/pinchtab"
}

Click By Ref

terminal
pinchtab click e14
curl -s -X POST http://127.0.0.1:9867/action \  -H "Content-Type: application/json" \  -d '{"kind":"click","ref":"e14"}' | jq .
Response
{
  "success": true,
  "result": {
    "clicked": true
  }
}

Screenshot

terminal
pinchtab ss -o smoke.jpg
curl -s http://127.0.0.1:9867/screenshot > smoke.jpgls -lh smoke.jpg
Response
Saved smoke.jpg (55876 bytes)

Export a PDF

terminal
pinchtab pdf -o smoke.pdf
curl -s http://127.0.0.1:9867/pdf > smoke.pdfls -lh smoke.pdf
Response
Saved smoke.pdf (1494657 bytes)

Automation tool for the web

Use PinchTab as a scriptable browser endpoint for repeatable web tasks.

Fill a form field

terminal
pinchtab fill e3 "user@example.com"
curl -s -X POST http://127.0.0.1:9867/action \  -H "Content-Type: application/json" \  -d '{"kind":"fill","ref":"e3","text":"user@example.com"}' | jq .
Response
{
  "success": true,
  "result": {
    "filled": "user@example.com"
  }
}

Press a key

terminal
pinchtab press Enter
curl -s -X POST http://127.0.0.1:9867/action \  -H "Content-Type: application/json" \  -d '{"kind":"press","key":"Enter"}' | jq .
Response
{
  "success": true,
  "result": {
    "pressed": "Enter"
  }
}

Generate artifacts

terminal
pinchtab pdf -o report.pdf
curl -s http://127.0.0.1:9867/pdf > report.pdfls -lh report.pdf
Response
Saved report.pdf (1494657 bytes)
terminal
pinchtab ss -o page.jpg
curl -s http://127.0.0.1:9867/screenshot > page.jpgls -lh page.jpg
Response
Saved page.jpg (55876 bytes)

This fits:

  • browser-driven scripts
  • content extraction and reporting
  • visual checks and artifacts
  • automation tools that need a local browser endpoint

Human-agent development surface

When Chrome is already running in remote-debugging mode, PinchTab can attach to it and expose it through the same API.

1. Start Chrome with remote debugging

terminal
google-chrome --remote-debugging-port=9222# Or on some systems:# chromium --remote-debugging-port=9222
google-chrome --remote-debugging-port=9222# Or on some systems:# chromium --remote-debugging-port=9222

2. Read the browser CDP URL

terminal
curl -s http://127.0.0.1:9222/json/version | jq .
curl -s http://127.0.0.1:9222/json/version | jq .
Response
{
  "webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/abc123"
}

3. Attach that browser to PinchTab

terminal
CDP_URL=$(curl -s http://127.0.0.1:9222/json/version | jq -r '.webSocketDebuggerUrl')curl -s -X POST http://127.0.0.1:9867/instances/attach \  -H "Content-Type: application/json" \  -d "{\"name\":\"dev-chrome\",\"cdpUrl\":\"$CDP_URL\"}" | jq .
CDP_URL=$(curl -s http://127.0.0.1:9222/json/version | jq -r '.webSocketDebuggerUrl')curl -s -X POST http://127.0.0.1:9867/instances/attach \  -H "Content-Type: application/json" \  -d "{\"name\":\"dev-chrome\",\"cdpUrl\":\"$CDP_URL\"}" | jq .
Response
{
  "id": "inst_abc12345",
  "profileId": "prof_def67890",
  "profileName": "dev-chrome",
  "attached": true,
  "cdpUrl": "ws://127.0.0.1:9222/devtools/browser/abc123",
  "status": "running"
}

4. Inspect it through PinchTab

terminal
pinchtab instances
curl -s http://127.0.0.1:9867/instances | jq .

This is useful when:

  • you are developing in a real browser session
  • you want an agent to inspect the page you already have open
  • you do not want PinchTab to launch a separate managed browser
  • you want one local API for both managed and attached browser work