Skip to main content
Glama

GPT Harness

Самостоятельно размещаемый MCP-шлюз, который позволяет ChatGPT Web выполнять команды оболочки на сервере, которым вы управляете.

[!WARNING] Это личный эксперимент, а не продукт. Он передаёт целые команды оболочки языковой модели и выполняет их на вашем сервере. Прочтите О модели безопасности перед запуском.

Зачем это существует

ChatGPT Web хорошо рассуждает о коде. С помощью коннектора GitHub он читает и редактирует репозиторий. Чего он не может сделать, так это запустить что-либо, потому что его собственная среда не имеет доступа к сети. Он не может установить зависимость или выполнить набор тестов.

Codex может и то и другое, но агентное использование оплачивается и ограничивается отдельно от чата. Чат заканчивается намного позже или вообще не заканчивается.

Шлюз закрывает этот разрыв. ChatGPT решает, что делать, а ваш сервер выполняет. Ваша квота сообщений становится лимитом вместо агентного лимита.

@gpt-harness work this ticket
  git clone, write code, npm ci, npm test, repeat until green

@gpt-harness review this PR <link>
  gh pr checkout, run its tests, report back

Related MCP server: Personal AIVA MCP Bootstrap

Что он предоставляет

Четыре инструмента: bash, bash_output, bash_kill и write_file. Справочник по инструментам описывает аргументы, результаты и ограничения.

Нет инструмента рабочей области и нет понятия рабочей области. Проекты — это каталоги в HARNESS_ROOT, и ChatGPT использует ls и mkdir, как и все остальные.

Три из четырёх инструментов существуют из-за одного ограничения. Один вызов инструмента не может оставаться открытым в течение нескольких минут, которые занимает npm ci, поэтому bash возвращает дескриптор, когда команда переживает 20-секундное ожидание, bash_output читает с курсора, а bash_kill останавливает команду, которая не завершается.

Команды не интерактивны. stdin читает конец файла немедленно, поэтому ChatGPT должен передавать флаги, такие как npm ci и gh --yes. Каждая команда выполняется в своей группе процессов, поэтому остановка одной останавливает всё, что она запустила.

Требования

  • Сервер Linux с systemd, доменом и TLS

  • Node.js 24

  • Тенант Auth0

  • Учётная запись ChatGPT с доступным режимом разработчика

Запуск локально

git clone https://github.com/salman-frs/gpt-harness.git
cd gpt-harness
npm ci
cp .env.example .env

Укажите HARNESS_ROOT на каталог, который можно выбросить, заполните значения Auth0 из Подключение ChatGPT к шлюзу, затем запустите его:

npm run dev
curl -fsS localhost:8787/healthz

/healthz не требует токена. Каждый запрос к /mcp требует действительный токен для настроенного владельца, включая initialize.

Локальный запуск шлюза не даёт вам изоляции. ProtectSystem=strict и остальное приходят из systemd-юнита, который применяется только на сервере.

Доказательство работы

npm run build && npm run prove

scripts/prove.mjs запускает dist/main.js как отдельный процесс только из переменных окружения. Он предоставляет реальную HTTPS-конечную точку JWKS, которую шлюз получает по сети, создаёт реальный токен RS256 и управляет результатом с помощью обычного MCP-клиента. Он создаёт проект, устанавливает зависимость из реестра, запускает тесты и проверяет, что убийство команды также убивает процессы, которые эта команда запустила.

Ничто в скрипте не импортирует src/.

Документация

Лицензия

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers