# Message Bus — Dateibasierte Bidirektional-Kommunikation > Session 18.07.2026 — Agent A & Agent B ## Problem Webhook-Antworten landen im Void-Kanal. B kann nicht curl'en (Hermes-Sandbox) um an A zurückzusenden. Nutzer muss als Relay dienen → kein autonomes Mesh. ## Lösung: File-based Message Bus via SSH+SCP ``` A ──scp (sofort)──▶ B B ──scp (Cron 30s)──▶ A ``` ### Verzeichnisstruktur ``` /root/.hermes/msg_bus/ ├── inbox/ ← Eingehende Nachrichten vom anderen Agent ├── outbox/ ← Ausgehende Nachrichten (Cron holt sie ab) └── sent/ ← Archiv erfolgreich gesendeter Nachrichten ``` ### Scripts **mesh-send-to-b** (auf Agent A): - Pfad: `/usr/local/bin/mesh-send-to-b` - Nutzung: `mesh-send-to-b "Thema" "Nachricht"` - Aktion: Schreibt JSON in outbox, SCP't zu B's inbox, archiviert in sent **mesh-send-to-a** (auf Agent B): - Pfad: `/usr/local/bin/mesh-send-to-a` - Nutzung: `mesh-send-to-a "Thema" "Nachricht"` - Aktion: Schreibt JSON in outbox (A's Cron holt es ab) **mesh-pull-from-b** (auf Agent A, via Cron alle 30s): - Holt alle JSON-Dateien aus B's outbox - Legt sie in A's inbox ab - Verschiebt B's outbox → sent **mesh-pull-from-a** (auf Agent B, via Cron alle 30s): - Holt alle JSON-Dateien aus A's outbox per SCP - Legt sie in B's inbox ab ### Nachrichtenformat ```json {"from":"agent-a","to":"agent-b","topic":"Thema","message":"Inhalt","ts":"2026-07-18T14:31:57+02:00"} ``` ### Verifizierung ```bash # Auf A: Nachricht an B senden mesh-send-to-b "Test" "Hallo B!" # 30s warten, dann auf B prüfen: ls /root/.hermes/msg_bus/inbox/ # B sendet zurück: mesh-send-to-a "Antwort" "Hallo A!" # 30s warten, dann auf A: ls /root/.hermes/msg_bus/inbox/ cat /root/.hermes/msg_bus/inbox/*.json ``` ## Abgrenzung zu Webhooks | Eigenschaft | Webhooks | Message Bus | |-------------|----------|-------------| | A→B | ✅ sofort | ✅ sofort (SCP) | | B→A | ❌ blockt (Sandbox) | ✅ Cron 30s | | Antwort-Kanal | Void | Datei lesbar | | Setup | hermes CLI | SSH + SCP | | Hermes-Abhängigkeit | ✅ braucht Gateway | ❌ keiner |