Hermes Multi-Instanz ohne Konflikte: Die komplette Profil-Anleitung

Wenn Menschen Hermes zum ersten Mal ausprobieren, stopfen sie oft alles in die Standardsitzung: Programmieren, E-Mails, Recherche, geplante Aufgaben — alles durcheinander. Schon bald wird das Gedächtnis unübersichtlich, die Persönlichkeit verwischt und die API-Rechnung lässt sich nicht mehr zuordnen.
Hermes hat eine elegantere Lösung: Profile. Ein Profil ist ein eigenes Hermes-Home-Verzeichnis mit eigenen:
config.yaml(Modell, Tools, Gateway-Einstellungen).env(API-Keys, Bot-Token)SOUL.md(Persönlichkeit / System-Prompt)memories/(Erinnerungen)sessions/(Gesprächsverlauf)skills/(Skills)cron(geplante Aufgaben)- Gateway-Status
Stell dir das vor wie mehrere isolierte Hermes-Instanzen auf einem einzigen Rechner. Dieser Leitfaden zeigt, wie du diesen Rechner in ein echtes Multi-Tenant-AI-Studio verwandelst.
1. Schnellstart: Ein Coding-Profil erstellen
hermes profile create coder
coder setup
coder chat
Drei Zeilen. coder ist nun ein eigener Befehl mit eigener Konfiguration, eigenem Gedächtnis und eigenen Sitzungen. Du kannst:
coder config set model.default anthropic/claude-sonnet-4
echo "Du bist ein Senior Engineer mit Fokus auf Python und Infrastruktur." > ~/.hermes/profiles/coder/SOUL.md
coder chat
Währenddessen bleibt hermes chat unberührt.
2. Was ein Profil wirklich ist: Isolation durch HERMES_HOME
Hermes bestimmt über die Umgebungsvariable HERMES_HOME, wo das “Home” liegt. Der Befehl coder chat ist im Grunde:
HERMES_HOME=~/.hermes/profiles/coder hermes chat
Da get_hermes_home() an mehr als 119 Stellen verwendet wird, werden Konfiguration, Gedächtnis, Sitzungen, Skills, Gateway-PID, Logs und Cron automatisch auf dieses Verzeichnis begrenzt.
Aber Achtung: Ein Profil ist kein Sandbox. Im Standard-local-Terminal-Backend läuft Hermes weiterhin als dein OS-Benutzer und kann auf das gesamte Dateisystem zugreifen. Für Dateisystem-Isolation verwende Docker.
3. Drei Möglichkeiten, ein Profil zu erstellen
3.1 Leeres Profil
hermes profile create mybot
Erstellt ein neues Profil mit mitgelieferten Skills. Dann mybot setup für API-Keys ausführen.
3.2 Nur Konfiguration klonen (--clone)
hermes profile create work --clone
Kopiert config.yaml, .env, SOUL.md und Skills des aktuellen Profils. Gleiches Modell und gleiche Fähigkeiten, aber neues Gedächtnis und neue Sitzungen.
Ideal für: gleiches Modell, andere Persönlichkeit oder Arbeitsverzeichnis.
3.3 Alles klonen (--clone-all)
hermes profile create backup --clone-all
Kopiert alles: Konfiguration, Keys, Persönlichkeit, alle Erinnerungen, Skills, Cron. Ein Arbeits-Snapshot.
Hinweis: Sitzungshistorie, state.db, Backups, State-Snapshots und Checkpoints werden ausgeschlossen, weil sie Zehnerte GB groß sein können. Für ein vollständiges Backup inklusive Historie verwende hermes profile export oder hermes backup.
3.4 Von einem bestimmten Profil klonen
hermes profile create work --clone-from coder
hermes profile create work-backup --clone-from coder --clone-all
3.5 Beschreibung für Kanban-Routing hinzufügen
hermes profile create researcher --description "Liest Quellcode und externe Dokumentation, verfasst Ergebnisse."
Der Kanban-Orchestrator verwendet diese Beschreibung, um Aufgaben an das richtige Profil zu routen.
4. Profile wechseln und verwenden
Automatische Befehlsaliase
Jedes Profil erhält einen Wrapper unter ~/.local/bin/<name>:
coder chat
personal-bot gateway start
research config set model.default openai/gpt-4o
Explizites -p-Flag
hermes -p coder chat
hermes --profile=coder doctor
hermes chat -p coder -q "hello" # funktioniert an jeder Position
Sticky-Default (hermes profile use)
hermes profile use coder
hermes chat # zielt jetzt auf coder
hermes profile use default
Wie kubectl config use-context.
Wissen, wo du bist
- Der Prompt wird zu
coder ❯ - Das Start-Banner zeigt
Profile: coder hermes profilezeigt Name, Pfad, Modell und Gateway-Status
5. Mehrere Gateways: Ein Bot pro Profil
Jedes Profil kann sein eigenes Gateway ausführen:
coder gateway start
personal-bot gateway start
research gateway start
Jedes Gateway ist ein eigener Prozess mit eigenem Bot-Token. Konfiguriere unterschiedliche Telegram/Discord/Slack-Token pro Profil:
nano ~/.hermes/profiles/coder/.env
nano ~/.hermes/profiles/personal-bot/.env
Sicherheit: Token-Lock
Wenn zwei Profile versehentlich denselben Bot-Token verwenden, bricht das zweite Gateway mit einem Fehler ab und nennt das kollidierende Profil. Unterstützt für Telegram, Discord, Slack, WhatsApp und Signal.
Persistent Services
coder gateway install # erstellt hermes-gateway-coder Service
personal-bot gateway install
systemd/launchd-Services sind unabhängig und starten unabhängig neu.
Bulk-Verwaltungsskript
Speichere dies als ~/.local/bin/hermes-gateways:
#!/bin/sh
set -eu
profiles="default coder personal-bot research"
usage() {
echo "Usage: hermes-gateways {start|stop|restart|status|list}"
}
run_for_profile() {
profile="$1"
action="$2"
if [ "$profile" = "default" ]; then
hermes gateway "$action"
else
hermes -p "$profile" gateway "$action"
fi
}
action="${1:-}"
case "$action" in
start|stop|restart|status)
for profile in $profiles; do
echo "==> $action $profile"
run_for_profile "$profile" "$action"
done
;;
list)
hermes gateway list
;;
*)
usage
exit 2
;;
esac
Dann:
chmod +x ~/.local/bin/hermes-gateways
hermes-gateways start
hermes-gateways stop
hermes-gateways restart
hermes-gateways status
6. Multiplexing: Ein Gateway für alle Profile
Wenn du viele Profile hast, wird ein Prozess pro Profil schnell ressourcenintensiv. Hermes unterstützt Multiplexing: Nur das Gateway des Default-Profils läuft, und es bedient eingehende Nachrichten für alle Profile.
Aktivieren
hermes config set gateway.multiplex_profiles true
hermes gateway restart
Oder in ~/.hermes/config.yaml:
gateway:
multiplex_profiles: true
Was sich im Multiplex-Modus ändert
-
Sekundäre Profile können kein eigenes Gateway starten Wenn
coderbereits vom Multiplexer bedient wird, führtcoder gateway startzu einem Fehler. -
HTTP-Inbound-Plattformen verwenden das Präfix
/p/<profile>/POST http://host:8644/webhooks/<route> # default-Profil POST http://host:8644/p/coder/webhooks/<route> # coder-ProfilPort-bindende Plattformen (
webhook,api_server,msgraph_webhook,feishu,wecom_callback,bluebubbles,sms,whatsapp_cloud,line) dürfen nur im Default-Profil konfiguriert werden. Andere Profile sind über das Präfix erreichbar. -
Polling-/Verbindungs-Plattformen brauchen weiterhin je Profil einen Token Telegram, Discord, Slack, Matrix, Signal usw. funktionieren multiplexed, aber jedes Profil muss seinen eigenen Bot-Token haben. Zwei Profile können nicht dasselbe
(Plattform, Token)-Paar pollen. -
Session-Keys werden nach Profil namespaced
agent:<profile>:...stellt sicher, dass zwei Profile auf derselben Plattform/im selben Chat niemals kollidieren. Das Default-Profil behält den historischenagent:main:...-Namespace. -
Ein PID, Lock und Status-Oberfläche
hermes statuszeigt Multiplexer und bediente Profile;hermes status -p coderfiltert auf coder.
Wann Multiplexing verwenden
- Container-/VPS-Deployments, bei denen N Supervisor-Einheiten lästig sind.
- Viele Profile mit geringem Traffic, die keinen eigenen Prozess rechtfertigen.
- Du möchtest einen einzigen Einstiegspunkt zum Starten, Überwachen und Neustarten.
Wann nicht verwenden:
- Du brauchst harte Prozess-Isolation.
- Ein Profil-Absturz darf andere nicht beeinflussen.
- Du möchtest ein Profil unabhängig neu starten.
7. Profil-Routen: Unterschiedlichen Communities unterschiedliche Agenten zuweisen
Wenn mehrere Communities denselben Bot-Token teilen — zum Beispiel ein Discord-Bot, der viele Guilds bedient — kannst du spezifische Guilds/Kanäle/Threads an verschiedene Profile routen:
gateway:
multiplex_profiles: true
profile_routes:
- name: acme-server
platform: discord
guild_id: "1234567890"
profile: acme
- name: acme-support
platform: discord
guild_id: "1234567890"
chat_id: "9876543210"
profile: acme-support
- name: tg-group
platform: telegram
chat_id: "-1001234567890"
profile: tg-profile
Matching-Regeln
- Alle deklarierten Felder müssen erfüllt sein (AND).
- Nicht gesetzte Felder werden ignoriert.
- Spezifität:
thread_id(8) >chat_id(4) >guild_id(2) > nur Plattform. - Eine auf
chat_idbasierende Route matcht auch Threads/Forum-Posts, deren Elternkanal dieser Kanal ist.
Wenn eine Route ein nicht existierendes Profil benennt, fallen Nachrichten auf das Default-Profil zurück.
8. Arbeitsverzeichnis und HOME-Isolation
Standard-Arbeitsverzeichnis setzen
Wenn ein Profil in einem bestimmten Projektordner starten soll:
terminal:
backend: local
cwd: /absolute/path/to/project
Hinweis: cwd: "." im local-Backend bedeutet “das Verzeichnis, aus dem Hermes gestartet wurde”, nicht das Profil-Verzeichnis.
Per-Profil HOME
Standardmäßig behalten Host-Installationen das echte OS-User-HOME, damit Tools wie git, ssh, gh, npm, Claude Code und Codex bestehende Credentials wiederverwenden können. Der Nachteil ist, dass Profile gemeinsamen CLI-Zustand auf Benutzerebene teilen.
Für strikte per-Profil-CLI-Isolation setze:
terminal:
home_mode: profile
Hermes startet dann Tool-Subprozesse mit HOME={HERMES_HOME}/home. Du musst innerhalb dieses Profil-Homes profilspezifische ~/.ssh, ~/.gitconfig, ~/.config/gh usw. initialisieren.
Hermes stellt auch HERMES_REAL_HOME bereit, damit Skripte das echte Account-Home finden können.
9. Profil-Distributionen: Einen kompletten Agenten teilen
Eine Profil-Distribution verpackt einen vollständigen Hermes-Agenten als Git-Repository:
my-research-agent/
├── distribution.yaml # Manifest
├── SOUL.md # Persönlichkeit
├── config.yaml # Konfiguration
├── skills/ # Mitgelieferte Skills
├── cron/ # Geplante Aufgaben
└── mcp.json # MCP-Server
Installation mit einem Befehl:
hermes profile install github.com/you/my-research-agent --alias
Dann ausführen:
my-research-agent chat
my-research-agent gateway start
Aktualisieren:
hermes profile update my-research-agent
Was nicht in einer Distribution enthalten ist
auth.json,.envund andere Geheimnisse;memories/,sessions/, state.db, Logs (Benutzerdaten);- Checkpoints, Backups, Caches.
Jeder bringt seine eigenen API-Keys und Erinnerungen mit; geteilt werden Persönlichkeit + Skills + Konfiguration.
10. Profile verwalten
hermes profile list # alle Profile auflisten
hermes profile show coder # Details eines Profils anzeigen
hermes profile rename coder dev-bot # umbenennen (Alias + Service aktualisieren)
hermes profile export coder # als coder.tar.gz exportieren
hermes profile import coder.tar.gz # aus Archiv importieren
hermes profile delete coder # löschen (Bestätigung erforderlich)
hermes profile delete coder --yes # erzwungenes Löschen
Das Default-Profil kann nicht gelöscht werden. Für eine komplette Deinstallation verwende hermes uninstall.
11. Häufige Fallstricke und Empfehlungen
| Fallstrick | Korrekter Ansatz |
|---|---|
| Ein Profil als Sandbox behandeln | Profile isolieren den Hermes-Zustand, nicht das Dateisystem. Für Dateisystem-Isolation Docker verwenden. |
| Zwei Profile teilen einen Bot-Token | Jede Polling-/Verbindungs-Plattform jedes Profils braucht einen eigenen Token. |
| Port-bindende Plattformen auf sekundären Profilen im Multiplex-Modus konfigurieren | webhook/api_server/feishu/etc. nur im Default-Profil konfigurieren; andere Profile über /p/<profile>/ erreichen. |
Denken, cwd: "." sei das Profil-Verzeichnis |
Im local-Backend bedeutet es das Startverzeichnis; absolute Pfade verwenden, um ein Projekt festzulegen. |
| Speicherlecks in geteilten Hermes | Separate Profile für unterschiedliche Zwecke erstellen; jedes hat eigenes Gedächtnis. |
| Skills nach Update nicht synchron | hermes update synchronisiert mitgelieferte Skills automatisch in alle Profile. |
12. Ein empfohlenes Multi-Profil-Layout
Wenn du von Grund auf planst, ergibt sich folgende Aufteilung:
| Profil | Zweck | Modell | Toolsets |
|---|---|---|---|
default |
Alltägliche allgemeine Fragen | leichtes Modell | Basis-Tools |
coder |
Programmieren, Review, Refactoring | starkes Code-Modell | code-wiki, git, docker |
writer |
Dokumentation, Blogs, Copy | Long-Context-Modell | web, memory |
research |
Recherche, Papers, Wettbewerbsanalyse | Reasoning-Modell | arxiv, web, browser |
ops |
Deployments, Monitoring, CI/CD | starkes Tool-Modell | docker, ssh, cron |
personal-bot |
Persönlicher Assistent in Telegram/Discord | Chat-Modell | Gateway-Plattformen |
Jedes Profil hat eigene Persönlichkeit, eigenes Gedächtnis und eigene API-Keys. Keine Konflikte.
Fazit
Hermes-Profile sind nicht einfach nur “mehrere Konten”. Sie sind ein komplettes Multi-Tenant-Zustandsisolierungssystem, mit dem du mehrere spezialisierte Agenten auf demselben Rechner ausführen kannst — jeder mit eigener Identität, eigenem Gedächtnis und eigenen Tools.
Wenn ein Hermes nicht mehr ausreicht, zwinge nicht alle Kontexte in eine einzige Sitzung. Nimm dir zwei Minuten, um ein Profil zu erstellen. Du wirst feststellen, dass deine KI-Agenten deutlich nützlicher werden, wenn sie nicht um gemeinsamen Zustand konkurrieren.