> · 6 мин

GNAP: оркестрируй рой AI-агентов через git-репо. 4 JSON-файла, ноль серверов

GNAP: оркестрируй рой AI-агентов через git-репо. 4 JSON-файла, ноль серверов

У тебя 5 агентов: один пишет тесты, второй чинит баги, третий ревьюит PR, четвёртый деплоит, пятый дёргает пользователя в Telegram. Как они договорятся между собой?

Стандартный ответ: оркестратор. Развернуть LangGraph, поднять Redis для очереди, прикрутить Postgres для состояний, написать кастомные хуки сверху. Полдня инфраструктуры. Потом окажется, что агенты висят на разных провайдерах, и ты пилишь общий API. Потом — что у одного агента нет доступа к Postgres, и появляется прокси.

Парни из Farol Labs предложили альтернативу, которая выглядит еретической: просто git-репо. Никаких серверов, никаких баз. 4 JSON-файла. Любой агент, который умеет git pull и git push, в команде.

Это GNAP (Git-Native Agent Protocol). RFC-черновик от Farol Labs, MIT-лицензия, 24 коммита, 51 звезда. Маленький проект, но идея заслуживает отдельного разбора.

TL;DR: GNAP координирует AI-агентов через shared git-репо. 4 типа JSON-сущностей (agents/tasks/runs/messages), heartbeat-цикл pull→check→work→commit→push, git history как audit log. Без серверов, без БД, без vendor lock-in. Работает с OpenClaw, Codex, Claude Code и любым кастомным ботом.

Идея на пальцах

В корне репо появляется директория .gnap/:

.gnap/
  version              ← "4"
  agents.json          ← команда (люди и AI-агенты)
  tasks/FA-1.json      ← первая задача
  runs/                ← пусто (агенты пишут сюда сами)
  messages/            ← пусто (агенты пишут сюда сами)

Каждый агент крутит heartbeat-цикл:

1. git pull
2. agents.json     → активен ли я?
3. tasks/          → что мне назначено?
4. messages/       → есть ли что-то новое?
5. Делаю работу → commit → git push
6. Сплю до следующего тика

Всё. Git одновременно работает транспортом и хранилищем. История коммитов превращается в audit-log без отдельной системы.

Как выглядит задача

Один JSON-файл на одну задачу:

{
  "id": "FA-1",
  "title": "Set up Stripe billing",
  "assigned_to": ["leo"],
  "state": "in_progress",
  "priority": 0,
  "created_by": "ori",
  "created_at": "2026-03-12T11:40:00Z"
}

State machine у задачи стандартная: todo → in_progress → done (или failed/cancelled). Кто-то её создаёт через git push, кто-то ставит на исполнение. Если два агента одновременно схватили одну задачу, ловится merge-конфликт git, второй pull/rebase/retry.

Запуск (run) живёт в отдельной сущности:

{
  "id": "FA-1-1",
  "task": "FA-1",
  "agent": "carl",
  "state": "completed",
  "tokens": {"input": 12400, "output": 3200},
  "cost_usd": 0.08,
  "result": "Stripe account created, test mode live"
}

Один таск может иметь много runs. Если первый запуск запорол попытку, агент или другой агент создаёт второй run. Сама задача от этого не падает.

Коммиты пишутся по конвенции:

carl: done FA-1 - Stripe test mode live
ori: create FA-3 onboarding-v2
leo: assign FA-1 to carl

Читая git log, ты видишь полную историю работы команды без отдельного дашборда.

Почему это работает

Я смотрю на GNAP и сначала хочется фыркнуть: ну, Trello через git, что нового? Потом начинаешь раскручивать последствия.

Атомарность. git push атомарен. Если два агента одновременно пишут в один файл, конфликт ловится на push, второй откатывается и retry. Никаких race conditions с распределёнными локами.

Distributed by default. Реплика git-репо есть у каждого агента локально. Сеть упала, агент продолжает работать с кешем, потом синхронизирует. AWS лежит, твой LangGraph мёртв, а GNAP жив.

Аудит бесплатно. Каждое действие = коммит. git blame показывает кто и что сделал, когда. Никаких отдельных таблиц audit_log, никаких ELK-стеков для трейсинга.

Гибридные команды. В agents.json сидят и AI, и люди. Агент создал задачу, человек доделал руками, второй агент проревьюил. Все равны.

В прод-варианте Farol Labs гоняет на GNAP 4 агентов (2 AI плюс 2 человека) и 50+ задач. Не масштаб Stripe, но и протокол молодой.

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

Романтика заканчивается там, где начинается latency и масштаб.

1. Heartbeat-полинг это не push. Агенты дёргают git pull каждые N секунд. Хочешь real-time коммуникацию? GNAP не сюда. Между созданием задачи и её захватом проходит минимум один heartbeat. При интервале 30 секунд минимальная задержка тоже 30 секунд. Для пакетных задач норм, для интерактивных нет.

2. Git-репо разрастается. Каждый run отдельный JSON-файл, каждое сообщение тоже. Если 100 агентов работают сутки, через неделю в .gnap/runs/ десятки тысяч файлов. Git с этим живёт, но git status начинает тормозить. Стратегии архивации (rotate в archive/ ветку) спека не предлагает, пиши сам.

3. Auth-модель сырая. Доступ к git = доступ ко всему. Агент с write-правами может удалить чужие задачи, переназначить себе чужие runs, переписать agents.json или зачистить историю через force-push. Никаких ACL уровня файла. Если ключ агента утёк, катастрофа. В A2A-протоколе Google этой проблемы нет: идентичность и scope привязаны к каждому вызову.

4. Vendor lock-in заменили на git lock-in. "Без серверов" по факту значит "ваш сервер это GitHub/GitLab". Если репо где-то размещено, и провайдер ушёл в downtime, твоя multi-agent система встала. Локальный fallback есть, но синхронизация всё равно через центральный remote.

5. Это RFC-черновик. 51 звезда, 2 форка, 24 коммита, один продакшн-юзер (сами авторы). Спека может развернуться завтра. Если строишь критическую систему, закладывай миграцию. Если эксперимент, go.

Альтернативы

  • A2A (Agent-to-Agent): протокол Google для меж-агентной коммуникации. Кардинально другой подход, серверы агентов экспонируют HTTP-эндпойнты с capability-манифестом, общаются через стандартизированные сообщения. Сложнее и тяжелее, но для real-time и enterprise решает проблемы GNAP с auth и латенси.
  • MCP (Model Context Protocol): Anthropic, "USB-C для AI". Не про оркестрацию агентов, а про tool-use: агент → инструмент → результат. Перпендикулярен GNAP, можно использовать вместе.
  • CrewAI, AutoGen, LangGraph — полноценные фреймворки оркестрации со встроенной логикой ролей и разделения труда. Дают больше из коробки, требуют единого рантайма. GNAP не пытается их заменить, он играет нишу "координация без оркестратора".

Вердикт

GNAP стоит попробовать, если у тебя 3-15 агентов из разных стеков (Claude Code плюс Codex плюс кастомный бот) и нужен общий task-board без нового сервиса в инфре. Особенно если ты уже инвестировал в git-инфраструктуру (CI/CD, ревью, деплой) и хочешь подключить агентов к ней же.

Не стоит, если нужна сабсекундная латенси, гоняешь больше 50 агентов одновременно, или строишь систему со строгими access-контролями. Для этих случаев бери A2A или собственный оркестратор.

И ещё: это RFC, не v1. Смотри на него как на работающую идею, но в прод первой версии я бы не нёс. А вот в выходной собрать на нём команду из Claude Code и Codex для домашнего проекта — самое то. Концепция простая, внедряется за пару часов.

Как попробовать

  1. Создай новый git-репо или используй существующий
  2. Добавь директорию .gnap/ со структурой из README (version, agents.json, tasks/, runs/, messages/)
  3. Зарегистрируй первого агента в agents.json:
    {"agents": [{"id": "claude", "type": "ai", "status": "active"}]}
    
  4. Создай задачу tasks/T-1.json с assigned_to: ["claude"]
  5. Запусти агента в loop (для Claude Code через Routines, для Codex через cron и /goal workflows)
  6. Дашборд их прод-инсталляции на farol.team/dashboard

Спека и примеры лежат на github.com/farol-team/gnap. Меньше строк кода, больше идей. GNAP это то, как многие из нас в 2026-м захотят координировать своих ботов: через инструмент, который у каждого разработчика и так уже стоит.

$ ls ./related/

Похожие статьи

happy-horse-1-alibaba-fal-launch.md
Happy Horse 1.0 — Алибаба переманила архитектора Kling AI и сделала #1 видео-модель. Вчера запустили на fal, обещанный open source отменили
> · 8 мин

Happy Horse 1.0 — Алибаба переманила архитектора Kling AI и сделала #1 видео-модель. Вчера запустили на fal, обещанный open source отменили

Анонимная видео-модель Happy Horse 1.0 за неделю стелс-теста на Artificial Analysis Video Arena заняла #1, обогнав ByteDance Seedance 2.0 на 100 Elo. Вчера, 27 апреля, fal запустил её как официальное API за $0.14-0.28 в секунду. Под капотом команда Чжан Ди, бывшего архитектора Kling AI. Обещанный open source команда тихо отменила.

ai video-generation alibaba stealth-launch
deepseek-v4-release.md
DeepSeek V4 — миллион токенов за $3.48, open-weights под MIT и работа без Nvidia
> · 9 мин

DeepSeek V4 — миллион токенов за $3.48, open-weights под MIT и работа без Nvidia

DeepSeek V4 Pro и Flash: 1.6 триллиона параметров, миллион токенов контекста, MIT-лицензия, $3.48 за миллион выходных токенов и нативная поддержка Huawei Ascend. Open-weights flagship, который стоит в 21 раз дешевле Opus 4.7.

ai agents llm open-source
oh-my-codex-codex-teams.md
Oh My codeX — параллельные агенты для Codex CLI, tmux worktrees и HUD, который показывает, что делает каждый бот
> · 8 мин

Oh My codeX — параллельные агенты для Codex CLI, tmux worktrees и HUD, который показывает, что делает каждый бот

OMX — это oh-my-zsh для OpenAI Codex CLI. За 2 минуты npm-установки получаешь 33 агента, 36 скиллов, команды, которые гоняют по три Codex-сессии в параллельных git worktrees, и HUD, который показывает, чем они заняты прямо сейчас.

ai agents codex open-source
subscribe.sh

$ cat /dev/blog/updates

> Свежие заметки о программировании,

> DevOps и AI — прямо в мессенджер

./subscribe