4.9 KiB
Hermes Rocket.Chat Plugin — Community Release
Nützliches Add-on für Hermes Agent
Verbindet Hermes Agent mit einem selbst-gehosteten Rocket.Chat-Server.
Was ist das?
Dieses Plugin verwandelt Hermes Agent in einen nativen Rocket.Chat-Benutzer — mit Echtzeit-Nachrichten, Präsenz-Status und interaktiven Buttons.
Statt über ein separates Gateway-Binary zu kommunizieren, spricht Hermes Agent direkt mit Rocket.Chat:
- Eingehend: WebSocket/DDP für sofortige Nachrichten
- Ausgehend: REST-API für Antworten, Buttons, Dateien
Features
| Feature | Beschreibung |
|---|---|
| 🚀 Echtzeit-Streaming | DDP/WebSocket für instant eingehende Nachrichten |
| 🟢 Präsenz | Grüner Online-Status im Rocket.Chat |
| ✍️ Markdown | Fett, kursiv, Code, Blöcke, Links |
| 🔘 Interaktive Buttons | Ja/Nein, Bestätigen/Abbrechen, Mehrfachauswahl |
| 📢 Räume | Kanäle, private Gruppen, Direktnachrichten |
| 🔒 Allowlist | Nur erlaubte Benutzer dürfen den Bot nutzen |
| 📦 Zero-Dependency | Nutzt ausschließlich Python-Standardbibliothek |
Schnellstart
1. Voraussetzungen
- Hermes Agent installiert (Setup-Guide)
- Laufender Rocket.Chat-Server (v5+ empfohlen)
- Bot-Benutzer auf Rocket.Chat mit Login-Daten
2. Plugin installieren
# In das Hermes Agent Verzeichnis wechseln
cd ~/.hermes/hermes-agent
# Plugin-Verzeichnis anlegen und Dateien hineinkopieren
mkdir -p plugins/platforms/rocketchat
cp plugin.yaml plugins/platforms/rocketchat/
cp __init__.py plugins/platforms/rocketchat/
cp adapter.py plugins/platforms/rocketchat/
3. Konfigurieren
Variante A — Umgebungsvariablen:
export ROCKETCHAT_BASE_URL="https://rocketchat.example.com"
export ROCKETCHAT_USER="bernd"
export ROCKETCHAT_PASSWORD="dein-passwort"
export ROCKETCHAT_ROOM_ID="J3jvMyrKTMzKvKHSh" # optional
export ROCKETCHAT_ALLOWED_USERS="andreas,max" # optional
export ROCKETCHAT_ALLOW_ALL_USERS="false" # default
Variante B — config.yaml:
plugins:
platforms:
rocketchat:
enabled: true
base_url: "https://rocketchat.example.com"
user: "bernd"
password: "dein-passwort"
room_id: "J3jvMyrKTMzKvKHSh"
allowed_users: ["andreas", "max"]
allow_all_users: false
4. Starten
hermes gateway start
Hermes Agent verbindet sich automatisch mit Rocket.Chat und erscheint als Online-Benutzer.
Architektur
┌─────────────┐ DDP/WebSocket ┌─────────────────┐
│ Hermes Agent│ ◄────────────────────► │ Rocket.Chat │
│ (Plugin) │ │ Server │
│ │ REST API │ │
│ │ ─────────────────────► │ (v5+) │
└─────────────┘ └─────────────────┘
- Adapter.py (~20 k LOC): DDP-Client, Session-Handling, Nachrichten-Parsing, Button-Rendering
- __init__.py: Plugin-Registrierung, Template-Definitionen für Buttons
- plugin.yaml: Metadaten, Env-Vars, Dependency-Check
Button-Templates
Das Plugin bringt vordefinierte Interaktionen mit — kein YAML, keine Extra-Config:
| Template | Nutzung |
|---|---|
yes_no |
✅ Ja / ❌ Nein |
confirm_cancel |
✅ Bestätigen / 🚫 Abbrechen |
ok |
👍 OK |
multi_choice_3 |
1. Links / 2. Rechts / 3. Zwei Runden |
Custom-Buttons werden aus reinen Label-Strings generiert (Rocket.Chat schneidet nach ~11–12 Zeichen ab — daher kurze Labels mit Emoji).
Aktueller Status
- Version: 1.0.0
- Stabilität: Produktiv im Einsatz (seit Mai 2026)
- Getestet mit: Rocket.Chat v5.x, Hermes Agent Gateway
- Lizenz: Unlicense — Public Domain
Roadmap / Offen
- OAuth / Token-Auth neben Passwort-Login
- Threading-Unterstützung für Kanäle
- Datei-Upload (Bilder, Dokumente)
- Slash-Command-Integration auf Rocket.Chat-Seite
- Mehrsprachige Button-Templates
Mitmachen
Da das Plugin reines Python und nur Standardbibliothek nutzt, ist der Einstieg niedrig:
- Repo clonen
adapter.pybearbeiten- Testen mit
hermes gateway start --debug - Pull Request oder Patch schicken
Kein Build-Step, keine Node-Dependencies, kein Docker nötig.
Links
- Hermes Agent: https://hermes-agent.nousresearch.com/
- Rocket.Chat: https://www.rocket.chat/
- Dieses Repo:
https://gitea.thomander.de/andreas/Hermes_rocket.chat_Plugin
Erstellt von der Hermes Agent Community — für die Rocket.Chat Community.