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) eopenclaw channels addelencano 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
- Genera una coppia di chiavi Nostr (se necessario):
# Usando nak
nak key generate
- Aggiungi al config:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
- Esporta la chiave:
export NOSTR_PRIVATE_KEY="nsec1..."
- Riavvia il Gateway.
Riferimento configurazione
| Chiave | Tipo | Predefinito | Descrizione |
|---|---|---|---|
privateKey | string | obbligatorio | Chiave privata in formato nsec o esadecimale |
relays | string[] | ['wss://relay.damus.io', 'wss://nos.lol'] | URL dei relay (WebSocket) |
dmPolicy | string | pairing | Policy di accesso DM |
allowFrom | string[] | [] | Chiavi pubbliche dei mittenti consentiti |
enabled | boolean | true | Abilita/disabilita il canale |
name | string | - | Nome visualizzato |
profile | object | - | 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
allowFrompossono 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
| NIP | Stato | Descrizione |
|---|---|---|
| NIP-01 | Supportato | Formato evento base + metadati profilo |
| NIP-04 | Supportato | DM crittografati (kind:4) |
| NIP-17 | Pianificato | DM gift-wrapped |
| NIP-44 | Pianificato | Crittografia 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
- Annota la chiave pubblica del bot (npub) dai log.
- Apri un client Nostr (Damus, Amethyst, ecc.).
- Invia un DM alla chiave pubblica del bot.
- 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://(ows://per locale). - Conferma che
enablednon siafalse. - 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
allowlistper i bot in produzione.
Limitazioni (MVP)
- Solo messaggi diretti (niente chat di gruppo).
- Niente allegati multimediali.
- Solo NIP-04 (NIP-17 gift-wrap pianificato).