PinchTab — управление Chrome для AI-агентов на Go

· 2 мин чтения
ai-agents browser-automation go headless-chrome tools
📂 Исходный код на GitHub

Браузерный контроль для AI-агентов: standalone HTTP-сервер и CLI на Go. Headless/headed Chrome, профили, мульти-инстансы, аудит и визуальное сравнение сайтов, токен-эффективная экстракция текста.

PinchTab — управление Chrome для AI-агентов на Go

PinchTab — standalone HTTP-сервер на Go, который даёт AI-агентам прямой контроль над Chrome. 10,2 тысячи звёзд на GitHub. Один самодостаточный бинарник (~15–16 МБ) без внешних зависимостей, MIT-лицензия. Для повседневного локального использования сервер ставится как пользовательский daemon, и агентские инструменты переиспользуют один и тот же «контрольный план» браузера, работающий в фоне.

Установка и запуск

curl -fsSL https://pinchtab.com/install.sh | bash
# или
pinchtab daemon install

Также доступны Homebrew (brew install pinchtab/tap/pinchtab) и npm (npm install -g pinchtab). Установка поднимает сервер и запускает headless Chrome, готовый принимать запросы от агентов или ручные вызовы API.

Основной сценарий:

  1. установить PinchTab
  2. pinchtab daemon install — сервер работает в фоне
  3. направить агента на http://localhost:9867
  4. PinchTab работает как локальный браузерный сервис

Альтернативы без daemon: pinchtab server (запуск control plane напрямую) и pinchtab bridge (один браузер как лёгкий runtime). Есть и CLI с интерактивным меню — просто pinchtab. Для Windows рекомендуется запускать pinchtab server или pinchtab bridge напрямую, daemon-workflow там ограничен.

Первые команды

pinchtab nav https://pinchtab.com --snap   # навигация; сервер стартует сам, если нужно
pinchtab snap -i -c                         # структура страницы: интерактивные элементы
pinchtab click e5                           # клик по ref
pinchtab text                               # извлечение текста

Можно управлять и напрямую через HTTP API — создать профиль, запустить инстанс, открыть вкладку, получить snapshot и кликнуть по элементу, работая с profileId / instanceId / tabId.

Ключевые возможности

  • CLI или curl — управление из командной строки или по HTTP API
  • Токен-эффективность — текстовая экстракция ~800 токенов на страницу, в 5–13 раз дешевле скриншотов
  • Headless и headed — работа без окна или с видимым Chrome
  • Мульти-инстанс — несколько параллельных Chrome-процессов с изолированными профилями
  • Accessibility-first — refs элементов (e5) обозначают DOM-узел, а не строку: один и тот же ref переживает смену фильтра или селектора и истекает только при переходе на новый документ
  • ARM64-оптимизация — поддержка Raspberry Pi с автоматическим детектом Chromium
  • CloakBrowser — опциональный провайдер для сайтов, фингерпринтящих стандартный Chromium (бинарь поставляет пользователь)
  • Self-contained — один бинарник, никаких внешних зависимостей

Процессная модель

PinchTab сервер-ориентирован: сначала ставится daemon (или запускается pinchtab server), сервер управляет профилями и инстансами, а каждый управляемый инстанс работает за лёгким runtime pinchtab bridge.

  • Server — основная точка входа и control plane: профили, инстансы, роутинг, dashboard
  • Bridge — runtime для одного браузера, обычно запускается сервером
  • Attach — продвинутый режим регистрации внешне управляемых Chrome-инстансов (по умолчанию отключён)

Профиль хранит состояние браузера (cookies, история, localStorage) — логин происходит один раз и переживает перезапуски. На macOS стоит использовать выделенный браузер для автоматизации (Google Chrome for Testing или Chromium), а не основной Chrome: pinchtab doctor browsers предупредит, если автоматизация откатится на основной браузер.

Сценарии использования

Headless навигация

Агент может выполнять задачи вида «какие главные новости об инопланетянах на news.com?» — навигация, извлечение структурированного контента и взаимодействие с DOM без траты токенов на сырой HTML и картинки.

Headed навигация с профилями

Профили можно настраивать с аутентификацией, cookies, расширениями. Запрос «зайди в мой рабочий профиль и скачай еженедельный отчёт» автоматически выбирает нужный профиль и выполняет действие.

Аудит сайтов и визуальное сравнение

pinchtab audit https://example.com --output-dir ./audit          # report.json + screenshots/
pinchtab audit https://example.com/sitemap.xml --sitemap --sample-size 2 --output-dir ./audit
pinchtab compare https://example.com https://staging.example.com --fail-on-diff   # CI gate

Аудит на уровне браузера: скриншоты, ошибки консоли, битые ассеты, accessibility-оценка, Core Web Vitals и security-находки. compare визуально сравнивает две версии сайта перед релизом.

Docker и распределённая автоматизация

docker run -d \
  --name pinchtab \
  -p 127.0.0.1:9867:9867 \
  -v pinchtab-data:/data \
  --shm-size=2g \
  pinchtab/pinchtab

Контейнер даёт изолированный песочницей контроль над браузером. PinchTab умеет управлять несколькими Chrome-инстансами (headless или headed) на контейнерах и удалённых машинах: QA-автоматизация, тестовые среды, распределённые браузерные задачи, dev-инструменты.

Интеграция с агентами

Для Grok Build: grok plugin install pinchtab --trust (после публикации в официальном xAI marketplace). Для OpenClaw: openclaw plugins install @pinchtab/pinchtab. Для остальных агентов подходит plain HTTP API или CLI.

Бенчмарк: PinchTab против agent-browser

Замер сквозной стоимости токенов в агентском цикле (Anthropic API); проценты читаются как «PinchTab на N% дешевле agent-browser»:

Сценарий Дешевле по стоимости Меньше запросов Меньше токенов
Basic Haiku (10 шагов) 9,5% 23,0% 17,9%
Extended Haiku (24 шага) 19,6% 31,1% 26,2%
Extended Sonnet (24 шага) 20,3% 29,4% 25,3%

Разрыв растёт с длиной задачи: click→snapshot round-trips накапливаются, при этом результат примерно не зависит от модели.

Безопасность

По умолчанию — local-first модель:

  • server.bind = 127.0.0.1
  • cookies dashboard-сессии Secure только при HTTPS
  • чувствительные endpoint-семейства отключены по умолчанию
  • attach отключён по умолчанию
  • IDPI включён с local-only allowlist сайтов

По умолчанию IDPI ограничивает навигацию только локально хостируемыми сайтами — агент не выйдет в публичный интернет, пока вы явно это не разрешите. Dashboard, HTTP API и MCP-сервер считаются привилегированными поверхностями управления: они не предназначены для untrusted пользователей, мульти-тенанта или прямого доступа из интернета. Удалённые и распределённые развёртывания возможны, но это продвинутые operator-managed сценарии, которые нужно закрывать токенами, сетевыми границами и TLS.

Конфиденциальность

Полностью open-source, local-first: никакой телеметрии, аналитики и обязательных исходящих сервисов. Бинарь биндится на 127.0.0.1 по умолчанию, профили хранятся локально, как человеческий браузер. Единый Go-бинарник (~16 МБ) можно собрать из исходников.

Источник: https://github.com/pinchtab/pinchtab