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 profile zeigt 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

  1. Sekundäre Profile können kein eigenes Gateway starten Wenn coder bereits vom Multiplexer bedient wird, führt coder gateway start zu einem Fehler.

  2. 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-Profil

    Port-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.

  3. 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.

  4. 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 historischen agent:main:...-Namespace.

  5. Ein PID, Lock und Status-Oberfläche hermes status zeigt Multiplexer und bediente Profile; hermes status -p coder filtert 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_id basierende 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, .env und 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.