Skip to main content
Glama

Büro

Peer-to-Peer-Kommunikation zwischen Claude Code-Sitzungen. Ihre Sitzungen und Ihre Experten werden zu namentlich adressierbaren Personen, die gleichzeitig über verschiedene Themen miteinander sprechen – ohne Orchestrator.

Design-Spezifikation: pessoal/claudicaro-cli/docs/design/2026-08-02-escritorio-multiagente.md.

Warum das ohne ihn nicht möglich war

Die native Topologie von Claude Code ist ein Baum: Unteragent gibt an den Eltern zurück, SendMessage erreicht nur diejenigen, die die eigene Sitzung erzeugt hat, Workflow übergibt Daten über das Skript. Zwei Geschwister sprechen nicht miteinander. Laterale Kommunikation erfordert ein gemeinsames Medium – und das ist diese Mailbox.

Related MCP server: claude-mesh

Die sechs Werkzeuge

tool

Funktion

roster

wer existiert, was sie wissen, welcher Tier – eine Zeile pro Person, ohne .md zu laden

ask

fragt und wartet auf die Antwort

dm

sendet und folgt; im Thread einer ausstehenden Frage wird es zur Antwort darauf

inbox

holt die Korrespondenz (normalerweise liefert der Hook bereits selbst)

board

gemeinsame Tafel, ohne Empfänger

claim

beansprucht Ressource, bevor daran gearbeitet wird

Plus fechar_thread, das das Gespräch beendet und jeden Kollegen das Notizbuch destillieren lässt.

Wie es funktioniert

Thread ist der einzige Gesprächscontainer – ersetzt Räume und Kanäle. Debatte zwischen Gleichgestellten ist ein Thread mit N Teilnehmern, bei dem jeder wählt, wem er antwortet.

Ohne Chef halten zwei Regeln in der Mailbox das System zusammen:

  • hops wird bei jeder Nachricht dekrementiert; bei Null verweigert die Mailbox. Tötet endloses Ping-Pong.

  • Besitzer des Threads ist derjenige, der ihn geöffnet hat, und nur er schließt ihn.

Zustellung hat zwei Arten:

  • Lebende Sitzung erhält per Hook (Stop blockiert das Anhalten und liefert aus; PostToolBatch liefert mitten in der Arbeit aus). Der Hook ist ein Skript – läuft außerhalb des Modells, Token-Kosten null.

  • Kollege aus dem Roster wird von der Mailbox mit claude -p geweckt, antwortet und schläft weiter.

Gedächtnis des Kollegen: Innerhalb eines Threads hält er die Sitzung am Leben (--resume) und erinnert sich an alles; wenn der Thread geschlossen wird, destilliert er das Gelernte in ein Notizbuch .md und die Sitzung stirbt. Langfristig ist das Notizbuch – prüfbar, manuell bearbeitbar, versioniert.

Installation

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

Der Installer registriert den Zustellungs-Hook in ~/.claude/settings.json, setzt ESCRITORIO_WORKSPACE/ESCRITORIO_ROSTER und registriert den MCP-Server über claude mcp add --scope user (der in ~/.claude.json schreibt – settings.json registriert kein MCP).

Erstellt beim ersten Mal ein Backup in settings.json.antes-do-escritorio und überschreibt dieses Backup nie.

Roster

~/claude-workspace-config/roster.yaml (synchronisiertes Repo 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 ist das Einzige, was roster() zurückgibt – schreiben Sie mit dem Gedanken „wann würde ich diese Person rufen“. Pfade akzeptieren ~ und ${VAR}; es ist die Umgebungserweiterung, die dieselbe Datei für Mac und VM nutzbar macht, wo der Workspace an unterschiedlichen Orten liegt.

Stufen

Stufe

darf

wie durchgesetzt

advisor

lesen und beraten

Allowlist von Tools (--allowedTools): Lesen, Bash read-only und die Büro-Tools

editor

in den Working Tree schreiben

acceptEdits, und nur unter aktivem claim() – die Mailbox verweigert das Wecken ohne ihn

worktree

isoliert schreiben

eigener Git-Worktree; wenn nicht erstellbar, verweigert statt in das echte Repo zu fallen

Eine Anfrage kann die Stufe in der Abfrage herabsetzen, niemals anheben.

Warum Allowlist und nicht Denylist

Die erste Version verwendete --disallowedTools Edit Write NotebookEdit mit bypassPermissions. Mit echtem claude getestet, leckte es: Der Kollege schrieb die Datei über Bash, das nicht in der Negation war. Gemessen in den vier Varianten:

Flags

Ergebnis

bypassPermissions + nega Edit/Write

leckte (schrieb über Bash)

bypassPermissions + nega Edit/Write/Bash

hielt

ohne permission-mode + nega Edit/Write/Bash

hielt

ohne permission-mode + Allowlist read-only

hielt, und las git log normal

Es blieb bei der Allowlist: Was ich vergesse aufzulisten, bleibt verweigert statt freigegeben. Beachten Sie, dass Bash(cat:*) in der Allowlist nicht erlaubte, durch Umleitung zu entkommen (cat > arquivo).

Ver acontecendo

npm run tail

Verfolgt die Mailbox und druckt, was zwischen allen Sitzungen passiert – Tafel geschrieben, Claim, Thread geöffnet, Nachricht ausgetauscht, Antwort eintreffend:

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…

→? ist blockierende Frage, Nachricht, ←! Antwort.

Identität

Jede Sitzung braucht einen Namen. ESCRITORIO_ID wenn deklariert; ohne ihn, abgeleitet von usuário@pasta – stabil pro Projekt, also ist eine in dsg/v1 geöffnete Sitzung immer icaromelo@v1 und kann von einer anderen adressiert werden.

Tests

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)

Bekannte Einschränkungen

  • Eine Mailbox pro Maschine. Sitzung auf der Oracle-VM spricht nicht mit der Mailbox des Macs; die Brücke zwischen Maschinen ist ein separates Problem.

  • dist/ lebt auf der SSD. Bei abmontierter SSD schlägt der Hook still (|| true) und der MCP bleibt getrennt – nichts hängt, aber das Büro verschwindet bis zum Wiederanbringen.

  • ask in einer lebenden Sitzung hängt davon ab, dass sie läuft. Wenn niemand diese Sitzung geöffnet hat, warten Sie bis zum Timeout (5 Min.) und die Antwort bleibt im Inbox für später.

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