OpenClaw

OpenClaw Nostr Kanal

Dezentral
Fortgeschritten

Verbinden Sie OpenClaw mit dem dezentralen Nostr-Netzwerk über ein optionales Plugin. Diese Integration ermöglicht es Ihrem KI-Assistenten, NIP-04-verschlüsselte Direktnachrichten über jeden Nostr-Relay zu empfangen und zu beantworten — keine zentralisierten Server, keine Konten zum Registrieren, nur ein kryptografisches Schlüsselpaar und eine Relay-Verbindung. Ideal für datenschutzorientierte Deployments, bei denen Zensurresistenz und Selbstbestimmung wichtig sind.

Kurzinfo
SchwierigkeitsgradFortgeschritten
KategorieDezentral
Unterstützte Funktionen2 / 6

Nostr Unterstützte Funktionen

Textnachrichten

Unterstützt

Medien & Dateien

Nicht unterstützt

Reaktionen

Unterstützt

Threads

Nicht unterstützt

Sprachnachrichten

Nicht unterstützt

Gruppenchat

Nicht unterstützt

Nostr Voraussetzungen

  • OpenClaw Gateway installiert und gestartet
  • Ein Nostr-Schlüsselpaar (privater Schlüssel im nsec- oder Hex-Format) — generieren Sie es mit 'nak key generate'
  • Mindestens ein Nostr-Relay erreichbar über WebSocket (z.B. wss://relay.damus.io)
  • Node.js 18+ auf Ihrem Server installiert

Nostr Schnelleinrichtung

1

Nostr-Plugin installieren

Führen Sie 'openclaw plugins install @openclaw/nostr' aus, um den Nostr-Kanal hinzuzufügen. Alternativ können Sie 'openclaw onboard' oder 'openclaw channels add' verwenden und Nostr aus der Plugin-Liste auswählen. Starten Sie das Gateway nach der Installation neu.

2

Schlüsselpaar generieren und konfigurieren

Generieren Sie ein Nostr-Schlüsselpaar mit 'nak key generate'. Setzen Sie den privaten Schlüssel als Umgebungsvariable (export NOSTR_PRIVATE_KEY="nsec1...") und referenzieren Sie ihn in Ihrer openclaw.json-Konfiguration mit ${NOSTR_PRIVATE_KEY}.

3

Starten und eine Test-DM senden

Starten Sie das Gateway neu mit 'openclaw start'. Den öffentlichen Schlüssel (npub) Ihres Bots finden Sie in den Startprotokollen. Öffnen Sie einen beliebigen Nostr-Client (z.B. Damus, Amethyst, Primal) und senden Sie eine verschlüsselte DM an den npub des Bots. Bei Verwendung der Standard-Pairing-Richtlinie genehmigen Sie den Absender über die CLI.

Nostr Konfigurationsbeispiel

config.json
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "relays": [
        "wss://relay.damus.io",
        "wss://nos.lol"
      ],
      "dmPolicy": "pairing"
    }
  }
}

Nostr Detaillierte Dokumentation

Architekturübersicht

Im Gegensatz zu zentralisierten Messaging-Plattformen ist Nostr ein dezentrales Protokoll, bei dem Nachrichten über unabhängige Relay-Server verteilt werden. OpenClaw verbindet sich über WebSocket mit einem oder mehreren Relays und abonniert NIP-04-verschlüsselte Direktnachrichten, die an den öffentlichen Schlüssel des Bots adressiert sind. Der Nachrichtenfluss ist unkompliziert: 1. Ein Benutzer sendet eine verschlüsselte DM von einem beliebigen Nostr-Client (Damus, Amethyst, Primal usw.) 2. Die Nachricht wird an die Relays verbreitet, an die der Benutzer veröffentlicht 3. Das Relay-Abonnement von OpenClaw erfasst das Ereignis 4. Das Gateway entschlüsselt die Nachricht, verarbeitet sie durch Ihren KI-Agenten, verschlüsselt die Antwort und veröffentlicht sie über die konfigurierten Relays zurück Da Nostr relay-basiert ist, gibt es keinen einzelnen Ausfallpunkt — wenn ein Relay ausfällt, können Nachrichten weiterhin über andere fließen. Der Bot und seine Benutzer müssen nicht exakt dieselben Relays verwenden, da Relays häufig Ereignisse untereinander austauschen.
Der öffentliche Schlüssel des Bots wird aus dem privaten Schlüssel abgeleitet und in den Gateway-Startprotokollen angezeigt. Teilen Sie diesen npub mit Benutzern, damit sie Ihren Bot finden und ihm Nachrichten senden können.
Nostr kennt kein Konzept des 'Online-Status' — Nachrichten werden auf Relays gespeichert und zugestellt, sobald der Client sich verbindet.

Plugin-Installation

Der Nostr-Kanal wird als optionales OpenClaw-Plugin ausgeliefert und ist nicht in das Kern-Gateway integriert. Dies hält die Basisinstallation schlank und ermöglicht es Ihnen, Nostr-Unterstützung bei Bedarf hinzuzufügen. Es gibt mehrere Installationsmethoden: • **npm (empfohlen):** Führen Sie 'openclaw plugins install @openclaw/nostr' aus, um die stabile Version zu installieren. • **Beta-Kanal:** Verwenden Sie 'openclaw plugins install @openclaw/nostr@beta' für Vorabversionen mit neuen Funktionen. • **Lokale Entwicklung:** Klonen Sie das Plugin-Repository und verwenden Sie 'openclaw plugins install --link /path/to/local/checkout', um es zu verlinken. • **Interaktive Einrichtung:** Führen Sie 'openclaw onboard' oder 'openclaw channels add' aus und wählen Sie Nostr aus der Liste. Nach der Installation starten Sie das Gateway neu, damit das Plugin wirksam wird.
Führen Sie 'openclaw plugins list' aus, um zu überprüfen, ob das Nostr-Plugin installiert und aktiv ist.

Schlüsselgenerierung & -verwaltung

Die Nostr-Identität basiert auf Public-Key-Kryptografie. Die Identität Ihres Bots ist sein Schlüsselpaar — ein privater Schlüssel (nsec), der zum Signieren und Entschlüsseln verwendet wird, und ein öffentlicher Schlüssel (npub), der als Adresse dient. Generieren Sie ein Schlüsselpaar mit dem 'nak'-CLI-Tool: 1. nak installieren: 'go install github.com/fiatjaf/nak@latest' (oder von den Releases herunterladen) 2. Generieren: 'nak key generate' — dies gibt den privaten Schlüssel im Hex-Format aus 3. Öffentlichen Schlüssel ableiten: 'nak key public <hex-private-key>' — bei Bedarf in npub konvertieren OpenClaw akzeptiert private Schlüssel sowohl im nsec-Format (Bech32-kodiert) als auch im 64-Zeichen-Hex-Format. Öffentliche Schlüssel in allowFrom können im npub- oder Hex-Format angegeben werden.
openclaw.json
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}"
    }
  }
}
Codieren Sie Ihren privaten Schlüssel niemals direkt in openclaw.json ein. Verwenden Sie immer eine Umgebungsvariable (z.B. ${NOSTR_PRIVATE_KEY}) und setzen Sie diese über 'export NOSTR_PRIVATE_KEY="nsec1..."' in Ihrer Shell oder einer .env-Datei.

Relay-Konfiguration

Relays sind das Rückgrat von Nostr — sie speichern und verteilen Ereignisse. OpenClaw verbindet sich über WebSocket mit Ihren konfigurierten Relays, um verschlüsselte DMs zu senden und zu empfangen. Die Standardkonfiguration verwendet zwei bekannte öffentliche Relays: relay.damus.io und nos.lol. Für den Produktionseinsatz sollten Sie dies an Ihre Bedürfnisse anpassen. Tipps zur Relay-Auswahl: • Verwenden Sie 2–3 Relays für eine gute Balance zwischen Redundanz und Leistung • Zu viele Relays erhöhen Latenz und Bandbreitenverbrauch • Kostenpflichtige Relays (z.B. relay.nostr.band) bieten bessere Zuverlässigkeit und weniger Spam • Für die Entwicklung können Sie einen lokalen Relay betreiben (z.B. Strfry via Docker) auf ws://localhost:7777
openclaw.json
{
  "channels": {
    "nostr": {
      "relays": [
        "wss://relay.damus.io",
        "wss://nos.lol",
        "wss://relay.nostr.band"
      ]
    }
  }
}
Öffentliche Relays sind kostenlos, können aber Ratenlimits oder Spam aufweisen. Kostenpflichtige Relays bieten in der Regel bessere Leistung und Filterung.
Ihr Bot und seine Benutzer müssen nicht auf denselben Relays sein — die meisten Relays tauschen Ereignisse untereinander aus.

DM-Richtlinien

DM-Richtlinien (Direct Message) steuern, wer über Nostr mit Ihrem KI-Assistenten interagieren kann. Da Nostr von Natur aus offen ist, ist die Zugriffskontrolle besonders wichtig, um eine unbefugte Nutzung Ihres KI-Kontingents zu verhindern. OpenClaw unterstützt vier Richtlinien: • **pairing (Standard)** — Unbekannte Absender erhalten einen Pairing-Code. Sie genehmigen oder lehnen diese über 'openclaw pairing approve nostr <code>' ab. Nach der Genehmigung können sie frei chatten. • **allowlist** — Nur öffentliche Schlüssel (npub oder Hex), die in allowFrom aufgelistet sind, können dem Bot Nachrichten senden. Alle anderen werden stillschweigend ignoriert. • **open** — Jeder kann dem Bot Nachrichten senden. Erfordert allowFrom: ["*"] zur Aktivierung. Mit Vorsicht verwenden. • **disabled** — Der Bot antwortet auf keine eingehenden DMs.
openclaw.json
{
  "channels": {
    "nostr": {
      "dmPolicy": "allowlist",
      "allowFrom": [
        "npub1abc...xyz",
        "npub1def...uvw"
      ]
    }
  }
}

Profil-Metadaten (NIP-01)

Sie können ein Profil für Ihren Bot im Nostr-Netzwerk veröffentlichen, indem Sie NIP-01 kind:0 Metadaten-Ereignisse verwenden. Dadurch wird Ihr Bot in Nostr-Clients auffindbar — Benutzer sehen seinen Namen, Avatar, seine Biografie und weitere Details, wenn sie den npub des Bots nachschlagen. Konfigurierbare Profilfelder umfassen: • **name** — Kurzer Benutzername (z.B. "openclaw-bot") • **display_name** — Vollständiger Anzeigename • **about** — Biografie / Beschreibung • **picture** — Avatar-URL (HTTPS erforderlich) • **banner** — Banner-Bild-URL (HTTPS erforderlich) • **website** — Bot- oder Projekt-Website • **nip05** — NIP-05-Verifizierungskennung (z.B. "bot@yourdomain.com") • **lud16** — Lightning-Adresse für Zaps
openclaw.json
{
  "channels": {
    "nostr": {
      "profile": {
        "name": "openclaw-bot",
        "display_name": "OpenClaw AI Assistant",
        "about": "AI-powered assistant on Nostr. DM me!",
        "picture": "https://example.com/bot-avatar.png",
        "nip05": "bot@yourdomain.com"
      }
    }
  }
}
Die NIP-05-Verifizierung (bot@yourdomain.com) fügt in den meisten Nostr-Clients ein Häkchen hinzu und hilft Benutzern, die Identität Ihres Bots zu überprüfen.
Alle Bild-URLs (picture, banner) müssen HTTPS verwenden.

Verschlüsselung & Protokollunterstützung

Alle Direktnachrichten in der Nostr-Integration von OpenClaw verwenden NIP-04-Verschlüsselung — Nachrichten werden mit einem gemeinsamen Geheimnis verschlüsselt, das aus den Schlüsselpaaren von Absender und Empfänger mittels ECDH (Elliptic Curve Diffie-Hellman) abgeleitet wird. Derzeit unterstützte NIPs: • **NIP-01** — Basisprotokoll: Ereignisse, Abonnements, Metadaten (kind:0) • **NIP-04** — Verschlüsselte Direktnachrichten (kind:4) Geplante zukünftige Unterstützung: • **NIP-17** — Gift-wrapped private Nachrichten (verbesserter Metadatenschutz) • **NIP-44** — Versionierte Verschlüsselung (stärkere kryptografische Primitive) Während NIP-04 von allen Nostr-Clients weitgehend unterstützt wird, weist es bekannte Metadaten-Lecks auf (Relay-Betreiber können sehen, wer mit wem kommuniziert, jedoch nicht den Inhalt). NIP-17 und NIP-44 werden diese Einschränkungen beheben, sobald sie allgemein übernommen werden.
NIP-04 verschlüsselt den Nachrichteninhalt, aber nicht die Metadaten. Relay-Betreiber können die öffentlichen Schlüssel von Absender und Empfänger sowie Zeitstempel einsehen.
Für maximale Privatsphäre verwenden Sie ein dediziertes Schlüsselpaar für Ihren Bot und verbinden Sie sich über einen kostenpflichtigen oder selbst gehosteten Relay.

Testen mit einem lokalen Relay

Für Entwicklung und Tests können Sie einen lokalen Nostr-Relay betreiben, anstatt sich mit öffentlichen Relays zu verbinden. Der empfohlene Ansatz verwendet Strfry, einen leistungsstarken Relay, der einfach über Docker betrieben werden kann. Einrichtungsschritte: 1. Relay starten: 'docker run -p 7777:7777 hoytech/strfry' 2. OpenClaw für den lokalen Relay konfigurieren: ws://localhost:7777 3. Gateway starten 4. Einen Nostr-Client verwenden, der mit Ihrem lokalen Relay verbunden ist, um Test-DMs zu senden Dies isoliert Ihre Tests vom öffentlichen Nostr-Netzwerk und ermöglicht schnellere Iterationszyklen.
openclaw.json (development)
{
  "channels": {
    "nostr": {
      "relays": ["ws://localhost:7777"],
      "dmPolicy": "open",
      "allowFrom": ["*"]
    }
  }
}
Verwenden Sie dmPolicy: 'open' mit allowFrom: ['*'] während lokaler Tests, um den Pairing-Ablauf zu überspringen.

Nostr Konfigurationsreferenz

privateKey
Type: stringDefault: (required)

Privater Nostr-Schlüssel im nsec-Format (Bech32) oder 64-Zeichen-Hex-Format. Verwenden Sie eine Umgebungsvariablen-Referenz.

relays
Type: string[]Default: ["wss://relay.damus.io", "wss://nos.lol"]

Liste der Nostr-Relay-WebSocket-URLs, mit denen eine Verbindung hergestellt werden soll

dmPolicy
Type: stringDefault: "pairing"

DM-Zugriffskontrollrichtlinie: 'pairing', 'allowlist', 'open' oder 'disabled'

allowFrom
Type: string[]Default: []

Öffentliche Schlüssel (npub oder Hex), die dem Bot Nachrichten senden dürfen (wenn dmPolicy 'allowlist' ist)

enabled
Type: booleanDefault: true

Nostr-Kanal aktivieren oder deaktivieren

name
Type: stringDefault: ""

Anzeigename für diese Kanalinstanz

profile.name
Type: stringDefault: ""

Bot-Benutzername, veröffentlicht als NIP-01-Metadaten

profile.display_name
Type: stringDefault: ""

Vollständiger Anzeigename, veröffentlicht als NIP-01-Metadaten

profile.about
Type: stringDefault: ""

Bot-Biografie / Beschreibung, veröffentlicht als NIP-01-Metadaten

profile.picture
Type: stringDefault: ""

Avatar-Bild-URL (HTTPS erforderlich), veröffentlicht als NIP-01-Metadaten

profile.banner
Type: stringDefault: ""

Banner-Bild-URL (HTTPS erforderlich), veröffentlicht als NIP-01-Metadaten

profile.website
Type: stringDefault: ""

Website-URL, veröffentlicht als NIP-01-Metadaten

profile.nip05
Type: stringDefault: ""

NIP-05-Verifizierungskennung (z.B. 'bot@yourdomain.com')

profile.lud16
Type: stringDefault: ""

Lightning-Adresse für den Empfang von Zaps

Nostr Häufig gestellte Fragen

Nostr Fehlerbehebung

Bot startet, empfängt aber keine Nachrichten

Die Relay-Verbindung ist möglicherweise fehlgeschlagen, oder der Absender veröffentlicht auf anderen Relays als denen, die der Bot abonniert hat.

Überprüfen Sie die Gateway-Protokolle auf WebSocket-Verbindungsfehler. Stellen Sie sicher, dass Ihre Relay-URLs korrekt und erreichbar sind. Versuchen Sie, einen häufig genutzten öffentlichen Relay (z.B. wss://relay.damus.io) hinzuzufügen, den auch der Absender verwendet. Stellen Sie sicher, dass der private Schlüssel korrekt gesetzt ist.
Fehler: Ungültiges Format des privaten Schlüssels

Der private Schlüssel liegt nicht in einem gültigen nsec-Format (Bech32) oder 64-Zeichen-Hex-Format vor, oder die Umgebungsvariable ist nicht gesetzt.

Überprüfen Sie, ob die Umgebungsvariable korrekt exportiert wurde: 'echo $NOSTR_PRIVATE_KEY'. Stellen Sie sicher, dass der Schlüssel mit 'nsec1' beginnt (Bech32-Format) oder genau 64 Hex-Zeichen lang ist. Generieren Sie ihn bei Bedarf mit 'nak key generate' neu.
Nachrichten werden gesendet, aber nie an den Empfänger zugestellt

Die konfigurierten Relays des Bots und die Client-Relays des Empfängers überschneiden sich nicht, sodass Ereignisse sich nicht verbreiten können.

Fügen Sie mindestens einen Relay hinzu, den auch der Nostr-Client des Empfängers verwendet. Gängige öffentliche Relays wie relay.damus.io und nos.lol werden von den meisten Clients genutzt. Überprüfen Sie die Relay-Liste im Nostr-Client-Profil des Empfängers.
Plugin nach der Installation nicht gefunden

Das Gateway wurde nach der Plugin-Installation nicht neu gestartet, oder die Installation ist stillschweigend fehlgeschlagen.

Führen Sie 'openclaw plugins list' aus, um zu überprüfen, ob das Nostr-Plugin installiert ist. Falls nicht aufgelistet, führen Sie 'openclaw plugins install @openclaw/nostr' erneut aus. Starten Sie das Gateway nach der Installation mit 'openclaw start' neu.