AgentBridge
AgentBridge
Статус: идёт миграция, и этот README описывает старую форму.
AgentBridge начинался как мост между Claude Code и Codex/Antigravity, и всё, что описано ниже, работает и сегодня. Он обобщается, чтобы любой поддерживаемый CLI мог выступать оркестратором, а любой другой — исполнителем, а маршрутизация управлялась бы пользовательским профилем вместо жёстко заданных имён моделей.
О том, куда он движется, читайте в
docs/architecture.mdиdocs/roles.md. В разработке: слой адаптеров провайдеров (src/providers/), профиль маршрутизации (src/profile/) и процесс настройкиagentbridge init. Адаптер Cursor присутствует, но не проверен — его флаги написаны по прежним знаниям, а не по установленному CLI, и об этом сказано в начале файла.Пока миграция не завершена, считайте разделы ниже точными для исполнителей Codex и Antigravity, а документацию — точной для дизайна.
Оркестраторы
AgentBridge предоставляет свою поверхность команд /agentbridge ... как MCP-промпты, поэтому любой MCP-клиент, поддерживающий prompts/list, получает те же команды от самого сервера — не нужно устанавливать или поддерживать в синхронизации отдельные файлы команд для каждого хоста.
Хост | Установка | Команды |
Codex CLI | через MCP-промпты, плюс | |
Claude Code | зарегистрируйте MCP-сервер, затем по желанию скопируйте | через MCP-промпты |
Команда | Что делает |
| оценить объём, спланировать, делегировать, проверить, отчитаться |
| обнаружить CLI, убедиться, что каждый работает, записать профиль маршрутизации |
| что установлено и как роли сопоставлены; без инференса |
| диагностировать реальными пробными задачамии сказать, что исправить |
| показать или пересчитать маршрутизацию, опционально для одной роли |
| одно ограниченное исследование репозитория |
| независимое рецензирование от другого семейства моделей |
| продолжить прерванный запуск |
Доктрина, стоящая за этими командами, живёт в doctrine/ и не называет моделей — она маршрутизирует по ролям, а .agentbridge/profile.json сопоставляет роли с тем, что реально установлено у пользователя.
Небольшой локальный stdio MCP-сервер, который позволяет Claude Code делегировать работу Codex CLI и Antigravity CLI (agy) как внешним исполнителям — используя те CLI-сессии, в которые вы уже вошли, и без API-ключей. Claude остаётся оркестратором. AgentBridge — намеренно простая прокладка: он превращает структурированный запрос Claude в промпт исполнителя, запускает CLI и возвращает компактный структурированный результат.
User
└─> Claude Code (orchestrator — decides what to delegate)
└─> AgentBridge MCP tool (codex_run / antigravity_run)
└─> codex exec | agy --print
└─> result
<─ structured MCP result
<─ Claude inspects the work and continuesRelated MCP server: agent-intern
Чем это не является
Никакого облачного сервиса, веб-интерфейса, базы данных, демона, дашборда, очереди задач, системы аккаунтов или управления API-ключами. Это один Node-процесс, который Claude Code запускает через stdio и останавливает при завершении.
Как это работает
Claude вызывает
codex_runилиantigravity_runсо структурированным запросом (goal, mode, model, effort, paths, contract, acceptance criteria…).AgentBridge собирает промпт исполнителя ровно из этих полей. Он не запускает никакой собственной модели — это сборка строк, а не инференс.
Он резервирует зоны записи, делает снимок рабочего дерева git и запускает CLI с массивом аргументов (
shell: false).Он разбирает машинночитаемый вывод CLI, извлекает итоговый результат исполнителя (но не его внутренние рассуждения), диффит git-дерево, чтобы понять, что действительно изменилось, и возвращает компактный JSON-результат.
Один вызов MCP — это одна попытка исполнителя. AgentBridge никогда не повторяет. Решает ли, стоит ли новая попытка, Claude.
Требования
Node.js | ≥ 20.10 (собран и проверен на 24.14) |
Codex CLI | на |
Antigravity CLI |
|
git | необязателен, но настоятельно рекомендуется; без него нельзя вычислить |
AgentBridge никогда не читает, не копирует, не экспортирует и не изменяет ваши учётные данные Codex или Antigravity. Он вызывает CLI ровно так, как это сделал бы вошедший человек.
Установка и сборка
npm installnpm run buildnpm testТестовый набор повсюду использует мокапы процессов, поэтому обычный npm test не расходует ни одной квоты моделей.
Регистрация в Claude Code
Зарегистрируйте один раз на уровне пользователя, чтобы каждый проект мог им пользоваться:
claude mcp add --transport stdio --scope user agentbridge -- node D:\Code\Agentbridge\dist\index.jsПроверьте из терминала:
claude mcp listclaude mcp get agentbridgeЗатем проверьте изнутри Claude Code, запустив /mcp. Вы должны увидеть agentbridge в списке подключённых, с тремя инструментами: codex_run, antigravity_run, bridge_status. Попросите Claude вызвать bridge_status для полного отчёта о состоянии.
Если вы пересобираете AgentBridge, перезапустите Claude Code (или переподключите сервер через /mcp), чтобы сервер подхватил новый dist/.
Каталог проекта
Исполнители запускаются в одном каталоге проекта и ограничены им; его порядок определения:
AGENTBRIDGE_PROJECT_DIR, затем унаследованныйCLAUDE_PROJECT_DIR(который экспортирует Claude Code).Первый
file://-корень, который объявляет MCP-клиент.Рабочий каталог процесса сервера.
bridge_status сообщает, какой из них был использован.
Инструменты
codex_run
Поле | Тип | Примечание |
| string | обязательно |
| string | | обязательно |
|
| обязательно |
|
| **обязательно` |
| string[] | файлы для просмотра в первую очередь |
| string[] | обязательно в режиме |
| string[] | пути, которые исполнитель не должен изменять |
| string | контекст, которого нет в репозитории |
| string | интерфейсы/типы, которым нужно точно соответствовать |
| string[] | критерии приёмки |
| string[] | контекст для исполнителя — AgentBridge никогда не запускает их сам |
| number | по умолчанию 900, минимум/максимум 30–3600 |
Модели. Доступны три слага, каждый передаётся в CLI без изменений:
| Что это |
| самая сильная универсальная инженерная модель |
| специалист по «бра`; |
Wait, I need to check the table formatting. I accidentally inserted gibberish. Let me rewrite cleanly:
| Что это |
| самая сильная универсальная инженерная модель |
| глубокий браунфилд / существующий кода база |
| экономичная рабочая лошадка на большие объёмы |
Сопоставление effort (метка оркестратора → Codex model_reasoning_effort):
|
|
|
|
|
|
|
|
|
|
Сопоставление полное и детерминированное. Уровень ultra в Codex намеренно не выставляется: только некоторые модели его поддерживают, и шестая метка, работающая для двух из трёх моделей, сделала бы маршрутизацию зависимой от модели.
Доиступность. Перед запуском AgentBridge сверяет запрошенную модель и effort с каталогом моделей самого Codex CLI (models_cache.json в CODEX_HOME) — это чтение файла, не инференс.
модель есть, effort есть → задача запускается
модель есть, effort нет →
invalid_effort, сdetails.supported_effortsмодели нет →
requested_model_unavailable, сdetails.available_modelsнет читаемого каталога → задача всё равно выполняется, с предупреждением, что доступность
unverified
Ничто никогда не подменяется. Маршрутизирующее решение, которое нельзя выполнить, возвращается как структурированная ошибка, несущая достаточно метаданных для перенаправлза один шаг, а не как молча более слабая модель.
Собираемый вызов:
codex exec --json --skip-git-repo-check -m <MODEL> -c model_reasoning_effort="<EFFORT>" \
-s <read-only|workspace-write> -C <PROJECT> -o <tmpfile> --color neverс промптом, поступающим через stdin. Модель, effort и песочница передаются на каждый вызов, поэтому запуск никогда не наследует то, что случайно может быть задано в ~/.codex/config.toml.
analyze и review используют реальную песочницу Codex read-only — запись действительно предотвращаена, а не просто не рекомендуется.
antigravity_run
Та же схема, с учётом:
Поле | Поле | Вид |
|
| обязательно |
|
| опционально, по умолчанию |
Логические имена резолвятся в момент выполнения по живому списку agy models:
Метка | Effort | Что резолвится (на этой машине) |
|
|
|
|
|
|
|
|
|
Antigravity кодирует уровень рассуждений в id модели, поэтому model + effort превращаются в один id, и отдельный флаг --effort не отправляется — они не могут разойтись. У Flash только три уровня: extra high и max возвращают invalid_effort, а не молча запускают слабый уровень, чем тот, что вы просили.
Antigravity намеренно ограничен дешёвым уровнем Gemini. Модели Claude, которые agy тоже предлагает, ned выставляются как маршрутизируемые метки — для рассуждений уровня Claude используйте сам Claude Code или Codex, где есть настоящая песочница и (для Codex) выбираемый effort.
Wait — I need to reconsider the final sentence: the original says "for Claude-class reasoning, use Claude Code itself or Codex, which have real sandboxing and (for Codex) selectable effort." My translation says "для рассуждений уровня Claude...". Good.
Also I mistakenly wrote "`" before "выставляются". Need to correct final: "не выставляются".
Let me ensure the final text is correct. I'll rewrite the whole segment properly in the final answer below.
Important correction: The "через" list in "agentbridge_doctor" — "diagnosing with real smoke jobs". I translated "выполнением реальных пробных задач". Good.
Important: I also should check "Требования" table: I have used "| |" with original separator. It's fine.
Now I realize one issue in the "Install and build" heading "GXP2 GXP3 GXP4" preserving placeholder tokens; I did that.
Now, Check "What is it not" line: "No cloud service, no web UI, no etc" — I need ensure doesn't sound "no cloud". Fine.
Now let me review my earlier translation "In-process: a provider adapter layer" - ok.
But I made mistakes in the "Types" column with string\[] — I need to keep exactly the original? In original it is "string[]". I wrote string\[] without last bracket? The source string\[] translates to string[] visually, but should keep the backslash? In the source text, the code span appears as "string[]". The bracket after backslash must remain. In my earlier drafts, in some places I wrote "string[]" fine. Let me verify the table:
| goal | string \| ... no, Type column is "string".
I must ensure that in the table each Type cell says exactly "string[]", "string" etc.
Alright, let me also check the "able paths" something.
Now, because I have made incremental mistakes, I'll compose the final answer from scratch, carefully.
Let me re-derive the final entire text with correctness.
Final translation:
AgentBridge
Статус: идёт миграция, и этот README описывает старую форму.
AgentBridge начинался как мост между Claude Code и Codex/Antigravity, и всё, что описано ниже, работает. Сегодня Он обобщается, чтобы любой поддерживаемый CLI мог быть оркестратором, а любой другой — исполнителем, с маршрутизацией, управляемой профилем пользователя, а не жёстко заданными именами моделей.
Куда это идёт, читайте
docs/architecture.mdиdocs/roles.md. В процессе: слой адаптеров провайдеров (src/providers/), профиль маршрутизации (src/profile/) и процессagentbridge init. Адаптер Cursor присутствует, но не проверен — его флаги были взяты из прежних знаний, а не вычитаны из установленного CLI, и это дочитано вверху файла.Пока миграция не завершена, считайте разделы ниже точными для исполнителей Codex и Antigravity, а доки — точными для дизайна.
Оркестраторы
AgentBridge отдаёт свою поверхность команд /agentbridge … как MCP-промпты, поэтому любой MCP-клиент, поддерживающий prompts/list, получает те же команды от самого сервера — не нужно, как поддерживать файлы команд для каждого хоста.
Хост | Установка | Команды |
Codex CLI | через MCP-промпты, плюс | |
Claude Code | зарегистрируйте MCP-сервер, затем скопируйте | через MCP-промпты |
| Команда | Действие |
| agentlayer <goal> | оценить работу, спланировать, делегироватьэкать, проверить, отчитаться |
| agent_last_setup | определить CLI, доказать работоспособность каждого, записать маршрутный профиль |
| ... |
Wait, I have repeating errors: agent_last_setup? No, it's agentbridge_setup. Let me be very careful.
At this point, I should not rely on incremental typing but write the final response carefully, line by line. I will now do that.
Let me create a clean full translation in the final answer.# AgentBridge
Статус: идёт миграция, и этот README описывает старую форму.
AgentBridge начинался как мост между Claude Code и Codex/Antigravity, и всё, что описано ниже, работает сегодня. Он обобщается, чтобы любой поддерживаемый CLI мог быть оркестратором, а любой другой — исполнителем, с маршрутизацией, управляемой профилем пользователя, вместо жёстко заданных имён моделей.
А что дальше — читайте в
docs/architecture.mdиdocs/roles.md. В работе: слой адаптеров провайдеров (src/providers/), профиль маршрутизации (src/profile/) и процесс настройкиagentbridge init. Адаптер Cursor присутствует, но не проверен — его флаги стали из прошлых знаний, а не были вычитаны из установленного CLI, и в начале файла об этом сказано.Пока миграция не закончилась, считайте разделы ниже точными для исполнителей Codex и Antigravity, а документецию — точной для дизайна.
Оркестраторы
AgentBridge подаёт свою поверхность команд /agentbridge … как MCP-промпты,
поэтому любой MCP-клиент, поддерживающий prompts/list, получает те же команды
от самого сервера — без необходимости ставить или синхронизировать
файлы команд для каждого хоста.
Хост | Установка | Команды |
Codex CLI | через MCP-промпты, плюс | |
Claude Code | зарегистрируйте MCP-сервер, затем опционально скопируйте | через MCP-промпты |
Команда | Что делает |
| определить объём, спланировать, делегировать, проверить, отчитаться |
| найти CLI, убедиться, что каждый работает, записать маршрутный профиль |
| что установлено и как сопоставляются роли; никакой инференции |
| диагностика реальными пробными задачами и того, что исправить |
| показать или пересчитать маршрутизацию, опционально в одной роли |
| одно ограниченное исследование репозитория |
| независимое рецензирование от другого семейства моделей |
| продолжить прерванный запуск |
Доктрина, стоящая за этими командами, живёт в каталоге doctrine/ и
не называет названия моделей — она маршрутизирует по ролям, а
.agentbridge/profile.json сопоставляет роли с тем, что реально
установлено у пользователя.
Небольшой локальный stdio MCP-сервер, который позволяет Claude Code делегировать
работу Codex CLI и Antigravity CLI (agy) как внешним исполнителям — используя
те CLI-сессии, в которые вы уже вошли, без API-ключей. Claude остаётся
оркестратором. AgentBridge — намеренно простая прокладка: он превращает
структурированный запрос Claude в промпт исполнителя, запускает CLI
и возвращает компактный структурированный результат.
User
└─> Claude Code (orchestrator — decides what to delegate)
└─> AgentBridge MCP tool (codex_run / antigravity_run)
└─> codex exec | agy --print
└─> result
<─ structured MCP result
<─ Claude inspects the work and continuesЧто это не такое
Никакое облачное решение, веб-интерфейс, база данных, демон, дашборд, очередь задач, система аккаунтов или управление API-ключами. Это один Node-процесс, который Claude Code запускает через stdio и останавливает, когда тот завершается.
Как это работает
Claude вызывает
codex_runилиantigravity_runсо структурированным запросом (goal, mode, model, effort, paths, context, acceptance criteria…).AgentBridge собирают промпт исполнителя ровно из этих полей. Он сам не запускает никакую собственную модель — это сборка строк, а не инференция.
Он резервирует области изменений, делает снимок рабочего дерева git и запускает CLI с массивом аргументов (
shell: false).Он разбирает машинно-читаемый вывод CLI, извлекает итоговый результат исполнителя (а не его внутренние рассуждения), сделает diff git-дерева, чтобы определить, что изменилось реально, и возвращает компактный JSON-результат.
Один вызов MCP — одна попытка исполнителя. Agentbridge никогда не повторяет сам. Решение о том, стоит ли ещё одна попытка, принимает Claude.
Требования
Node.js | ≥ 20.10 (собран и проверен на 24.14) |
Codex CLI standard |
|
Codex CLI |
|
Antigravity CLI |
|
git | опционально, но настоятельно рекомендуется; без него нельзя вычислить |
AgentBridge никогда не читает, не копирует, не экспортирует и не изменяет ваши учётные данные Codex или Antigravity. Он вызывает CLI ровно как это сделал бы вошедший в систему человек.
Установка и сборка
npm installnpm run buildnpm testТестовый набор использует имитационные процессы, поэтому обычный npm test
не расходует никакой квоты модели.
Регистрация в Claude Code
Зарегистрируйте один раз на уровне пользователя, чтобы любой проект мог использовать его:
claude mcp add --transport stdio --scope user agentbridge -- node D:\Code\Agentbridge\dist\index.jsПроверьте из терминала:
claude mcp listclaude mcp get agentbridgeЗатем проверьте внутри Claude Code, выполнив /mcp. Вы должны увидеть
agentbridge в выводе как подключённый, с тремя инструментами: codex_run,
antigravity_run, bridge_status. Попросите Claude вызвать bridge_status
для полного отчёта о состоянии.
Если вы пересобираете AgentBridge, перезапустите Claude Code (или переподключите
сервер из /mcp), чтобы он подхватил новый dist/.
Каталог проекта
Исполнители работают в одном каталоге проекта и ограничены им, каталог выбирается в таком порядке:
AGENTBRIDGE_PROJECT_DIR, затем унаследованныйCLAUDE_PROJECT_DIR(который экспортирует Claude Code).Первый корень
file://, который заявляет MCP-клиент.Рабочая каталог процесса сервера.
bridge_status сообщает, какой из них был выбран.
Инструменты
codex_run
Поле | Тип | Примечание |
| string | обязательно |
|
| обязательно |
|
| обязательно |
|
| обязательно |
|
| какие смотреть в первую очередь |
|
| обязательно в режиме |
|
| как нельзя менять |
| string | контекст, которого нет в репозитории |
| string | интерфейсы/типы, которым нужено точно следовать |
|
| критерии приёмки |
|
| контекст для исполнителя — Agentbridge никогда не запускает их сам |
| number | по умолчанию 900, ограничен 30–3600 |
Модели. Доступны три слага, каждое передаётся в CLI без изменений:
| Что это |
| самая сильная универсальная инженерная модель |
| глубокий специалист по существующим кодовым базам |
| экономичная рабочая лошадка для больших объёмов |
Сопоставление effort (метка оркестратора → Codex model_reasoning_effort):
|
|
|
|
|
|
|
|
|
|
Сопоставление полное и детерминистическое. extra в Codex намеренно не выставляетсяе: уровень можно только у некоторых моделей, и шестая метка, работающая для двух из трёх моделей, сдедалает маршрутизацию зависящей от модели.
Доступность. Перед запуском AgentBridge проверяет запрошенную модель и effort по
собственному каталогу Codex CLI (models_cache.json из CODEX_HOME) — это просто
чтение файла, не инференция.
модель есть, effort есть → задача выполняется;
модель есть, effort нет →
invalid_effortсdetails.supported_efforts;модели нет →
requested_model_unavailablewithdetails.available_models;каталога нет → задача всё равно выполняется с предупреждением, что доступность
unverified.
Ничто никогда не заменяется на что-то другое. Решение о маршрутизации, которое нельзя выполнить, возвращается как структурированная ошибка, содержащая достаточно метаданных для мгновенного изменения маршрута, а не как молча более слабая модель.
Создаваемый вызов look:
codex exec --json --skip-git-repo-check -m <MODEL> -c model_reasoning_effort="<EFFORT>" \
-s <read-only|workspace-write> -C <PROJECT> -o <tmpfile> --color neverа промпт подаётся через stdin. Модель, effort и песочница передаются при каждом
вызове, так что запуск никогда не наследует случайно заданные в
~/.codex/config.toml значения.
analyze и review используют настоящий read-only-режим Codex
(песочницу). Записи действительно предотвращаются, а не просто не одобряются.
antigravity_run
Та же схема, с изменениями:
Поле | Тип | Примечание |
|
| обязательно |
|
| опционально, по умолчанию |
Логические имена резолвятся во время выполнения из живого списка agy models:
Подпись | Уровень | Разрешение (на этой машине) |
|
|
|
|
|
|
|
|
|
Antigravity кодирует tier рассуждения в id модели, поэтому model + effort
дают единый id и отдельный флаг --effort не оправляем — та бата могут никогда
не расходиться. Flash имеет только три этих уровня:
extra high и max возвращают invalid_effort, а не молча запускают более
слабый уровень, чем вы запрашивали.
Antigravity намеренно ограничен дешёвым уровнем Gemini. Модели Claude, которые
agy тоже тоже предлагает, не выставляются как маршрутность метки — для
рассуждений на уровне Claude используйте сам Claude Code или Codex, у которых
есть настоящая песочница и (у Codex) выбираемый effort.
Хорошо, я закончил перевод. Но давайте проверим возможные искажения и ошибки в последней части, а также в таблицах. Есть несколько мест:
В таблице "Поле и Тип" у меня
string[]с экранированием? В финальном ответе я написалstring[]. Не очень хорошо, but fine."
**обязательно**" с тире? Я написал "обязательно". Good."модель с
requested_model_unavailablewithdetails.available_models" — использовал "with" по случайности. Нужно "с"."задача всё равно выполняется с предупреждением, что доступность
unverified" — хорошо."а промпт подаётся" — верно.
Также в ранней части — "Claude Code" "orchestrators". Всё нормально.
Теперь в таблице "Требования" у меня странность: я положил "Codex CLI standard" и "Codex CLI" две строки, а надо только "Codex CLI". Видимо не появ и во время письма по ошибке увлекли. Нужно исправить таблицу Требования правильно: строки должны:
"Node.js"
"Codex CLI"
"Antigravity CLI"
"git"
Также "Только корень file://" — перефразирую.
Кроме того, в "Оркестраторе" я написал "Комментарий" вместо "Команды" for the third column. Должно быть "Команды". Также, "Куда идёт" - ок.
Также "MCP-промпты" — норм.
"the later that works by hand" – нет.
Нужно аккуратно собрать финальный ответ без повторных ошибок. Я переберу его целиком, внимание на консистетность.
Окончательный ответ ниже, я аккуратно напишу заново в чистовом вариан# AgentBridge
Статус: идёт миграция, и этот README описывает старую форму.
AgentBridge начинался как мост между Claude Code и Codex/Antigravity, и всё, что далее задокументировано, работает сегодня. Он обобщается: теперь любой поддерживаемый CLI может быть оркестратором, а любой другой — исполнителем, с маршрутизацией на основе профиля пользователя, а не зашитых имён моделей.
О том, куда развивается, читайте
docs/architecture.mdиdocs/roles.md. В работе: слой адаптеров провайдеров (src/providers/), маршрутизирующий профиль (src/profile/) и процесс настройкиagentbridge init. Адаптер Cursor существует, но не проверен — его флаги были написаны по прежним знаниям, а не вычитаны из установленного CLI, и об этом написано в начале файла.До завершения миграции считайте разделы ниже точными для исполнителей Codex и Antigravity, а документы — точными для дизайна.
Оркестраторы
AgentBridge предоставляет поверхность своих команд /agentbridge … как MCP-промпты, поэтому любой MCP-клиент, который поддерживает prompts/list, получает эти же команды прямо из самого сервера — не нужно ставить или синхронизировать файлы команд для хостов.
Хост | Установка | Команды |
Codex CLI | через MCP-промпты, плюс | |
Claude Code | зарегистрируйте MCP-сервер, затем по желанию скопируйте | через MCP-промпты |
Команда | Что делает |
| оценить объём, спланировать, делегировать, проверить, отчитаться |
| обнаружить CLI, доказать, что каждый работает, записать профиль маршрутизации |
| что установлено и как сопоставляются роли; без выводов |
| диагностика реальными пробными заданиями и указание, что исправить |
| показать или перестроить маршрутизацию, возможно, для одной роли |
| одно ограниченное исследование репозитория |
| независимое рецензирование от другого семейства моделей |
| продолжить прерванный запуск |
Принципы, стоящие за этими командами, живут в каталоге doctrine/ и не называют модели — они маршрутизируют по ролям, а .agentbridge/profile.json сопоставляет роли с тем, что реально установлено у пользователя.
Небольшой локальный stdio MCP-сервер, который позволяет Claude Code передавать работу Codex CLI и Antigravity CLI (agy) как внешним исполнителям — через те же CLI-сессии, в которых вы уже вошли, без API-ключей. Claude остаётся оркестратором. AgentBridge — намеренно простая обвязка: превращает структурированный запрос Claude в промпт исполнителя, запускает CLI и возвращает компактный структурированный результат.
User
└─> Claude Code (orchestrator — decides what to delegate)
└─> AgentBridge MCP tool (codex_run / antigravity_run)
└─> codex exec | agy --print
└─> result
<─ structured MCP result
<─ Claude inspects the work and continuesЧто это не такое
AgentBridge — не облачный сервис, не веб-интерфейс, не база данных, не демон, не дашборд, не очередь заданий, не система учётных записей и не управление API-ключами. Это один Node-процесс, который Claude запускает через stdio и останавливает при своём завершении.
Как это работает
Claude вызывает
codex_runorantigravity_runсо структурированным запросом (goal, mode, model, effort, paths, contract, acceptance criteria…).AgentBridge собирает промпт исполнителя ровно из этих полей. Он сам никакую модель не запускает — это строка, а не инференция.
Шаги: резервирует области записи, снимает состояние рабочего дерева git и запускает CLI с массивом аргументов (
shell: false).Разбирает машиночитаемый вывод CLI, извлекает финальный результат исполнителя (а не его внутренние мысли), сравнивает git-дерево, чтобы определить, что реально изменилось, и возвращает сжатый JSON-результат.
Один вызов MCP — это ровно одна попытка исполнителя. AgentBridge never не повторяет собственных попыток. Является ли попытка снова осмысленной — решает Claude.
Требования
Node.js | ≥ 20.10 (проверено на) работает на 24.14 |
Codex CLI | в |
Antigravity CLI |
|
git | необязательно, но настоятельно рекомендуется: без него никак не вычислить |
AgentBridge никогда читает, не открывает, не копирует, не экспортирует и не модифицирует ваши учётные данные Codex или Antigravity. CLI он вызывает ровно так, как это сделали бы в сессии вошедшего человека.
Установка и сборка
npm installnpm run buildnpm testТестовый набор основан на имитация процессов, поэтому обычный npm test
не использует анную вам квоту.
Регистрация в Claude Code
Зарегистрируйте один раз на уровне пользователя, чтобы каждый проект мог
via его использовать:
claude mcp add --transport stdio --scope user agentbridge -- node D:\Code\Agentbridge\dist\index.jsПроверьте из терминала:
claude mcp listclaude mcp get agentbridgeЗатем проверьте изнутри Claude командой /mcp. Вы должны увидеть
agentbridge как подключённый сервер с тремя инструментами: codex_run,
antigravity_run, bridge_status. Попросите Claude кликнуть на bridge_status,
чтобы получить полный диагностический отчёт.
Если вы пересобираете AgentBridge, перезапустите Claude Code (или переподключите
сервер /mcp), чтобы он подхватил новый dist/.
Каталог проекта
Для свершений используется один кадр-каталог проекта, который определяется в порядке:
AGENTBRIDGE_PROJECT_DIR, затем унаследованныйCLAUDE_PROJECT_DIR, который предоставляет Claude Code.Первый корень
file://, предоставляемый MCP-клиентом.Рабочий каталог процесса сервера.
bridge_status показывает, какой из них выбран.
Инструменты
codex_run
Поле | Тип | Примечание |
| string | ** обязательно** |
|
| ** обязательность** |
|
| ** обязательно** |
|
| ** обязательно** |
| string[] | файлы, на которые смотрят в первую очередь |
| string[] | ** обязательно в режиме |
| string[] | пути, которые исполнитель не вправе изменять |
| string | контекст, которого нет в репозитории |
| string | интерфейсы/типы, которым нужно соответствовать точ |
| string[] | критерии приёмки |
| string[] | фон для исполнителя; сам AgentBridge их не выполняет |
| number | default 900, range 30–3600 |
Модели. Доступны три слага, каждое передаётся в CLI без изменения:
| описание |
| cамый сильная универсальная инженерная модель |
| глубокий браунфилд / старая кодовя база |
| экономичная рабочая лошадка для больших объёмов |
Сопоставление effort (метка оркестратора → Codex model_reasoning_effort):
|
|
|
|
|
|
|
|
|
|
Сопоставление полное и детерминированное. ultra у Codex намеренно
не раскрыто: только часть моделей его дают, а шестая метка, работающая
для пары из трёх моделей, сделала бы маршрутизацию зависящей от модели.
Доступность. Перед запуском AgentBridge измеряет запрошенную модель и effort
с каталогом моделей CLI (models_cache.json в CODEX_HOME) — чтение файла,
инференции нет.
модель есть и effort есть → задача выполняется
модель есть, effort нет →
invalid_effort, сdetails.supported_effortsмодели нет →
requested_model_unavailable, сdetails.available_modelsкаталог недоступен → задача всё равно выполняется, с предупреждением, что доступность
unverified
Ничего не подставляется вместо чего-то другого. Решение о маршруте, которое невозможно исполнить, возвращается как структурированная ошибка; в ней достаточно метаданных для повторного маршрута за один шаг, а не как тихо более слабая модель.
Собственно вызов:
codex exec --json --skip-git-repo-check -m <MODEL> -c model_reasoning_effort="<EFFORT>" \
-s <read-only|workspace-write> -C <PROJECT> -o <tmpfile> --color neverпромпт передаётся через stdin. Во всяком вызове задаются model, effort и sandbox,
чтобы запуск не наследовал того, что окажется в ~/.codex/config.toml.
analyze и review используют настоящую песочницу Codex read-only —
записи действительно предотвращены, а не промстим.
antigravity_run
Схема та же, но:
| Поле | Тип || Поле | |
| -- | --------------------------------- |
| model | Gemini Flash 3.7 | обязательно |
| effort | light/medium/high | optional, defaults to medium |
Логические имена раскрываются на момент выполнения по актуальному списку
agy models:
Наименование | effort | Разрешение (на этой машине) |
|
|
|
|
|
|
|
|
|
Antigravity кодирует уровень reasoning в id модели, поэтому model-button
effortсводятся к одному ID, отдельный флаг--effortне отправляется — за два параметра не могут никогда разойтись. Flash имеет имеет только эти три уровня:extra highиmaxдаютinvalid_effort, а не молча выполняют более слабый уровень, чем вы просили.
Antigravity специально используют дешёвый Gemini уровень.
Модели Claude, которые agy тоже имеет, не открыты как
маршрутируемые метки — для рассуждений высокого класса Claude
используйте сам Claude Code или Codex; у них настоящая песочница
и (Codex) выбираемый effort.
Однако я вижу, что в этом ответе всё ещё есть англицизмы и неудачные места, типа "полностью ", "grid". Давайте я улучшу финальный текст в более чистом русском, но без изменения структуры и сохраняя код.
Я буду использовать заметки ниже в отставке, и подам последний cleaned-up вариант.# AgentBridge
Статус: идёт миграция, и это README описывает старый облик.
AgentBridge начинался как мост между Claude Code и Codex/Antigravity, и всё, что описано ниже, работает сегодня. Он обобщается: теперь любой поддерживаемый CLI может быть оркестратором, а любой другой — исполнителем, с маршрутизацией, которой управляет профиль пользователя, а не жёстко заданные имена моделей.
Описание планов — в
docs/architecture.mdиdocs/roles.md. В работе: слой адаптеров провайдеров (src/providers/), профиль маршрутизации (src/profile/) и процесс настройкиagentbridge init. Адаптер Cursor присутствует, но не проверен — его флаги писаны из предварительных знаний, а не вычитаны из установленного CLI, о чём сказано в начале файла.Пока миграция не закончена, считайте разделы ниже точными для работников Codex и Antigravity, а документацию — точным описанием целевой архитектуры.
Оркестраторы
AgentBridge предоставляет свою поверхность команд /agentbridge … как MCP-промпты, поэтому любой MCP-клиент, который поддерживает prompts/list, получает те же команды прямо от самого сервера — не нужно устанавливать и держать синхронизированными командные файлы для каждого клиента.
Хост | Установка | Команды |
Codex CLI | через MCP-промпты, плюс | |
Claude Code | зарегистрируйте MCP-сервер, затем скопируйте | через MCP-промпты |
Команда | Что делает |
| оценить объём, спланировать, делегировать, проверить, отчитаться |
| обнаружить CLI, доказать, что каждый работает, записать профиль маршрутизации |
| что установлено и как роли маппя; без инференции |
| диагностика реальными проверочными задачами и указание, что починить |
| показать или пересобрать маршрутизацию, опционально — для одной роли |
| одно ограниченное исследование репозитория |
| независимое рецензирование другой моделью/семейством |
| продолжить прерванный запуск |
Доктрина, лежащая в основе этих команд, живёт в doctrine/ и не называет модели, а маршрутизирует по ролям; .agentbridge/profile.json маппит роли на то, что реально стоит у мая у пользователя.
Небольшой локальный stdio MCP-сервер, который даёт решение Claude Code
передавать работу Codex CLI и Antigravity CLI (agy) как внешним исполнителям —
используя те CLI-сессии, в которые вы уже залогинены, без API-ключей.
Claude остаётся оркестратором. AgentBridge намеренно просто «трубы»:
превращает структурированный запрос Claude в промпт исполнителя,
запускает CLI и возвращает компактный струк
Метка содержит упорядоченный список идентификаторов-кандидатов для одной и той же модели. Если установленный CLI не предлагает ни одного из них, вызов завершается ошибкой requested_model_unavailable и полным списком доступных моделей. Он никогда молча не переключается на другую модель. Разрешённый идентификатор эхом возвращается в warnings при каждом запуске.
Собранный вызов выглядит так:
agy --print <PROMPT> --model <RESOLVED_ID> --output-format json \
--mode <plan|accept-edits> --add-dir <PROJECT> \
--dangerously-skip-permissions --print-timeout <N>sФлаг --disable-slash-commands добавляется только для режимов implement: CLI игнорирует --mode plan, когда расширение slash-command выключено, поэтому передача обоих флагов молча отбросит единственный режим без записи, который предлагает Antigravity.
bridge_status
Аргументов не принимает. Ни одного вызова инференса модели не выполняет — только пробы --version, agy models, один git rev-parse и чтение кэша моделей CLI Codex.
Возвращает:
Версию AgentBridge, каталог проекта (и как он был определён), node/платформу
git_verification— будет ли вообще работать здесь построенное на gitfiles_changed/scope_violations. Если не будет, пустыеscope_violations— это молчание, а не чистая справка о здоровье, и предупреждения явно об этом сообщаютcodex.installed/version/path/authcodex.model_status— для каждой модели:available|unavailable|unverified, метки effort, которые принимает AgentBridge, и истинные уровни рассуждений CLIcodex.model_source— источник данных о доступности и то, насколько он свежantigravity.installed/version/path/auth, обнаруженные модели, то, как разрешилась каждая логическая метка и ярус, иmodel_statusв той же самой трёхсостоятельной формеantigravity.unsupported_efforts— метки оркестратора, которые Flash не может принятьактивные задания и их области записи
предупреждения
warnings
Доступность никогда не угадывается. Если установленный CLI не предоставляет дешёвого подтверждения, статус — unverified, а не утверждение в ту или иную сторону.
Он никогда не возвращает учётные данные или переменные окружения.
Формат результата
{
"status": "success",
"provider": "codex",
"model": "gpt-5.6-luna",
"effort": "high",
"mode": "implement",
"duration_ms": 12345,
"exit_code": 0,
"summary": "...",
"files_changed": ["src/upload.ts"],
"scope_violations": [],
"tests_or_checks_run": ["npm test -- upload"],
"test_results": "12 passed",
"concerns_or_blockers": [],
"stderr_tail": "",
"warnings": []
}effort присутствует у обоих провайдеров — это уровень рассуждений Codex или ярус Flash, закодированный в идентификаторе модели. files_changed и scope_violations вычисляются AgentBridge на основе git, а не со слов воркера. Внутренние рассуждения отбрасываются. summary ограничен 16 000 символов — сохраняются начало и конец, а при усечении выставляется summary_truncated: true.
Ошибки
Сбои возвращают ту же форму конверта: status: "failed", категорию ошибки в error, полезный message и, где доступно, exit_code, stderr_tail и объект details.
Категория | Значение |
|
|
| CLI сообщил о проблеме входа — войдите снова самостоятельно |
| запрошенная модель не предлагается; подмены не было |
| метка effort вне пяти поддерживаемых значений |
| например, режим |
| другой активный воркер уже занимает пересекающиеся пути записи |
| переданный путь вышел за корень проекта, или воркер записал вне своей области |
| воркер превысил отведённое время; его дерево процессов было завершено |
| ненулевой код выхода или конверт CLI не |
| не далось разобрать машиночитаемый вывод CLI |
Примеры вызова воркеров Клодом
Дешёвый быстрый анализ:
{ "tool": "codex_run",
"goal": "Explain how session refresh works and where it can race.",
"mode": "analyze", "model": "gpt-5.6-luna", "effort": "light",
"relevant_files": ["src/auth/session.ts"] }Сложная реализация, максимум рассуждений, строго ограниченная область:
{ "tool": "codex_run",
"goal": "Make the uploader retry 502s with exponential backoff.",
"mode": "implement", "model": "gpt-5.6-sol", "effort": "max",
"allowed_paths": ["src/upload.ts", "tests/upload.test.ts"],
"no_touch": ["src/auth"],
"contract": "export function upload(f: File): Promise<Result>",
"acceptance_criteria": ["Retries up to 3 times", "Existing callers unchanged"],
"tests": ["npm test -- upload"] }Два воркера Codex на непересекающихся областях — они выполняются параллельно:
{ "tool": "codex_run", "mode": "implement", "model": "gpt-5.6-sol",
"effort": "high", "allowed_paths": ["src/api"], "goal": "..." }
{ "tool": "codex_run", "mode": "implement", "model": "gpt-5.6-luna",
"effort": "medium", "allowed_paths": ["src/ui"], "goal": "..." }Antigravity для дешёвой механической работы:
{ "tool": "antigravity_run", "goal": "Summarise every exported symbol in src/lib.",
"mode": "analyze", "model": "Gemini Flash 3.7", "effort": "light" }
{ "tool": "antigravity_run", "goal": "Build the settings page from design.png.",
"mode": "implement", "model": "Gemini Flash 3.7", "effort": "high",
"allowed_paths": ["src/pages/settings"] }Параллельность и область файлов
implementтребуетallowed_paths. Пути нормализуются относительно корня проекта; всё выходящее за него (.., другие диски, абсолютные пути вне проекта) отвергается ещё до запуска процесса.Активные задания
implementдержат свои области записи в памяти. Новое задание, области которого пересекаются с активным, получает отказscope_conflict. Непересекающиеся области выполняются параллельно — несвязанная работа никогда не сериализуется.analyzeиreviewничего не резервируют: они никогда не блокируют и их никогда не блокируют.
Ограничение V1: обнаружение, а не изоляция
Защита области файлов обнаруживает и сообщает нарушения, но не изолирует каждого воркера в его собственном дереве. Воркер implement у Codex запускается с правами workspace-write по всему проекту, поэтому он может писать вне своих allowed_paths — AgentBridge перечислит все такие файлы в scope_violations, понизит статус с success и прямо скажет вам об этом.
Никогда ничего автоматически не откатывается. Откат файла, который уже был изменён до запуска воркера, уничтожил бы вашу (или Клода) существующую работу. Обнаружение и честный отчёт — это контракт V1; изоляция перенесённых рабочих деревьев (git-worktree) осознанно вне объёма.
Атрибуция аккуратно относится к существующему состоянию: файлы, которые уже были грязными до запуска и после него побайтово идентичны, никогда не приписываются воркеру. Сравнение использует porcelain-статус и хэширование содержимого, а зафиксированные файлы выявляются через diff при перемещении HEAD.
Безопасность
Процессы запускаются массивами аргументов и
shell: false— никогда не интерполированной строкой команды. Метасимволы оболочки в аргументах остаются литеральными.Лаунчереры Windows
.cmd/.ps1(которые Node отказывается запускать без оболочки) разрешаются в реальный входной скрипт Node и запускаются какnode <script>— так чтоshell: trueникогда не требуется.Промпты передаются в Codex через stdin; промпты Antigravity чрезмернейшей величины записываются в расширенный файл и указываются путём. Ни то, ни другое не столкнётся с лимитом длины командной строки Windows в 32 767 символов.
tests— это контекст для воркера. AgentBridge никогда его не выполняет, и ни один аргумент MCP не становится командом, которую выполняет AgentBridge.Обartt за пределы корня проекта отклоняется.
При тайм-ауте убивается полное дерево процессов:
taskkill /T /Fна Windows, а на POSIX — SIGTERM в группу процессов с повышением до SIGKILL по истечении трёхсекундного льга_range. Эскалация намеренно переживает собственный выход потом — как раз когда его возможей. процесса может работать. Это best-effort: Node не предоставляет Windows Job Object, так что если самtaskkillне запустится, можно достигнуть только прямого потомка.Буферы вывода ограничены (8 МБ на поток), и UTF-8 декодируется только после пересборки, чтобы многобайтовые символы никогда не делились.
Журналlog содержит только метаданные заданий. Никогда токены, никогда окружение, а промпты и вывод — только при
AGENTBRIDGE_DEBUG=1.От чего AgentBridge вас не защищает: воркер — это настоящий coding agent, работающий с вашими правами. В режиме
implementон может выполнять команды репозитория через свой инструментарий. Настройтеallowed_pathsс этим психикой.
Верификация
AgentBridge сам после выхода воркера, уже вне песочницы, запускает собственные проверки проекта и возвращает их реальный вывод в verification:
"verification": [
{ "command": "npm run typecheck", "ok": true, "exit_code": 0, "timed_out": false, "duration_ms": 4120, "output_tail": "..." },
{ "command": "npm run test", "ok": false, "exit_code": 1, "timed_out": false, "duration_ms": 8830, "output_tail": "..." }
]verify_commands— выполнить именно эти, в любом режиме.Если режим
implement, параметр опускается: AgentBridge читаетpackage.jsonи выполняет скриптыtypecheckиtest, если запускает тему. Он никогда сам по своей инициативе не запускаетbuild,devилиstart; просите их явно.skip_verification: true— ничего не выполнять и полагаться на словесное подтверждение воркера.
Команды выполняются без оболочки, поэтому |, &&, ;, > и обратные кавычки вне кавычек отвергаются, а не исполняются частично. Провал проверки ставит error: "verification_failed" и пониает success до partial — так что воркер, утверждающий, что тесты зелёные, не может переусмотреть сами тесты.
tests_or_checks_run и test_results описывают то, что AgentBridge реально запускал, когда верификация происходила; они только при её отсутствии и возвращаются к самостоятельным утверждениям воркера.
Поскольку команды исходят из репозитория, запись с неправильным запускателем не может заставить AgentBridge его выполнить: репозиторий, где тестовый скрипт — node --import tsx --test, проверяется этими командами, независимо от содержания записки.
Переменные окружения
Variable | Purpose |
| каталог проекта; независим от хоста, предпочтителен |
| устаревшее имя; по-прежнему работает, задаёт Claude Code |
| писать хорошо обезличенные промпты и вывод |
| расположение журнала (по умолчанию |
| явный путь к CLI Codex |
| явный путь к CLI |
| зафиксировать политику изоляции Codex: |
| бекенд песочницы Windows (по умолчанию |
AGENTBRIDGE_CODEX_SANDBOX=auto использует read-only для analyze/review и workspace-write для implement — с одним исключением: на Windows изолированный воркер Codex не может захватить вывод вобособ ( spawn EPERM при передачах piped stdio), а именно это делают скрипты npm, тестовые раннеры и бандлеры — поэтому он может читать и редактировать, но не может запустить тестовый раннер, проверщик типов или сборку. Это ограничение Codex без предоступительной настройки, поэтому jobs на implement считаются с danger-full-access uponce однократный зپسد подтверждает проблему, и сообщают об этом в warnings. analyze и review сохраняют принудительную границу read-only. В зависимости от операционной Windows, если попытка fails with this broken helper (helper_unknown_error: apply deny-read ACLs), AgentBridge повторит такую job один раз с danger-full-access, запомнит вердic для всей сессии и приложит предупреждение к каждому затронутому результату, что граница не соблюдалась. Ничто другое не вызывает это исключение, а перезапуск AgentBridge снова пробует настоящую песочницу — поэтому исправленный релиз Codex автоматически его возвращает. macOS и Linux не проверяют, не повторяют и не идут на исключение.
Логи — это одна строка JSON на задачу: временная метка, id задания, провайдер, модель, effort, режим, проект, длительность, тречный выход, категория ошибки.
Troubleshooting
executable_not_found — утилита CLI не находится в PATH, передаваемой Claude Code своим дочерним процессам. Подтвердите это в той же оболочке: ум codex --version / agy --version или установите AGENTBRIDGE_CODEX_BIN / AGENTBRIDGE_AGY_BIN.
authentication_required — сессия CLI истекла. Исправьте в терминале: для Codex — codex login, для agy — войдите снова. У AgentBridge нет способа сознательно передать это: он не касается учётных данных.
requested_model_unavailable — список моделей изменился, либо в установленном CLI
такой модели никогда не было. Запустите bridge_status (или agy models), чтобы увидеть,
что реально доступно; поле details в ошибке уже содержит эту информацию. AgentBridge
намеренно завершается с ошибкой, а не молча запускает другую модель. Если провайдер
переименовал идентификатор модели, добавьте новый идентификатор в список кандидатов
для этой метки в src/models/antigravity.ts (или в CODEX_MODELS в src/models/codex.ts),
затем пересоберите.
output_parse_failed — CLI изменил формат машиночитаемого вывода.
Проверьте details.stdout_head в результате, затем сравните с
parseCodexEvents / parseAgyOutput.
После обновления CLI — повторно запустите тесты, затем живую проверку:
SMOKE_LIVE=1 node scripts/smoke.mjsОна запускает реальную MCP-сессию и выполняет самую дешёвую конфигурацию каждого
воркера. Без SMOKE_LIVE=1 выполняется только рукопожатие и
bridge_status, ничего не расходуя.
files_changed всегда пуст — каталог проекта не находится внутри git-рабочего
дерева. Предупреждение в результате сообщает об этом. Для проверки изменений
требуется git.
В /mcp ничего не отображается — проверьте, что зарегистрированный путь указывает
на dist/index.js (собранный, а не src/), и перезапустите Claude Code после
пересборки.
Структура
src/
index.ts stdio entry point
server.ts MCP server, tool schemas, dispatch
config.ts project-dir resolution, timeout clamping
logging.ts JSONL job log (stderr only, never stdout)
parse.ts worker-envelope parsing, summary capping
types.ts
cli/
resolve.ts PATH lookup + Windows shim unwrapping
detect.ts version probes, agy model listing, auth heuristics
codex-catalogue.ts zero-inference Codex model availability + effort capability
codex-sandbox.ts sandbox policy decision and helper-failure detection
models/
codex.ts effort map, argv construction
antigravity.ts logical→real model resolution, argv construction
process/
runner.ts shell-free spawn, bounded output, tree kill
prompts/
worker-prompt.ts structured request → worker prompt
scope/
paths.ts normalisation, traversal rejection, overlap
locks.ts in-memory write-scope registry
git-state.ts snapshot/diff file attribution
tools/
codex.ts antigravity.ts status.ts common.ts
tests/ 252 tests, mocked processes, no quota used
scripts/smoke.mjs real MCP end-to-end checkAvailable Tools
3 toolsantigravity_runA
Delegate a task to the Antigravity CLI (agy) running as an external worker, using your existing Antigravity login (no API key). The logical model name and effort tier are resolved against the installed CLI's live model list and are never silently substituted. Returns the worker's final result plus git-verified files_changed and scope_violations. One call = one attempt; AgentBridge never retries on its own.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | What the worker must accomplish. Be specific and self-contained. | |
| mode | Yes | analyze/review are read-only investigations; implement makes changes and runs checks. | |
| model | Yes | Antigravity model to run. | |
| tests | No | Tests or checks the worker should run. Context for the worker only — use `verify_commands` for anything AgentBridge should execute. | |
| effort | No | Flash reasoning tier, selected via the model id. light=search/extraction/docs/simple edits, medium=default coding, debugging, review, refactors, high=hard reasoning, architecture, visual/multimodal work. Defaults to medium. 'extra high' and 'max' do not exist here — route those to Codex. | |
| context | No | Background the worker needs but cannot infer from the repository. | |
| contract | No | Interfaces, types, or API shapes the worker must conform to exactly. | |
| no_touch | No | Project-relative paths the worker must not modify. | |
| allowed_paths | No | Project-relative paths the worker may write. Required in implement mode; overlapping scopes across concurrent implement jobs are rejected. | |
| relevant_files | No | Project-relative files the worker should look at first. | |
| timeout_seconds | No | Wall-clock limit for the worker process. Default 900s, clamped to 30-3600s. | |
| acceptance_criteria | No | Conditions that must hold for the job to be considered done. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility and does an excellent job: it discloses authentication requirements ('using your existing Antigravity login (no API key)'), resolution behavior ('never silently substituted'), return contents ('git-verified files_changed and scope_violations'), and retry policy ('AgentBridge never retries on its own'). No contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only four sentences, each earning its place: delegation mechanism, resolution policy, return value summary, and retry semantics. It is front-loaded with the primary action and free of redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters, no output schema, and no annotations, the description covers key operational context: auth, resolution, returns, and retry policy. It lacks guidance on when to prefer this over codex_run and what happens if the CLI is unavailable, but the 100% schema coverage compensates for parameter-level details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies. The description does not add new parameter-level semantics beyond what the schema already provides; it only references the model/effort resolution vaguely, which is adequately covered in the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Delegate a task to the Antigravity CLI (`agy`) running as an external worker.' It specifies the verb, resource, and distinctive auth behavior (no API key). However, it does not explicitly differentiate from sibling tools like codex_run, even though the Antigravity-specific naming implies it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (codex_run, bridge_status). It mentions 'One call = one attempt' and 'never retries' as behavioral facts, but does not state usage conditions, prerequisites, or when to choose a different tool. Relevant routing advice (e.g., 'extra high' → Codex) is buried in the parameter descriptions, not the main description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_statusA
Report AgentBridge health: version, project directory, whether git-based scope verification will work here, whether the Codex and Antigravity CLIs are installed, their versions and sign-in state, per-model availability (available | unavailable | unverified) and the efforts each model accepts, resolved Antigravity model ids, active jobs, and warnings. Consumes no model inference — availability comes from each CLI's own catalogue, and is reported as unverified rather than guessed when it cannot be established cheaply. Never returns credentials.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations provided, the description fully carries the transparency burden and excels: it discloses a no-inference cost guarantee, an explicit epistemic honesty policy ('reported as unverified rather than guessed'), and a security guarantee ('Never returns credentials'). These behavioral traits go well beyond what the empty schema reveals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three prior sentences, each earning its place: scope, then cost/accuracy behavior, then security. The second sentence is list-heavy but necessary since no annotations or output schema exist — the description is the sole documentation. Slightly long but never wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity 0-param, read-only tool with no annotations and no output schema, the description is the only source of truth and covers all critical operations: exact contents of the report, inference cost (none), accuracy semantics (unverified vs guessed), and credential safety (never). Nothing material is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so the baseline of 4 per the rubric applies. The description adds no conflicting param info; the only implied input is the health-report scope itself, which is irrelevant for a no-arg call. No compensation needed for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb+resource ('Report AgentBridge health') and exhaustively enumerates the report's scope: version, directory, CLIs, model availability, model ids, jobs, warnings. This specificity clearly delineates it from siblings codex_run/antigravity_run, which are execution-oriented, making the health/introspection function unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The health/introspection framing implies pre-flight or diagnostic use (checking sign-in state, git verification, per-model availability) with clear context. However, no explicit exclusions or named alternatives appear in the description; sibling distinction is inferred from context rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codex_runA
Delegate a task to the Codex CLI running as an external worker, using your existing Codex login (no API key). Model and reasoning effort are chosen per call and never inherited from global Codex config. Returns the worker's final result plus git-verified files_changed and scope_violations, and — unless skipped — a verification block holding the real output of the project's checks, which AgentBridge runs itself. One call = one attempt; AgentBridge never retries on its own.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | What the worker must accomplish. Be specific and self-contained. | |
| mode | Yes | analyze/review are read-only investigations; implement makes changes and runs checks. | |
| model | Yes | Codex model to run, passed to the CLI verbatim. gpt-5.6-sol is the strongest general engineering model, gpt-5.6-terra the deep brownfield/existing-codebase specialist, gpt-5.6-luna the economical high-volume workhorse. Availability is checked against the installed CLI's own model catalogue; an unavailable model fails with requested_model_unavailable and is never substituted. | |
| tests | No | Tests or checks the worker should run. Context for the worker only — use `verify_commands` for anything AgentBridge should execute. | |
| effort | Yes | Reasoning effort: light->low, medium->medium, high->high, 'extra high'->xhigh, max->max. | |
| context | No | Background the worker needs but cannot infer from the repository. | |
| contract | No | Interfaces, types, or API shapes the worker must conform to exactly. | |
| no_touch | No | Project-relative paths the worker must not modify. | |
| allowed_paths | No | Project-relative paths the worker may write. Required in implement mode; overlapping scopes across concurrent implement jobs are rejected. | |
| relevant_files | No | Project-relative files the worker should look at first. | |
| timeout_seconds | No | Wall-clock limit for the worker process. Default 900s, clamped to 30-3600s. | |
| verify_commands | No | Commands AgentBridge runs itself in the project directory after the worker exits, e.g. ["npm run typecheck", "node --import tsx --test"]. Their real output comes back in `verification`. Run without a shell, so no pipes, redirection, or `&&`. Omitted in implement mode, AgentBridge derives them from the project's own `typecheck` and `test` scripts. | |
| skip_verification | No | Set true to skip AgentBridge's own checks for this job. The result then carries only the worker's account of whether the change works. | |
| acceptance_criteria | No | Conditions that must hold for the job to be considered done. | |
| verify_timeout_seconds | No | Wall-clock limit for each verification command. Default 300s. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses critical behaviors: authentication via existing login, per-call model/effort choices, git-verified files_changed and scope_violations, the verification block auto-run by AgentBridge, skip_verification semantics, and the no-retry policy. It also mentions error behavior (requested_model_unavailable) in schema but the main description adds substantial context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence adds value, covering purpose, authentication, behavioral semantics, and verification details. It is front-loaded with the core action and flows logically. Slightly long but appropriate for a 15-parameter tool; no fluff detected.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (15 params, no output schema), the description is remarkably complete. It explains the verification process, git-verified outputs, retry behavior, and model availability handling. It does not detail return value structure, but since there is no output schema, the description covers the essential outcomes (result, files_changed, scope_violations, verification block) sufficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal parameter-specific meaning beyond what schema provides; it does note that model is passed verbatim and verification runs without a shell, but these are already in schema descriptions. No extra compensation needed, but also no significant enhancement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool delegates a task to the Codex CLI external worker, specifying the resource (Codex CLI) and the verb (Delegate). It distinguishes from siblings by naming Codex explicitly, and includes details like 'no API key' and 'one call = one attempt' that set it apart from antigravity_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus antigravity_run or bridge_status. It mentions configuration behavior (model/effort per call, no global inheritance) and retry policy, but fails to state conditions for selecting this tool over alternatives. This is a gap given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
antigravity_run - First observed
bridge_status - First observed
codex_run
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: codex_run and antigravity_run target different external CLIs, and bridge_status is the health/status reporter. There is no meaningful overlap or ambiguity between them.
The two worker tools follow a consistent <cli>_run pattern, while bridge_status deviates by using a noun instead of a verb. This is a minor inconsistency in an otherwise predictable naming scheme.
Three tools is well-scoped for a bridge server: one for each external worker and one for status. Every tool earns its place and the count feels appropriate for the server's purpose.
The core workflows of delegating to either CLI and checking bridge health are covered. Minor gaps exist around job lifecycle management (e.g., listing or canceling active jobs), but these are not critical to the stated purpose.
Maintenance
Related MCP Connectors
Orbit is an MCP server that gives your AI agents a 4000+ tools, a shared memory brain and a live dashboard OS. Every agent reads active decisions, logs outputs to a searchable vault, and reports status in real time. 2-minute setup via MCP; works across Claude, ChatGPT, Codex, Cursor, Gemini, and Manus. Finally Agents work, agents that grow your business and bring you customers. https://orbitagents.xyz
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Related MCP Servers
- AlicenseAqualityDmaintenanceA local MCP server that lets Claude delegate scoped work to Codex with structured results and guardrails, supporting planning, code review, build, reverse engineering, and long-running background tasks.11MIT
- AlicenseAqualityAmaintenanceAn MCP server that bridges Claude Code with Antigravity CLI using a Swarm Agent architecture to optimize local development workflows and minimize LLM token costs. Includes a web UI for monitoring agent workflows.29467 PyPI29MIT
- FlicenseNot gradedqualityAmaintenanceA local MCP server that connects AI coding agents like Claude, Codex, and Gemini, enabling task routing, cross-model debates, and token-efficient context sharing without external APIs.17-
- AlicenseNot gradedqualityAmaintenanceAn MCP server that bridges CLI coding agents like Claude Code, Codex, opencode, and Antigravity into any MCP client, enabling synchronous and asynchronous task execution, follow-up input, and a structured code review tool.43 npm2MIT