# 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)