Der Hermes Plugin Catalog ist da: Schluss mit dem Raten, welches Plugin sicher ist


Schon einmal vor einer GitHub-Suche nach Hermes-Plugins gesessen und sich gefragt, welches der ähnlich aussehenden Repos tatsächlich gepflegt wird – und was der Code auf deinem Rechner anstellt, sobald du ihn installierst? Dieses Zögern ist berechtigt: Ein Hermes-Plugin ist Python, das innerhalb des Agent-Prozesses läuft. Eine Installation kommt damit dem Überreichen deines Hausschlüssels an einen Fremden näher als dem Hinzufügen einer Dependency.

PR #69446, am 9. September gemergt, zielt genau auf diesen Schmerzpunkt: Hermes bringt jetzt einen menschlich geprüften Plugin Catalog mit, der Entdecken und Vertrauen an einem Ort löst. Statt dich durch GitHub zu wühlen, führst du hermes plugins search gegen einen offiziellen, kuratierten Index aus. Statt auf ein README zu wetten, ist jeder Katalog-Eintrag auf einen exakten commit gepinnt und muss seine Fähigkeiten im Voraus deklarieren – du weißt also, was du installierst, bevor du es installierst.

Was der Plugin Catalog ist

Zunächst eine Abgrenzung: Bei den Plugins hier handelt es sich um native In-Process-Plugins – die Erweiterungen, die innerhalb von Hermes laufen, eigene Tools und Hooks registrieren und über plugins.entries verwaltet werden. Das ist eine andere Ebene als der MCP-Server-Katalog, der externe Dienste über das Model Context Protocol anbindet. Der MCP-Katalog beantwortet die Frage „Wie erreiche ich externe Dienste?“, der Plugin Catalog die Frage „Wie erweitere ich Hermes selbst?“

Physisch ist der Katalog eine Reihe von YAML-Dateien im Verzeichnis plugin-catalog/ des Repos – eine Datei pro Plugin-Eintrag:

name: hermes-telegram-business   # eindeutiger Katalog-Schlüssel; Installation über diesen Namen
repo: https://github.com/NousResearch/hermes-telegram-business
sha: e905f3bc5eeaa5a9dab9bc5155601b3ebec75757  # vollständiger 40-Zeichen-commit-Pin
description: One-line description
maintainer: NousResearch
tier: official          # official oder community
platforms: []           # leer = alle Plattformen
capabilities:           # was dieses Plugin zu registrieren vorgibt
  provides_tools: []
  provides_hooks: []
  provides_middleware: []
  requires_env: []

Der Katalog startete mit 7 Seed-Einträgen: 3 official (plugin-llm-example, plugin-llm-async-example, hermes-telegram-business) und 4 community (hermes-plugin-chrome-profiles von @anpicasso, hermes-snapcompact, jackal-verified, herdr-auto-reconcile). Die offiziellen Einträge stammen aus NousResearchs eigenen Repos, die Community-Einträge von unabhängigen Maintainern – chrome-profiles wechselt die Browser-Tools zwischen lokalen und entfernten Chrome-/Edge-Profilen über CDP, und snapcompact archiviert Gesprächsverläufe als dichte Bitmap-Frames, die Vision-Modelle zu etwa einem Drittel der Token-Kosten wieder auslesen.

Suchen, installieren, auflisten: die drei Befehle, die zählen

Alles dreht sich um hermes plugins. Wichtig: Das Feature ist am 9. September auf main gelandet und steckt in noch keinem Release – das neueste offizielle Release, v0.21.1 (7. September), stammt aus der Zeit davor. Um es heute zu nutzen, brauchst du einen Build, der den Merge enthält.

Suche im gesamten Katalog – ohne Argument listet der Befehl alles auf; ein Stichwort matcht Namen, Beschreibungen und deklarierte Tools:

hermes plugins search
hermes plugins search telegram      # matcht Name/Beschreibung/Tools mit Erwähnung von telegram
hermes plugins search --json        # maschinenlesbar, für Skripte

Installieren – über den nackten Katalog-Namen, eine Git-URL oder die owner/repo-Kurzform:

hermes plugins install hermes-telegram-business   # Katalog-Treffer: installiert den geprüften, gepinnten SHA
hermes plugins install anpicasso/hermes-plugin-chrome-profiles  # owner/repo = benutzerdefinierte (ungeprüfte) Quelle
hermes plugins install https://github.com/xxx/my-plugin          # vollständige Git-URL

Die Unterscheidung der Quelle ist das Herzstück des Vertrauensmodells. Ein nackter Name, der im Katalog landet, installiert den exakt geprüften commit, gibt Tier und Pin aus ([official] pinned @ e905f3bc), zeigt die Fähigkeitenübersicht und hält die Herkunft in einer .hermes-catalog.json-Sidecar-Datei neben dem Plugin fest. Eine Git-URL oder owner/repo-Kurzform druckt dagegen eine gelbe Warnung über die „custom (unreviewed) source“ – dort bist du auf dich allein gestellt. In beiden Fällen wirst du gefragt, ob das Plugin sofort aktiviert werden soll; installiert heißt nicht aktiviert, und der Aktivierungsdialog zeigt, was das Plugin registrieren möchte.

Sieh nach, was du hast:

hermes plugins list
hermes plugins list --plain          # kompakter Klartext statt einer Rich-Tabelle
hermes plugins show hermes-telegram-business   # Details zu einem einzelnen Plugin

Das Vertrauensmodell: warum der Katalog seinen Platz verdient

Die Glaubwürdigkeit des Katalogs ist kein Abzeichen – sie ist eine Kette erzwungener Mechanismen, dokumentiert im README des Katalogs:

  • Menschlich gemergte Aufnahme. Einträge kommen nur über einen PR ins hermes-agent-Repo, geprüft und gemergt von einem Maintainer. Kein Self-Serve-Registry, keine automatisierte Einspeisung.
  • Exakte commit-Pins sind Pflicht. Jeder Eintrag braucht einen vollständigen 40-Zeichen-SHA. Branches, Tags und kurze SHAs werden abgelehnt. Installationen checken genau diesen commit aus – niemals den neuesten HEAD –, sodass das, was der Katalog behauptet, und das, was du ausführst, derselbe Code sind.
  • Zwei Wochen Pin-Reife. Eine gepinnte Version muss zum Zeitpunkt des Pins mindestens zwei Wochen alt sein – analog zur Supply-Chain-Policy, die für andere gepinnte Abhängigkeiten gilt. Die Community bekommt Zeit, ein kompromittiertes Release zu bemerken, bevor Hermes einen Zeiger darauf ausliefert.
  • Pin-Updates sind neue PRs. Den SHA eines Eintrags zu aktualisieren ist ein frischer, erneut geprüfter PR, dessen Diff (alter SHA → neuer SHA) die Prüffläche bildet. Jede Zeigerbewegung läuft an einem Menschen vorbei, der sich den Upstream-commit-Bereich ansieht.
  • Deklarierte Fähigkeiten müssen der Realität entsprechen. hermes plugins validate lädt das Plugin in einem Wegwerf-Subprozess und vergleicht die deklarierten provides_tools/provides_hooks mit dem, was register(ctx) tatsächlich registriert. Passt es nicht, fällt der Eintrag durch – nicht deklarierte Fähigkeitsausweitungen gelten als Sicherheitsproblem. Die Admissions-CI führt diesen Check bei jedem geänderten Eintrag aus.
  • Entfernen heißt Blocklist. Wird ein Eintrag aus Sicherheits- oder Policy-Gründen entfernt, landet er in removed.yaml, und jede Installation, die auf seinen Namen oder sein Repo passt, wird auf allen Oberflächen verweigert (CLI, Dashboard, Desktop). Die CLI hat eine laute --allow-removed-Notluke, die eine rote Warnung ausgibt – die anderen haben keine.

Der Katalog verabschiedet außerdem ein Stück Geschichte: Der zwischenzeitliche Community-Plugin-Index zeigte auf eine kanonische Repository-URL, die nie wirklich existiert hatte und kein Aufnahme-Gate besaß. Diese Änderung entfernt diesen Index vollständig und führt alles im In-Tree-Katalog zusammen.

Validieren, aktualisieren und der tägliche Umgang

Sind Plugins erst installiert, gelten die üblichen Befehle für den Lebenszyklus:

hermes plugins update hermes-telegram-business   # Katalog-Installationen pinnen neu auf den geprüften SHA
hermes plugins disable hermes-telegram-business  # deaktivieren, ohne zu entfernen
hermes plugins enable hermes-telegram-business   # wieder aktivieren
hermes plugins remove hermes-telegram-business   # deinstallieren (Aliase: rm, uninstall)
hermes plugins capabilities                      # deklarierte vs. gewährte Fähigkeiten pro Plugin

Du schreibst selbst ein Plugin und möchtest, dass es aufgenommen wird? hermes plugins validate <plugin-dir> ist dasselbe Gate, das die Admissions-CI ausführt – bestehe es lokal, bevor du den PR eröffnest, und hermes plugins doctor geht tiefer und prüft gegen die echten Runtime-Verträge. Clients aktualisieren den Katalog höchstens alle 6 Stunden aus dem JSON der Docs-Site (/docs/api/plugin-catalog.json) und fallen offline auf die In-Tree-Kopie zurück, sodass ein Netzwerk-Aussetzer nie eine Installation blockiert.

Ein Hinweis zum Sicherheitsniveau: Plugins laufen innerhalb des Hermes-Prozesses – der Katalog senkt das Risiko, er macht es nicht zu null. Nach jeder Installation lohnt ein gelegentlicher Blick auf hermes plugins capabilities, um zu sehen, was jedes Plugin tatsächlich hält. Für den Plugin-Mechanismus selbst – Konfiguration und das Schreiben eigener Plugins – führt unser Pip-Model-Provider-Plugin-Guide durch die Materie; zusammen mit dem MCP-Server-Katalog decken die offiziellen Kanäle inzwischen das meiste ab, was du sonst selbst bauen würdest.