Nostr

Statut : Plugin optionnel (desactive par defaut).

Nostr est un protocole decentralise pour les reseaux sociaux. Ce canal permet a OpenClaw de recevoir et repondre aux messages prives chiffres (DMs) via NIP-04.

Installation (a la demande)

Onboarding (recommande)

  • L’assistant d’onboarding (openclaw onboard) et openclaw channels add listent les plugins de canaux optionnels.
  • Selectionner Nostr vous invite a installer le plugin a la demande.

Valeurs par defaut d’installation :

  • Canal dev + checkout git disponible : utilise le chemin local du plugin.
  • Stable/Beta : telecharge depuis npm.

Vous pouvez toujours remplacer le choix dans l’invite.

Installation manuelle

openclaw plugins install @openclaw/nostr

Utilisation d’un checkout local (workflows dev) :

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

Redemarrez la Gateway apres l’installation ou l’activation de plugins.

Configuration rapide

  1. Generez une paire de cles Nostr (si necessaire) :
# En utilisant nak
nak key generate
  1. Ajoutez a la config :
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}"
    }
  }
}
  1. Exportez la cle :
export NOSTR_PRIVATE_KEY="nsec1..."
  1. Redemarrez la Gateway.

Reference de configuration

CleTypeDefautDescription
privateKeystringrequisCle privee au format nsec ou hex
relaysstring[]['wss://relay.damus.io', 'wss://nos.lol']URL des relais (WebSocket)
dmPolicystringpairingPolitique d’acces aux DMs
allowFromstring[][]Cles publiques des expediteurs autorises
enabledbooleantrueActiver/desactiver le canal
namestring-Nom d’affichage
profileobject-Metadonnees de profil NIP-01

Metadonnees de profil

Les donnees de profil sont publiees comme evenement NIP-01 kind:0. Vous pouvez les gerer depuis l’interface de controle (Channels -> Nostr -> Profile) ou les definir directement dans la config.

Exemple :

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

Remarques :

  • Les URLs de profil doivent utiliser https://.
  • L’importation depuis les relais fusionne les champs et preserve les remplacements locaux.

Controle d’acces

Politiques DM

  • pairing (par defaut) : les expediteurs inconnus recoivent un code d’appairage.
  • allowlist : seules les cles publiques dans allowFrom peuvent envoyer des DMs.
  • open : DMs entrants publics (necessite allowFrom: ["*"]).
  • disabled : ignorer les DMs entrants.

Exemple de liste d’autorisation

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

Formats de cle

Formats acceptes :

  • Cle privee : nsec... ou hex 64 caracteres
  • Cles publiques (allowFrom) : npub... ou hex

Relais

Par defaut : relay.damus.io et nos.lol.

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

Conseils :

  • Utilisez 2-3 relais pour la redondance.
  • Evitez trop de relais (latence, duplication).
  • Les relais payants peuvent ameliorer la fiabilite.
  • Les relais locaux conviennent pour les tests (ws://localhost:7777).

Support du protocole

NIPStatutDescription
NIP-01Pris en chargeFormat d’evenement de base + metadonnees de profil
NIP-04Pris en chargeDMs chiffres (kind:4)
NIP-17PrevuDMs enveloppes (gift-wrapped)
NIP-44PrevuChiffrement versionne

Tests

Relais local

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

Test manuel

  1. Notez la cle publique du bot (npub) depuis les logs.
  2. Ouvrez un client Nostr (Damus, Amethyst, etc.).
  3. Envoyez un DM a la cle publique du bot.
  4. Verifiez la reponse.

Depannage

Pas de reception de messages

  • Verifiez que la cle privee est valide.
  • Assurez-vous que les URLs des relais sont accessibles et utilisent wss:// (ou ws:// pour local).
  • Confirmez que enabled n’est pas false.
  • Verifiez les logs de la Gateway pour les erreurs de connexion aux relais.

Pas d’envoi de reponses

  • Verifiez que le relais accepte les ecritures.
  • Verifiez la connectivite sortante.
  • Surveillez les limites de debit des relais.

Reponses dupliquees

  • Attendu lors de l’utilisation de plusieurs relais.
  • Les messages sont dedupliques par ID d’evenement ; seule la premiere livraison declenche une reponse.

Securite

  • Ne committez jamais les cles privees.
  • Utilisez des variables d’environnement pour les cles.
  • Envisagez allowlist pour les bots en production.

Limitations (MVP)

  • Messages prives uniquement (pas de discussions de groupe).
  • Pas de pieces jointes multimedia.
  • NIP-04 uniquement (NIP-17 gift-wrap prevu).