Nostr

Stato: Plugin opzionale (disabilitato per impostazione predefinita).

Nostr e un protocollo decentralizzato per il social networking. Questo canale permette a OpenClaw di ricevere e rispondere a messaggi diretti (DM) crittografati via NIP-04.

Installazione (su richiesta)

Onboarding (consigliato)

  • Il wizard di onboarding (openclaw onboard) e openclaw channels add elencano i plugin canale opzionali.
  • Selezionando Nostr ti viene proposto di installare il plugin su richiesta.

Valori predefiniti dell’installazione:

  • Canale dev + checkout git disponibile: usa il percorso locale del plugin.
  • Stable/Beta: scarica da npm.

Puoi sempre sovrascrivere la scelta nel prompt.

Installazione manuale

openclaw plugins install @openclaw/nostr

Da checkout locale (flussi di sviluppo):

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

Riavvia il Gateway dopo aver installato o abilitato i plugin.

Setup rapido

  1. Genera una coppia di chiavi Nostr (se necessario):
# Usando nak
nak key generate
  1. Aggiungi al config:
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}"
    }
  }
}
  1. Esporta la chiave:
export NOSTR_PRIVATE_KEY="nsec1..."
  1. Riavvia il Gateway.

Riferimento configurazione

ChiaveTipoPredefinitoDescrizione
privateKeystringobbligatorioChiave privata in formato nsec o esadecimale
relaysstring[]['wss://relay.damus.io', 'wss://nos.lol']URL dei relay (WebSocket)
dmPolicystringpairingPolicy di accesso DM
allowFromstring[][]Chiavi pubbliche dei mittenti consentiti
enabledbooleantrueAbilita/disabilita il canale
namestring-Nome visualizzato
profileobject-Metadati profilo NIP-01

Metadati profilo

I dati del profilo vengono pubblicati come evento NIP-01 kind:0. Puoi gestirli dalla Control UI (Channels -> Nostr -> Profile) o impostarli direttamente nel config.

Esempio:

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

Note:

  • Gli URL del profilo devono usare https://.
  • L’importazione dai relay unisce i campi e preserva le sovrascritture locali.

Controllo degli accessi

Policy DM

  • pairing (predefinito): i mittenti sconosciuti ricevono un codice di pairing.
  • allowlist: solo le chiavi pubbliche in allowFrom possono inviare DM.
  • open: DM in ingresso pubblici (richiede allowFrom: ["*"]).
  • disabled: ignora i DM in ingresso.

Esempio allowlist

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

Formati delle chiavi

Formati accettati:

  • Chiave privata: nsec... o esadecimale 64 caratteri
  • Chiavi pubbliche (allowFrom): npub... o esadecimale

Relay

Predefiniti: relay.damus.io e nos.lol.

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

Suggerimenti:

  • Usa 2-3 relay per ridondanza.
  • Evita troppi relay (latenza, duplicazione).
  • I relay a pagamento possono migliorare l’affidabilita.
  • I relay locali vanno bene per i test (ws://localhost:7777).

Supporto protocollo

NIPStatoDescrizione
NIP-01SupportatoFormato evento base + metadati profilo
NIP-04SupportatoDM crittografati (kind:4)
NIP-17PianificatoDM gift-wrapped
NIP-44PianificatoCrittografia versionata

Test

Relay locale

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

Test manuale

  1. Annota la chiave pubblica del bot (npub) dai log.
  2. Apri un client Nostr (Damus, Amethyst, ecc.).
  3. Invia un DM alla chiave pubblica del bot.
  4. Verifica la risposta.

Risoluzione problemi

Non riceve messaggi

  • Verifica che la chiave privata sia valida.
  • Assicurati che gli URL dei relay siano raggiungibili e usino wss:// (o ws:// per locale).
  • Conferma che enabled non sia false.
  • Controlla i log del Gateway per errori di connessione ai relay.

Non invia risposte

  • Controlla che il relay accetti scritture.
  • Verifica la connettivita in uscita.
  • Fai attenzione ai rate limit dei relay.

Risposte duplicate

  • Previste quando si usano piu relay.
  • I messaggi sono deduplicati per ID evento; solo la prima consegna attiva una risposta.

Sicurezza

  • Non committare mai le chiavi private.
  • Usa variabili d’ambiente per le chiavi.
  • Considera allowlist per i bot in produzione.

Limitazioni (MVP)

  • Solo messaggi diretti (niente chat di gruppo).
  • Niente allegati multimediali.
  • Solo NIP-04 (NIP-17 gift-wrap pianificato).