Nostr

Status: Optionele plugin (standaard uitgeschakeld).

Nostr is een gedecentraliseerd protocol voor sociale netwerken. Dit kanaal stelt OpenClaw in staat om versleutelde directe berichten (DM’s) via NIP-04 te ontvangen en te beantwoorden.

Installeren (op aanvraag)

Onboarding (aanbevolen)

  • De onboarding-wizard (openclaw onboard) en openclaw channels add tonen optionele kanaalplugins.
  • Door Nostr te selecteren word je gevraagd de plugin op aanvraag te installeren.

Standaard installatie:

  • Dev-kanaal + git checkout beschikbaar: gebruikt het lokale pluginpad.
  • Stable/Beta: downloadt van npm.

Je kunt de keuze altijd overschrijven bij de prompt.

Handmatig installeren

openclaw plugins install @openclaw/nostr

Gebruik een lokale checkout (dev-workflows):

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

Herstart de Gateway na het installeren of inschakelen van plugins.

Snelle start

  1. Genereer een Nostr-sleutelpaar (indien nodig):
# Using nak
nak key generate
  1. Voeg toe aan de configuratie:
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}"
    }
  }
}
  1. Exporteer de sleutel:
export NOSTR_PRIVATE_KEY="nsec1..."
  1. Herstart de Gateway.

Configuratiereferentie

SleutelTypeStandaardBeschrijving
privateKeystringvereistPrivésleutel in nsec- of hexformaat
relaysstring[]['wss://relay.damus.io', 'wss://nos.lol']Relay-URL’s (WebSocket)
dmPolicystringpairingDM-toegangsbeleid
allowFromstring[][]Toegestane afzender-pubkeys
enabledbooleantrueKanaal in-/uitschakelen
namestring-Weergavenaam
profileobject-NIP-01 profielmetadata

Profielmetadata

Profieldata wordt gepubliceerd als een NIP-01 kind:0-event. Je kunt het beheren vanuit de Control UI (Channels -> Nostr -> Profile) of direct instellen in de configuratie.

Voorbeeld:

{
  "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]"
      }
    }
  }
}

Opmerkingen:

  • Profiel-URL’s moeten https:// gebruiken.
  • Importeren van relays combineert velden en behoudt lokale overschrijvingen.

Toegangscontrole

DM-beleidsregels

  • pairing (standaard): onbekende afzenders krijgen een koppelingscode.
  • allowlist: alleen pubkeys in allowFrom mogen DM’en.
  • open: openbare inkomende DM’s (vereist allowFrom: ["*"]).
  • disabled: negeer inkomende DM’s.

Allowlist-voorbeeld

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

Sleutelformaten

Geaccepteerde formaten:

  • Privésleutel: nsec... of 64-teken hex
  • Pubkeys (allowFrom): npub... of hex

Relays

Standaard: relay.damus.io en nos.lol.

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

Tips:

  • Gebruik 2-3 relays voor redundantie.
  • Vermijd te veel relays (latentie, duplicatie).
  • Betaalde relays kunnen de betrouwbaarheid verbeteren.
  • Lokale relays zijn prima voor testen (ws://localhost:7777).

Protocolondersteuning

NIPStatusBeschrijving
NIP-01OndersteundBasis eventformaat + profielmetadata
NIP-04OndersteundVersleutelde DM’s (kind:4)
NIP-17GeplandGift-wrapped DM’s
NIP-44GeplandVersioned versleuteling

Testen

Lokale relay

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

Handmatige test

  1. Noteer de bot-pubkey (npub) uit de logs.
  2. Open een Nostr-client (Damus, Amethyst, etc.).
  3. DM de bot-pubkey.
  4. Controleer het antwoord.

Probleemoplossing

Ontvangt geen berichten

  • Controleer of de privésleutel geldig is.
  • Zorg dat relay-URL’s bereikbaar zijn en wss:// gebruiken (of ws:// voor lokaal).
  • Bevestig dat enabled niet false is.
  • Controleer Gateway-logs op relay-verbindingsfouten.

Stuurt geen antwoorden

  • Controleer of de relay schrijfbewerkingen accepteert.
  • Controleer uitgaande connectiviteit.
  • Let op relay rate limits.

Dubbele antwoorden

  • Verwacht bij gebruik van meerdere relays.
  • Berichten worden ontdubbeld op basis van event-ID; alleen de eerste aflevering triggert een antwoord.

Beveiliging

  • Commit nooit privésleutels.
  • Gebruik omgevingsvariabelen voor sleutels.
  • Overweeg allowlist voor productie-bots.

Beperkingen (MVP)

  • Alleen directe berichten (geen groepschats).
  • Geen mediabijlagen.
  • Alleen NIP-04 (NIP-17 gift-wrap gepland).