OpenClaw

Canal Nostr OpenClaw

Décentralisé
Avancé

Connectez OpenClaw au réseau décentralisé Nostr via un plugin optionnel. Cette intégration permet à votre assistant IA de recevoir et de répondre aux messages directs chiffrés NIP-04 à travers n'importe quel relay Nostr — aucun serveur centralisé, aucun compte à créer, juste une paire de clés cryptographiques et une connexion relay. Idéal pour les déploiements axés sur la confidentialité où la résistance à la censure et la souveraineté individuelle comptent.

Info rapide
DifficultéAvancé
CatégorieDécentralisé
Fonctionnalités prises en charge2 / 6

Nostr Fonctionnalités prises en charge

Messages texte

Pris en charge

Médias et fichiers

Non pris en charge

Réactions

Pris en charge

Fils de discussion

Non pris en charge

Messages vocaux

Non pris en charge

Discussion de groupe

Non pris en charge

Nostr Prérequis

  • OpenClaw Gateway installé et en cours d'exécution
  • Une paire de clés Nostr (clé privée au format nsec ou hexadécimal) — générez-la avec 'nak key generate'
  • Au moins un relay Nostr accessible via WebSocket (par ex., wss://relay.damus.io)
  • Node.js 18+ installé sur votre serveur

Nostr Configuration rapide

1

Installer le plugin Nostr

Exécutez 'openclaw plugins install @openclaw/nostr' pour ajouter le canal Nostr. Vous pouvez également utiliser 'openclaw onboard' ou 'openclaw channels add' et sélectionner Nostr dans la liste des plugins. Redémarrez le Gateway après l'installation.

2

Générer une paire de clés et configurer

Générez une paire de clés Nostr avec 'nak key generate'. Définissez la clé privée comme variable d'environnement (export NOSTR_PRIVATE_KEY="nsec1...") et référencez-la dans votre configuration openclaw.json en utilisant ${NOSTR_PRIVATE_KEY}.

3

Démarrer et envoyer un DM de test

Redémarrez le Gateway avec 'openclaw start'. Retrouvez la clé publique (npub) de votre bot dans les journaux de démarrage. Ouvrez n'importe quel client Nostr (par ex., Damus, Amethyst, Primal) et envoyez un DM chiffré à la npub du bot. Si vous utilisez la politique d'appairage par défaut, approuvez l'expéditeur via le CLI.

Nostr Exemple de configuration

config.json
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "relays": [
        "wss://relay.damus.io",
        "wss://nos.lol"
      ],
      "dmPolicy": "pairing"
    }
  }
}

Nostr Documentation Détaillée

Vue d'ensemble de l'architecture

Contrairement aux plateformes de messagerie centralisées, Nostr est un protocole décentralisé où les messages sont distribués via des serveurs relay indépendants. OpenClaw se connecte à un ou plusieurs relays via WebSocket et s'abonne aux messages directs chiffrés NIP-04 adressés à la clé publique du bot. Le flux de messages est simple : 1. Un utilisateur envoie un DM chiffré depuis n'importe quel client Nostr (Damus, Amethyst, Primal, etc.) 2. Le message se propage vers les relays sur lesquels l'utilisateur publie 3. L'abonnement relay d'OpenClaw récupère l'événement 4. Le Gateway déchiffre le message, le traite via votre agent IA, chiffre la réponse et la publie sur les relays configurés Étant donné que Nostr repose sur des relays, il n'y a pas de point de défaillance unique — si un relay tombe en panne, les messages peuvent toujours transiter par les autres. Le bot et ses utilisateurs n'ont pas besoin d'utiliser exactement les mêmes relays, car les relays échangent souvent les événements entre eux.
La clé publique du bot est dérivée de la clé privée et affichée dans les journaux de démarrage du Gateway. Partagez cette npub avec les utilisateurs afin qu'ils puissent trouver et contacter votre bot.
Nostr n'a pas de concept de « statut en ligne » — les messages sont stockés sur les relays et délivrés dès que le client se connecte.

Installation du plugin

Le canal Nostr est distribué en tant que plugin optionnel OpenClaw plutôt que d'être intégré directement dans le Gateway de base. Cela permet de garder l'installation de base légère tout en vous permettant d'ajouter la prise en charge de Nostr lorsque nécessaire. Plusieurs méthodes d'installation sont disponibles : • **npm (recommandé) :** Exécutez 'openclaw plugins install @openclaw/nostr' pour installer la version stable. • **Canal bêta :** Utilisez 'openclaw plugins install @openclaw/nostr@beta' pour les fonctionnalités en pré-version. • **Développement local :** Clonez le dépôt du plugin et utilisez 'openclaw plugins install --link /path/to/local/checkout' pour le lier. • **Configuration interactive :** Exécutez 'openclaw onboard' ou 'openclaw channels add' et sélectionnez Nostr dans la liste. Après l'installation, redémarrez le Gateway pour que le plugin prenne effet.
Exécutez 'openclaw plugins list' pour vérifier que le plugin Nostr est installé et actif.

Génération et gestion des clés

L'identité Nostr repose sur la cryptographie à clé publique. L'identité de votre bot est sa paire de clés — une clé privée (nsec) utilisée pour la signature et le déchiffrement, et une clé publique (npub) utilisée comme adresse. Générez une paire de clés à l'aide de l'outil CLI 'nak' : 1. Installez nak : 'go install github.com/fiatjaf/nak@latest' (ou téléchargez depuis les releases) 2. Générez : 'nak key generate' — cela affiche la clé privée au format hex 3. Dérivez la clé publique : 'nak key public <hex-private-key>' — convertissez en npub si nécessaire OpenClaw accepte les clés privées au format nsec (encodé Bech32) et au format hexadécimal de 64 caractères. Les clés publiques dans allowFrom peuvent utiliser le format npub ou hexadécimal.
openclaw.json
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}"
    }
  }
}
Ne codez jamais votre clé privée directement dans openclaw.json. Utilisez toujours une variable d'environnement (par ex., ${NOSTR_PRIVATE_KEY}) et définissez-la via 'export NOSTR_PRIVATE_KEY="nsec1..."' dans votre shell ou un fichier .env.

Configuration des relays

Les relays sont l'épine dorsale de Nostr — ils stockent et distribuent les événements. OpenClaw se connecte à vos relays configurés via WebSocket pour envoyer et recevoir des DMs chiffrés. La configuration par défaut utilise deux relays publics bien connus : relay.damus.io et nos.lol. Pour une utilisation en production, vous devriez personnaliser cette configuration selon vos besoins. Conseils pour la sélection des relays : • Utilisez 2 à 3 relays pour un bon équilibre entre redondance et performance • Un trop grand nombre de relays augmente la latence et la consommation de bande passante • Les relays payants (par ex., relay.nostr.band) offrent une meilleure fiabilité et moins de spam • Pour le développement, exécutez un relay local (par ex., Strfry via Docker) sur ws://localhost:7777
openclaw.json
{
  "channels": {
    "nostr": {
      "relays": [
        "wss://relay.damus.io",
        "wss://nos.lol",
        "wss://relay.nostr.band"
      ]
    }
  }
}
Les relays publics sont gratuits mais peuvent avoir des limites de débit ou du spam. Les relays payants offrent généralement de meilleures performances et un meilleur filtrage.
Votre bot et ses utilisateurs n'ont pas besoin d'être sur les mêmes relays — la plupart des relays échangent les événements entre eux.

Politiques de DM

Les politiques de DM (Direct Message) contrôlent qui peut interagir avec votre assistant IA via Nostr. Étant donné que Nostr est ouvert par conception, le contrôle d'accès est particulièrement important pour empêcher l'utilisation non autorisée de votre quota IA. OpenClaw prend en charge quatre politiques : • **pairing (par défaut)** — Les expéditeurs inconnus reçoivent un code d'appairage. Vous les approuvez ou les refusez via 'openclaw pairing approve nostr <code>'. Une fois approuvés, ils peuvent discuter librement. • **allowlist** — Seules les clés publiques (npub ou hex) listées dans allowFrom peuvent envoyer des messages au bot. Tous les autres sont ignorés silencieusement. • **open** — Tout le monde peut envoyer des messages au bot. Nécessite allowFrom: ["*"] pour être activé. À utiliser avec précaution. • **disabled** — Le bot ne répond à aucun DM entrant.
openclaw.json
{
  "channels": {
    "nostr": {
      "dmPolicy": "allowlist",
      "allowFrom": [
        "npub1abc...xyz",
        "npub1def...uvw"
      ]
    }
  }
}

Métadonnées de profil (NIP-01)

Vous pouvez publier un profil pour votre bot sur le réseau Nostr en utilisant les événements de métadonnées kind:0 de NIP-01. Cela rend votre bot découvrable dans les clients Nostr — les utilisateurs verront son nom, son avatar, sa biographie et d'autres détails lorsqu'ils rechercheront la npub du bot. Les champs de profil configurables incluent : • **name** — Nom d'utilisateur court (par ex., "openclaw-bot") • **display_name** — Nom d'affichage complet • **about** — Biographie / description • **picture** — URL de l'avatar (HTTPS obligatoire) • **banner** — URL de l'image de bannière (HTTPS obligatoire) • **website** — Site web du bot ou du projet • **nip05** — Identifiant de vérification NIP-05 (par ex., "bot@yourdomain.com") • **lud16** — Adresse Lightning pour les zaps
openclaw.json
{
  "channels": {
    "nostr": {
      "profile": {
        "name": "openclaw-bot",
        "display_name": "OpenClaw AI Assistant",
        "about": "AI-powered assistant on Nostr. DM me!",
        "picture": "https://example.com/bot-avatar.png",
        "nip05": "bot@yourdomain.com"
      }
    }
  }
}
La vérification NIP-05 (bot@yourdomain.com) ajoute une coche dans la plupart des clients Nostr et aide les utilisateurs à vérifier l'identité de votre bot.
Toutes les URLs d'images (picture, banner) doivent utiliser HTTPS.

Chiffrement et prise en charge du protocole

Tous les messages directs dans l'intégration Nostr d'OpenClaw utilisent le chiffrement NIP-04 — les messages sont chiffrés avec un secret partagé dérivé des paires de clés de l'expéditeur et du destinataire via ECDH (Elliptic Curve Diffie-Hellman). NIPs actuellement pris en charge : • **NIP-01** — Protocole de base : événements, abonnements, métadonnées (kind:0) • **NIP-04** — Messages directs chiffrés (kind:4) Prise en charge future prévue : • **NIP-17** — Messages privés encapsulés (confidentialité améliorée des métadonnées) • **NIP-44** — Chiffrement versionné (primitives cryptographiques renforcées) Bien que NIP-04 soit largement pris en charge par tous les clients Nostr, il présente des fuites de métadonnées connues (les opérateurs de relay peuvent voir qui communique avec qui, mais pas le contenu). NIP-17 et NIP-44 combleront ces limitations une fois adoptés.
NIP-04 chiffre le contenu des messages mais pas les métadonnées. Les opérateurs de relay peuvent voir les clés publiques de l'expéditeur et du destinataire ainsi que les horodatages.
Pour une confidentialité maximale, utilisez une paire de clés dédiée pour votre bot et connectez-vous via un relay payant ou auto-hébergé.

Tests avec un relay local

Pour le développement et les tests, vous pouvez exécuter un relay Nostr local au lieu de vous connecter aux relays publics. L'approche recommandée utilise Strfry, un relay haute performance qui s'exécute facilement via Docker. Étapes de configuration : 1. Exécutez le relay : 'docker run -p 7777:7777 hoytech/strfry' 2. Configurez OpenClaw pour utiliser le relay local : ws://localhost:7777 3. Démarrez le Gateway 4. Utilisez un client Nostr configuré pour se connecter à votre relay local afin d'envoyer des DMs de test Cela isole vos tests du réseau Nostr public et offre des cycles d'itération plus rapides.
openclaw.json (development)
{
  "channels": {
    "nostr": {
      "relays": ["ws://localhost:7777"],
      "dmPolicy": "open",
      "allowFrom": ["*"]
    }
  }
}
Utilisez dmPolicy: 'open' avec allowFrom: ['*'] lors des tests locaux pour ignorer le processus d'appairage.

Nostr Référence de Configuration

privateKey
Type: stringDefault: (required)

Clé privée Nostr au format nsec (Bech32) ou hexadécimal de 64 caractères. Utilisez une référence de variable d'environnement.

relays
Type: string[]Default: ["wss://relay.damus.io", "wss://nos.lol"]

Liste des URLs WebSocket des relays Nostr auxquels se connecter

dmPolicy
Type: stringDefault: "pairing"

Politique de contrôle d'accès des DM : 'pairing', 'allowlist', 'open' ou 'disabled'

allowFrom
Type: string[]Default: []

Clés publiques (npub ou hex) autorisées à envoyer des messages au bot (lorsque dmPolicy est 'allowlist')

enabled
Type: booleanDefault: true

Activer ou désactiver le canal Nostr

name
Type: stringDefault: ""

Nom d'affichage pour cette instance de canal

profile.name
Type: stringDefault: ""

Nom d'utilisateur du bot publié en tant que métadonnées NIP-01

profile.display_name
Type: stringDefault: ""

Nom d'affichage complet publié en tant que métadonnées NIP-01

profile.about
Type: stringDefault: ""

Biographie / description du bot publiée en tant que métadonnées NIP-01

profile.picture
Type: stringDefault: ""

URL de l'image d'avatar (HTTPS obligatoire) publiée en tant que métadonnées NIP-01

profile.banner
Type: stringDefault: ""

URL de l'image de bannière (HTTPS obligatoire) publiée en tant que métadonnées NIP-01

profile.website
Type: stringDefault: ""

URL du site web publiée en tant que métadonnées NIP-01

profile.nip05
Type: stringDefault: ""

Identifiant de vérification NIP-05 (par ex., 'bot@yourdomain.com')

profile.lud16
Type: stringDefault: ""

Adresse Lightning pour recevoir des zaps

Nostr Questions Fréquentes

Nostr Dépannage

Le bot démarre mais ne reçoit aucun message

La connexion au relay a peut-être échoué, ou l'expéditeur publie sur des relays différents de ceux auxquels le bot est abonné.

Vérifiez les journaux du Gateway pour détecter les erreurs de connexion WebSocket. Vérifiez que vos URLs de relay sont correctes et accessibles. Essayez d'ajouter un relay public courant (par ex., wss://relay.damus.io) que l'expéditeur utilise également. Assurez-vous que la clé privée est correctement définie.
Erreur : format de clé privée invalide

La clé privée n'est pas dans un format nsec (Bech32) ou hexadécimal de 64 caractères valide, ou la variable d'environnement n'est pas définie.

Vérifiez que la variable d'environnement est correctement exportée : 'echo $NOSTR_PRIVATE_KEY'. Assurez-vous que la clé commence par 'nsec1' (format Bech32) ou contient exactement 64 caractères hexadécimaux. Régénérez avec 'nak key generate' si nécessaire.
Les messages sont envoyés mais ne sont jamais délivrés au destinataire

Les relays configurés du bot et ceux du client du destinataire ne se chevauchent pas, les événements ne peuvent donc pas se propager.

Ajoutez au moins un relay que le client Nostr du destinataire utilise également. Les relays publics courants comme relay.damus.io et nos.lol sont connectés par la plupart des clients. Vérifiez la liste des relays dans le profil du client Nostr du destinataire.
Plugin introuvable après l'installation

Le Gateway n'a pas été redémarré après l'installation du plugin, ou l'installation a échoué silencieusement.

Exécutez 'openclaw plugins list' pour vérifier que le plugin Nostr est installé. S'il n'apparaît pas dans la liste, relancez 'openclaw plugins install @openclaw/nostr'. Redémarrez le Gateway avec 'openclaw start' après l'installation.