WitNote / docs /pinchtab.md
AUXteam's picture
Upload folder using huggingface_hub
6a7089a verified
# PinchTab
Welcome to PinchTab: browser control for AI agents, scripts, and automation workflows.
## What PinchTab is
PinchTab is a standalone HTTP server that gives you direct control over Chrome through a CLI and HTTP API.
PinchTab has two runtimes:
- `pinchtab server`: the server
- `pinchtab bridge`: the single-instance bridge runtime
The server is the normal entry point. It manages profiles, instances, routing, security policy, and the dashboard.
The bridge is the lightweight per-instance HTTP runtime used behind managed child instances.
The basic model is:
- start the server
- start or attach instances
- operate on tabs
## Main usage patterns
Start `pinchtab server` or even better `pinchtab daemon install` and leave it running:
- use it as a browser for agents
- use it as a local automation endpoint
- attach an existing debug browser when needed
## Minimal working flow
### 1. Start the server
```bash
pinchtab server
```
### 2. Start an instance
By default we use always-on strategy. This is optional now and not necessary.
```bash
curl -X POST http://localhost:9867/instances/start \
-H "Content-Type: application/json" \
-d '{"mode":"headless"}'
# CLI Alternative
pinchtab instance start
# Response
{
"id": "inst_0a89a5bb",
"profileId": "prof_278be873",
"profileName": "instance-1741400000000000000",
"port": "9868",
"headless": true,
"status": "starting"
}
```
### 3. Navigate
```bash
curl -s -X POST http://localhost:9867/navigate \
-H "Content-Type: application/json" \
-d '{"url":"https://pinchtab.com"}' | jq .
# CLI Alternative
pinchtab nav https://pinchtab.com
# Response
{
"tabId": "CDP_TARGET_ID",
"title": "PinchTab",
"url": "https://pinchtab.com"
}
```
### 4. Inspect interactive elements
```bash
curl -s "http://localhost:9867/snapshot?filter=interactive" | jq .
# CLI Alternative
pinchtab snap -i -c
# Response
{
"nodes": [
{ "ref": "e0", "role": "link", "name": "Docs" },
{ "ref": "e1", "role": "button", "name": "Get started" }
]
}
```
### 5. Click by ref
```bash
curl -s -X POST http://localhost:9867/action \
-H "Content-Type: application/json" \
-d '{"kind":"click","ref":"e1"}' | jq .
# CLI Alternative
pinchtab click e1
# Response
{
"success": true,
"result": {
"clicked": true
}
}
```
## Characteristics
- Server-first: the main process is the control-plane server
- Bridge-backed instances: managed instances run behind isolated bridge runtimes
- Tab-oriented: interaction happens at the tab level
- Stateful: profiles persist cookies and browser state
- Token-efficient: snapshot and text endpoints are cheaper than screenshot-driven workflows
- Flexible: headless, headed, profile-backed, or attached Chrome
- Controlled: health, metrics, auth, and tab locking are built into the system
## Common features
- Accessibility-tree snapshots with `e0`, `e1`, and similar refs
- Text extraction
- Direct actions such as click, type, fill, press, focus, hover, select, and scroll
- Screenshots and PDF export
- Multi-instance orchestration
- External Chrome attach
- Optional JavaScript evaluation
## Support
- [GitHub Issues](https://github.com/pinchtab/pinchtab/issues)
- [GitHub Discussions](https://github.com/pinchtab/pinchtab/discussions)
- [@pinchtabdev](https://x.com/pinchtabdev)
## License
[MIT](https://github.com/pinchtab/pinchtab?tab=MIT-1-ov-file#readme)