WitNote / docs /get-started.md
AUXteam's picture
Upload folder using huggingface_hub
6a7089a verified
# Getting Started
Get PinchTab running in a few minutes, from zero to browser automation.
---
## Installation
### Option 1: one-liner
**macOS / Linux**
```bash
curl -fsSL https://pinchtab.com/install.sh | bash
```
Then verify:
```bash
pinchtab --version
```
### Option 2: npm
**Requires:** Node.js 18+
```bash
npm install -g pinchtab
pinchtab --version
```
### Option 3: Docker
**Requires:** Docker
```bash
docker run -d -p 9867:9867 pinchtab/pinchtab
curl http://localhost:9867/health
```
### Option 4: build from source
**Requires:** Go 1.25+, Git, Chrome/Chromium
```bash
git clone https://github.com/pinchtab/pinchtab.git
cd pinchtab
./dev doctor
go build -o pinchtab ./cmd/pinchtab
./pinchtab --version
```
**[Full build guide ->](architecture/building.md)**
## Shell Completion
After installation, you can generate shell completions from the CLI:
```bash
# Generate and install zsh completions
pinchtab completion zsh > "${fpath[1]}/_pinchtab"
# Generate bash completions
pinchtab completion bash > /etc/bash_completion.d/pinchtab
# Generate fish completions
pinchtab completion fish > ~/.config/fish/completions/pinchtab.fish
```
---
## Quick start
The normal flow is:
1. start the server
2. start an instance
3. navigate
4. inspect or act
### Step 1: start the server
```bash
pinchtab
# 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
```bash
curl -s -X POST http://127.0.0.1:9867/instances/start \
-H "Content-Type: application/json" \
-d '{"mode":"headless"}' | jq .
# CLI Alternative
pinchtab instance start
# Response
{
"id": "inst_0a89a5bb",
"profileId": "prof_278be873",
"profileName": "instance-1741400000000000000",
"port": "9868",
"headless": true,
"status": "starting"
}
```
### Step 3: navigate
```bash
curl -s -X POST http://127.0.0.1:9867/navigate \
-H "Content-Type: application/json" \
-d '{"url":"https://github.com/pinchtab/pinchtab"}' | jq .
# CLI Alternative
pinchtab nav https://github.com/pinchtab/pinchtab
# Response
{
"tabId": "CDP_TARGET_ID",
"title": "GitHub - pinchtab/pinchtab",
"url": "https://github.com/pinchtab/pinchtab"
}
```
### Step 4: inspect the page
```bash
curl -s "http://127.0.0.1:9867/snapshot?filter=interactive" | jq .
# CLI Alternative
pinchtab snap -i -c
# 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
```bash
curl http://localhost:9867/health
```
If that fails, start the server:
```bash
pinchtab
```
### Port already in use
```bash
pinchtab config set server.port 9868
pinchtab
```
### Chrome not found
```bash
# macOS
brew install chromium
# Linux (Ubuntu/Debian)
sudo apt install chromium-browser
# Custom Chrome binary (set in config)
pinchtab config set browser.chromeBinary /path/to/chrome
```
---
## Getting help
- [GitHub Issues](https://github.com/pinchtab/pinchtab/issues)
- [GitHub Discussions](https://github.com/pinchtab/pinchtab/discussions)