letterbox
Letterbox
📌 Создан для внутреннего продакшена. Архитектура проверена месяцами ежедневной разработки с ИИ. Открыт как эталонная реализация.
Простыми словами: Если вы используете ИИ-ассистентов для кодинга в терминале, обычно вы работаете с одним за раз — а чтобы заставить двух из них сотрудничать, приходится вручную копировать сообщения между окнами. Letterbox позволяет двум ассистентам (например, Claude и Gemini, или Gemini и Vibe от Mistral) общаться напрямую и совместно выполнять задачу, без вашего участия.
Результат: один агент может планировать, пока другой рецензирует, или они могут разделить работу между собой — сотрудничая самостоятельно, пока вы наблюдаете, вместо того чтобы вручную передавать каждое сообщение.
Маленький файловый протокол связи, который позволяет двум ИИ-агентам в отдельных терминалах общаться друг с другом в реальном времени.
Letterbox позволяет двум терминальным агентам кодинга — Claude Code, Gemini CLI, Antigravity или Vibe от Mistral — вести разговор в реальном времени, передавая файлы сообщений через общую директорию. Когда один агент говорит, в терминал другого внедряется уведомление 📬, которое будит его для чтения и ответа. Никакой сети, сервера или общей памяти: только JSON-файлы в папке и атомарный переименование ОС. Это слой обмена сообщениями, созданный для внутреннего цикла планирования, выделенный в отдельный версионируемый инструмент в 2026 году. Если вы когда-нибудь хотели, чтобы два CLI-агента сотрудничали над задачей без ручного копирования между окнами — это для вас. Инструмент получает occasional обновления по прихоти автора (лаунчер сообщает, когда выходит новая версия) — но он не поддерживается: нет дорожной карты, нет запросов функций, это не community-проект.
Мост действительно кросс-платформенный: Claude с одной стороны, Gemini с другой, общающиеся через один канал, были проверены вживую. Единственная загвоздка — настройка: Claude подключается автоматически, а Gemini и Antigravity загружают letterbox из своих собственных настроек. Раздел Setup описывает оба варианта.
Зачем это существует
Я каждый день работаю с двумя ИИ-коллегами — Claude и Gemini — каждый живет в своём терминальном окружении (Claude Code, Gemini CLI, Antigravity CLI, а теперь и Vibe от Mistral). Letterbox — это способ заставить их общаться друг с другом, а не через меня.
Это происходит в двух режимах. Иногда это вручную: мы брейнштормим, и я хочу подключить другую модель к разговору. Иногда это автоматически — в цикле планирования Claude составляет план, и каждый план направляется Gemini на рецензирование как встроенный этап. Letterbox обрабатывает оба случая одинаково.
Он не зависит от конкретной платформы по дизайну — Claude Code ↔ Gemini CLI ↔ Antigravity CLI ↔ Vibe в любой комбинации — и пары одной модели работают так же хорошо: две вкладки Claude или две вкладки Gemini, общающиеся по одному каналу.
Related MCP server: claude-intercom
Что это такое
Каждый запуск letterbox <harness> запускает два скоординированных процесса в одном терминале:
letterbox claude --channel demo --as alice
│
├─ PTY-Parent (the foreground letterbox process)
│ • spawns the harness CLI as a PTY child
│ • watches the channel directory for peer writes
│ • injects 📬 notifications into the PTY on arrival
│
└─ the harness spawns:
└─ letterbox mcp (stdio MCP server, agent-spawned)
• send_message / check_messages / acknowledge
• check_latest_message / channel_info / list_channels
Both sides coordinate ONLY through the filesystem:
~/.letterbox/channels/demo/
msg-*.json ← one file per message
.read/alice.json ← per-agent read markers
.read/bob.jsonНет демона, нет IPC, нет фонового сервиса. Файловая система и есть среда координации — watcher PTY-Parent видит новый msg-*.json и отображает уведомление; директория канала долговечна, её можно просматривать и cat-ить. Восстановление после сбоев тривиально, потому что ничего ценного не хранится в памяти.
Как агент получает инструменты letterbox — зависит от конкретной платформы, и это единственное, что настраивается один раз:
Claude Code принимает флаг запуска, поэтому letterbox подключает его автоматически — генерирует временный MCP-конфиг и передаёт
--mcp-configкомандеclaude. Вам ничего настраивать не нужно.Gemini CLI и Antigravity не принимают этот флаг; они загружают MCP-серверы из своего файла настроек. Вы добавляете туда однострочную, не зависящую от канала запись
letterboxодин раз, а лаунчер передаёт каждой сессии её канал и идентичность через переменные окружения при запуске — так что вам не нужно редактировать настройки для каждого канала.Vibe загружает MCP-серверы из
~/.vibe/config.toml. Его MCP-подпроцесс наследует только урезанное окружение, поэтому нужен одноразовый скрипт-мост для передачиLETTERBOX_CHANNEL/LETTERBOX_SENDERиз окружения самого процесса Vibe. После этого любой канал работает точно так же, как Gemini. См. раздел Vibe setup.
Для кого это
Люди, использующие терминальных агентов кодинга, которым нужен автономный диалог ИИ↔ИИ на одной машине, без ручного копирования между окнами.
Люди, ценящие файлы как источник истины — проверяемые, доступные для grep, без непрозрачного протокола и магии.
Для кого это НЕ
Тем, кому нужен хостингованный или сетевой чат-сервис — протокол сообщений работает только с файловой системой и никогда не касается сети. (Лаунчер делает одну необязательную, best-effort проверку версии при запуске; отключите её с помощью
LETTERBOX_NO_UPDATE_CHECK=1.)Тем, кому нужна многопользовательская платформа — это точечный мост между агентами на одной машине, а не хаб для многих пользователей (см. Built for two).
Пользователям Windows — v1 поддерживает только POSIX (см. What we don't support).
Тем, кому нужен поддерживаемый продукт — letterbox версионируется и получает occasional обновления по прихоти автора (лаунчер сообщает, когда выходит новая версия), но нет дорожной карты, SLA и обязательств принимать запросы функций или продолжать поддержку. Используйте как есть; заберите новую версию, если она поможет.
Создан для двоих
Letterbox — это двусторонний мост по своей сути — один пир общается с одним пиром, именно для этого он спроектирован и настроен. Три и более агента могут делить канал: адресация (send_message(to="<label>")) и список participants делают это возможным, а широковещательные сообщения в одном канале достигают всех. Но общий канал — это шина вещания — каждое сообщение будит всех участников. Без оркестрации (поочерёдность, назначенный координатор или правила, кто когда говорит) комната с N участниками превращается в шторм уведомлений, который может удивительно быстро исчерпать лимиты сообщений/использования модели. Если вам нужно три и более — приносите своего дирижёра. Субстрат честно сообщает, кто в комнате; этикет — на вас.
Установка
Letterbox устанавливается из исходников (колесо можно собрать; в настоящее время оно не опубликовано на PyPI). Из корня репозитория:
pip install -e . # or: pip install -e ".[dev]" for the test extrasЭто помещает команду letterbox в ваш PATH. Команда должна разрешаться по имени — каждый агент сам запускает letterbox mcp — так что это критично. Проверьте:
which letterbox # note this absolute path; Gemini/Antigravity setup needs itВам также понадобится установленная платформа, которую вы запускаете (claude, gemini, antigravity или vibe), в PATH и авторизованная. Letterbox запускает её за вас.
Обновление
Letterbox версионируется (letterbox.__version__ — единственный источник истины); поскольку нет релиза на PyPI, HEAD ветки main в git и есть релиз. При запуске с участием человека CLI делает одну best-effort проверку (не чаще раза в день, кэшируется в ~/.cache/letterbox/) и выводит однострочное уведомление, если существует более новая версия. Для обновления:
pip install --upgrade "git+https://github.com/dovahkiin-v/letterbox"Это единственный сетевой вызов, который letterbox когда-либо делает — протокол обмена сообщениями полностью локальный. Он выполняется с жёстким таймаутом и полностью fail-silent: если не может связаться с GitHub, просто ничего не печатает и никогда не задерживает запуск. Он никогда не выполняется для letterbox mcp (stdio-сервера агента). Полностью отключите его с помощью LETTERBOX_NO_UPDATE_CHECK=1.
Настройка для каждой платформы
Вы делаете это только один раз для каждой платформы. Пропустите те, которые не будете использовать.
Claude Code — ничего делать не нужно
Letterbox подключает Claude автоматически: при запуске он записывает временный MCP-конфиг (режим 0600) и передаёт --mcp-config <path> команде claude. Инструменты letterbox появляются в этой сессии и нигде больше. Нет файла настроек для редактирования.
Gemini CLI — два одноразовых шага
1. Зарегистрируйте MCP-сервер в ~/.gemini/settings.json (создайте файл, если его нет). Используйте абсолютный путь к установленному letterbox (из which letterbox выше) и передавайте только ["mcp"] — без канала и идентичности:
{
"mcpServers": {
"letterbox": {
"command": "/absolute/path/to/letterbox",
"args": ["mcp"]
}
}
}Эта запись намеренно не зависит от канала. Лаунчер экспортирует LETTERBOX_CHANNEL, LETTERBOX_SENDER и LETTERBOX_INSTANCE_ID в окружение Gemini при запуске, а MCP-сервер читает их — так что одна и та же запись служит для всех каналов, и вам больше никогда не нужно её редактировать. (Это зеркалит то, как оркестраторы Forge передают канал через переменную окружения.)
2. Доверьте папку, из которой запускаетесь. Gemini отказывается работать в недоверенной директории без интерактивного запроса "do you trust this folder?" — а блокирующий TUI-запрос остановил бы автоматизацию. Предварительно доверьте директорию запуска (или родительскую) в ~/.gemini/trustedFolders.json:
{
"/home/you/projects": "TRUST_PARENT"
}TRUST_FOLDER доверяет ровно этой директории; TRUST_PARENT доверяет ей и всему, что внутри, так что одна запись покрывает все ваши проектные папки. (Совет: не используйте флаг --skip-trust от Gemini, чтобы обойти это — он вызывает поиск системного промпта рабочей области, который падает даже в уже доверенных директориях. Лучше доверьте папку.)
Antigravity (agy)
Запускайте как letterbox agy … (длинная форма letterbox antigravity … тоже работает — agy это просто алиас, соответствующий имени бинарника). Antigravity получает свой канал и идентичность для каждого запуска через те же переменные окружения, что и Gemini; разница в том, как вы регистрируете MCP-сервер. agy загружает MCP-серверы из плагинов, поэтому вы устанавливаете letterbox как крошечный локальный плагин (директория с двумя JSON-файлами):
# 1. Build the plugin (one directory, two files). Use the absolute
# `letterbox` path from `which letterbox`.
mkdir -p ~/.letterbox/agy-plugin/letterbox
cat > ~/.letterbox/agy-plugin/letterbox/plugin.json <<'JSON'
{ "name": "letterbox", "version": "1.0.0",
"description": "Letterbox file-based AI-to-AI comms bridge." }
JSON
cat > ~/.letterbox/agy-plugin/letterbox/mcp_config.json <<'JSON'
{ "mcpServers": { "letterbox": {
"command": "/absolute/path/to/letterbox", "args": ["mcp"] } } }
JSON
# 2. Install it (and confirm).
agy plugin install ~/.letterbox/agy-plugin/letterbox
agy plugin listmcp_config.json не зависит от канала по той же причине, что и запись в настройках Gemini — лаунчер передаёт канал и идентичность через окружение при запуске. Как и Gemini, agy также проверяет доверие к папке: он учитывает список trustedWorkspaces в ~/.gemini/antigravity-cli/settings.json, поэтому добавьте туда директорию запуска, если её там ещё нет.
Статус: PTY-слой (уведомления + доставка сообщений, в обоих направлениях) проверен вживую, а установка плагина выше чисто подключает инструменты. Полный цикл с инструментами в
agyнедавно заработал и слегка протестирован — относитесь к Antigravity как к самому новому из трёх и сообщайте о любых странностях.
Vibe (Mistral)
Запускайте как letterbox vibe …. Vibe загружает MCP-серверы из ~/.vibe/config.toml, но его MCP-подпроцесс наследует только урезанное окружение (HOME, PATH, SHELL, TERM, USER, LOGNAME) — поэтому LETTERBOX_CHANNEL и т.д. не достигают его через обычное наследование. Небольшой одноразовый скрипт-мост исправляет это, читая их из процесса Vibe через /proc во время запуска. После этого любой канал работает точно так же, как Gemini — без редактирования конфига для каждого канала.
1. Установите скрипт-мост (поставляется с letterbox):
cp "$(python3 -c 'import letterbox.data, pathlib; print(pathlib.Path(letterbox.data.__file__).parent / "vibe-mcp-bridge.sh")')" \
~/.letterbox/vibe-mcp-bridge.sh
chmod +x ~/.letterbox/vibe-mcp-bridge.sh2. Зарегистрируйте его в ~/.vibe/config.toml. Замените любую существующую запись letterbox на:
[[mcp_servers]]
name = "letterbox"
transport = "stdio"
command = "/home/YOU/.letterbox/vibe-mcp-bridge.sh"
args = []Используйте ваш реальный домашний путь (не ~ — Vibe может не развернуть его). Запись намеренно не зависит от канала: скрипт-мост читает канал и идентичность из окружения процесса Vibe во время выполнения, точно так же, как Gemini читает их из своего окружения.
3. Готово. Любой канал работает:
letterbox vibe --channel blueberry-fields --as mistralVibe также запускается с --yolo (авто-подтверждение), чтобы внедрённые уведомления могли будить его без блокировки на запросе каждого инструмента.
Примечание: скрипт-мост использует
/proc/$PPID/environдля чтения окружения Vibe — только Linux, что согласуется с позицией letterbox о поддержке только POSIX. Для macOS потребовался бы другой механизм (ps -p $PPID -Ewww); в настоящее время не поставляется.
Статус: 📬 инъекция пробуждения подтверждена и работает (ШАГ 0 подтвердил, что
ChatTextAreaу Vibe переопределяет Enter для отправки, поэтому стандартный путь инъекции через PTY применим). Считайте Vibe самым новым из четырёх и сообщайте о любых странностях.
Быстрый старт
Откройте два терминала и укажите каждый на один и тот же канал с отдельной идентичностью. Без файла конфигурации встроенные значения по умолчанию letterbox предоставляют общий каталог глобального состояния (~/.letterbox).
Настоящий мост между средами — Claude разговаривает с Gemini (сначала выполните настройку Gemini):
# Terminal 1
letterbox claude --channel demo --as claude
# Terminal 2
letterbox gemini --channel demo --as geminiИли две одинаковые среды, если хотите проще:
# Terminal 1
letterbox claude --channel demo --as alice
# Terminal 2
letterbox claude --channel demo --as bobОбе сессии запускаются и тихо ждут. Теперь подтолкните агента в Терминале 1 — например, «Отправь сообщение своему коллеге». После этого каждое уведомление 📬 будит другого агента для чтения и ответа: в этом и заключается вся суть передачи. Имена --as <label> делают стенограмму читаемой; под капотом фильтрация сообщений использует идентификатор экземпляра запуска, а не метку.
Пара честных замечаний:
Вы никогда не запускаете
letterbox mcpсами. Эта подкоманда — stdio MCP-сервер, запускаемый средой; она для агента, а не для вас. При запуске вручную в терминале она сообщает вам об этом и завершает работу.Аргументы запуска автономны по замыслу. Адаптер Claude запускается с
--dangerously-skip-permissions, а адаптер Gemini — с--yolo, потому что инъецированные сообщения не могут разбудить агента, заблокированного запросом подтверждения каждого действия. Если такой компромисс вам не подходит, letterbox — не ваш вариант; переопределите аргументы вletterbox.tomlили отойдите в сторону.
Полное пошаговое руководство с пояснениями (два Claude спорят, является ли хот-дог сэндвичем) см. в примере проекта в examples/two-claudes-debating/.
Понимание состояния моста
Поскольку среда, подключённая к настройкам, загружает letterbox в каждой сессии, у агента могут быть доступны инструменты letterbox без активного моста — например, обычная сессия Gemini, которую вы никогда не запускали через letterbox. Letterbox спокойно относится к этому и даёт агенту способ проверить:
Обычная сессия находится в спящем режиме, а не сломана. Без канала MCP-сервер всё равно подключается (среда показывает спокойное «подключено»), но инструменты обмена сообщениями остаются тихими — они завершаются с понятным и действенным сообщением только если их действительно вызвать, и никогда сами по себе. Преднамеренная обычная сессия никогда не засоряется; действительно неправильно настроенный мост обнаруживается в момент, когда агент пытается заговорить.
channel_info— оракул моста для агента. Вызов этого инструмента даёт ответ на стороне сервера: активен ли вообще мост? На каком канале, под каким именем? Кто коллега (определяется по его последнему сообщению), сколько непрочитанных и когда он говорил последний раз? Агент, не уверенный в своей ситуации, может спросить перед отправкой — «коллега говорил 90 секунд назад» читается совсем иначе, чем «никогда».
Наблюдение и список каналов
Из любого терминала наблюдайте за сырым разговором или смотрите, какие каналы существуют:
letterbox tail --channel demo --follow # stream messages as JSON, one per line
letterbox list-channels # list channels with last-activityЧтобы создать стартовый letterbox.toml вместо использования значений по умолчанию:
letterbox init --channel demo # writes ./letterbox.toml (project-local)
letterbox init --global # writes ~/.letterbox/config.toml insteadОперации
Чтение догоняет вас; входящие опустошаются сами.
check_messagesвозвращает непрочитанные сообщения коллеги и продвигает маркер чтения этого агента по мере работы — так последовательные вызовы пролистывают накопленные сообщения, а опустошённый ящик остаётся опустошённым, без ручного учёта.check_latest_message— это не продвигающий взгляд для распространённого вопроса «что он только что сказал?», аacknowledgeсуществует для явного управления отдельными сообщениями.Перезапуск — это новое начало, а не повтор. При запуске маркер чтения агента выравнивается по самому новому сообщению, уже находящемуся на диске, поэтому он видит только то, что приходит после его присоединения — его не зальёт всей историей канала из предыдущей сессии. История по-прежнему доступна и достижима по запросу (
check_messagesс курсоромsince_id); она просто не навязывается вам.Хранение вручную. Сообщения живут в каталоге канала, пока вы их не подрежете; автоматического удаления нет (неожиданное удаление неприемлемо в коммуникационной инфраструктуре). Маркеры
.read/для каждого агента отслеживают состояние чтения — они продвигают маркеры, никогда не трогают файлы и не влияют на представление коллеги.Практический предел: ~10 000 неподрезанных сообщений на канал. За этим пределом
check_messagesиlist-channelsмогут показывать заметную задержку. Подрезайте выше этой точки.letterbox prune— безопасный способ освободить место. По умолчанию он работает в режиме пробного запуска — он печатает, что произошло бы, и ничего не трогает.--yes-i-am-sureперемещает подходящие файлы в обратимый подкаталогcold/;--delete --yes-i-am-sure(двойная защита) удаляет навсегда. Это единственная разрушительная команда в letterbox.
letterbox prune --channel demo --keep-last 100 # preview (dry run)
letterbox prune --channel demo --keep-last 100 --yes-i-am-sure # move to cold/
letterbox prune --help # all selection rulesКанал — это просто папка, поэтому rm -rf ~/.letterbox/channels/demo тоже работает — letterbox ничего не блокирует.
Модель безопасности
Полная модель угроз описана в docs/PROTOCOL.md. Вкратце:
Агент-коллега на канале не заслуживает доверия. Его тела сообщений могут содержать полезные нагрузки для инъекции в промпт, ANSI-escape-последовательности или метасимволы оболочки. Letterbox считает обе стороны недоверенными.
Уведомления рендерятся только из доверенного контекста. Шаблон уведомления
📬подставляет переменные, взятые из собственной конфигурации и наблюдений наблюдателя ({channel},{sender},{message_id},{timestamp}) — никогда из полезной нагрузки сообщения коллеги. Злонамеренный коллега может записать что угодно в свой файл; ничто из этого не попадает в инъецированное уведомление. Тела сообщений отображаются только когда агент явно вызываетcheck_messages. То же самое касается полей коллеги вchannel_info: они наблюдаются из трафика и носят информационный характер, никогда не попадают в уведомление.Нет пути выполнения. Letterbox никогда не выполняет
exec,evalили оболочку для тела сообщения или поля метаданных. Дочерние процессы запускаются со списками argv (никогдаshell=True) и только для запуска среды, настроенной вletterbox.toml.Безопасность путей. Имена каналов и идентификаторы сообщений проверяются по строгому шаблону перед любой операцией с файловой системой —
../etcили что-либо со слэшем отклоняется.Права файловой системы.
~/.letterbox/и каталоги каналов создаются с правами0700(только для пользователя); сгенерированный MCP-конфиг —0600.
От чего letterbox НЕ защищает: скомпрометированная локальная учётная запись пользователя (права файловой системы — единственный барьер), собственные уязвимости инъекции в промпт потребляющей среды или границы доверия, введённые синхронизацией между машинами (NFS, syncthing). Это не слой шифрования в состоянии покоя или сетевого доверия — это вне области действия по замыслу.
Область применения и анти-область
То, что letterbox намеренно не делает, — это суть, а не пробел:
Нет вызовов LLM. Letterbox никогда не вызывает языковую модель, не тратит токены и не хранит ключи API. Шаблон уведомления — это отображаемый текст, а не промпт.
Нет телеметрии, метрик, аналитики. Ничего не собирается, нет дашбордов, нет отслеживания использования.
Нет связи с домом, автообновления, проверки версий. Letterbox никогда не связывается с сервером. Первый запуск молчалив.
Нет сети. Он локальный для файловой системы. Использование между машинами — это дело вашей синхронизации файлов, а не letterbox.
Эта анти-область позволяет letterbox быть маленьким, инертным, проверяемым и долговечным.
Доступность
Обычный текст по умолчанию (
--format=plain) — удобно для конвейеров и программ чтения с экрана;tailвыводит JSON сообщений в stdout дляjq. Структурированный/цветной вывод — по желанию (--format=rich).Нет сигнализации только цветом.
--color=auto|always|neverуправляет цветом независимо; цвет никогда не является единственным способом передачи состояния.stdout — данные, stderr — журналы — команды чисто передаются по конвейеру.
UTF-8 повсюду. Собственные строки инструмента — на английском; тела сообщений — на любом языке, на котором вы пишете.
Спокойная поверхность. Нет спиннеров, баннеров телеметрии, назойливых обновлений. Тихий успех, понятные ошибки — ошибки указывают путь, строку или допустимые параметры.
Что мы не поддерживаем
Letterbox v1 — только POSIX (Linux и macOS). Слой запуска и инъекции через PTY построен на примитивах POSIX; поддержка Windows через модуль stdlib pty неполна и не поставляется. Если вы на Windows, letterbox не будет работать у вас в v1 — лучше знать сейчас, чем столкнуться с крахом.
См. также
examples/two-claudes-debating/— практическое руководство: две сессии Claude Code, спорящие в реальном времени.skills/letterbox/SKILL.md— руководство по использованию для агента: как LLM использует живой мост (рассылка, адресные сообщения, участники).skills/letterbox-setup/SKILL.md— руководство по настройке для агента: одноразовое подключение MCP для каждой среды, правило «одна метка на канал» и процедура перезапуска после обновления.docs/AGENT_POINTER.md— короткий встраиваемый блок для вставки вCLAUDE.md/GEMINI.md/AGENTS.mdпроекта, чтобы агент знал, что он на мосту.Полный справочник по формату файлов и протоколу — в
docs/PROTOCOL.md.DECISIONS.md— записи архитектурных решений (ADR), стоящие за каждым ключевым выбором, включая подключение MCP для каждой среды (ADR-054/055), спящий режим и оракулchannel_info(ADR-056), исправление тайминга отправки (ADR-057), самоподдерживающийся маркер чтения (ADR-058), защиту от дублирующихся экземпляров на канал (ADR-061), адресацию N участников + участников (ADR-062) и адаптер Vibe + контракт отправки Textual (ADR-067).LICENSE— MIT.
Статус
Letterbox — это версионированный, неподдерживаемый артефакт — лицензия MIT, на github.com/dovahkiin-v/letterbox. Он поставляется полным и работает как задокументировано; это личный артефакт, а не продукт, и он не ищет вклада. Неподдерживаемый означает отсутствие дорожной карты, SLA и обещаний исправлять проблемы или принимать запросы функций — но он не заморожен: автор может выпустить более позднюю версию по своему усмотрению, без графика. Ежедневная проверка обновлений в лаунчере сообщает вам, когда это происходит (LETTERBOX_NO_UPDATE_CHECK=1 для отключения). См. CONTRIBUTING.md о том, что это значит на практике.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables two or more Claude Code terminals on the same machine to communicate by registering and sending messages via the local filesystem.51MIT
- AlicenseNot gradedqualityDmaintenanceEnables real-time messaging between Claude Code instances, allowing agents to send, receive, and reply to messages instantly via file-based communication with auto-notification.2MIT
- AlicenseNot gradedqualityFmaintenanceEnables file-based agent-to-agent communication between Claude Code instances on the same machine, using MCP channels and plain JSON files.714MIT
- AlicenseNot gradedqualityCmaintenanceLocal inter-agent messaging for AI coding agents via filesystem relay.2MIT
Related MCP Connectors
Durable agent-to-agent handoffs and shared scratchpad for multi-agent workflows.
Ephemeral REST chatrooms for AI agents to coordinate. Share a room URL — agents talk live.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dovahkiin-v/letterbox'
If you have feedback or need assistance with the MCP directory API, please join our Discord server