Getting Started
Get PinchTab running in a few minutes, from zero to browser automation.
Installation
Option 1: one-liner
macOS / Linux
curl -fsSL https://pinchtab.com/install.sh | bashcurl -fsSL https://pinchtab.com/install.sh | bash Then verify:
pinchtab --versionpinchtab --version Option 2: npm
Requires: Node.js 18+
npm install -g pinchtabpinchtab --version
npm install -g pinchtabpinchtab --version
Option 3: Docker
Requires: Docker
docker run -d -p 9867:9867 pinchtab/pinchtabcurl http://localhost:9867/health
docker run -d -p 9867:9867 pinchtab/pinchtabcurl http://localhost:9867/health
Option 4: build from source
Requires: Go 1.25+, Git, Chrome/Chromium
git clone https://github.com/pinchtab/pinchtab.gitcd pinchtab./pdev doctorgo build -o pinchtab ./cmd/pinchtab./pinchtab --version
git clone https://github.com/pinchtab/pinchtab.gitcd pinchtab./pdev doctorgo build -o pinchtab ./cmd/pinchtab./pinchtab --version
Quick start
The normal flow is:
- start the server
- start an instance
- navigate
- inspect or act
Step 1: start the server
pinchtabpinchtab Response
🦀 PinchTab port=9867
dashboard ready url=http://localhost:9867 The server runs on http://127.0.0.1:9867.
You can open the dashboard at http://127.0.0.1:9867 or http://127.0.0.1:9867/dashboard.
Step 2: start your first instance
pinchtab instance startcurl -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"
} Step 3: navigate
pinchtab nav https://github.com/pinchtab/pinchtabcurl -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"
} Step 4: inspect the page
pinchtab snap -i -ccurl -s "http://127.0.0.1:9867/snapshot?filter=interactive" | jq . Response
{
"nodes": [
{
"ref": "e0",
"role": "link",
"name": "Skip to content"
},
{
"ref": "e14",
"role": "button",
"name": "Search or jump to…"
}
]
} You now have a working PinchTab server, a running browser instance, and a navigated tab.
Troubleshooting
Connection refused
curl http://localhost:9867/healthcurl http://localhost:9867/health If that fails, start the server:
pinchtabpinchtab Port already in use
PINCHTAB_PORT=9868 pinchtabPINCHTAB_PORT=9868 pinchtab Chrome not found
# macOSbrew install chromium# Linux (Ubuntu/Debian)sudo apt install chromium-browser# Custom Chrome binaryCHROME_BIN=/path/to/chrome pinchtab
# macOSbrew install chromium# Linux (Ubuntu/Debian)sudo apt install chromium-browser# Custom Chrome binaryCHROME_BIN=/path/to/chrome pinchtab