Was ist Hermes Agent und warum Docker der richtige Weg ist, es auszuführen?
Hermes-Agent ist ein autonomer KI-Agent von Nous Research mit integrierter Lernschleife. Im Gegensatz zu zustandslosen Agenten, die bei jedem Durchlauf neu beginnen, baut Hermes eine dauerhafte Fähigkeitsbibliothek auf. Jede abgeschlossene Aufgabe kann zu einer wiederverwendbaren Fähigkeit werden, wodurch der Agent mit der Zeit messbar leistungsfähiger wird.
Der Betrieb von Hermes Bare-Metal funktioniert, verursacht aber echte Probleme:
- Der Skill-Status und der Konversationsverlauf sind an das Dateisystem einer einzelnen Maschine gebunden
- Die Reproduktion der Umgebung über VPS-Neuerstellungen hinweg erfordert manuelle Arbeit
- Keine Prozessisolation bedeutet, dass ein außer Kontrolle geratener Unterprozess Auswirkungen auf Ihren Host haben kann
Docker löst alle drei. Ein richtig konfigurierter Container bietet Ihnen Portabilität, Isolation und – mit der richtigen Volume-Strategie – einen dauerhaften Lernzustand, der Image-Updates übersteht.
Zwei Docker-Modi erklärt – Wählen Sie, bevor Sie beginnen
Die meisten Leitfäden überspringen diese Entscheidung vollständig und springen zu docker run. Nicht. Die beiden Modi weisen deutlich unterschiedliche Sicherheits- und Betriebsprofile auf.
| Modus 1: Hermes-Innencontainer | Modus 2: Docker als Terminal-Sandbox | |
|---|---|---|
| Was läuft wo | Hermes + seine Laufzeit live im Container | Hermes läuft auf dem Host; Docker erstellt wegwerfbare Sandbox-Container für Terminalaufgaben |
| Isolierung | Hermes selbst ist isoliert | Nur die Ausgabe von Terminalaufgaben ist isoliert |
| Staatsverwaltung | Volumes regeln alles | Das Host-Dateisystem behält den Hermes-Status |
| Empfohlen für | VPS-Produktion, Teambereitstellungen | Lokaler Entwickler, schnelles Experimentieren |
| DOCKER_HOST benötigt | NEIN | Ja (Geschwistercontainer-Setup) |
Faustregel: Wenn Sie die Bereitstellung auf einem VPS durchführen oder eine reproduzierbare Produktionsumgebung wünschen, verwenden Sie Modus 1. Wenn Sie Hermes lokal ausführen und möchten, dass es Docker-Sandboxen für die Codeausführung startet, verwenden Sie Modus 2.
Modus 1 – Hermes läuft in einem Container
Hermes und alle seine Abhängigkeiten leben im Bild. Sie verwalten den Status über benannte Volumes. Die Container-Neustartrichtlinie hält ihn über Neustarts hinweg am Leben. Dies ist das häufigste Produktionsmuster.
- Saubere Trennung vom Host – keine versehentlichen Schreibvorgänge auf Ihrem Computer
- Volle Portabilität; Stellen Sie es überall mit derselben Compose-Datei erneut bereit
- Etwas höherer Overhead als bei der nativen Ausführung
Modus 2 – Docker als Terminal-Backend-Sandbox
Hier läuft Hermes direkt auf dem Host (oder in einem Container) und fordert den Docker-Daemon auf, kurzlebige Container für die Shell-Ausführung zu starten. Sie konfigurieren es, indem Sie DOCKER_HOST festlegen, damit Hermes den Daemon erreichen kann:
export DOCKER_HOST=unix:///var/run/docker.sock # Linux
export DOCKER_HOST=tcp://host.docker.internal:2375 # Windows/Mac (Docker Desktop)
Sicherheitshinweis: Durch das Mounten des Docker-Sockets in einem Container wird nahezu Root-Zugriff auf den Host gewährt. Tun Sie dies nur in Umgebungen, in denen Sie der Arbeitslast des Containers vollständig vertrauen.
Voraussetzungen und Umgebungseinrichtung
Bevor Sie ein Bild abrufen, bestätigen Sie Folgendes:
- Docker Engine 24+ oder Docker Desktop 4.26+
- Ein bereiter LLM-API-Schlüssel: OpenAI (
OPENAI_API_KEY), Anthropic (Anthropic_API_KEY) oder ein lokaler Ollama-Endpunkt - Ausgehender Internetzugriff auf Port 443 (für LLM-API-Aufrufe)
- Mindestens 2 GB RAM dem Container zugewiesen (4 GB empfohlen für von Ollama unterstützte Setups)
Windows-spezifisches Setup (Docker Desktop + WSL2)
Unter Windows brechen die meisten Docker-Bereitstellungen stillschweigend ab. Achten Sie auf Folgendes:
Übersetzung des Volume-Pfads
Docker Desktop unter Windows übersetzt Pfade über WSL2. Verwenden Sie Pfade im Linux-Stil in Compose-Dateien – vermeiden Sie Pfade im Windows-Stil (C:\Users\...) in Compose-volumes:-Definitionen.
# Correct — Docker Desktop translates this automatically
volumes:
- hermes_data:/root/.hermes
Socket vs. Named Pipe
Unter Windows stellt Docker eine Named Pipe und keinen Unix-Socket bereit. Stellen Sie für Modus 2 Folgendes ein:
DOCKER_HOST=npipe:////./pipe/docker_engine
WSL2-Speicherbeschränkungen
Docker Desktop unter Windows setzt WSL2 standardmäßig auf 50 % des Host-RAM. Wenn sich Hermes träge fühlt, fügen Sie einen .wslconfig in Ihrem Windows-Benutzerprofil hinzu:
[wsl2]
memory=4GB
processors=2
Schnellstart – Hermes Agent mit Docker in 5 Minuten ausführen
Rufen Sie das offizielle Image ab und führen Sie den Setup-Assistenten aus:
# Pull the latest image
docker pull nousresearch/hermes-agent:latest
# Run with a persistent volume for state
docker run -it \
-v hermes_home:/root/.hermes \
-e OPENAI_API_KEY=your_key_here \
nousresearch/hermes-agent:latest
Der Setup-Assistent startet beim ersten Lauf. Sie werden aufgefordert:
- Wählen Sie Ihren LLM-Anbieter (OpenAI, Anthropic, Ollama oder benutzerdefinierter Endpunkt)
- Geben Sie Ihren API-Schlüssel oder Ihre Endpunkt-URL ein
- Konfigurieren Sie das Terminal-Backend (nativ oder Docker-Sandbox).
Überprüfen Sie nach Abschluss, ob die Sitzung funktioniert:
> hello
Hermes sollte antworten und bestätigen, dass seine Fertigkeitsbibliothek initialisiert wurde. Wenn Sie skill store empty auf einem neuen Container sehen, ist das zu erwarten – durch die Nutzung sammeln sich Fähigkeiten an.
Produktionsbereitstellung mit Docker Compose
Der bloße Befehl docker run funktioniert zum Testen. Für alles Dauerhafte verwenden Sie Compose.
version: "3.9"
services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes-agent
restart: unless-stopped
stdin_open: true
tty: true
environment:
# Use environment secrets — never hardcode keys in compose files
OPENAI_API_KEY: ${OPENAI_API_KEY}
Anthropic_API_KEY: ${Anthropic_API_KEY}
HERMES_LOG_LEVEL: info
volumes:
- hermes_home:/root/.hermes # Config + conversation history
- hermes_skills:/root/.hermes/skills # Skill store — see next section
deploy:
resources:
limits:
memory: 2G
cpus: "1.5"
healthcheck:
test: ["CMD", "hermes", "--health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
volumes:
hermes_home:
hermes_skills:
Speichern Sie Ihre API-Schlüssel in einer .env-Datei (niemals der Versionskontrolle unterworfen):
OPENAI_API_KEY=sk-...
Anthropic_API_KEY=sk-ant-...
Bewahrung der Hermes-Fähigkeiten bei Containerumbauten
Dies ist das am häufigsten übersehene Produktionsproblem. Hermes speichert erlernte Fähigkeiten getrennt von der allgemeinen Konfiguration. Hängen Sie diese Pfade explizit ein:
| Weg | Enthält | Muss bestehen bleiben? |
|---|---|---|
| /root/.hermes | Konfiguration, Sitzungsverlauf | Ja |
| /root/.hermes/skills | Bibliothek erlernter Fertigkeiten | Kritisch |
| /root/.hermes/memory | Langzeitgedächtnisspeicher | Ja |
Beim Aktualisieren des Bildes:
docker compose pull
docker compose up -d # Named volumes persist automatically
Erweiterte Topologie – Host-Docker-Setup (Geschwistercontainer).
Diese Architektur wird verwendet, wenn Sie möchten, dass Hermes Geschwistercontainer für die isolierte Codeausführung orchestriert – beispielsweise um vom Benutzer übermittelten Code sicher auszuführen.
┌─────────────────────────────────┐
│ Docker Host │
│ │
│ ┌──────────────┐ │
│ │ hermes-agent │◄──socket──────┤── /var/run/docker.sock
│ │ container │ │
│ └──────┬───────┘ │
│ │ docker run (sibling) │
│ ┌──────▼───────┐ │
│ │ sandbox-1 │ (ephemeral) │
│ └──────────────┘ │
└─────────────────────────────────┘
Erstellen Sie eine Konfiguration für diese Topologie:
services:
hermes:
image: nousresearch/hermes-agent:latest
restart: unless-stopped
environment:
OPENAI_API_KEY: ${OPENAI_API_KEY}
DOCKER_HOST: unix:///var/run/docker.sock
HERMES_TERMINAL_BACKEND: docker
volumes:
- hermes_home:/root/.hermes
- /var/run/docker.sock:/var/run/docker.sock # Socket mount
group_add:
- "999" # docker group GID — adjust to match your host
Sicherheitshinweise für die Produktion:
- Beschränken Sie den Socket-Zugriff mithilfe eines Docker-Socket-Proxys (z. B.
Tecnativa/docker-socket-proxy), um die API-Aufrufe einzuschränken, die Hermes durchführen kann - Machen Sie den Docker-Socket niemals in Umgebungen mit mehreren Mandanten verfügbar
- Legen Sie
userns-remapfür den Docker-Daemon fest, wenn Sie eine stärkere Host-Isolation benötigen
Hermes über Telegram Bot mit Claude verbinden
Derzeit gibt es keinen schriftlichen Leitfaden, der dies behandelt – es wird nur in Videoform gezeigt. Hier ist das vollständige Setup.
Schritt 1: Erstellen Sie einen Telegram-Bot
Sprechen Sie mit @BotFather per Telegram:
/newbot
→ Name: Hermes Agent
→ Username: your_hermes_bot
→ Save the token: 123456:ABC-DEF...
Schritt 2: Holen Sie sich Ihr Claude OAuth-Token
Generieren Sie in Ihrer Anthropic-Konsole einen API-Schlüssel mit dem Bereich claude-3-5-sonnet oder claude-opus-4. Legen Sie es als Anthropic_API_KEY fest.
Schritt 3: Fügen Sie Ihrer Compose-Datei die Telegram-Konfiguration hinzu
environment:
Anthropic_API_KEY: ${Anthropic_API_KEY}
HERMES_LLM_PROVIDER: Anthropic
HERMES_TELEGRAM_TOKEN: ${TELEGRAM_BOT_TOKEN}
HERMES_TELEGRAM_ALLOWED_USERS: "your_telegram_user_id"
Schritt 4: Finden Sie Ihre Telegram-Benutzer-ID
Nachricht @userinfobot auf Telegram – es antwortet mit Ihrer numerischen Benutzer-ID.
Schritt 5: Starten Sie den Bot
docker compose up -d
Senden Sie Ihrem Bot eine Nachricht per Telegram. Hermes antwortet über das Claude-Backend. Die Einschränkung HERMES_TELEGRAM_ALLOWED_USERS stellt sicher, dass nur Ihr Konto mit dem Agenten interagieren kann.
Bereitstellung mehrerer Architekturen (ARM64 / Oracle Free Tier / Raspberry Pi)
Das nousresearch/hermes-agent-Image wird als Multi-Arch-Manifest geliefert. ARM64 wird unterstützt – ziehen Sie es explizit auf ARM-Hosts:
# Oracle Free Tier (Ampere A1) or Raspberry Pi 4/5
docker pull --platform linux/arm64 nousresearch/hermes-agent:latest
# Verify the architecture
docker inspect nousresearch/hermes-agent:latest | grep Architecture
Oracle Always Free Kontingent ist die beste kostenlose Hosting-Option für Hermes im Jahr 2026. Die Ampere A1-Instanz bietet Ihnen 4 ARM64-Kerne und 24 GB RAM – mehr als genug für eine dauerhafte Hermes-Bereitstellung bei einem Remote-LLM-Anbieter.
Bekannte ARM-spezifische Probleme:
- Einige Quantisierungen des Ollama-Modells (Q8) laufen auf ARM langsamer; bevorzugen Sie Q4_K_M für lokale Inferenz
- Wenn Sie auf
exec format errorklicken, bestätigen Sie, dass Sie das Flag--platform linux/arm64verwenden - Docker Desktop auf Apple Silicon verarbeitet ARM nativ – kein Plattform-Flag erforderlich
Komplexe Agenten-Workflows verwalten? EasyClaw ist für Sie da
Das Ausführen von Hermes Agent in Docker ist ein leistungsstarkes Setup – aber die Orchestrierung mehrerer KI-Agenten, die Verwaltung von Skill-Pipelines und die Aufrechterhaltung des persistenten Speichers über komplexe Arbeitsabläufe hinweg stoßen die meisten Teams an ihre Grenzen. EasyClaw ist eine Desktop-native KI-Agentenplattform, die genau dafür entwickelt wurde: Multi-Agenten-Koordination in Produktionsqualität ohne Infrastrukturprobleme.
- Visuelle Orchestrierung für Multi-Agent-Pipelines – kein YAML-Wrangling
- Persistentes Gedächtnis und Fähigkeitsbibliotheken, die Sitzungen überdauern
- Läuft vollständig auf Ihrem Computer – keine Cloud-Sperre, kein Datenverlust
- Native Integrationen mit Telegram, Slack und benutzerdefinierten Webhooks
- Integrierte Planung, Überwachung und Protokollprüfung
Fehlerbehebung bei häufigen Hermes Agent Docker-Fehlern
Eine Referenztabelle für die Fehler, auf die Sie am wahrscheinlichsten stoßen:
| Versagen | Symptom | Diagnose | Fix |
|---|---|---|---|
| Fehler beim Abrufen des Bildes | manifest unknown |
docker pull nousresearch/hermes-agent:latest schlägt fehl |
Überprüfen Sie Docker Hub auf aktuell gültige Tags. Versuchen Sie es mit --platform linux/amd64 |
| Volume-Berechtigung verweigert | Container wird mit Berechtigungsfehler auf /root/.hermes beendet |
docker run --rm -v hermes_home:/data busybox ls -la /data |
docker volume rm hermes_home und neu erstellen oder mit chown über einen Busybox-Init-Container reparieren |
| LLM-Authentifizierungsfehler | 401 Unauthorized in Protokollen |
docker logs hermes-agent | grep -i auth |
Überprüfen Sie, ob der API-Schlüssel in .env richtig eingestellt ist. Überprüfen Sie, ob führende/nachgestellte Leerzeichen vorhanden sind |
| Der Setup-Assistent hängt | Der Assistent fordert Sie auf, akzeptiert jedoch keine Eingaben | N / A | Stellen Sie sicher, dass die Flags -it auf docker run gesetzt sind. Verfassen erfordert stdin_open: true + tty: true |
| LLM nicht erreichbar | Connection refused an Ollama oder lokalen Endpunkt |
docker exec hermes-agent curl http://host.docker.internal:11434 |
Verwenden Sie host.docker.internal anstelle von localhost; Fügen Sie bei Bedarf --add-host hinzu |
| Fähigkeiten bleiben nicht bestehen | Fertigkeitsbibliothek nach Neuaufbau leer | docker volume ls – Überprüfen Sie, ob das Volume vorhanden ist |
Stellen Sie sicher, dass das Volume hermes_skills benannt ist (kein Bind-Mount) und dass die Compose-Datei darauf verweist |
| Fehler im ARM-Exec-Format | exec /usr/local/bin/hermes: exec format error |
docker inspect image | grep Architecture |
Mit --platform linux/arm64 erneut ziehen |
| Socket-Berechtigung verweigert | permission denied /var/run/docker.sock |
ls -la /var/run/docker.sock auf dem Host |
Fügen Sie den Containerbenutzer über group_add in Compose zur Docker-Gruppe hinzu |
Häufig gestellte Fragen
F: Werden meine Hermes-Fähigkeiten einen docker compose pull && up -d überleben?
A: Ja – solange Ihre Fähigkeiten auf einem benannten Volume gespeichert sind (kein Bind-Mount oder anonymes Volume). Das Compose-Setup in diesem Handbuch verwendet hermes_skills als benanntes Volume, das Docker bei allen Image-Updates automatisch beibehält.
F: Kann ich mehrere Hermes-Instanzen auf demselben Host ausführen?
A: Ja. Geben Sie jeder Instanz einen eigenen container_name und separate benannte Volumes. Sie müssen außerdem sicherstellen, dass es zu keinen Konflikten an exponierten Ports kommt. Jede Instanz sammelt ihre eigene unabhängige Fertigkeitsbibliothek.
F: Unterstützt Hermes Agent lokale LLMs über Ollama in Docker?
A: Ja. Führen Sie Ollama als separaten Dienst im selben Compose-Stack aus und verweisen Sie Hermes auf http://Ollama:11434 (unter Verwendung des internen DNS von Docker). Vermeiden Sie es, innerhalb eines Containers auf localhost zu zeigen – verwenden Sie den Dienstnamen oder host.docker.internal für hostseitiges Ollama.
F: Ist es sicher, den Docker-Socket im Hermes-Container zu montieren?
A: Durch das Socket-Mounting erhält der Container nahezu Root-Berechtigungen über Ihren Host. Dies ist auf einem Einzelbenutzer-VPS akzeptabel, bei dem Sie alle Arbeitslasten kontrollieren. Verwenden Sie in gemeinsam genutzten oder mandantenfähigen Umgebungen einen Socket-Proxy (z. B. Tecnativa/docker-socket-proxy), um nur die API-Aufrufe, die Hermes benötigt, auf die Whitelist zu setzen.
F: Was ist die Mindestserverspezifikation für eine Hermes-Produktionsbereitstellung?
A: Mit einem Remote-LLM-Anbieter (OpenAI/Anthropic) sind 1 vCPU und 2 GB RAM machbar. Für ein selbst gehostetes Ollama-Backend benötigen Sie mindestens 8 GB RAM und eine halbwegs moderne CPU. Der kostenlose Tarif Ampere A1 von Oracle (4 Kerne, 24 GB) deckt beide Szenarien bequem und zum Nulltarif ab.
F: Wie kann ich die erlernten Fähigkeiten und das Gedächtnis von Hermes sichern?
A: Verwenden Sie docker run --rm -v hermes_skills:/data -v $(pwd):/backup busybox tar czf /backup/hermes-skills-backup.tar.gz /data. Führen Sie dies als geplanten Cron-Job auf Ihrem Host aus, um vor jeder Image-Aktualisierung automatische Backups zu erhalten.
Abschließende Gedanken: Checkliste und nächste Schritte
Die Lernschleife unterscheidet Hermes von allen anderen Agenten, die Sie in Docker ausgeführt haben. Das obige Setup stellt sicher, dass die Schleife tatsächlich funktioniert sammelt sich an – wird nicht jedes Mal zurückgesetzt, wenn Sie ein Update versenden.
Bevor Sie eine Bereitstellung als produktionsbereit bezeichnen, bestätigen Sie Folgendes:
- ☐ Benannte Volumes, die sowohl für
hermes_homeals auch fürhermes_skillserstellt wurden - ☐ API-Schlüssel werden in
.envgespeichert und sind in Compose nicht fest codiert - ☐
restart: unless-stoppedRichtlinie aktiv - ☐ Gesundheitscheck bestanden:
docker inspect hermes-agent --format='{{.State.Health.Status}}' - ☐ Protokollrotation konfiguriert (
max-size,max-file) - ☐ Ressourcenlimits werden festgelegt, um eine Speichererschöpfung zu verhindern
- ☐ Der Einrichtungsassistent wurde abgeschlossen und die erste Chat-Sitzung bestätigt
- ☐ (Wenn Modus 2) Docker-Socket-Mount bestätigt und Socket-Proxy berücksichtigt
Nächste Schritte, um sofort einen Mehrwert zu erzielen:
- Führen Sie ein paar echte Aufgaben aus – Dateizusammenfassung, Codeüberprüfung, Webrecherche –, um die Kompetenzbibliothek zu erweitern
- Führen Sie nach 10–15 Aufgaben
hermes skills listaus, um zu sehen, was gelernt wurde - Auf dem GitHub von Nous Research finden Sie Dokumente zur Agentenkonfiguration, die benutzerdefinierte Skill-Vorlagen und Speicheroptimierung abdecken
- Wenn Sie Oracle Free Tier nutzen, richten Sie einen Cron-basierten
docker compose pull && docker compose up -dein, um Image-Updates ohne Ausfallzeiten zu ermöglichen und gleichzeitig den erlernten Status beizubehalten