2.1 KiB
2.1 KiB
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
{"from":"agent-a","to":"agent-b","topic":"Thema","message":"Inhalt","ts":"2026-07-18T14:31:57+02:00"}
Verifizierung
# 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 |