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) undopenclaw channels addlisten 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
- Generiere ein Nostr-Schlüsselpaar (falls nötig):
# Mit nak
nak key generate
- Zur Konfiguration hinzufügen:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
- Schlüssel exportieren:
export NOSTR_PRIVATE_KEY="nsec1..."
- Gateway neustarten.
Konfigurationsreferenz
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
privateKey | String | erforderlich | Privater Schlüssel im nsec- oder Hex-Format |
relays | String[] | ['wss://relay.damus.io', 'wss://nos.lol'] | Relay-URLs (WebSocket) |
dmPolicy | String | pairing | DM-Zugriffsrichtlinie |
allowFrom | String[] | [] | Erlaubte Absender-Pubkeys |
enabled | Boolean | true | Kanal aktivieren/deaktivieren |
name | String | - | Anzeigename |
profile | Objekt | - | 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
allowFromkö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
| NIP | Status | Beschreibung |
|---|---|---|
| NIP-01 | Unterstützt | Basis-Eventformat + Profilmetadaten |
| NIP-04 | Unterstützt | Verschlüsselte DMs (kind:4) |
| NIP-17 | Geplant | Gift-Wrapped DMs |
| NIP-44 | Geplant | Versionierte 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
- Notiere den Bot-Pubkey (npub) aus den Logs.
- Öffne einen Nostr-Client (Damus, Amethyst usw.).
- Sende eine DM an den Bot-Pubkey.
- Ü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 (oderws://für lokal). - Bestätige, dass
enablednichtfalseist. - 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
allowlistfür Produktions-Bots.
Einschränkungen (MVP)
- Nur Direktnachrichten (keine Gruppenchats).
- Keine Medienanhänge.
- Nur NIP-04 (NIP-17 Gift-Wrap geplant).