relay
OfficialModula Relay
Позвольте вашим ИИ-агентам общаться друг с другом. Relay — это локальный протокол обмена сообщениями для команд агентов. Представьте кодера в одной панели и верификатора в другой: они работают на разных моделях в разных средах, но над одной задачей. Он работает на вашей машине. Никакого сервера, никакого облака.
Установка
claude mcp add relay -- npx -y @modulastack/relay --name coder
npx -y @modulastack/relay setup claudeВторая строка оснащает агента инструкциями цикла, хуком пробуждения и доверием к инструментам, чтобы разговоры проходили без присмотра. Подробнее об этом — в разделе Оснащение агентов. setup codex делает то же самое для Codex, а также регистрирует сервер. Для любой другой MCP-среды команда сервера — npx -y @modulastack/relay --name <role>. Чтобы встроить его в свой инструмент, выполните npm install @modulastack/relay.
Related MCP server: tincan
Первый разговор ваших агентов
Откройте два терминала в одной папке проекта.
Запустите по агенту в каждом. Одному дайте
--name coder, другому —--name verifier.Скажите любому агенту: «проверь список участников relay». Вы сразу увидите другого пира. Список напрямую пингует пиров, так что он также служит проверкой «связь работает?» и отвечает за миллисекунды.
Теперь скажите кодеру простыми словами:
Отправь верификатору через relay это сообщение: «пожалуйста, проверь utils.py и ответь с любыми замечаниями», и дождись ответа.
Наблюдайте, как верификатор получает сообщение, выполняет работу и отвечает. Вам никогда не нужно вводить протокольные команды. Агенты сами управляют Relay.
Скорость определяется моделями, а не каналом связи. Каждый обмен — это полный ход с каждой стороны, потому что другой агент реально работает над вашим запросом, поэтому ответы приходят со скоростью работы модели, обычно через несколько секунд. Если всё тянется, дело в модели или в аккаунте с лимитом запросов, а не в транспорте. relay_roster проверяет связь сам, не пробуждая модель.
Что получают ваши агенты
Шесть инструментов, которыми уже умеет пользоваться любая модель, поддерживающая MCP:
Tool | Meaning |
| Кто ещё есть в этом пуле? |
| Отправить один запрос пиру |
| Ждать запрос или ответ |
| Ответить на запрос |
| Проверить ответ без ожидания |
| Освободить устаревший слот запроса |
Всё остаётся на вашей машине. Пиры находят друг друга через пул на папку поверх доменных сокетов Unix. Ни брокера, ни сетевого порта, ни аккаунтов.
Поддержание разговора
Relay работает по модели pull. Сообщение ждёт получателя, пока тот не вызовет await. Разовый промпт вроде «дождись одного запроса и ответь на него» перестаёт слушать после первого обмена, поэтому для постоянного разговора дайте каждому агенту цикл один раз:
Вы участвуете в непрерывном разговоре через relay. Цикл: ожидай через relay входящие запросы или ответы; когда что-то приходит, обработай и ответь; затем снова жди. Продолжай цикл, пока я не скажу «стоп».
Цикл охватывает и отправку. Ответ на отправленный вами запрос появляется в том же await, так что агент, остающийся в цикле, всё равно получает ответы, даже если потерял msg_id.
Подбирайте цикл под свою среду. Среды по-разному обрабатывают ваш ввод, пока агент находится в середине хода. Codex подхватывает его в течение секунд, так что непрерывный цикл там подходит. Claude Code может удерживать введённый текст между множеством вызовов инструментов, поэтому ему лучше подходит ритм пробуждения по требованию. Скажите ему завершать ход после двух пустых тайм-аутов и позвольте наблюдателю будить его, когда сообщения встают в очередь. Тогда он остаётся у приглашения в режиме ожидания, готовый к вам, и всё равно просыпается в течение секунд, когда пир пишет ему.
Интеграторы хостов могут пойти дальше. Сервер отправляет уведомление о пробуждении (notifications/relay/wake), когда сообщения встают в очередь для простаивающего пира, и хост, который его слушает, может сам возобновить цикл. Пробуждение — это лишь сигнал доставки, а не источник инструкций. В examples/ поставляются два готовых хоста. claude-stop-hook.sh не даёт агенту Claude Code завершить ход, пока сообщения стоят в очереди, и без участия tmux. relay-watch.sh — универсальный наблюдатель, который подталкивает простаивающие tmux-панели на основе глубины очереди в реестре.
Оснащение агентов
Две вещи незаметно ломают автономные циклы. Первая — запросы на подтверждение. Агент, застывший на «Разрешить relay_await?», выглядит точь-в-точь как мёртвый. Вторая — простаивающие пиры. Среда завершает ход, и ничто не будит её, когда приходит сообщение. Одна команда для каждой среды устанавливает компоненты, предотвращающие обе проблемы: инструкции цикла, хуки и ограниченное доверие к инструментам.
npx -y @modulastack/relay setup claude # CLAUDE.md loop + Stop hook + tool trust
npx -y @modulastack/relay setup codex # AGENTS.md loop + config.toml server & trustЗапустите её в папке проекта. Повторный запуск не делает ничего нового; она вливается в существующую конфигурацию, а не перезаписывает её.
Чтобы настроить это вручную, компоненты — это обычные файлы. Текст цикла помещается в ваш CLAUDE.md или AGENTS.md. Claude Code доверяет серверу через permissions.allow: ["mcp__relay"] или --allowedTools mcp__relay при запуске. Codex принимает одну строку в записи сервера:
[mcp_servers.relay]
default_tools_approval_mode = "auto"Доверяйте именно инструментам relay, а не выдавайте глобальный обход. Вы хотите, чтобы координационные вызовы перестали прерывать, а не чтобы всё проходило без проверок. Одна вещь, которой стоит избегать. Не устанавливайте approval_policy = "never" для этого. Из-за этого Codex молча отклоняет всё, что потребовало бы подтверждения, а это блокирует relay_reply.
Если ничего не появляется
Пустой список? Оба агента должны работать в одной папке. Папка и есть пул.
Всё ещё пусто? Проверьте, что оба агента действительно запущены.
relay_rosterудаляет мёртвых пиров.Имя занято? Каждому пиру нужно уникальное
--nameв пределах пула.Сообщение отправлено, но пир простаивает? Доставка ждёт, пока пир вызовет await, так что верните его в цикл выше. Квитанция об отправке содержит
note, если получатель давно не вызывал await, а список показываетlast_await_atкаждого пира.
Глубже
Полный протокол описан в SPEC.md: конверты, канал пробуждения, модель безопасности и версионирование. Он пока нестабилен и находится на v0.x, так что фиксируйте версию поведенческого контракта, а не текст.
Apache-2.0 · © 2026 ModulaStack
О ModulaStack
Relay создан компанией ModulaStack. Если вы хотите наблюдать за работой своих агентов — с панелями, подтверждениями и командами на разных моделях, — Modula Stack — это консоль оператора, построенная на Relay.
«Modula Relay» и «ModulaStack» — товарные знаки ModulaStack. Лицензия Apache-2.0 не предоставляет прав на использование наименований.
This server cannot be deployed
Maintenance
Related MCP Connectors
End-to-end encrypted messaging and work coordination for autonomous AI agents.
SwarmDM (formerly AgoraDM): DMs, friends, groups and files between AI agents.
Connect AI agents to Replynodes over the Model Context Protocol.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables local messaging between Claude Code, Codex, Pi, and other coding-agent sessions on the same machine, allowing them to discover each other, send updates, ask questions, and reply.814 npm3AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables direct agent-to-agent messaging, file transfer, and persistent conversation history between AI agents across machines via a private broker, without needing shared channels or third-party services.4 npm1MIT

crosstalkofficial
AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to communicate directly with each other across machines, with support for rooms, pairing, and encrypted messaging.1 npm8MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to collaborate by exchanging messages through a local MCP-based bus for coordinating tasks and agent interactions.MIT