⛔ Bitte vorher lesen: Was Du hier eigentlich baust
Am Ende dieser Anleitung kann ein Chat-Kanal Befehle auf Deinem Mac auslösen. Wenn Dein Hermes-Agent Zugriff auf Shell, MCP-Server, Datenbanken, CRM oder Google Workspace hat, dann gibst Du diesen Zugriff über Buzz frei – auch vom Handy aus, auch wenn Du gerade nicht am Rechner sitzt.
Das ist genau der Punkt, warum die Kombination so mächtig ist. Es ist aber auch der Punkt, an dem man sich ohne saubere Konfiguration ein Einfallstor baut. Nimm die drei Sicherheitsschritte in dieser Anleitung ernst – sie kosten zusammen keine zehn Minuten.
Die zuverlässige Lösung besteht darin, Hermes nicht als eingebettete ACP-Runtime von Buzz zu betreiben, sondern Hermes über seinen eigenen Buzz Gateway als eigenständigen Teilnehmer der Buzz-Community anzubinden.
Die funktionierende Architektur sieht so aus:
Der Weg einer Nachricht: von Buzz über das Relay zum Hermes Gateway.
Hermes bekommt dafür eine eigene Nostr-Identität, wird Mitglied der Buzz-Community und wird anschließend gezielt den gewünschten Channels hinzugefügt.
Der Vorteil: Hermes funktioniert weiterhin genauso wie außerhalb von Buzz – inklusive MCP, Skills und Tools – bekommt aber die deutlich angenehmere Buzz-Oberfläche mit Channels, Threads und mehreren Arbeitskontexten.
💡 Reihenfolge lohnt sich
Diese Anleitung ist bewusst anders sortiert als mein eigener Weg dorthin. Wer die Schritte in dieser Reihenfolge abarbeitet, umgeht zwei Fehlermeldungen komplett, die sonst garantiert auftreten. Wie es bei mir tatsächlich lief, steht im Anhang.
Die drei Sicherheitsregeln vorweg
Wenn Du Dir nur drei Dinge aus diesem Artikel merkst, dann diese:
- Hermes bekommt einen eigenen Schlüssel. Niemals Deinen persönlichen Buzz-Key im Agenten hinterlegen.
- Dein persönlicher Schlüssel verlässt niemals eine kurze Terminal-Sitzung. Kein
export, kein Notizzettel, kein Screenshot – und am Ende aufräumen. - Der Agent gehorcht nur namentlich freigegebenen Personen. „Allow all members" ist bequem und in der Praxis die Ursache für die meisten Probleme.
1. Voraussetzungen
Für dieses Setup benötigst Du:
- eine funktionierende Hermes-Agent-Installation
- Buzz Desktop
- eine bestehende Buzz-Community
- das
buzz-CLI - Homebrew auf macOS
nakals Nostr-Key-Tool
Prüfen kannst Du das Buzz-CLI beispielsweise mit:
command -v buzzWenn ein Pfad zurückgegeben wird, ist das CLI vorhanden.
Eine Versionsabfrage mit buzz --version oder buzz version funktionierte bei meiner Buzz-Version nicht. Das ist kein Problem.
⚠️ CLI-Optionen ändern sich
Buzz und Hermes entwickeln sich schnell. Die Befehle in diesem Artikel entsprechen dem Stand meiner Installation. Wenn ein Befehl bei Dir eine unbekannte Option meldet, ist
--helpimmer die verlässlichste Quelle.
Diese drei Aufrufe zeigen Dir den Stand Deiner Installation:
buzz channels --help
buzz users set-profile --help
hermes gateway --helpnak installieren:
brew install nak2. Eigene Nostr-Identität für Hermes erzeugen
Hermes sollte nicht mit Deinem persönlichen Buzz-Key betrieben werden. Stattdessen bekommt Hermes eine eigene Nostr-Identität – so wie ein eigener Mitarbeiter-Account und nicht wie ein weiterer Login in Deinen eigenen Account.
Verzeichnis vorbereiten
mkdir -p ~/.hermes/buzz
chmod 700 ~/.hermes ~/.hermes/buzzPrivate Key erzeugen
( umask 077; nak key generate > ~/.hermes/buzz/hermes_key_hex.txt )💡 Warum die Klammern und
umask 077?Ohne diesen Zusatz legt die Shell die Datei zuerst mit den Standardrechten an – auf vielen Systemen für alle Nutzer lesbar – und erst ein nachträgliches
chmodschließt sie wieder. In diesem kurzen Moment liegt Dein Schlüssel offen.umask 077sorgt dafür, dass die Datei von der ersten Sekunde an nur für Dich lesbar ist. Die runden Klammern begrenzen die Einstellung auf diesen einen Befehl.
Kontrolle:
ls -l ~/.hermes/buzz/hermes_key_hex.txt✅ Kontrollpunkt
Die Ausgabe muss mit
-rw-------beginnen. Steht dort etwas anderes (z. B.-rw-r--r--), dann korrigiere es mitchmod 600 ~/.hermes/buzz/hermes_key_hex.txtund erzeuge den Schlüssel sicherheitshalber neu.
⛔ Diese Datei ist die Identität Deines Agenten
Wer sie hat, ist Hermes: kann in Deinen Channels schreiben, sich als Dein Agent ausgeben und vom Gateway erteilte Rechte nutzen. Nostr kennt keine Rücknahme von Schlüsseln – ein einmal abgeflossener Key lässt sich nicht sperren, sondern nur durch eine komplett neue Identität ersetzen. Also: nie in Screenshots, nie in Blogposts, nie in Chat-Nachrichten, nie in ein KI-Fenster kopieren.
Public Key ableiten und dauerhaft ablegen
Den öffentlichen Schlüssel brauchst Du später mehrfach. Damit Du dafür nie wieder den geheimen Schlüssel anfassen musst, speicherst Du ihn einmal separat:
cat ~/.hermes/buzz/hermes_key_hex.txt | nak key public > ~/.hermes/buzz/hermes_pubkey_hex.txt
cat ~/.hermes/buzz/hermes_pubkey_hex.txtDie Ausgabe ist ein 64-stelliger Hex-Public-Key, zum Beispiel:
1f0a9c4d……(64 Hex-Zeichen)……3b7eFalls Deine nak-Version die Eingabe über die Pipe nicht akzeptiert, funktioniert alternativ:
nak key public "$(cat ~/.hermes/buzz/hermes_key_hex.txt)" > ~/.hermes/buzz/hermes_pubkey_hex.txtBitte mit einem Leerzeichen am Zeilenanfang eintippen – nur dann bleibt die Zeile aus der Shell-History.
⚠️ Beachte das führende Leerzeichen
In der Alternativ-Variante steht der geheime Schlüssel kurzzeitig in der Prozessliste des Systems. Das führende Leerzeichen vor dem Befehl verhindert zumindest, dass die Zeile in Deiner Shell-History landet – vorausgesetzt, Du hast das einmalig aktiviert (Befehl unten). Weil ein führendes Leerzeichen im Text nicht sichtbar ist: Du musst es beim Eintippen selbst setzen. Bevorzuge deshalb die Pipe-Variante, wenn sie bei Dir funktioniert.
Einmalig einschalten:
# zsh (macOS-Standard):
setopt HIST_IGNORE_SPACE
# bash:
export HISTCONTROL=ignorespace💡 Hex oder npub?
Es gibt zwei Schreibweisen für dieselben Schlüssel:
nsec…/npub…(bech32, gut lesbar, in der Buzz-Oberfläche üblich) und die reine Hex-Form (64 Zeichen, im CLI und in der Gateway-Konfiguration üblich). Diese Anleitung arbeitet durchgängig mit Hex. Wenn eine Eingabemaske ausdrücklichnpubverlangt, kannst Du mitnakumrechnen (nak encode npub …, siehenak encode --help). Der häufigste Anfängerfehler an dieser Stelle ist, das falsche Format einzufügen.
3. Hermes-Identität in die Buzz-Community aufnehmen
In Buzz Desktop:
Settings → Invites → Invite to communityDort nimmst Du die neue Hermes-Identität über ihren Public Key bzw. den vorgesehenen Invite-Mechanismus in die Community auf. Bei mir funktionierte das direkt problemlos.
Anschließend erscheint die neue Identität zunächst als:
Unnamed memberunter Settings → Invites → Members. Das ist normal – die Identität hat noch kein Profil veröffentlicht. Das holen wir im nächsten Schritt nach.
💡 Community-Mitgliedschaft ≠ Channel-Mitgliedschaft
Das ist der wichtigste Denkfehler in diesem ganzen Setup. Eine Identität kann Mitglied der gesamten Community sein und trotzdem in keinem einzigen Channel sichtbar oder aktiv sein. Beides muss separat vergeben werden. Genau daran scheitern die meisten Setups (siehe Schritt 7).
4. Profil für Hermes veröffentlichen
Dieser Schritt kommt bewusst vor der Gateway-Einrichtung. Der Gateway erwartet ein vorhandenes Profil; fehlt es, startet er mit einer irritierenden Fehlermeldung (siehe Troubleshooting, Problem 2).
Zuerst die verfügbaren Optionen Deiner CLI-Version prüfen:
buzz users set-profile --helpBei meiner Version verfügbar: --name, --avatar, --about, --nip05.
Dann das Profil mit der Hermes-Identität veröffentlichen:
BUZZ_RELAY_URL="wss://DEINE-COMMUNITY.communities.buzz.xyz" BUZZ_PRIVATE_KEY="$(cat ~/.hermes/buzz/hermes_key_hex.txt)" buzz users set-profile --name "Hermes" --about "Hermes Agent via Buzz Gateway"💡 Warum steht das
BUZZ_PRIVATE_KEY=direkt vor dem Befehl – und nicht alsexport?In dieser Schreibweise gilt der Wert nur für diesen einen Befehl. Danach ist er wieder weg. Ein
exportwürde den Schlüssel dagegen an jeden weiteren Prozess weitergeben, den Du in diesem Terminal startest – an jedes Skript, jedes Tool, jeden Paketmanager. Merke Dir das Muster; wir brauchen es in Schritt 7 noch einmal in verschärfter Form.Angenehmer Nebeneffekt: In der Shell-History landet nur der Text
$(cat …), nicht der Schlüssel selbst.
Der Platzhalter DEINE-COMMUNITY steht für Deine eigene Community. Das allgemeine Schema lautet:
wss://DEINE-COMMUNITY.communities.buzz.xyz✅ Kontrollpunkt
In Buzz Desktop unter
Settings → Invites → Memberssteht statt „Unnamed member" jetzt „Hermes".
Optional: vorhandenen Avatar übernehmen
Wenn bereits ein Hermes-Profilbild als URL vorhanden ist, kannst Du dieselbe URL verwenden:
BUZZ_RELAY_URL="wss://DEINE-COMMUNITY.communities.buzz.xyz" BUZZ_PRIVATE_KEY="$(cat ~/.hermes/buzz/hermes_key_hex.txt)" buzz users set-profile --name "Hermes" --avatar "https://DEINE-COMMUNITY.communities.buzz.xyz/media/DEIN-BILD.png" --about "Hermes Agent via Buzz Gateway"5. Hermes Buzz Gateway konfigurieren
Jetzt wird der eigentliche Gateway eingerichtet:
hermes gateway setupIm Setup:
Messaging Platforms → BuzzDanach werden folgende Angaben abgefragt.
Relay URL
wss://DEINE-COMMUNITY.communities.buzz.xyzNostr Private Key
Hier trägst Du den Hermes-Schlüssel ein, also den Inhalt von:
~/.hermes/buzz/hermes_key_hex.txtAusgeben kannst Du ihn mit:
cat ~/.hermes/buzz/hermes_key_hex.txtBitte mit einem Leerzeichen am Zeilenanfang eintippen – nur dann bleibt die Zeile aus der Shell-History.
⛔ Nicht Deinen persönlichen Buzz-Key verwenden
Es ist an dieser Stelle verlockend, einfach den eigenen Key zu nehmen, „damit es erstmal läuft". Dann handelt der Agent aber unter Deiner Identität – inklusive aller Rechte, die Du in der Community hast, und ohne dass sich hinterher unterscheiden lässt, ob Du oder der Agent etwas geschrieben hat. Und: Du kannst ihm diese Rechte nie wieder einzeln entziehen.
Channels to watch
Channel UUIDs to watch
(comma-separated, empty = all joined channels):Hier musst Du eine bewusste Entscheidung treffen:
- Feld leer – Hermes beobachtet automatisch jeden Channel, dem seine Identität beitritt. Bequem im Testbetrieb und in kleinen, privaten Communities.
- Feld mit UUIDs gefüllt – Hermes beobachtet ausschließlich die genannten Channels. Die richtige Wahl im Produktiv- und Teambetrieb.
⚠️ Leeres Feld heißt: andere bestimmen, wo Dein Agent mithört
Bequem ist es, weil neue Channels ohne Nachkonfiguration funktionieren. Der Preis: Jede Person, die Hermes' Public Key in einen Channel aufnehmen kann, entscheidet damit, was Dein Agent zu sehen bekommt – nicht mehr Du. Für einen Agenten mit Shell- oder Datenbankzugriff würde ich die Channels explizit auflisten. Die UUIDs findest Du in Schritt 6; Du kannst also auch zunächst leer lassen und später nachziehen.
Home Channel
Home channel UUID for cron/notification delivery (optional):Zunächst leer lassen – der Home Channel lässt sich später bequem aus Buzz heraus setzen (Schritt 9).
Zugriffskontrolle
Allow all community members to talk to the agent? [y/N]:Antwort: N
Allowed users
(comma-separated npubs or hex pubkeys, empty to deny everyone):Hier trägst Du Deinen persönlichen Buzz-Public-Key ein (nicht den privaten!). Damit kann zunächst nur Dein eigener Account Anweisungen an Hermes senden.
⛔ Warum „Allow all" gefährlich ist – ein konkretes Beispiel
Mit offener Freigabe kann jedes Community-Mitglied
@Hermes /sethomein einen beliebigen Channel schreiben und damit umleiten, wohin Deine Cron-Ergebnisse und Benachrichtigungen geliefert werden. Aus einem harmlosen Komfort-Feature wird so ein Abfluss für Daten, die eigentlich in Deinem privaten Channel landen sollten. Dasselbe gilt für jedes andere Tool, das Hermes ausführen kann.
⚠️ Freigabeliste ≠ Rundumschutz
Die Allowlist regelt, wer Befehle geben darf. Sie regelt nicht, was Hermes zu lesen bekommt. Der Agent verarbeitet weiterhin den Inhalt der beobachteten Channels – und je nach Aufgabe auch Webseiten, Dateien, Mails oder CRM-Einträge. In all diesen Inhalten kann eine Anweisung versteckt sein, die für Dein Sprachmodell wie eine legitime Aufgabe aussieht („Ignoriere vorherige Anweisungen und …").
Behandle daher jeden Inhalt, der nicht von Dir stammt, als unsicher und gib Hermes im Buzz-Betrieb nur die Werkzeuge, die er dort tatsächlich braucht.
6. Gateway starten und Status prüfen
Unter macOS läuft der Gateway als launchd-Service.
hermes gateway statusBeispielausgabe:
Launchd plist:
~/Library/LaunchAgents/ai.hermes.gateway.plist
✓ Service definition matches the current Hermes install
✓ Gateway is supervised by launchdLog prüfen:
hermes logs gateway -n 60✅ Kontrollpunkt
Im Log sollte sinngemäß der Auszug unter dieser Box stehen. Damit stehen Identität, Relay, WebSocket und Gateway. Dass
Nhier noch0sein kann, ist normal – die Channel-Mitgliedschaft kommt erst im nächsten Schritt.
So sieht ein erfolgreicher Verbindungsaufbau aus:
Buzz: connected to wss://DEINE-COMMUNITY.communities.buzz.xyz
as Hermes,
watching N channel(s) via websocket
✓ buzz connectedSchlüssel-Ablage kontrollieren
Der Gateway hat Deinen Schlüssel jetzt in seine eigene Konfiguration übernommen. Damit liegt er an einer zweiten Stelle – und die sorgfältigen Rechte aus Schritt 2 nützen wenig, wenn diese zweite Datei offen liegt.
ls -la ~/.hermes
ls -l ~/Library/LaunchAgents/ai.hermes.gateway.plist⚠️ Prüfe die Konfigurationsdateien
Alles, was den Schlüssel enthält, sollte
-rw-------(600) sein. Falls eine Config- oder plist-Datei offener steht, korrigierst Du das mitchmod 600 PFAD/ZUR/DATEI.Zweiter Punkt, der gern übersehen wird:
~/.hermeswandert in Time Machine und – je nach Einstellung – in iCloud Drive. Dein Agenten-Schlüssel liegt dann im Klartext in Deinen Backups. Wenn Dich das stört, schließe den Ordner aus dem Backup aus oder lege den Schlüssel in ein verschlüsseltes Volume.
7. Hermes einem privaten Channel hinzufügen
Hier liegt der eigentliche Stolperstein des ganzen Setups.
Die neue Hermes-Identität ist zwar Community-Mitglied, erscheint aber in der grafischen Channel-Mitgliedersuche von Buzz Desktop nicht zuverlässig. Bei mir führten weder Name noch npub noch Hex-Public-Key dort verlässlich zum Ziel.
Die Lösung ist das Buzz CLI. Und dafür braucht das CLI kurzzeitig Deinen persönlichen Schlüssel – denn nur Du als Owner darfst Mitglieder zu einem privaten Channel hinzufügen.
7.1 Persönlichen Key sicher in die Sitzung holen
Deinen persönlichen Private Key findest Du in Buzz Desktop unter:
Settings → Profile → Identity → Private key → Reveal⛔ Der Moment mit dem höchsten Risiko in dieser Anleitung
Dieser Schlüssel ist Dein kompletter Buzz-Account – nicht ein Passwort, das man zurücksetzen kann. Wer ihn hat, ist Du. Für immer, denn zurücknehmen lässt er sich nicht.
Deshalb in den nächsten Minuten: keine Bildschirmaufnahme, keine Screenshots, kein Screensharing, kein Einfügen in irgendein Tool außer dem Terminal – und danach konsequent aufräumen (Schritt 7.5).
Im Terminal:
export BUZZ_RELAY_URL="wss://DEINE-COMMUNITY.communities.buzz.xyz"
printf 'Persönlicher Buzz Private Key: '
read -rs BUZZ_PRIVATE_KEY
echo
export BUZZ_PRIVATE_KEYNach read -rs fügst Du den Schlüssel ein und drückst Enter. Du siehst dabei nichts – das ist korrekt und gewollt. Der Schlüssel erscheint so weder auf dem Bildschirm noch in Deiner Shell-History.
💡 Warum nicht einfach
export BUZZ_PRIVATE_KEY="…"mit dem Schlüssel in der Zeile?Weil diese Zeile dann dauerhaft in
~/.zsh_historysteht – im Klartext, monatelang, und ausgerechnet in einer Datei, die viele Backup- und Sync-Tools mitnehmen. Die Variante oben vermeidet das vollständig.
7.2 Channel-UUID herausfinden
buzz channels search --query "Hermes"Beispielausgabe:
{
"channel_id": "00000000-1111-2222-3333-444444444444",
"name": "Hermes",
"visibility": "private"
}Alternativ alle Channels auflisten:
buzz channels list7.3 Hermes Public Key bereitlegen
Den brauchst Du jetzt – und dank Schritt 2 ohne den geheimen Schlüssel anzufassen:
cat ~/.hermes/buzz/hermes_pubkey_hex.txt7.4 Hermes zum Channel hinzufügen
buzz channels add-member --channel CHANNEL_UUID --pubkey HERMES_PUBKEY --role memberKonkret mit den Werten aus den vorherigen Schritten:
buzz channels add-member --channel 00000000-1111-2222-3333-444444444444 --pubkey "$(cat ~/.hermes/buzz/hermes_pubkey_hex.txt)" --role memberMitgliedschaft kontrollieren:
buzz channels members --channel CHANNEL_UUID✅ Kontrollpunkt
In der Ausgabe muss Dein Hermes-Public-Key mit einer Rolle auftauchen. Falls dort noch ein alter Agent aus früheren Versuchen steht: nicht ignorieren, sondern in Schritt 10 entfernen.
So sieht eine korrekte Mitgliederliste aus:
[
{ "pubkey": "DEIN_USER_KEY", "role": "owner" },
{ "pubkey": "HERMES_PUBKEY", "role": "member" }
]7.5 Aufräumen – nicht überspringen
unset BUZZ_PRIVATE_KEY BUZZ_RELAY_URLUnd danach das Terminal-Fenster schließen.
⛔ Warum das kein optionaler Hygiene-Schritt ist
Solange
BUZZ_PRIVATE_KEYexportiert ist, erbt jeder Prozess, den Du aus diesem Terminal startest, Deinen persönlichen Schlüssel: jedesnpm run, jedes Python-Skript, jeder lokal gestartete MCP-Server, jedes Build-Tool. Ein einziges neugieriges oder kompromittiertes Paket genügt.unsetund Fenster zu – fertig.
8. Erster Test: funktioniert es, und schweigt es auch?
Positiv-Test
Nach dem Neustart des Gateways:
hermes gateway restartFalls Deine Version keinen restart-Subcommand hat:
hermes gateway stop
hermes gateway startIm Channel schreibst Du:
@Hermes Antworte exakt mit TEST123Hermes antwortet:
TEST123💡 Wenn scheinbar nichts passiert: schau in den Thread
Buzz zeigt Agenten-Antworten als Thread-Reply an. Die Antwort hängt dann unter Deiner ursprünglichen Nachricht an einem kleinen Hinweis wie
1 reply. Wer das nicht weiß, hält das Setup für kaputt, obwohl alles funktioniert. Das war bei mir der zweithäufigste Fehlalarm.
Negativ-Test – der eigentlich wichtige
Ein Test, der zeigt, dass etwas funktioniert, sagt nichts darüber aus, ob Deine Zugriffskontrolle greift. Deshalb der Gegentest:
Bitte ein anderes Community-Mitglied (oder nutze einen Zweit-Account), im selben Channel zu schreiben:
@Hermes Antworte exakt mit TEST456✅ Kontrollpunkt
Hermes darf hier nicht antworten.
Antwortet er doch, steht Deine Zugriffskontrolle auf „Allow all" oder die Allowlist enthält den falschen Schlüssel. In dem Fall:
hermes gateway setuperneut durchlaufen und die Allowlist korrigieren, bevor Du Hermes weitere Werkzeuge oder Channels gibst.
9. Home Channel festlegen
Der Home Channel ist der Channel, in dem Hermes Cron-Ergebnisse, Benachrichtigungen und Cross-Platform-Nachrichten ablegt. Zunächst meldet Hermes:
No home channel is set for Buzz.Da Hermes mention-basiert arbeitet, schreibst Du im gewünschten Channel einfach:
@Hermes /sethomeHermes bestätigt:
✅ Home channel set to Hermes
Cron jobs and cross-platform messages will be delivered here.⚠️ Bewusst wählen
Alles, was Hermes automatisch produziert – auch Ergebnisse nächtlicher Cron-Jobs mit Daten aus Datenbanken oder CRM – landet ab jetzt in diesem Channel. Nimm einen Channel, dessen Mitgliederliste Du kennst und kontrollierst.
10. Aufräumen: alte Agenten entfernen
Wenn Du – wie ich – vorher andere Wege ausprobiert hast, steht möglicherweise noch eine alte Agenten-Identität in Deinen Channels:
buzz channels members --channel CHANNEL_UUID⛔ Ein vergessener Alt-Agent ist ein offener Zugang
Ein Agent, der noch Mitglied eines privaten Channels ist, sieht dort weiter mit – auch wenn Du ihn nicht mehr nutzt und längst vergessen hast, wo sein Schlüssel liegt. Genau solche Reste findet man Jahre später in Sicherheitsprüfungen.
Zum Entfernen brauchst Du wieder kurz Deinen persönlichen Key (Schritt 7.1) und anschließend den passenden Unterbefehl Deiner CLI-Version:
buzz channels --helpBei meiner Version hieß er remove-member und wird analog zu add-member verwendet:
buzz channels remove-member --channel CHANNEL_UUID --pubkey ALTER_AGENT_PUBKEYDanach nicht vergessen: unset BUZZ_PRIVATE_KEY BUZZ_RELAY_URL.
Falls der alte Agent auch einen eigenen Schlüssel auf Deiner Platte hat, den Du nicht mehr brauchst – löschen. Ein nicht existierender Schlüssel kann nicht abfließen.
11. Weitere Channels hinzufügen
Wenn Du das Feld Channel UUIDs to watch leer gelassen hast, beobachtet Hermes automatisch alle Channels, denen seine Identität beitritt. Weitere Channels werden deshalb genauso hinzugefügt wie in Schritt 7.4:
buzz channels add-member --channel WEITERE_CHANNEL_UUID --pubkey "$(cat ~/.hermes/buzz/hermes_pubkey_hex.txt)" --role memberHast Du die Channels dagegen explizit aufgelistet (die sicherere Variante), musst Du sie zusätzlich in der Gateway-Konfiguration ergänzen:
hermes gateway setupFalls Hermes einen neu hinzugefügten Channel nicht unmittelbar erkennt:
hermes gateway restart12. Betrieb: was Du wissen solltest, bevor es produktiv läuft
Schlüsselverlust und Schlüsselwechsel
⛔ Es gibt keinen „Passwort zurücksetzen"-Knopf
Nostr-Identitäten lassen sich nicht widerrufen. Daraus folgen zwei Dinge:
Wenn der Hermes-Schlüssel abfließt, hilft nur: neue Identität erzeugen (Schritt 2), neu in die Community aufnehmen (Schritt 3), Profil setzen (Schritt 4), Gateway umkonfigurieren (Schritt 5), in alle Channels aufnehmen (Schritt 7) – und die alte Identität überall entfernen (Schritt 10). Plane dafür realistisch eine halbe Stunde ein.
Wenn der Hermes-Schlüssel verloren geht (Festplattendefekt, versehentlich gelöscht), ist die Identität weg – samt Profil, Channel-Mitgliedschaften und Wiedererkennbarkeit. Der Ablauf ist derselbe.
Ein verschlüsseltes Backup der Datei
hermes_key_hex.txt– Passwortmanager oder verschlüsseltes Volume, nicht der Desktop – erspart Dir den zweiten Fall.
Logs enthalten Inhalte
Wenn Du Log-Ausschnitte in einem Blogpost, Ticket oder Support-Chat teilst: vorher lesen. hermes logs gateway enthält je nach Konfiguration Nachrichteninhalte, Channel-Namen, Public Keys und gelegentlich Fragmente von Tool-Ausgaben.
Least Privilege für den Buzz-Betrieb
Je mehr Hermes kann, desto größer die Wirkung einer einzigen erfolgreichen Manipulation. Wenn Du Hermes über Buzz erreichbar machst, lohnt die Frage: Braucht dieser Zugang wirklich Shell, produktive Datenbanken und Browser-Automatisierung? Für viele Anwendungsfälle reicht eine Instanz mit deutlich reduziertem Toolset – und die riskanten Werkzeuge bleiben dem lokalen Hermes-Interface vorbehalten, wo Du jede Ausführung selbst auslöst.
Troubleshooting
Problem 1: 'users get' returned no profile
Buzz: 'users get' returned no profile — is the key a member of this community?Die Hermes-Identität hat noch kein Profil in dieser Community veröffentlicht. Tritt nicht auf, wenn Du Schritt 4 vor Schritt 5 erledigt hast.
Lösung: Profil nachtragen (Schritt 4), danach hermes gateway restart.
Problem 2: BUZZ_PRIVATE_KEY is required
Das CLI weiß nicht, mit welcher Identität es handeln soll.
Lösung: Relay-URL und Schlüssel wie in Schritt 7.1 setzen – und danach wieder unset.
Problem 3: Hermes ist Community-Mitglied, erscheint aber nicht beim Channel-Invite
Der wichtigste Buzz-Desktop-Stolperstein: Die grafische Suche findet die Identität nicht zuverlässig.
Lösung: Channel-Mitgliedschaft direkt über das CLI setzen (Schritt 7.4).
Problem 4: Hermes antwortet scheinbar nicht
Buzz zeigt Agenten-Antworten häufig als Thread-Reply. Unter Deiner Nachricht nach 1 reply suchen und den Thread öffnen.
Problem 5: Hermes reagiert nur bei ausdrücklicher Erwähnung
Das ist so gewollt, wenn die Zugriffskonfiguration entsprechend gesetzt ist:
@Hermes Deine Aufgabe …Das ist deutlich sicherer als ein Agent, der jede Nachricht eines Channels ungefragt verarbeitet.
Problem 6: Hermes antwortet Personen, die er nicht bedienen soll
Zugriffskontrolle prüfen: hermes gateway setup erneut durchlaufen, Allow all community members auf N setzen und in der Allowlist die korrekten Public Keys hinterlegen. Anschließend den Negativ-Test aus Schritt 8 wiederholen.
Ergebnis
Am Ende läuft Hermes nicht mehr als eingebetteter Buzz-Agent, sondern als eigenständiger Teilnehmer der Community:
Die fertige Architektur: Hermes als eigenständiger Teilnehmer der Community.
Eigene MCP-Tools und Web-Apps lassen sich aus Buzz genauso über Hermes ansteuern wie im normalen Hermes-Interface – nur mit der deutlich aufgeräumteren Channel- und Thread-Oberfläche von Buzz.
Sicherheits-Checkliste zum Abhaken
- Eigener Nostr-Key für Hermes erzeugt
- Schlüsseldatei mit
umask 077erzeugt, Rechte600geprüft - Gateway-Konfiguration auf Dateirechte geprüft
- Persönlicher Account-Key nicht im Agenten hinterlegt
- Persönlicher Key nur per
read -rseingegeben, danachunset Allow all community memberssteht aufN- Allowlist explizit gesetzt
- Negativ-Test bestanden: fremder Account wird ignoriert
- Private Channels gezielt und einzeln freigegeben
- Alte Agenten aus allen Channels entfernt
- Verschlüsseltes Backup des Hermes-Keys angelegt
- Toolset für den Buzz-Zugang auf das Nötige reduziert
- Private Key nirgends veröffentlicht, auch nicht in Logs
Anhang: Wie ich tatsächlich dorthin gekommen bin
Der Vollständigkeit halber – und weil die Fehlermeldungen anderen die Suche ersparen können.
Ursprünglich hatte ich Hermes über die in Buzz angebotene lokale Agent-Runtime eingebunden:
Runtime: hermes-acp
ACP command: buzz-acpHermes wurde von Buzz korrekt erkannt und stand auf Ready bzw. Running. Trotzdem erschienen Antworten teilweise nicht im Buzz-Channel. Im Harness-Log war zu sehen:
Turn ended ...
response_len=8Hermes hatte also tatsächlich geantwortet. Gleichzeitig erschien aber:
auth error: BUZZ_PRIVATE_KEY is requiredDie KI-Ausführung funktionierte demnach; der Rückweg der Nachricht nach Buzz nicht. Der eingebetteten Runtime fehlten schlicht die Zugangsdaten für den Rückkanal.
Das lässt sich heute nicht einfach durch env_passthrough beheben. Hermes behandelt die Buzz-Zugangsdaten bewusst als geschützte Messaging-Credentials und entfernt sie aus den vom Agenten gestarteten Terminal-Prozessen. Genau deshalb ist der native Buzz-Gateway die sauberere Architektur: Der Gateway selbst besitzt die Buzz-Identität, ohne den privaten Schlüssel den vom Agenten ausgeführten Tools zur Verfügung zu stellen.
Fazit
Hermes und Buzz übernehmen unterschiedliche Aufgaben, und genau das macht die Kombination interessant.
Hermes ist die Agenten-Engine: Modelle, MCP, Skills, Tools, Memory, Automatisierung, Cron, Anbindung externer Systeme.
Buzz wird zur Arbeitsoberfläche: Channels, Threads, mehrere Agenten, Community-Struktur, Desktop und Mobile, saubere Kollaboration.
Damit wird aus Hermes nicht einfach ein weiterer Chatbot innerhalb von Buzz. Hermes wird zu einem echten Teilnehmer des digitalen Arbeitsplatzes – und sollte deshalb auch so behandelt werden: mit eigener Identität, klar begrenzten Rechten und einer Zugriffskontrolle, die man einmal wirklich getestet hat.
