Nostr

Status: Optionales Plugin (standardmäßig deaktiviert).

Nostr ist ein dezentrales Protokoll für soziale Netzwerke. Dieser Kanal ermöglicht es OpenClaw, verschlüsselte Direktnachrichten (DMs) über NIP-04 zu empfangen und zu beantworten.

Installation (bei Bedarf)

Onboarding (empfohlen)

  • Der Onboarding-Assistent (openclaw onboard) und openclaw channels add listen optionale Kanal-Plugins auf.
  • Bei Auswahl von Nostr wirst du aufgefordert, das Plugin bei Bedarf zu installieren.

Installationsstandards:

  • Dev-Kanal + Git-Checkout vorhanden: verwendet den lokalen Plugin-Pfad.
  • Stable/Beta: lädt von npm herunter.

Du kannst die Auswahl jederzeit in der Eingabeaufforderung überschreiben.

Manuelle Installation

openclaw plugins install @openclaw/nostr

Lokaler Checkout (Dev-Workflows):

openclaw plugins install --link <path-to-openclaw>/extensions/nostr

Starte das Gateway nach der Installation oder Aktivierung von Plugins neu.

Schnelleinrichtung

  1. Generiere ein Nostr-Schlüsselpaar (falls nötig):
# Mit nak
nak key generate
  1. Zur Konfiguration hinzufügen:
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}"
    }
  }
}
  1. Schlüssel exportieren:
export NOSTR_PRIVATE_KEY="nsec1..."
  1. Gateway neustarten.

Konfigurationsreferenz

SchlüsselTypStandardBeschreibung
privateKeyStringerforderlichPrivater Schlüssel im nsec- oder Hex-Format
relaysString[]['wss://relay.damus.io', 'wss://nos.lol']Relay-URLs (WebSocket)
dmPolicyStringpairingDM-Zugriffsrichtlinie
allowFromString[][]Erlaubte Absender-Pubkeys
enabledBooleantrueKanal aktivieren/deaktivieren
nameString-Anzeigename
profileObjekt-NIP-01-Profilmetadaten

Profilmetadaten

Profildaten werden als NIP-01 kind:0-Event veröffentlicht. Du kannst sie über die Control UI (Channels -> Nostr -> Profile) verwalten oder direkt in der Konfiguration setzen.

Beispiel:

{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "profile": {
        "name": "openclaw",
        "displayName": "OpenClaw",
        "about": "Personal assistant DM bot",
        "picture": "https://example.com/avatar.png",
        "banner": "https://example.com/banner.png",
        "website": "https://example.com",
        "nip05": "[email protected]",
        "lud16": "[email protected]"
      }
    }
  }
}

Hinweise:

  • Profil-URLs müssen https:// verwenden.
  • Das Importieren von Relays führt Felder zusammen und bewahrt lokale Überschreibungen.

Zugriffssteuerung

DM-Richtlinien

  • pairing (Standard): Unbekannte Absender erhalten einen Pairing-Code.
  • allowlist: Nur Pubkeys in allowFrom können DMs senden.
  • open: Öffentliche eingehende DMs (erfordert allowFrom: ["*"]).
  • disabled: Eingehende DMs ignorieren.

Allowlist-Beispiel

{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "dmPolicy": "allowlist",
      "allowFrom": ["npub1abc...", "npub1xyz..."]
    }
  }
}

Schlüsselformate

Akzeptierte Formate:

  • Privater Schlüssel: nsec... oder 64-Zeichen-Hex
  • Pubkeys (allowFrom): npub... oder Hex

Relays

Standards: relay.damus.io und nos.lol.

{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "relays": ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"]
    }
  }
}

Tipps:

  • Verwende 2-3 Relays für Redundanz.
  • Vermeide zu viele Relays (Latenz, Duplikate).
  • Bezahlte Relays können die Zuverlässigkeit verbessern.
  • Lokale Relays eignen sich zum Testen (ws://localhost:7777).

Protokollunterstützung

NIPStatusBeschreibung
NIP-01UnterstütztBasis-Eventformat + Profilmetadaten
NIP-04UnterstütztVerschlüsselte DMs (kind:4)
NIP-17GeplantGift-Wrapped DMs
NIP-44GeplantVersionierte Verschlüsselung

Testen

Lokaler Relay

# strfry starten
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "relays": ["ws://localhost:7777"]
    }
  }
}

Manueller Test

  1. Notiere den Bot-Pubkey (npub) aus den Logs.
  2. Öffne einen Nostr-Client (Damus, Amethyst usw.).
  3. Sende eine DM an den Bot-Pubkey.
  4. Überprüfe die Antwort.

Fehlerbehebung

Nachrichten werden nicht empfangen

  • Überprüfe, ob der private Schlüssel gültig ist.
  • Stelle sicher, dass Relay-URLs erreichbar sind und wss:// verwenden (oder ws:// für lokal).
  • Bestätige, dass enabled nicht false ist.
  • Prüfe die Gateway-Logs auf Relay-Verbindungsfehler.

Antworten werden nicht gesendet

  • Prüfe, ob der Relay Schreibzugriff akzeptiert.
  • Überprüfe die ausgehende Konnektivität.
  • Achte auf Relay-Rate-Limits.

Doppelte Antworten

  • Erwartet bei Verwendung mehrerer Relays.
  • Nachrichten werden nach Event-ID dedupliziert; nur die erste Zustellung löst eine Antwort aus.

Sicherheit

  • Committe niemals private Schlüssel.
  • Verwende Umgebungsvariablen für Schlüssel.
  • Erwäge allowlist für Produktions-Bots.

Einschränkungen (MVP)

  • Nur Direktnachrichten (keine Gruppenchats).
  • Keine Medienanhänge.
  • Nur NIP-04 (NIP-17 Gift-Wrap geplant).