Hermes v0.22.2: Das Release, das 0.22.1 sein sollte

Du hast Hermes vor Monaten als systemd-Service eingerichtet, und seitdem ist er bei jedem Reboot sauber neu gestartet — bis eines Morgens der Service tot ist, systemctl start meldet, er sei irgendwo schon aktiv, und der einzige Hinweis im Log eine PID ist, die zu etwas völlig anderem gehört. Oder du sitzt am Laptop, lässt ein lokales Modell laufen, und ein langer Turn hört einfach … auf: Die Statuszeile bleibt stehen, du klappst den Deckel eine Weile zu, und als du zurückkommst, hat der Turn aufgegeben. Für beide Fälle gibt es in v0.22.2 einen Fix — und auch für ein ungewöhnlicheres Problem: Das Release davor wurde aus dem falschen Commit gebaut.
Was mit v0.22.1 tatsächlich passiert ist
v0.22.1 wurde am 14. Oktober 2026 veröffentlicht und zeigte auf den falschen Tree. Zwei Folgen waren von außen sichtbar: Der Tag lieferte Gateway-Arbeit aus, die noch nicht veröffentlicht war, und das Microsoft-Store-Paket konnte bei „Connecting.“ hängen bleiben, statt seinen ersten Start abzuschließen.
v0.22.2 wurde am nächsten Morgen veröffentlicht, gebaut aus dem Commit, den der frühere Tag hätte verwenden sollen, mit dem veröffentlichten v0.22.1 als Parent. Der offizielle Release-Text ist dabei unmissverständlich: „0.22.2 ist das Release, das 0.22.1 sein sollte.“ Von v0.22.1 bis v0.22.2 umfasst der Compare-Bereich 11 Commits — ein Rebuild, kein Feature-Drop.
Ein ehrlicher Vorbehalt gehört zum Rebuild dazu: Sessions, die unter dem 0.22.1-Gateway gelaufen sind, lassen sich in 0.22.2 nicht löschen. Sie sind lesbar und fortsetzbar; das Löschen schlägt fehl. Wenn dir das wichtig ist, archiviere oder exportiere die Session, statt dich aufs Löschen zu verlassen.
Zuerst: Finde heraus, auf welchem Build du bist
Patch-Releases sind die Stelle, an der aus „bin ich wirklich auf der gefixten Version“ keine rhetorische Frage mehr wird — also prüfe es, bevor du irgendetwas anderes tust:
hermes version
Die Desktop-App zeigt es in Settings ▸ About (dort sitzt auch der Umschalter für den Update-Kanal, falls du der Anleitung zum Stable-Kanal gefolgt bist). Docker-Nutzer lesen den Tag, den sie gezogen haben: nousresearch/hermes-agent:stable wandert beim nächsten Pull auf den neuen Patch.
Wenn du auf 0.22.1 bist, aktualisiere. Wenn du auf 0.22.0 bist, bringt dich dasselbe hermes update direkt auf 0.22.2, und du bekommst beide Fixes unten.
hermes update
Fix 1: Ein überwachter Gateway startet nach einem Reboot wieder
Der Gateway muss wissen, ob auf dieser Maschine bereits ein anderer Gateway läuft, bevor er übernimmt. Er nutzte dafür die aufgezeichnete Prozess-ID, und darin steckte ein Loch: Nach einem Reboot kann Linux eine sehr frühe PID an einen fremden Prozess vergeben. Passte die recycelte PID zufällig auf die aufgezeichnete, schloss der Gateway daraus, ein lebender Gateway belege die Maschine, und verweigerte den Start. Unter systemd, launchd oder Docker — wo etwas auf den Neustart des Service wartet — bedeutet das einen Service, der nie hochkommt.
Der Fix besteht darin, einer bloßen PID nicht mehr zu vertrauen und stattdessen etwas aufzuzeichnen, das ein Reboot nicht fälschen kann:
- Hermes merkt sich, in welchem Boot er gestartet ist, und vergleicht das mit dem aktuellen Boot.
- Lässt sich der Eintrag nicht vergleichen — ein älteres Eintragsformat oder eine Boot-Zeit, die nicht gelesen werden kann —, fragt er stattdessen das Host-Lock. Das Host-Lock ist eine Datei, die nur ein lebender Gateway hält; sie zu besitzen ist damit ein Lebensbeweis, den eine PID nicht liefert.
- Die Liveness-Prüfung legt die Lock-Datei nicht mehr als Nebenwirkung des Nachsehens an, und die argv-Identität wurde ganz aus der Prüfung entfernt, weil eine recycelte PID gleichzeitig zu einer Startzeit und einer Kommandozeile passen kann.
Wenn dein Gateway den Start nach Reboots verweigert hat, behebt das Upgrade das, ohne dass du deine Unit-Datei anfassen musst. Prüfe es mit dem Befehl, den dein Supervisor verwendet:
systemctl status hermes-gateway
Fix 2: Lange Turns mit lokalen Modellen überleben auf einem Laptop
Ein Modell lokal laufen zu lassen, verändert die Fehlermodi, denn das Modell ist nun das langsamste im Raum und die Maschine, auf der es läuft, kann schlafen gehen. Ein Pull Request (#138560) schließt vier davon auf einmal:
| Symptom | Was sich geändert hat |
|---|---|
| Ein langer Prompt sieht aus wie ein hängender Turn | Lokale Requests streamen immer, und die Statuszeile zeigt den Fortschritt beim Prompt-Lesen, während der Server einliest |
| Ein Turn, der geschlafen hat, zählt als Denkzeit | Stall-Timer überspringen die Zeit, die die Maschine im Suspend verbracht hat |
| Jede Nachricht schlägt nach einem Timeout fehl, selbst nachdem der Server zurück ist | Ein wiederkehrender lokaler Server bekommt einen weiteren Versuch statt eines Breakers, der offen bleibt |
| Die Komprimierung läuft in ein Timeout, während das Modell noch liest | Die Komprimierung gibt nicht mehr auf, während der Server ein langes Gespräch einliest |
Auf Windows-Maschinen mit Unified Memory gibt es einen fünften Punkt: Modellstart und Prompt-Cache werden gegen den freien Speicher statt gegen den Gesamtspeicher dimensioniert, damit eine ohnehin schon beschäftigte Maschine sich nicht übernimmt.
Das zählt genau dort am meisten, wo lokale Modelle am attraktivsten sind — ein Laptop mit ein paar GB Luft, ein langer Agent-Turn und ein Nutzer, der den Deckel zuklappt. Wenn du das gerade erst einrichtest, führt dich die Anleitung zu lokalen Modellen mit llama.cpp durch die Runtime, die Hermes installiert.
Was seit v0.22.0 sonst noch in der 0.22-Reihe steckt
Weil 0.22.2 die gesamte 0.22-Reihe neu veröffentlicht, fahren ein paar kleinere Änderungen mit, die man kennen sollte:
- Model Picker: Eine kuratierte Modellliste steht oben im Picker, NVIDIA NIM bekommt seine Standard-Modellliste, und Nemotron 3.5 Super VL kommt mit Standardparametern.
- Mistral-Routen: Zusammengesetzte Tool-IDs werden neu gepaart, bevor der Provider sie sieht — Mistral begrenzt Tool-IDs auf neun Zeichen.
- Profile: Ein neues Profil erbt das nackte
custom-Startmodell zusammen mit seinem Endpoint, inklusive per Env referenzierter Provider. - Terminal und Suche: Deine eigenen Tools kommen in
PATHvor denen von Hermes, und die lokale Dateisuche nutzt Hermes’ gepinntes ripgrep statt des erstenrgauf der Maschine. - Katalog: Koreanische und brasilianisch-portugiesische Desktop-Sprachpakete kommen dazu, plus neue Katalog-Einträge (author-feed, wait-ledger, openinvest, TeamoRouter, Hermes AAC, Agent Mixer).
- Abhängigkeiten: httpx2/httpcore2 auf 2.12.0 und die gepinnten npm-Pakete angehoben, um Audit-Findings zu beheben.
Die vollständigen kuratierten Notes zur 0.22-Reihe stehen auf der Release-Seite zu v0.22.0 Threshold und in den Release Notes zu v0.22.2.
Das Fazit
Ein Patch-Release, das ein anderes Patch-Release ersetzt, verdient eine Minute deiner Aufmerksamkeit: Prüfe hermes version, führe hermes update aus, und wenn du auf 0.22.1 warst, behandle die nicht löschbaren Sessions als den einen offenen Punkt und archiviere statt zu löschen. Wenn du eine frische Installation einrichtest, hat die Installationsanleitung die aktuellen One-Liner.
Quellen: der Release-Text zu v0.22.2 und der Compare-Bereich v0.22.1...v0.22.2 im Hermes-Agent-Repository; die Arbeit an der Boot-Identität des Gateway ist PR #138594 (behebt Issue #133744) und die Arbeit an lokalen Modellen ist PR #138560.