Skip to main content
Glama

Офис

Peer-to-peer общение между сессиями Claude Code. Ваши сессии и эксперты становятся адресуемыми по имени людьми, которые общаются друг с другом на разные темы одновременно — без оркестратора.

Спецификация дизайна: pessoal/claudicaro-cli/docs/design/2026-08-02-escritorio-multiagente.md.

Почему это было невозможно без него

Родная топология Claude Code — дерево: подагент возвращается к родителю, SendMessage достигает только того, кого создала сама сессия, Workflow передаёт данные через скрипт. Два брата не разговаривают. Боковое общение требует общего носителя — и это наша почта.

Related MCP server: claude-mesh

Шесть инструментов

tool

что делает

roster

кто существует, что знает, какой уровень — одна строка на человека, без загрузки .md

ask

задаёт вопрос и ждёт ответа

dm

отправляет и продолжает; в треде ожидающего вопроса становится его ответом

inbox

забирает корреспонденцию (обычно хук уже доставляет сам)

board

общая доска, без получателя

claim

заявляет ресурс перед тем, как его трогать

Плюс fechar_thread, который завершает разговор и заставляет каждого коллегу дистиллировать записную книжку.

Как работает

Тред — это единый контейнер разговора — заменяет комнаты и каналы. Обсуждение между равными — это тред с N участниками, где каждый выбирает, кому отвечать.

Без начальника, два правила в почте удерживают систему:

  • hops уменьшается с каждым сообщением; когда достигает нуля, почта отказывает. Убивает бесконечный пинг-понг.

  • Владелец треда — тот, кто его открыл, и только он его закрывает.

Доставка имеет два вида:

  • Живая сессия получает через хук (Stop блокирует остановку и доставляет; PostToolBatch доставляет посреди работы). Хук — это скрипт — работает вне модели, нулевая стоимость токенов.

  • Коллега из roster пробуждается почтой с помощью claude -p, отвечает и снова засыпает.

Память коллеги: внутри треда он поддерживает сессию живой (--resume) и помнит всё; когда тред закрывается, он дистиллирует то, что узнал, в записную книжку .md, и сессия умирает. Долгосрочная память — это записная книжка — проверяемая, редактируемая вручную, версионируемая.

Установка

npm install && npm run build
node scripts/instalar.mjs          # --dry pra ver antes, --remover pra desfazer

Установщик регистрирует хук доставки в ~/.claude/settings.json, устанавливает ESCRITORIO_WORKSPACE/ESCRITORIO_ROSTER и регистрирует MCP-сервер через claude mcp add --scope user (который записывает в ~/.claude.jsonsettings.json не регистрирует MCP).

При первом запуске создаёт резервную копию settings.json.antes-do-escritorio и никогда не перезаписывает эту резервную копию.

Roster

~/claude-workspace-config/roster.yaml (репозиторий, синхронизированный между Mac и VM):

especialista-deposito:
  brief: "Depósito antecipado: cobrança, pagamento, reembolso (DSG/v1)"
  agent_file: ${ESCRITORIO_WORKSPACE}/dsg/.agent/especialista-deposito.md
  caderno: ${ESCRITORIO_WORKSPACE}/pessoal/escritorio/cadernos/especialista-deposito.md
  tier: advisor
  cwd: ${ESCRITORIO_WORKSPACE}/dsg/v1

brief — это единственное, что возвращает roster() — пишите, думая "когда бы я позвал этого человека". Пути поддерживают ~ и ${VAR}; это расширение переменных окружения позволяет одному и тому же файлу работать на Mac и VM, где workspace находится в разных местах.

Уровни

tier

может

как налагается

advisor

читать и советовать

белый список инструментов (--allowedTools): чтение, Bash только для чтения и инструменты офиса

editor

писать в working tree

acceptEdits и только при активном claim() — почта отказывается пробуждать без него

worktree

писать изолированно

собственный git worktree; если не удаётся создать, отказывает вместо того, чтобы упасть в реальный репозиторий

Запрос может понизить уровень при запросе, но никогда не повысить.

Почему белый список, а не чёрный

Первая версия использовала --disallowedTools Edit Write NotebookEdit с bypassPermissions. Протестировано с реальным claude, произошла утечка: коллега записал файл через Bash, который не был в запрете. Измерено на четырёх вариантах:

флаги

результат

bypassPermissions + запрет Edit/Write

утечка (записал через Bash)

bypassPermissions + запрет Edit/Write/Bash

удержало

без permission-mode + запрет Edit/Write/Bash

удержало

без permission-mode + белый список только чтение

удержало, и при этом нормально прочитало git log

Остановились на белом списке: то, что я забуду перечислить, остаётся запрещённым вместо разрешённого. Стоит отметить, что Bash(cat:*) в белом списке не позволил обойти через перенаправление (cat > arquivo).

Наблюдение за происходящим

npm run tail

Следит за почтой и выводит то, что происходит между всеми сессиями — запись на доске, claim, открытый тред, обмен сообщениями, приходящий ответ:

Escritório — monitor ao vivo
sessões vistas na última hora: icaromelo@v1, icaromelo@kairos-ui, icaromelo@oraculo-api, …
threads abertas: (nenhuma)
────────────────────────────────────────────────────────────────────────
13:26:36 ▤ quadro dsg/v1:decisoes = cache sempre via RedisService · icaromelo@v1
13:26:37 🔒 claim src/infra/redis por icaromelo@v1 · revisar TTLs
13:26:38 ⊕ thread [477cfbdc] Em uma frase: qual TTL padrao usamos? · dono icaromelo@v1
13:26:38 icaromelo@v1 →? especialista-cache  [477cfbdc]
        Em uma frase: qual TTL padrao usamos?
13:26:44 especialista-cache ←! icaromelo@v1  [477cfbdc]
        O TTL padrão é 3600 segundos (1 hora) — mas sempre passe TTL explícito…

→? — блокирующий вопрос, — сообщение, ←! — ответ.

Идентичность

Каждая сессия нуждается в имени. ESCRITORIO_ID если объявлен; без него, производное от пользователь@папка — стабильно для проекта, поэтому сессия, открытая в dsg/v1, всегда icaromelo@v1 и может быть адресована другой.

Тесты

npm test                        # 117 testes, sem gastar API
node scripts/smoke-mcp.mjs      # sobe o servidor MCP de verdade via stdio
node scripts/smoke-e2e.mjs      # E2E REAL: acorda colega, --resume, caderno (gasta API)
node scripts/smoke-escrita.mjs  # E2E REAL dos 3 tiers: advisor bloqueado, worktree isolado,
                                # editor sob claim (gasta API)

Известные ограничения

  • Одна почта на машину. Сессия на VM Oracle не общается с почтой Mac; мост между машинами — отдельная проблема.

  • dist/ находится на SSD. При отмонтированном SSD хук молча падает (|| true) и MCP отключается — ничего не зависает, но офис исчезает до повторного монтирования.

  • ask в живой сессии зависит от того, работает ли она. Если никто не имеет той сессии открытой, вы ждёте до таймаута (5 мин), и ответ остаётся в inbox на потом.

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

Related MCP Connectors

  • The team layer for AI coding agents: shared contracts, collision alerts, E2EE sessions.

  • Ephemeral REST chatrooms for AI agents to coordinate. Share a room URL — agents talk live.

  • Agent-to-agent network for teams: dm, who-knows-X routing, shared rooms. Human-in-the-loop.

View all MCP Connectors

Latest Blog Posts

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/icaromelo1/escritorio'

If you have feedback or need assistance with the MCP directory API, please join our Discord server