Nostr
Status: Optionales Plugin (standardmäßig deaktiviert).
Nostr ist ein dezentrales Protokoll für soziale Netzwerke. Dieser Channel ermöglicht es OpenClaw, verschlüsselte Direktnachrichten (DMs) über NIP-04 zu empfangen und zu beantworten.
Installation (on demand)
Onboarding (empfohlen)
- Der Onboarding-Wizard (
openclaw onboard) undopenclaw channels addlisten optionale Channel-Plugins auf. - Wenn du Nostr auswählst, wirst du aufgefordert, das Plugin bei Bedarf zu installieren.
Standard-Installationsverhalten:
- Dev-Channel + Git-Checkout verfügbar: verwendet den lokalen Plugin-Pfad.
- Stable/Beta: lädt von npm herunter.
Du kannst die Auswahl im Prompt jederzeit überschreiben.
Manuelle Installation
openclaw plugins install @openclaw/nostr
Lokalen Checkout verwenden (für Dev-Workflows):
openclaw plugins install --link <path-to-openclaw>/extensions/nostr
Starte den Gateway nach der Installation oder Aktivierung von Plugins neu.
Schnellstart
- Nostr-Keypair generieren (falls nötig):
# Mit nak
nak key generate
- Zur Config hinzufügen:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
- Key exportieren:
export NOSTR_PRIVATE_KEY="nsec1..."
- Gateway neu starten.
Konfigurationsreferenz
| Key | Typ | Standard | Beschreibung |
|---|---|---|---|
privateKey | string | erforderlich | Private Key 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 Sender-Pubkeys |
enabled | boolean | true | Channel aktivieren/deaktivieren |
name | string | - | Anzeigename |
profile | object | - | NIP-01 Profil-Metadaten |
Profil-Metadaten
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 Config 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. - Beim Import von Relays werden Felder zusammengeführt und lokale Überschreibungen bleiben erhalten.
Zugriffskontrolle
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..."]
}
}
}
Key-Formate
Akzeptierte Formate:
- Private Key:
nsec...oder 64-Zeichen Hex - Pubkeys (
allowFrom):npub...oder Hex
Relays
Standard: 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 sind für Tests in Ordnung (
ws://localhost:7777).
Protokoll-Unterstützung
| NIP | Status | Beschreibung |
|---|---|---|
| NIP-01 | Unterstützt | Basis-Event-Format + Profil-Metadaten |
| NIP-04 | Unterstützt | Verschlüsselte DMs (kind:4) |
| NIP-17 | Geplant | Gift-wrapped DMs |
| NIP-44 | Geplant | Versionierte Verschlüsselung |
Testing
Lokales 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, etc.).
- Sende eine DM an den Bot-Pubkey.
- Überprüfe die Antwort.
Troubleshooting
Nachrichten werden nicht empfangen
- Prüfe, ob der Private Key gültig ist.
- Stelle sicher, dass Relay-URLs erreichbar sind und
wss://verwenden (oderws://für lokal). - Bestätige, dass
enablednicht auffalsesteht. - Prüfe die Gateway-Logs auf Relay-Verbindungsfehler.
Antworten werden nicht gesendet
- Prüfe, ob das Relay Schreibzugriffe akzeptiert.
- Überprüfe die ausgehende Konnektivität.
- Achte auf Relay-Rate-Limits.
Doppelte Antworten
- Das ist normal bei mehreren Relays.
- Nachrichten werden anhand der Event-ID dedupliziert; nur die erste Zustellung löst eine Antwort aus.
Sicherheit
- Committe niemals Private Keys.
- Verwende Umgebungsvariablen für Keys.
- Erwäge
allowlistfür Produktions-Bots.
Einschränkungen (MVP)
- Nur Direktnachrichten (keine Gruppenchats).
- Keine Medien-Anhänge.
- Nur NIP-04 (NIP-17 Gift-Wrap ist geplant).