> · 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/

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

mythos-week-political-explosion.md
Anthropic Mythos за 7 дней: NSA сканит Microsoft, Белый дом блокирует 70 компаний, Anthropic ловит утечку
> · 10 мин

Anthropic Mythos за 7 дней: NSA сканит Microsoft, Белый дом блокирует 70 компаний, Anthropic ловит утечку

За неделю Mythos из инженерной curiosity превратился в политическую гранату. NSA втихую сканит Microsoft на уязвимости, Белый дом блокирует расширение доступа, Anthropic расследует «несанкционированный доступ», а AISLE показала, что bug-finding воспроизводится на открытых моделях за $0.11 за M токенов.

ai llm claude anthropic
nemotron-3-nano-omni.md
NVIDIA Nemotron 3 Nano Omni: 30B-модель, которая видит, слышит и читает за один проход. И обходит Qwen3-Omni на каждом бенчмарке
> · 8 мин

NVIDIA Nemotron 3 Nano Omni: 30B-модель, которая видит, слышит и читает за один проход. И обходит Qwen3-Omni на каждом бенчмарке

NVIDIA выкатила открытую multimodal модель Nemotron 3 Nano Omni: 30B параметров, 3B активных, понимает video/audio/image/text одной моделью. 9x throughput vs другие omni-модели, 25 ГБ RAM в 4-бит. Бьёт Qwen3-Omni на каждом бенчмарке.

ai agents llm open-source
owl-alpha-stealth-openrouter.md
Owl Alpha — новая stealth-модель на OpenRouter. 1M контекста, $0 за токены, и никто не знает, кто её сделал
> · 8 мин

Owl Alpha — новая stealth-модель на OpenRouter. 1M контекста, $0 за токены, и никто не знает, кто её сделал

Вчера, 30 апреля, на OpenRouter появилась новая stealth-модель Owl Alpha. 1M контекст, бесплатно, заточена под агентные задачи. Никто не знает, кто её сделал. Разбираем спецификации, спекуляции о происхождении (OpenAI? Alibaba? Xiaomi?), как её запустить из Claude Code и подводные камни.

ai agents llm openrouter
subscribe.sh

$ cat /dev/blog/updates

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

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

./subscribe