Escritório
Escritório
Comunicación peer-to-peer entre sesiones de Claude Code. Sus sesiones y sus especialistas se convierten en personas direccionables por nombre, que conversan entre sí sobre varios temas al mismo tiempo — sin orquestador.
Especificación de diseño: pessoal/claudicaro-cli/docs/design/2026-08-02-escritorio-multiagente.md.
Por qué no se podía hacer sin esto
La topología nativa de Claude Code es árbol: el subagente devuelve al padre, SendMessage solo alcanza a quien la propia sesión generó, Workflow pasa datos mediante el script. Dos hermanos no se hablan. La comunicación lateral exige un medio compartido — que es este correo.
Related MCP server: claude-mesh
Las seis herramientas
tool | qué hace |
| quién existe, qué sabe, qué tier — una línea por persona, sin cargar |
| pregunta y espera la respuesta |
| envía y sigue; en el hilo de una pregunta pendiente, se convierte en la respuesta |
| trae la correspondencia (normalmente el hook ya la entrega solo) |
| pizarra compartida, sin destinatario |
| reclama recurso antes de moverlo |
Además fechar_thread, que cierra la conversación y hace que cada colega destile el cuaderno.
Cómo funciona
Thread es el contenedor único de conversación — sustituye salas y canales. El debate entre pares es un hilo con N participantes donde cada uno elige a quién responder.
Sin jefe, dos reglas en el correo sostienen el sistema:
hopsdecrementa en cada mensaje; al llegar a cero, el correo lo rechaza. Mata el ping-pong infinito.Dueño del hilo es quien lo abrió, y solo él lo cierra.
Entrega tiene dos naturalezas:
Sesión viva recibe por hook (
Stopbloquea la parada y entrega;PostToolBatchentrega en medio del trabajo). El hook es script — corre fuera del modelo, costo cero de token.Colega del roster es despertado por el correo con
claude -p, responde y vuelve a dormir.
Memoria del colega: dentro de un hilo mantiene la sesión viva (--resume) y recuerda todo; cuando el hilo se cierra, destila lo aprendido en un cuaderno .md y la sesión muere. A largo plazo es el cuaderno — auditable, editable a mano, versionado.
Instalación
npm install && npm run build
node scripts/instalar.mjs # --dry pra ver antes, --remover pra desfazerEl instalador registra el hook de entrega en ~/.claude/settings.json, define ESCRITORIO_WORKSPACE/ESCRITORIO_ROSTER, y registra el servidor MCP mediante claude mcp add --scope user (que escribe en ~/.claude.json — settings.json no registra MCP).
Hace copia de seguridad en settings.json.antes-do-escritorio la primera vez, y nunca sobrescribe esa copia.
Roster
~/claude-workspace-config/roster.yaml (repositorio sincronizado 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/v1brief es lo único que devuelve roster() — escríbelo pensando en “cuándo llamaría a esta persona”. Las rutas aceptan ~ y ${VAR}; es la expansión de entorno lo que hace que el mismo archivo sirva para Mac y VM, donde el workspace reside en lugares diferentes.
Tiers
tier | puede | cómo se impone |
| leer y aconsejar | allowlist de tools ( |
| escribir en el working tree |
|
| escribir aislado | git worktree propio; si no se puede crear, rechaza en vez de caer en el repo real |
Una solicitud puede rebajar el tier en la consulta, nunca elevarlo.
Por qué allowlist y no denylist
La primera versión usaba --disallowedTools Edit Write NotebookEdit con bypassPermissions. Probado con claude de verdad, filtró: el colega escribió el archivo mediante Bash, que no estaba en la denegación. Medido en las cuatro variantes:
flags | resultado |
| filtró (escribió mediante Bash) |
| contuvo |
sin permission-mode + negar Edit/Write/Bash | contuvo |
sin permission-mode + allowlist read-only | contuvo, y además leyó |
Se quedó la allowlist: lo que olvide listar queda denegado en vez de liberado. Vale notar que Bash(cat:*) en la allowlist no permitió escapar por redireccionamiento (cat > archivo).
Ver cómo ocurre
npm run tailSigue el correo e imprime lo que ocurre entre todas las sesiones — pizarra escrita, claim, hilo abierto, mensaje intercambiado, respuesta llegando:
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…→? es pregunta bloqueante, → recado, ←! respuesta.
Identidad
Cada sesión necesita un nombre. ESCRITORIO_ID cuando se declara; sin él, se deriva de usuario@carpeta — estable por proyecto, así que una sesión abierta en dsg/v1 es siempre icaromelo@v1 y puede ser direccionada por otra.
Pruebas
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)Limitaciones conocidas
Un correo por máquina. Sesión en la VM Oracle no habla con el correo del Mac; el puente entre máquinas es problema aparte.
dist/reside en el SSD. Con el SSD desmontado el hook falla silencioso (|| true) y el MCP queda desconectado — nada se traba, pero el escritorio desaparece hasta remontar.asken una sesión viva depende de que esté ejecutándose. Si nadie tiene esa sesión abierta, esperas hasta el timeout (5 min) y la respuesta queda en el inbox para después.
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
- Flicense-qualityDmaintenanceEnables multiple Claude Code instances to communicate through direct messages and topic-based channels. It features a real-time web dashboard for monitoring conversations and includes a persistent mailbox for offline message delivery.
- Alicense-qualityBmaintenanceEnables networked Claude-to-Claude messaging over HTTP and MCP channels, allowing direct messages, broadcasts, threaded replies, and permission approvals among Claude Code instances.23MIT
- Alicense-qualityBmaintenanceEnables multiple Claude Code sessions to communicate and coordinate through broadcast and peer-to-peer messaging.21MIT
- Alicense-qualityBmaintenanceLets Claude Code instances discover and message each other across sessions, with reliable delivery via hooks instead of experimental channels.26MIT
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.
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/icaromelo1/escritorio'
If you have feedback or need assistance with the MCP directory API, please join our Discord server