Hermes3D: Bring dein Agententeam in ein 3D-Büro und sieh ihnen bei der Arbeit zu


Du hast drei Hermes-Sitzungen, die parallel arbeiten: eine beobachtet CI, eine triagiert Issues, eine entwirft den Wochenbericht. Du starrst auf Terminal und Dashboard und versuchst aus den Logs abzulesen, „bei welchem Schritt es gerade ist“ – du siehst die Ausgabe, aber nicht es. Stell dir nun vor, diese Agenten wären ein paar kleine Leute in einem Büro: wer sitzt an seinem Schreibtisch und schreibt Code, wer ist im Besprechungsraum fürs Standup, wer bewegt Karten am Board – auf einen Blick erfassbar, statt durch Logs zu waten. Das ist das Verkaufsargument.

Genau das macht Hermes3D: ein quelloffenes 3D-Virtuallbüro-Frontend (MIT, 105 Sterne, von LukeTheDev), das deine Hermes-Agenten in Figuren verwandelt, die durch ein gemeinsames Büro laufen. Es ist ein Community-Projekt (die README stellt klar, dass es nicht mit den Agent-Backend-Teams verbunden ist), es führt selbst keine Agenten aus – es ist rein die Visualisierungsschicht und verbindet sich direkt über das JSON-RPC-Gateway von Hermes oder über einen Gateway-Adapter. Es passt für Entwickler, die ihr Agententeam arbeiten sehen wollen. Das Projekt wurde zuletzt am 20. August aktiv aktualisiert.

Wie es tatsächlich aussieht

Der Kern ist eine /office-Retro-Büroumgebung: Jeder verbundene Agent ist eine Figur, die sich durch eine gemeinsame 3D-Welt bewegt. Es ist aber kein Bildschirmschoner:

  • Sieh Agenten in Echtzeit arbeiten – wer führt welche Aufgabe aus, Fortschritt auf einen Blick;
  • Standups abhalten – mit GitHub und Jira verbundene Agenten halten Meetings in einem Konferenzraum ab;
  • PRs reviewen – Pull Requests direkt aus dem Büro heraus durchgehen;
  • Kanban-Schreibtisch – ein eingebautes Board, das die hermes kanban-Daten des Backends direkt anzeigt: Wird eine Karte zu Working gezogen, wird die Aufgabe als ready eingereiht, nur der Dispatcher kann sie als running markieren, und der Status wird zurück an Hermes geschrieben;
  • Skills im Gym trainieren und ein Hausmeister-System zum Zurücksetzen von Sitzungen und Bereinigen des Kontexts.

Kurz gesagt: Das Dashboard ist die Steuerkonsole; Hermes3D ist das Aussichtsdeck, auf dem du in dein Agententeam hineingehst. Erst einmal schauen? Das Repo bringt ein eingebautes Demo-Gateway mit, sodass du durch das Büro schlendern kannst, ohne ein Agent-Framework zu installieren.

Zwei Verbindungsmöglichkeiten

Hermes3D unterstützt drei Laufzeiten; zwei sind für Hermes relevant:

  1. Hermes Agent (direkt) – empfohlen: Studio spricht selbst das JSON-RPC-Gateway von Hermes, ohne Adapterprozess. Erfordert ein Loopback-hermes serve auf dem Hermes-Host (Maschine A).
  2. Hermes-HTTP-API + Gateway-Adapter: npm run hermes-adapter startet einen Adapter, der auf der einen Seite das Hermes3D-Gateway-WebSocket-Protokoll spricht und auf der anderen die Hermes-HTTP-API (Standard http://localhost:8642) aufruft. Gut, wenn das Backend nicht lokal ist oder du den HTTP-API-Pfad möchtest.

Zwei-Maschinen-Bereitstellung: das direkte Tailscale-Tutorial (die häufigste Form)

Die kanonische Form des offiziellen Tutorials sind zwei Maschinen: Maschine A betreibt das Hermes-Backend, Maschine B betreibt Hermes3D, und Tailscale verbindet sie sicher. Die Kette:

Browser <-> Studio server (Machine B) <-> Tailscale <-> hermes serve (Machine A)

Maschine A – der Hermes-Host:

Schritt eins: Einen Sitzungs-Token festnageln – das gemeinsame Geheimnis zwischen den beiden Maschinen, gespeichert unter einem eigenen Namen. Fasse HERMES_DASHBOARD_SESSION_TOKEN selbst nicht an: Hermes lädt ~/.hermes/.env mit override=True, sodass das Festnageln das frische Token überschreiben würde, das die Desktop-App bei jedem Start für ihr eigenes Backend prägt – und die App stirbt beim Boot:

echo "HERMES3D_OFFICE_TOKEN=$(openssl rand -hex 32)" >> ~/.hermes/.env

Schritt zwei: Starte das Backend auf Loopback (--host 127.0.0.1 ist nicht optional: Das Binden an die Tailnet-Adresse aktiviert das Login-Gate und bricht die Token-Auth):

HERMES_DASHBOARD_SESSION_TOKEN="$(grep '^HERMES3D_OFFICE_TOKEN=' ~/.hermes/.env | cut -d= -f2)" \
  hermes serve --host 127.0.0.1 --port 9120 --skip-build

Schritt drei: Veröffentliche im Tailnet (der --https-Port muss tatsächlich frei sein – wenn 443 belegt ist, nimm 10000/8443):

tailscale serve --yes --bg --https=10000 http://127.0.0.1:9120

Prüfe den Tunnel Ende zu Ende, bevor du Maschine B anfasst: curl -s -H "Host: localhost" https://<machine-a>.<tailnet>.ts.net:10000/api/status sollte JSON zurückgeben.

Schritt vier: Halte es am Laufen: macOS nutzt ein launchd-Plist, Linux eine systemd-User-Unit – beide lesen das Token beim Start aus .env, damit das Geheimnis aus Dienstdefinitionen und aus ps herausbleibt. Tailscale Serve übersteht Neustarts, sobald es mit --bg gesetzt ist.

Maschine B – der Hermes3D-Host:

git clone https://github.com/iamlukethedev/Hermes3D.git hermes3d
cd hermes3d && npm install && cp .env.example .env && npm run dev

Öffne http://localhost:3000 und fülle den Verbindungsbildschirm aus: Backend = Hermes Agent (direkt), Gateway-URL = wss://<machine-a>.<tailnet>.ts.net:10000 (gib die Server-Root an, nicht /api/ws – Studio hängt den Pfad an), Token = das aus Schritt eins. Du landest im Büro mit einer Figur pro hermes-agent-Profil.

Die Sicherheitsgrenze (der Autor ist erfrischend ehrlich)

  • Das Sitzungs-Token ist eine Bearer-Anmeldeinformation für deinen gesamten Agenten – behandle es wie einen API-Key: niemals committen, rotieren, indem du mit einem neuen Wert neu startest;
  • Nichts ist dem öffentlichen Internet ausgesetzt: hermes serve bindet an Loopback, und Tailscale Serve veröffentlicht nur innerhalb deines Tailnets;
  • Jeder in deinem Tailnet, der das Token erfährt, kann das Backend erreichen – nutze Tailscale-ACLs in Tailnets mit mehreren Mitgliedern.

Auch die Troubleshooting-Tabelle ist vorgezeichnet: wrong version number/EPROTO = wss:// gegen einen Klartext-Port (nutze den --https-Port); 403 = Token-Mismatch (hat bis zu einem Neustart funktioniert, heißt meist, dass das Token nie festgenagelt wurde); 401 = du hast das gesperrte hermes dashboard getroffen statt des Loopback-hermes serve; 400 Invalid Host header = alter Build, Studio aktualisieren.

Einen Versuch wert?

Wenn du regelmäßig mehrere Hermes-Sitzungen betreibst und dein Gefühl für „was der Agent gerade tut“ auf der Ebene des Log-Scrollens lebt, bietet Hermes3D eine wirklich andere Perspektive – und sein Kanban-Schreibtisch nutzt deine bestehenden hermes kanban-Daten ohne jede zusätzliche Konfiguration. Es ist ein junges Projekt mit 105 Sternen, aber README, Architektur-Doku und Tutorial sind mit ungewöhnlicher Sorgfalt geschrieben. Trotzdem ist es ein Community-Frontend: Das JSON-RPC-Gateway trägt die Verbindung, und das Verhalten, die Berechtigungen und die Genehmigungsabläufe des Agenten selbst ändern sich überhaupt nicht – dein bestehendes Multi-Profil-Setup und deine Live-Orchestrierung von Subagenten funktionieren genau wie zuvor weiter; du bekommst nur Augen dazu. Weitere Ökosystem-Projekte findest du auf unserer Ökosystem-Seite.