Hermes in Codex ausführen: eine MCP-Erweiterung aus der Community


Dein Tag sieht wahrscheinlich so aus: Du bearbeitest ein Modul in Codex, mitten im Gedanken fragst du dich, ob der Hermes-Cron-Job heute gelaufen ist und was diese Session letzte Nacht eigentlich gelesen hat – also wechselst du ins Terminal und führst hermes --continue aus, oder du öffnest einfach ein zweites Fenster. Zwei Agenten, zwei Oberflächen, zwei Kontexte – und verloren geht beim Umschalten meist genau der Satz, den du gerade fragen wolltest.

Ein Community-Projekt, hermes-chatgpt-extension, geht genau diese Umschaltkosten an: Es bettet Hermes als Panel in Codex ein (und in die Codex-Desktop-App für ChatGPT), sodass Chats, Profile, Modellauswahl und geplante Jobs direkt aus Codex’ Seitenleiste sichtbar sind.

Was es ist – und was nicht

Es ist ein MCP-Plugin: Ein lokaler stdio-MCP-Server (die Bridge) verpackt die Desktop-JSON-RPC/WebSocket-API von Hermes und die REST-Verwaltungsrouten in eine Plugin-Oberfläche für Codex. Geschrieben in TypeScript, MIT-lizenziert, am 30. September erstellt und am 1. Oktober noch aktualisiert.

Drei Grenzen sind vorab erwähnenswert, damit du nicht das Falsche erwartest:

  • Es macht Hermes nicht zu einem Codex-Tool. Die Oberfläche folgt den Chat- und Seitenleisten-Konventionen von Codex, aber Hermes betreibt weiterhin seinen eigenen Agenten, seine Tools, sein Gedächtnis und seinen Scheduler; die umgebende Codex-Konversation bleibt getrennt.
  • Es bietet keinen gehosteten MCP-Endpunkt. Der Server ist lokales stdio, das heißt also „Hermes in der Codex-Desktop-App nutzen“ und nicht „dein Hermes aus ChatGPT in der Cloud erreichen“.
  • Es übernimmt keine Verwahrung deiner Credentials. Die Credentials des Upstream-Anbieters bleiben im lokalen Bridge-Prozess; die eingebettete UI erhält Verbindungsbezeichnungen und Chat-Daten, keine Tokens oder API-Keys.

Installation: zwei Wege, in beiden Fällen Node 22+

Drei Voraussetzungen: Node.js 22 oder neuer (für Codex als node verfügbar), eine Codex-Desktop-Version, die lokale Plugins und MCP Apps unterstützt, und ein installiertes, konfiguriertes Hermes-Backend, das die Desktop-JSON-RPC/WebSocket-API sowie die REST-Verwaltungsrouten bereitstellt.

Aus dem vorgebauten ZIP (kein npm install, kein Build):

# hermes-chatgpt-extension-VERSION.zip von der Releases-Seite herunterladen und entpacken
cd <extracted-directory>
node scripts/verify-plugin.mjs

Das ZIP enthält den kompilierten Server und eine in sich geschlossene UI; jede Release stellt zusätzlich ein -source.zip und SHA256SUMS bereit, sodass du beides prüfen kannst. Beachte: Der automatisch generierte Source code-Download von GitHub ist der Source-Build, nicht dieses Paket.

Aus dem Quellcode:

git clone https://github.com/intellectronica/hermes-chatgpt-extension.git
cd hermes-chatgpt-extension
npm ci
npm run build
node scripts/verify-plugin.mjs

Dann registrierst du es im lokalen Marketplace von Codex:

node scripts/install-plugin.mjs

Der Installer kopiert das Plugin nach ~/.codex/plugins/hermes-chatgpt-extension und fügt einen Eintrag in ~/.agents/plugins/marketplace.json hinzu, wobei ein vorhandener Marketplace-Name und nicht zugehörige Einträge erhalten bleiben. Öffne den ausgegebenen Plugin-Detail-Link und wähle in Codex Enable – das Skript aktiviert das Plugin nicht und startet die App nicht neu. Für Updates erst --replace --dry-run, dann --replace --apply ausführen.

Konfigurieren: ein connections-Array, vier Verbindungswege

Halte die Konfiguration außerhalb des Plugin-Verzeichnisses, damit Updates sie nicht überschreiben; der Standardpfad ist ~/.config/hermes-chatgpt-extension/hermes.config.json:

mkdir -p "$HOME/.config/hermes-chatgpt-extension"
cp examples/config.ssh.json "$HOME/.config/hermes-chatgpt-extension/hermes.config.json"

Die Konfiguration wird in fester Reihenfolge geladen: das Argument --config, dann HERMES_EXTENSION_CONFIG, dann hermes.config.json im Arbeitsverzeichnis der Bridge, dann $XDG_CONFIG_HOME/hermes-chatgpt-extension/hermes.config.json (oder ~/.config/...). Eine Design-Entscheidung verdient Anerkennung: Eine explizit ausgewählte Datei, die fehlt oder ungültig ist, ist ein Fehler und wird nicht übersprungen – so glaubst du nie, in einem Profile zu sein, während du in Wahrheit in einem anderen bist.

Ein einzelnes connections-Array kann mehrere Hermes-Instanzen halten, umschaltbar über einen Selektor in der Fußzeile. Vier Verbindungsmodi werden unterstützt:

Modus Wann verwenden Wichtige Felder
Managed SSH Hermes läuft auf einem Remote-Host; die Erweiterung startet ihr eigenes temporäres Backend ssh.mode: "managed", ssh.host
Attach über SSH Ein kompatibles Backend läuft bereits remote; einfach verbinden ssh.mode: "attach", remotePort, tokenFile
HTTP Ein kompatibles hermes serve-Desktop-Backend baseUrl, tokenEnv
HTTPS Ein Gateway hinter einem Reverse-Proxy Dasselbe, und Remote-URLs müssen HTTPS sein

Managed SSH startet ein token-geschütztes Loopback-Backend auf einem dynamisch zugewiesenen Port und besitzt diesen Prozess samt Tunnel; das Backend wird gestoppt, wenn die Bridge schließt. Es nutzt deine bestehende Hermes-Installation – es installiert keine Software, bearbeitet keine Profile, startet keine Dienste neu. Da es seine eigene Credential erzeugt, verbietet dieser Modus tokenEnv, tokenFile, remoteHost und remotePort.

Attach und HTTP/HTTPS verlangen jeweils genau eine Credential-Quelle: tokenEnv (der Name einer Umgebungsvariable) oder tokenFile (eine kleine lokale Datei). Unter POSIX muss diese Datei dem aktuellen Benutzer gehören und nur für den Eigentümer zugänglich sein:

chmod 600 /path/to/hermes.token

Hier eine Stolperfalle, die einen eigenen Absatz verdient: Eine Desktop-App erbt möglicherweise keine Variablen, die du in einer interaktiven Shell exportiert hast. Wenn Codex das Plugin startet, hat tokenEnv womöglich einfach keinen Wert – eine strikt berechtigte tokenFile ist die verlässlichere Wahl. Remote-URLs müssen HTTPS verwenden; reines HTTP wird nur für Loopback-Hosts wie http://127.0.0.1:9119 akzeptiert.

Was du tun kannst, wenn es aktiv ist

Nach dem Aktivieren öffnest du Explore → Hermes in Codex:

  • Chat: Streaming-Antworten, Markdown- und Code-Rendering, sichtbare Tool-Aktivität, dazu Stop, Freigaben und Rückfragen;
  • Gruppierung nach Profile: Gespräche gruppiert unter aufklappbaren Profile-Abschnitten, wobei Entwürfe bei ihrer zugehörigen Instanz und ihrem Profile bleiben;
  • Modelle und Aufwand: der echte Modellkatalog und die Standardwerte jedes Profiles, mit einem Modellselektor und einem Power-Regler für den Reasoning-Aufwand;
  • Geplante Jobs: Jobs und aufgezeichnete Läufe für ein Profile oder für alle ansehen, wobei Zeitplan-, Ausführungs- und Zustellstatus getrennt angezeigt werden – deutlich nützlicher als ein bloßes Erfolg/Fehlschlag;
  • Archivierung: Das Archivieren läuft über Hermes, mit einem kurzen Undo, und die gespeicherten Nachrichten bleiben erhalten.

Hermes-getaggte automatisierte Unterhaltungen sind standardmäßig ausgeblendet; füge "sidebar": { "showAutomatedChats": true } neben connections hinzu, um sie zu sehen. Die eigene Sichtbarkeitseinstellung von Hermes für Subagenten gilt weiterhin.

Wann es das richtige Werkzeug ist

Wenn dein Workflow „Codex für den Code, Hermes für die Automatisierung“ lautet, beseitigt diese Erweiterung Fensterwechsel und verlorenen Kontext – auf Kosten der Akzeptanz eines Drittanbieter-MCP-Plugins, das über einen lokalen Marketplace installiert wird. Behandle es wie jedes lokale Plugin: Lies das Installationsskript, halte deine Konfigurations- und Token-Dateien aus der Versionskontrolle und aus dem verteilbaren Paket heraus, und nutze HTTPS oder SSH für alles Remote.

Wenn Remote-OAuth dein Blocker war, starte mit dem OAuth-über-SSH-Leitfaden; um deine eigenen Session- und Planungsdaten gut zu lesen, sind der Kosten-Tracking-Leitfaden und die Notizen zu Cron-Zeitzone und Sommerzeit gute Begleiter. Für die MCP-Seite der Mechanik ist die MCP-Befehlsreferenz die systematische Lektüre.

Die Kurzfassung

Zwei Agenten in einem Fenster zu haben, bringt mehr als ein gespartes Umschalten: Du siehst die Automatisierungsseite, während du noch im Code bist – ob der Job gelaufen ist, was in der Session passiert ist, welches Modell dieses Profile nutzt. Diese Erweiterung verdrahtet die Dinge, statt sie neu zu erfinden; sie ändert nicht, wie Hermes sich verhält, sie legt nur Oberflächen frei, die es bereits gibt. Für Nutzer mit mehreren Instanzen und Profile macht sie außerdem „mit welcher bin ich eigentlich verbunden?“ explizit: eine Verbindung pro Instanz, eine Gruppe pro Profile. Sichtbare Isolation schlägt eine Konvention, die man sich merken muss.