[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5113":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":8,"rankLanguage":8,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":8,"pushedAt":8,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":14,"starSnapshotCount":14,"syncStatus":15,"lastSyncTime":34,"discoverSource":35},5113,"pinchtab","pinchtab\u002Fpinchtab","High-performance browser automation bridge and multi-instance orchestrator with advanced stealth injection and real-time dashboard.",null,"Go",9176,680,29,5,0,2,18,162,9,39.5,"MIT License",false,"main",[24,25,26,27,28,29,30],"browser-automation","cdp","golang","headless-chrome","orchestrator","stealth","web-scraping","2026-06-12 02:01:08","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fpinchtab-headless.png\" alt=\"PinchTab\" width=\"200\"\u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>PinchTab\u003C\u002Fstrong>\u003Cbr\u002F>\n  \u003Cstrong>Browser control for AI agents\u003C\u002Fstrong>\u003Cbr\u002F>\n  Small Go binary • HTTP API • Token-efficient\n\u003C\u002Fp>\n\n\n\u003Ctable align=\"center\">\n  \u003Ctr>\n    \u003Ctd align=\"center\" valign=\"middle\">\n      \u003Ca href=\"https:\u002F\u002Fpinchtab.com\u002Fdocs\">\u003Cimg src=\"assets\u002Fdocs-no-background-256.png\" alt=\"Full Documentation\" width=\"92\"\u002F>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"left\" valign=\"middle\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpinchtab\u002Fpinchtab\u002Freleases\u002Flatest\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fpinchtab\u002Fpinchtab?style=flat-square&color=FFD700\" alt=\"Release\"\u002F>\u003C\u002Fa>\u003Cbr\u002F>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpinchtab\u002Fpinchtab\u002Factions\u002Fworkflows\u002Fci-go.yml\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fpinchtab\u002Fpinchtab\u002Fci-go.yml?branch=main&style=flat-square&label=Go%20CI\" alt=\"Go CI\"\u002F>\u003C\u002Fa>\u003Cbr\u002F>\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo-1.25+-00ADD8?style=flat-square&logo=go&logoColor=white\" alt=\"Go 1.25+\"\u002F>\u003Cbr\u002F>\n      \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-blue?style=flat-square\" alt=\"License\"\u002F>\u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n---\n\n## What is PinchTab?\n\nPinchTab is a **standalone HTTP server** that gives AI agents direct control over Chrome.\n\nFor day-to-day local use, the server is typically installed as a user-level daemon, allowing agent tools to reuse the same browser control plane running in the background.\n\n```bash\ncurl -fsSL https:\u002F\u002Fpinchtab.com\u002Finstall.sh | bash\n# or\npinchtab daemon install\n```\n\nThis installs the control-plane server and starts a default headless Chrome instance, ready to accept requests from agents or manual API calls.\n\nPinchTab is designed first for local, single-user control on a machine you manage. Remote and distributed layouts are supported, but they are advanced operator-managed deployments. If you bind beyond loopback, publish ports, or attach remote bridges, you are responsible for tokens, network boundaries, TLS or reverse proxying, and which endpoint families you expose.\n\nIf you run PinchTab on a different machine, do it only when you understand the security model. Keep it on a private or otherwise closed network, avoid exposing it directly to the public internet, and keep high-risk endpoint families disabled unless you explicitly need them. If you do enable them, lock them down so only the systems that need them can reach them.\n\n> [!WARNING]\n> The dashboard, HTTP API, MCP server, and remote CLI integrations are privileged operator control surfaces. They are not designed for untrusted users, multi-tenant exposure, or direct public-internet access. If you are unsure how to secure a non-local deployment, review [docs\u002Fguides\u002Fsecurity.md](docs\u002Fguides\u002Fsecurity.md) and use the private security contact path in [SECURITY.md](SECURITY.md) before exposing the service.\n\n\nIf you prefer not to run a daemon, or if you're on Windows, you can instead run:\n\n`pinchtab server` — runs the control-plane server directly\n`pinchtab bridge` — runs a single browser instance as a lightweight runtime\n\nPinchTab also provides a CLI with an interactive entry point for local setup and common tasks:\n\n`pinchtab`\n\n## Security\n\nPinchTab defaults to a **local-first security posture**:\n\n- `server.bind = 127.0.0.1`\n- dashboard session cookies are `Secure` only when the dashboard is actually served over HTTPS\n- sensitive endpoint families are disabled by default\n- `attach` is disabled by default\n- IDPI is enabled with a **local-only website allowlist**\n\nIf you intentionally access the dashboard over plain HTTP on a non-loopback\naddress, PinchTab now warns in the UI that the session is running without\ntransport encryption. Prefer HTTPS or localhost when possible. If you force\n`server.cookieSecure = true`, dashboard login requires HTTPS and will fail\nexplicitly on plain HTTP instead of looping silently.\n\n> [!CAUTION]\n> By default, IDPI restricts browsing to **locally hosted websites only**.\n> This prevents agents from navigating the public internet until you explicitly allow it.\n> The restriction exists to make the security implications of browser automation clear before enabling wider access.\n>\n> Expanding browsing to non-local or non-trusted websites is a security-reducing choice. Hostile pages can still increase browser attack surface and interact badly with enabled automation features even when PinchTab's content defenses are on.\n\nSee the full guide: [docs\u002Fguides\u002Fsecurity.md](docs\u002Fguides\u002Fsecurity.md)\n\nRemote, container, and distributed setups are possible, but PinchTab is not positioned as a turnkey internet-facing browser service. Treat any non-local deployment as an advanced setup that you must secure explicitly.\n\n## What can you use it for\n\n### Headless navigation\n\nWith the daemon installed and an agent skill configured, an agent can execute tasks like:\n\n```\n\"What are the main news about aliens on news.com?\"\n```\n\nPinchTab exposes browser tools that allow agents to navigate pages, extract structured content, and interact with the DOM without wasting tokens on raw HTML or images.\n\n### Headed navigation\n\nIn addition to headless automation, PinchTab supports headed Chrome profiles.\n\nYou can create profiles configured with authentication, cookies, extensions, or specific environments. Each profile can have a name and description.\n\nFor example, an agent request like:\n\n```\n\"Log into my work profile and download the weekly report\"\n```\n\ncan automatically select the appropriate profile and perform the action.\n\n### Local container isolation\n\nIf you prefer stronger isolation, PinchTab can run inside Docker.\n\nThis allows agents to control browsers in a sandboxed environment, reducing risk when running automation tasks locally.\n\n### Distributed automation\n\nPinchTab can manage multiple Chrome instances (headless or headed) across containers or remote machines.\n\nTypical use cases include:\n\n- QA automation\n- testing environments\n- distributed browsing tasks\n- development tooling\n\nYou can connect to multiple PinchTab servers, or attach to Chrome instances running in remote debug mode.\n\n## Process Model\n\nPinchTab is server-first:\n1. install the daemon or run `pinchtab server` for the full control plane\n2. let the server manage profiles and instances\n3. let each managed instance run behind a lightweight `pinchtab bridge` runtime\n\nIn practice:\n- Server — the main product entry point and control plane\n- Bridge — the runtime that manages a single browser instance\n- Attach — an advanced mode for registering externally managed Chrome instances\n\n### Primary Usage\n\nThe primary user journey is:\n\n1. install Pinchtab\n2. install and start the daemon with `pinchtab daemon install`\n3. point your agent or tool at `http:\u002F\u002Flocalhost:9867`\n4. let PinchTab act as your local browser service\n\nThat is the default “replace the browser runtime” scenario.\nMost users should not need to think about `pinchtab bridge` directly, and only need `pinchtab` when they want the local interactive menu.\n\n### Key Features\n\n- **CLI or Curl** — Control via command-line or HTTP API\n- **Token-efficient** — 800 tokens\u002Fpage with text extraction (5-13x cheaper than screenshots)\n- **Headless or Headed** — Run without a window or with visible Chrome\n- **Multi-instance** — Run multiple parallel Chrome processes with isolated profiles\n- **Self-contained** — ~15MB binary, no external dependencies\n- **Accessibility-first** — Stable element refs instead of fragile coordinates\n- **ARM64-optimized** — First-class Raspberry Pi support with automatic Chromium detection\n\n---\n\n## Quick Start\n\n### Installation\n\n**macOS \u002F Linux:**\n```bash\ncurl -fsSL https:\u002F\u002Fpinchtab.com\u002Finstall.sh | bash\n```\n\n**Homebrew (macOS \u002F Linux):**\n```bash\nbrew install pinchtab\u002Ftap\u002Fpinchtab\n```\n\n**npm:**\n```bash\nnpm install -g pinchtab\n```\n\n### Platform Support\n\nPinchTab's primary tested operator workflow is local macOS and Linux.\n\nWindows binaries are published, but Windows support is currently limited and best-effort because the project does not have the same level of automated and manual coverage there. On Windows, prefer running `pinchtab server` or `pinchtab bridge` directly instead of relying on the daemon workflow.\n\n### Shell Completion\n\nGenerate and install shell completions after `pinchtab` is on your `PATH`:\n\n```bash\n# Generate and install zsh completions\npinchtab completion zsh > \"${fpath[1]}\u002F_pinchtab\"\n\n# Generate bash completions\npinchtab completion bash > \u002Fetc\u002Fbash_completion.d\u002Fpinchtab\n\n# Generate fish completions\npinchtab completion fish > ~\u002F.config\u002Ffish\u002Fcompletions\u002Fpinchtab.fish\n```\n\n**Docker:**\n```bash\ndocker run -d \\\n  --name pinchtab \\\n  -p 127.0.0.1:9867:9867 \\\n  -v pinchtab-data:\u002Fdata \\\n  --shm-size=2g \\\n  pinchtab\u002Fpinchtab\n```\n\nThe bundled container persists its managed config at `\u002Fdata\u002F.config\u002Fpinchtab\u002Fconfig.json`.\nIf you want to supply your own config file instead, mount it and point `PINCHTAB_CONFIG` at it:\n\n```bash\ndocker run -d \\\n  --name pinchtab \\\n  -p 127.0.0.1:9867:9867 \\\n  -e PINCHTAB_CONFIG=\u002Fconfig\u002Fconfig.json \\\n  -v \"$PWD\u002Fconfig.json:\u002Fconfig\u002Fconfig.json:ro\" \\\n  -v pinchtab-data:\u002Fdata \\\n  --shm-size=2g \\\n  pinchtab\u002Fpinchtab\n```\n\n### Use It\n\n**First useful command — auto-starts the local server if needed:**\n```bash\npinchtab nav https:\u002F\u002Fpinchtab.com --snap\n```\n\n**Or start the server explicitly when you want foreground logs:**\n```bash\npinchtab server\n```\n\n**Recommended for daily local use — install the daemon once:**\n```bash\npinchtab daemon install\npinchtab daemon\n```\n\nThat keeps PinchTab running in the background so your agent tools can reuse it without an open terminal.\n\n**Terminal 2 — Control the browser:**\n```bash\n# Navigate; starts the server automatically if needed\npinchtab nav https:\u002F\u002Fpinchtab.com\n\n# Get page structure\npinchtab snap -i -c\n\n# Click an element\npinchtab click e5\n\n# Extract text\npinchtab text\n```\n\nOr use the HTTP API directly:\n```bash\n# Create a profile first (returns profile id)\nPROF=$(curl -s -X POST http:\u002F\u002Flocalhost:9867\u002Fprofiles \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\":\"work\"}' | jq -r '.id')\n\n# Start an instance for that profile (returns instance id)\nINST=$(curl -s -X POST http:\u002F\u002Flocalhost:9867\u002Finstances\u002Fstart \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"profileId\\\":\\\"$PROF\\\",\\\"mode\\\":\\\"headless\\\"}\" | jq -r '.id')\n\n# Open a tab in that instance\nTAB=$(curl -s -X POST http:\u002F\u002Flocalhost:9867\u002Finstances\u002F$INST\u002Ftabs\u002Fopen \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"url\":\"https:\u002F\u002Fpinchtab.com\"}' | jq -r '.tabId')\n\n# Get snapshot\ncurl \"http:\u002F\u002Flocalhost:9867\u002Ftabs\u002F$TAB\u002Fsnapshot?filter=interactive\"\n\n# Click element\ncurl -X POST \"http:\u002F\u002Flocalhost:9867\u002Ftabs\u002F$TAB\u002Faction\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"kind\":\"click\",\"ref\":\"e5\"}'\n```\n\n---\n\n## Core Concepts\n\n**Server** — The main PinchTab process. It manages profiles, instances, routing, and the dashboard.\n\n**Instance** — A running Chrome process. Each instance can have one profile.\n\n**Profile** — Browser state (cookies, history, local storage). Log in once, stay logged in across restarts.\n\n**Tab** — A single webpage. Each instance can have multiple tabs.\n\n**Bridge** — The single-instance runtime behind a managed instance. Usually spawned by the server, not started manually.\n\nRead more in the [Core Concepts](https:\u002F\u002Fpinchtab.com\u002Fdocs\u002Fcore-concepts) guide.\n\n---\n\n## Why PinchTab?\n\n| Aspect | PinchTab |\n|--------|----------|\n| **Tokens performance** | ✅ |\n| **Headless and Headed** | ✅ |\n| **Profile** | ✅ |\n| **Advanced CDP control** | ✅ |\n| **Persistent sessions** | ✅ |\n| **Binary size** | ✅ |\n| **Multi-instance** | ✅ |\n| **External Chrome attach** | ✅ |\n\n### Benchmark: PinchTab vs agent-browser\n\nMeasured end-to-end agent-loop token cost (Anthropic API), percentages\nread as \"PinchTab is N% cheaper than agent-browser on this metric\":\n\n| Scope                     | Cost cheaper | Fewer requests | Fewer tokens |\n|---------------------------|-------------:|---------------:|-------------:|\n| Basic Haiku (10 steps)    | **9.5%**     | 23.0%          | 17.9%        |\n| Extended Haiku (24 steps) | **19.6%**    | 31.1%          | 26.2%        |\n| Extended Sonnet (24 steps)| **20.3%**    | 29.4%          | 25.3%        |\n\nThe cost gap widens with workload length (click→snapshot round trips\ncompound) and is roughly model-invariant at extended scope.\n\nSee the [benchmark summary](.\u002Fdocs\u002Fbenchmark.md) for an overview, or the\n[benchmark deep dive](.\u002Fdocs\u002Fdeep-dive\u002Fbenchmark.md) for full\nmethodology, per-run tables, and raw logs.\n\n---\n\n## Privacy\n\nPinchTab is a fully open-source, local-first tool. No telemetry, no analytics, and no required outbound service dependency. The binary binds to `127.0.0.1` by default. Persistent profiles store browser sessions locally on your machine, similar to how a human reuses their browser. Remote and distributed deployments are available for advanced use cases, but they are explicit operator-managed setups rather than the default posture. The single Go binary (~16 MB) is fully verifiable: build from source at [github.com\u002Fpinchtab\u002Fpinchtab](https:\u002F\u002Fgithub.com\u002Fpinchtab\u002Fpinchtab).\n\n---\n\n## Documentation\n\nFull docs at **[pinchtab.com\u002Fdocs](https:\u002F\u002Fpinchtab.com\u002Fdocs)**\n\n## Examples\n\n### AI Agent Automation\n\n```bash\n# Your AI agent can:\npinchtab nav https:\u002F\u002Fpinchtab.com\npinchtab snap -i  # Get clickable elements\npinchtab click e5 # Click by ref\npinchtab fill e3 \"user@pinchtab.com\"  # Fill input\npinchtab press e7 Enter              # Submit form\n```\n\n### Data Extraction\n\n```bash\n# Extract text (token-efficient)\npinchtab nav https:\u002F\u002Fpinchtab.com\u002Farticle\npinchtab text  # ~800 tokens instead of 10,000\n```\n\n### Multi-Instance Workflows\n\n```bash\n# Run multiple instances in parallel\ncurl -s -X POST http:\u002F\u002Flocalhost:9867\u002Finstances\u002Fstart \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"profileId\":\"alice\",\"mode\":\"headless\"}'\n\ncurl -s -X POST http:\u002F\u002Flocalhost:9867\u002Finstances\u002Fstart \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"profileId\":\"bob\",\"mode\":\"headless\"}'\n\n# Each instance is isolated\ncurl http:\u002F\u002Flocalhost:9867\u002Finstances\n```\n\nSee [chrome-files.md](chrome-files.md) for technical details on how PinchTab manages Chrome user data directories and ensures isolation between parallel instances.\n\n---\n\n## Development\n\nWant to contribute? Start with [CONTRIBUTING.md](CONTRIBUTING.md).\nThe full setup and workflow guide lives at [docs\u002Fguides\u002Fcontributing.md](docs\u002Fguides\u002Fcontributing.md).\n\n**Quick start:**\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fpinchtab\u002Fpinchtab.git\ncd pinchtab\n.\u002Fdev doctor                # Verifies environment, offers hooks\u002Fdeps setup\n.\u002Fdev --help                # Shows the developer toolkit commands\ngo build .\u002Fcmd\u002Fpinchtab     # Build pinchtab binary\n```\n\n---\n\n## License\n\nMIT — Free and open source.\n\n---\n\n**Get started:** [pinchtab.com\u002Fdocs](https:\u002F\u002Fpinchtab.com\u002Fdocs)\n","PinchTab 是一个高性能的浏览器自动化桥接器和多实例编排工具，专为AI代理提供直接控制Chrome的能力。它通过HTTP API接口实现对浏览器的控制，并支持高级隐身注入技术和实时监控面板。使用Go语言编写，体积小巧且高效。该项目特别适用于需要在本地或受控环境下进行网页抓取、自动化测试以及AI交互等场景。其设计注重安全性和性能，在非本地部署时需谨慎处理网络边界与访问权限。","2026-06-11 03:02:36","top_language"]