Instances
Instances are running Chrome processes managed by PinchTab. Each managed instance has:
- an instance ID
- a profile
- a port
- a mode (
headlessorheaded) - an execution status
One profile can have at most one active managed instance at a time.
List Instances
pinchtab instancescurl http://localhost:9867/instances [
{
"id": "inst_0a89a5bb",
"profileId": "prof_278be873",
"profileName": "work",
"port": "9868",
"headless": true,
"status": "running",
"startTime": "2026-03-01T05:21:38.27432Z"
}
] pinchtab instances is the simplest way to inspect the current fleet from the CLI.
Start An Instance
pinchtab instance start --profileId 278be873adeb --mode headed --port 9999curl -X POST http://localhost:9867/instances/start \ -H "Content-Type: application/json" \ -d '{"profileId":"278be873adeb","mode":"headed","port":"9999"}'
{
"id": "inst_ea2e747f",
"profileId": "prof_278be873",
"profileName": "work",
"port": "9999",
"headless": false,
"status": "starting",
"startTime": "2026-03-01T05:21:38.27432Z"
} Notes:
-
POST /instances/startis the primary endpoint. -
if
profileIdis omitted, PinchTab creates an auto-generated temporary profile such asinstance-... -
if
portis omitted, PinchTab allocates one from the configured instance port range
Get One Instance
curl http://localhost:9867/instances/inst_ea2e747fcurl http://localhost:9867/instances/inst_ea2e747f {
"id": "inst_ea2e747f",
"profileId": "prof_278be873",
"profileName": "work",
"port": "9999",
"headless": false,
"status": "running",
"startTime": "2026-03-01T05:21:38.27432Z"
} Common status values:
startingrunningstoppingstoppederror
Get Instance Logs
pinchtab instance logs inst_ea2e747fcurl http://localhost:9867/instances/inst_ea2e747f/logs Response is plain text.
Stop An Instance
pinchtab instance stop inst_ea2e747fcurl -X POST http://localhost:9867/instances/inst_ea2e747f/stop {
"id": "inst_ea2e747f",
"status": "stopped"
} Stopping an instance preserves the profile unless it was a temporary auto-generated profile.
Start By Profile
You can also start an instance from a profile-oriented route:
curl -X POST http://localhost:9867/profiles/278be873adeb/start \ -H "Content-Type: application/json" \ -d '{"headless":false,"port":"9999"}'
curl -X POST http://localhost:9867/profiles/278be873adeb/start \ -H "Content-Type: application/json" \ -d '{"headless":false,"port":"9999"}'
{
"id": "inst_ea2e747f",
"profileId": "prof_278be873",
"profileName": "work",
"port": "9999",
"headless": false,
"status": "starting"
} This route accepts a profile ID or profile name in the path. Its request body uses headless rather than mode.
Open A Tab In An Instance
curl -X POST http://localhost:9867/instances/inst_ea2e747f/tabs/open \ -H "Content-Type: application/json" \ -d '{"url":"https://pinchtab.com"}'
curl -X POST http://localhost:9867/instances/inst_ea2e747f/tabs/open \ -H "Content-Type: application/json" \ -d '{"url":"https://pinchtab.com"}'
{
"tabId": "8f9c7d4e1234567890abcdef12345678",
"url": "https://pinchtab.com",
"title": "PinchTab"
} There is no dedicated instance-scoped tab open CLI command today. The CLI shortcut is:
pinchtab instance navigate inst_ea2e747f https://pinchtab.compinchtab instance navigate inst_ea2e747f https://pinchtab.com That command opens a tab for the instance and then navigates it.
List Tabs For One Instance
curl http://localhost:9867/instances/inst_ea2e747f/tabscurl http://localhost:9867/instances/inst_ea2e747f/tabs [
{
"id": "8f9c7d4e1234567890abcdef12345678",
"instanceId": "inst_ea2e747f",
"url": "https://pinchtab.com",
"title": "PinchTab"
}
] List All Tabs Across Running Instances
curl http://localhost:9867/instances/tabscurl http://localhost:9867/instances/tabs This is the fleet-wide tab listing endpoint. It is different from GET /tabs, which is shorthand/bridge-style and not a fleet-wide inventory.
List Metrics Across Instances
curl http://localhost:9867/instances/metricscurl http://localhost:9867/instances/metrics Use this when you want per-instance memory metrics across all running instances.
Attach An Existing Chrome
curl -X POST http://localhost:9867/instances/attach \ -H "Content-Type: application/json" \ -d '{"name":"shared-chrome","cdpUrl":"ws://127.0.0.1:9222/devtools/browser/..."}'
curl -X POST http://localhost:9867/instances/attach \ -H "Content-Type: application/json" \ -d '{"name":"shared-chrome","cdpUrl":"ws://127.0.0.1:9222/devtools/browser/..."}'
{
"id": "inst_0a89a5bb",
"profileId": "prof_278be873",
"profileName": "shared-chrome",
"status": "running",
"attached": true,
"cdpUrl": "ws://127.0.0.1:9222/devtools/browser/..."
} Notes:
- there is no CLI attach command
- attach is allowed only when enabled in config under
attach