OpenClaw + Hermes parallel betreiben
Du hast OpenClaw und Hermes Agent installiert. Beide können sich an dieselben Messenger anbinden – wenn du nicht aufpasst, teilen sie sich denselben Telegram-Bot, antworten unkoordiniert oder konkurrieren um Ports, Workspaces und Long-Polling-Slots. Dieser Guide zeigt dir, wie du beide Agents eindeutig getrennt betreibst, sodass du jederzeit weißt, mit welchem du gerade chattest.
1. Warum es kollidiert​
Telegram – nur ein Long-Poller pro Bot​
Telegrams Bot-API erlaubt pro Bot-Token nur einen aktiven getUpdates-Konsumenten. Sobald OpenClaw und Hermes denselben Token nutzen, passiert eines von zwei Dingen:
- HTTP 409 Conflict – einer bekommt gar keine Updates mehr
- Race-Condition – Updates werden abwechselnd „weggeschnappt", Antworten kommen zufällig von einem der beiden
Selbst wenn du zwei verschiedene Bots angelegt hast, wirst du in einer Gruppe mit beiden Bots schnell durcheinanderkommen, weil sie ähnliche Antwort-Stile haben.
Gateway-Ports​
- OpenClaw-Gateway: standardmäßig
127.0.0.1:18789 - Hermes-Gateway: eigener Prozess (
gateway.pidin~/.hermes/)
Beide können parallel laufen – aber wenn du Hermes ebenfalls auf 18789 konfigurierst, kollidiert es.
Daemons​
Auf Linux installieren beide Tools systemd-Units. Ein unbeabsichtigter Neustart kann den jeweils anderen Service beeinflussen, wenn Toolsets/Skills auf demselben Workspace operieren.
2. Soll-Zustand – die goldenen Regeln​
| Regel | OpenClaw | Hermes |
|---|---|---|
| Eigener Telegram-Bot | @JayDee_Claw_bot | @JayDee_Hermes_bot |
| Eindeutiger Bot-Name in Telegram | „Claw – Coding" | „Hermes – Personal" |
| Eindeutiges Identity-Emoji | 🦞 | 🪽 |
| Antwort-Präfix | 🦞 Claw: | 🪽 Hermes: |
| Gateway-Port | 18789 | 18790 (frei wählen) |
| Workspace | ~/.openclaw/workspace | ~/.hermes/ |
| Aufgabenfeld | Coding, Repo-Operationen | Persönliches, Memory, Voice |
Wenn beide „alles" machen, lernen beide an widersprüchlichen Skills/Memory-Snippets. Klare Domänentrennung macht den Lerneffekt von Hermes wertvoller und reduziert die OpenClaw-Tool-Surface (weniger Prompt-Injection-Risiko).
3. Schritt-für-Schritt – sauber aufsetzen​
Schritt 1 – Aktuelle Konfigurationen sichern​
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.before-split
cp ~/.hermes/config.yaml ~/.hermes/config.yaml.before-split
cp ~/.hermes/.env ~/.hermes/.env.before-split
Schritt 2 – Beide Gateways stoppen​
openclaw gateway stop
# Hermes:
hermes gateway stop || pkill -F ~/.hermes/gateway.pid
Schritt 3 – Zwei separate Telegram-Bots anlegen​
In Telegram zu @BotFather:
/newbot
→ Name: JayDee Claw (Coding)
→ Username: JayDee_Claw_bot
→ Token kopieren → TOKEN_CLAW
/newbot
→ Name: JayDee Hermes (Personal)
→ Username: JayDee_Hermes_bot
→ Token kopieren → TOKEN_HERMES
AnschlieĂźend pro Bot bei BotFather:
/setdescription → kurz beschreiben („Coding-Agent" / „Personal-Agent")
/setuserpic → unterschiedliche Avatare!
/setcommands → unterschiedliche Slash-Commands
Wenn du bisher denselben Token fĂĽr beide verwendet hast, revoke ihn jetzt bei BotFather (/revoke) und vergib ihn nur an einen Agent neu. Den anderen bekommt einen frischen Token.
Schritt 4 – OpenClaw konfigurieren​
openclaw config edit
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "<TOKEN_CLAW>",
"dmPolicy": "pairing",
"groupPolicy": "allowlist",
"groups": { "*": { "requireMention": true } }
}
},
"gateway": {
"port": 18789,
"bind": "loopback"
}
}
Identity setzen (wird bei jeder Antwort einbezogen):
$EDITOR ~/.openclaw/identity/IDENTITY.md
# Identity
- Name: Claw
- Emoji: 🦞
- Domäne: Coding, Repo-Operationen, Shell, Browser-Automation
- Antwort-Stil: präzise, knapp, immer mit Präfix `🦞 Claw:` beginnen.
- Wenn nach „bist du Hermes?" gefragt: klarstellen, dass du Claw (OpenClaw) bist.
Schritt 5 – Hermes konfigurieren​
~/.hermes/.env:
TELEGRAM_BOT_TOKEN=<TOKEN_HERMES>
ANTHROPIC_API_KEY=<dein-key>
HERMES_GATEWAY_TOKEN=<eigener-token>
~/.hermes/config.yaml – Telegram-spezifischer Channel-Prompt:
telegram:
channel_prompts:
default: |
Du bist Hermes (🪽). Beginne JEDE Antwort mit `🪽 Hermes:`.
Domäne: persönliche Assistenz, Memory, Voice, Skills, Cron.
Wenn nach „bist du Claw/OpenClaw?" gefragt: klarstellen, dass du Hermes bist.
~/.hermes/SOUL.md ergänzen:
Du bist **Hermes**, der persönliche Agent von JayDee.
- Emoji: 🪽
- Klare Trennung von Claw (🦞 OpenClaw): Claw macht Coding, du machst Personal.
- Beginne jede externe Antwort mit `🪽 Hermes:` – auch in Voice-Transkripten.
Falls Hermes-Gateway auf einen anderen Port soll (Port-Kollision vermeiden):
# ~/.hermes/config.yaml
gateway:
port: 18790
Schritt 6 – Beide Gateways neu starten​
openclaw gateway start
hermes gateway start
Status prĂĽfen:
openclaw gateway status
hermes gateway status
Schritt 7 – Verifikation​
In Telegram:
- Schreib
@JayDee_Claw_bot: „Wer bist du?" → Antwort beginnt mit🦞 Claw: - Schreib
@JayDee_Hermes_bot: „Wer bist du?" → Antwort beginnt mit🪽 Hermes: - Pack beide Bots in eine Testgruppe → erwähne sie gezielt mit
@…und prüfe, dass nur der erwähnte antwortet.
4. Visuelle Trennung verstärken​
| MaĂźnahme | Wirkung |
|---|---|
| Unterschiedliche Bot-Avatare in BotFather | sofortige Erkennung im Chat-Header |
Emoji-Präfix in jeder Antwort (🦞/🪽) | erkennbar in Notifications |
| Pinned Message je Bot mit Domänen-Beschreibung | Onboarding für dich selbst |
| Telegram-Folders – Claw und Hermes in eigene Ordner | Trennung in der Telegram-App |
Unterschiedliche Slash-Command-Sets (/setcommands) | Auto-Complete macht klar, wer was kann |
Beispiel /setcommands fĂĽr Claw:
build - Repo bauen
test - Tests ausfĂĽhren
deploy - Deployment auslösen
FĂĽr Hermes:
remind - Erinnerung anlegen
note - Notiz speichern
voice - Voice-Mode aktivieren
5. Domänen-Trennung über Tools/Toolsets​
OpenClaw: Coding-Profil, restriktiv für Telegram​
{
"tools": { "profile": "coding" },
"agents": {
"telegram-default": {
"tools": {
"deny": ["camera.snap", "screen.record", "sms.send", "calendar.add"]
}
}
}
}
Du nutzt tools.profile: coding schon – passend für Claw.
Hermes: Personal-Toolsets nur auf Telegram​
# ~/.hermes/config.yaml
platform_toolsets:
cli: [hermes-cli, skills, code_execution]
telegram: [hermes-telegram, memory, session_search, cronjob, tts]
Damit hat Hermes auf Telegram keine Repo-/Code-Execution-Tools – Claws Domäne wird nicht versehentlich übernommen.
6. Memory & Skills sauber trennen​
| Pfad | Gehört zu | Inhalt |
|---|---|---|
~/.openclaw/workspace/ | Claw | AGENTS.md, SOUL.md, IDENTITY.md, Coding-Notizen |
~/.openclaw/workspace/skills/ | Claw | nur Coding-Skills |
~/.hermes/memories/MEMORY.md | Hermes | persönliche Fakten |
~/.hermes/memories/USER.md | Hermes | dein Profil |
~/.hermes/skills/ | Hermes | Personal-Skills |
Verlocke dich nicht, skills/ zwischen beiden zu symlinken – die Formate ähneln sich, sind aber nicht identisch (Hermes nutzt Progressive Disclosure mit Reference-Files, OpenClaw nicht). Bei Konflikten ein Skill kopieren und manuell anpassen.
7. Konflikt-Vermeidung – Checkliste​
[ ] Zwei separate Telegram-Bots mit eindeutigen Usernames
[ ] Avatare und Beschreibungen unterschiedlich
[ ] OpenClaw-Gateway-Port ≠Hermes-Gateway-Port
[ ] IDENTITY.md (Claw) und SOUL.md (Hermes) gesetzt
[ ] Antwort-Präfix mit Emoji konfiguriert
[ ] platform_toolsets in Hermes setzt Telegram-Werkzeuge ein
[ ] tools.profile / tools.deny in OpenClaw begrenzt Channel-Rechte
[ ] Pairing-/Allowlist auf beiden Seiten aktiv (kein Wildcard)
[ ] Beide Bots in Test-Gruppe verifiziert (mention-only)
[ ] Secrets rotiert, falls je geteilt
8. Diagnose, wenn doch mal was kollidiert​
„Telegram antwortet nicht / 409 Conflict"​
Wahrscheinlich nutzen noch beide denselben Token oder ein alter Prozess hängt:
# alle laufenden Polling-Prozesse finden
ps -ef | grep -E "openclaw|hermes" | grep -v grep
# zombie-Polling killen
pkill -F ~/.openclaw/gateway.pid 2>/dev/null
pkill -F ~/.hermes/gateway.pid 2>/dev/null
# sauberer Neustart
openclaw gateway start
hermes gateway start
„Antwort kommt vom falschen Agent"​
- BotFather aufrufen, welcher Username dem Token gehört:
/mybots→ Token zeigen - Mit dem richtigen Tool abgleichen (
grep botToken ~/.openclaw/openclaw.json,grep TELEGRAM_BOT_TOKEN ~/.hermes/.env)
„Beide Bots antworten in Gruppe gleichzeitig"​
requireMention: true(OpenClaw) ist gesetzt – ✅- Hermes-Pendant:
discord.require_mention: trueexistiert; fĂĽr Telegram gibt es ein analoges Verhalten ĂĽber Channel-Prompts und Pairing. Setze in Hermes-Config explizit:
telegram:
channel_prompts:
"*": |
Antworte in Gruppen NUR, wenn du explizit per @-Mention adressiert wurdest.
„Welcher Daemon läuft gerade?"​
systemctl --user status openclaw-gateway 2>/dev/null
systemctl --user status hermes-gateway 2>/dev/null
ss -ltnp | grep -E "1878[0-9]" # Ports
9. Operatives – tägliche Hygiene​
- Logs zusammen anschauen:
tail -F ~/.openclaw/logs/*.log ~/.hermes/logs/*.log - Backups separat halten – zwei private Repos:
openclaw-workspaceundhermes-workspace. Nicht mischen. - Updates getrennt fahren:
npm i -g openclaw@latest
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash - Secret-Hygiene: niemals den Telegram-Token in Slack/Issues/Pastebins teilen. Bei Verdacht:
@BotFather→/revoke.
10. Erweiterte Strategien​
Variante A – Bewusste Aufgabenteilung​
| Channel | Zuständig |
|---|---|
| Telegram-DM mit Claw-Bot | Coding, Repo, Deployments |
| Telegram-DM mit Hermes-Bot | Erinnerungen, Cron, Memory, Voice |
| Discord-Server | nur Hermes (für Hobby/Persönliches) |
| iMessage/Signal | nur Hermes (privat) |
| Slack (Arbeit) | nur Claw (Repo-Bots, CI) |
Variante B – Router-Bot vorne dran​
Wenn du wirklich einen Telegram-Bot willst:
- Lege einen dritten Bot an (
@JayDee_Router_bot) - Baue eine kleine Webhook-Logik (z. B. Cloudflare Worker), die Nachrichten anhand eines Prefix (
/c …→ Claw,/h …→ Hermes) an den jeweiligen internen Bot weiterleitet - Claw und Hermes nutzen eigene Bots, die nur intern erreichbar sind
Mehr Aufwand, aber eine Kontaktstelle in Telegram.
Variante C – Nur einer aktiv, je nach Kontext​
# Morgens / Coding-Tag
hermes gateway stop && openclaw gateway start
# Abends / Personal
openclaw gateway stop && hermes gateway start
Ein simples ~/bin/agent-mode coding|personal-Skript schaltet um. Spart RAM, eliminiert Konflikt strukturell.
11. Weiterführend​
- OpenClaw-Guide: openclaw
- Hermes-Guide: hermes
- OpenClaw-Multi-Agent-Routing: docs.openclaw.ai/concepts/multi-agent
- Hermes-Messaging-Plattformen: hermes-agent.nousresearch.com/docs/user-guide/messaging
- Telegram-BotFather: t.me/BotFather
Zwei Agents auf einer Maschine sind kein Problem – zwei Agents auf einem Bot schon. Trenne den Kanal, nicht nur die Konfig.