Nostr
Statut : Plugin groupé facultatif (désactivé par défaut jusqu’à ce qu’il soit configuré).
Nostr est un protocole décentralisé pour les réseaux sociaux. Ce canal permet à OpenClaw de recevoir et de répondre à des messages directs (DM) chiffrés via NIP-04.
Plugin groupé
Section intitulée « Plugin groupé »Les versions actuelles de OpenClaw incluent Nostr en tant que plugin groupé, les builds empaquetés normaux n’ont donc pas besoin d’une installation séparée.
Installations anciennes/personnalisées
Section intitulée « Installations anciennes/personnalisées »- Onboarding (
openclaw onboard) etopenclaw channels addaffichent toujours Nostr à partir du catalogue de canaux partagés. - Si votre build exclut Nostr groupé, installez directement le paquet npm.
openclaw plugins install @openclaw/nostrUtilisez le paquet brut pour suivre l’étiquette de publication officielle actuelle. Épinglez une version exacte uniquement lorsque vous avez besoin d’une installation reproductible.
Utilisez une extraction locale (flux de travail de développement) :
openclaw plugins install --link <path-to-local-nostr-plugin>Redémarrez la Gateway après avoir installé ou activé des plugins.
Configuration non interactive
Section intitulée « Configuration non interactive »openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY"openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY" --relay-urls "wss://relay.damus.io,wss://relay.primal.net"Utilisez --use-env pour conserver NOSTR_PRIVATE_KEY dans l’environnement au lieu de stocker la clé dans la configuration.
Configuration rapide
Section intitulée « Configuration rapide »- Générez une paire de clés Nostr (si nécessaire) :
# Using naknak key generate- Ajouter à la configuration :
{ channels: { nostr: { privateKey: "${NOSTR_PRIVATE_KEY}", }, },}- Exporter la clé :
export NOSTR_PRIVATE_KEY="nsec1..."- Redémarrez la Gateway.
Référence de configuration
Section intitulée « Référence de configuration »| Clé | Type | Par défaut | Description |
|---|---|---|---|
privateKey | chaîne | requis | Clé privée au format nsec ou hexadécimal |
relays | chaîne[] | ['wss://relay.damus.io', 'wss://nos.lol'] | URL de relais (WebSocket) |
dmPolicy | chaîne | pairing | Stratégie d’accès DM |
allowFrom | chaîne[] | [] | Clés publiques des expéditeurs autorisés |
enabled | booléen | true | Activer/désactiver le canal |
name | chaîne | - | Nom d’affichage |
profile | objet | - | Métadonnées de profil NIP-01 |
Métadonnées de profil
Section intitulée « Métadonnées de profil »Les données du profil sont publiées sous forme d’événement NIP-01 kind:0. Vous pouvez les gérer depuis l’interface de contrôle (Canaux -> Nostr -> Profil) ou les définir directement dans la configuration.
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", }, }, },}Notes :
- Les URL de profil doivent utiliser
https://. - L’importation depuis les relais fusionne les champs et conserve les remplacements locaux.
Contrôle d’accès
Section intitulée « Contrôle d’accès »Stratégies DM
Section intitulée « Stratégies DM »- pairing (par défaut) : les expéditeurs inconnus reçoivent un code d’appariement.
- allowlist : seules les clés publiques dans
allowFrompeuvent envoyer des DM. - open : DM entrants publics (nécessite
allowFrom: ["*"]). - disabled : ignorer les DM entrants.
Notes sur l’application :
- Les signatures des événements entrants sont vérifiées avant la stratégie de l’expéditeur et le déchiffrement NIP-04, les événements falsifiés sont donc rejetés tôt.
- Les réponses d’appariement sont envoyées sans traiter le corps du DM d’origine.
- Les DM entrants sont limités par débit et les charges utiles trop volumineuses sont supprimées avant le déchiffrement.
Exemple de liste d’autorisation
Section intitulée « Exemple de liste d’autorisation »{ channels: { nostr: { privateKey: "${NOSTR_PRIVATE_KEY}", dmPolicy: "allowlist", allowFrom: ["npub1abc...", "npub1xyz..."], }, },}Formats de clé
Section intitulée « Formats de clé »Formats acceptés :
- Clé privée :
nsec...ou hex de 64 caractères - Clés publiques (
allowFrom) :npub...ou hex
Par défaut : 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.
- Évitez d’utiliser trop de relais (latence, duplication).
- Les relais payants peuvent améliorer la fiabilité.
- Les relais locaux conviennent pour les tests (
ws://localhost:7777).
Prise en charge du protocole
Section intitulée « Prise en charge du protocole »| NIP | Statut | Description |
|---|---|---|
| NIP-01 | Pris en charge | Format d’événement de base + métadonnées de profil |
| NIP-04 | Pris en charge | DM chiffrés (kind:4) |
| NIP-17 | Prévu | DM enveloppés (gift-wrapped) |
| NIP-44 | Prévu | Chiffrement versionné |
Relais local
Section intitulée « Relais local »# Start strfrydocker run -p 7777:7777 ghcr.io/hoytech/strfry{ channels: { nostr: { privateKey: "${NOSTR_PRIVATE_KEY}", relays: ["ws://localhost:7777"], }, },}Test manuel
Section intitulée « Test manuel »- Notez la clé publique du bot (npub) dans les journaux (logs).
- Ouvrez un client Nostr (Damus, Amethyst, etc.).
- Envoyez un DM à la clé publique du bot.
- Vérifiez la réponse.
Dépannage
Section intitulée « Dépannage »Non réception de messages
Section intitulée « Non réception de messages »- Vérifiez que la clé privée est valide.
- Assurez-vous que les URL des relais sont accessibles et utilisent
wss://(ouws://pour le local). - Confirmez que
enabledn’est pasfalse. - Consultez les journaux du Gateway pour les erreurs de connexion aux relais.
Pas d’envoi de réponses
Section intitulée « Pas d’envoi de réponses »- Vérifiez que le relais accepte les écritures.
- Vérifiez la connectivité sortante.
- Surveillez les limites de débit des relais.
Réponses en double
Section intitulée « Réponses en double »- Attendu lors de l’utilisation de plusieurs relais.
- Les messages sont dédupliqués par ID d’événement ; seule la première livraison déclenche une réponse.
Sécurité
Section intitulée « Sécurité »- Ne commettez jamais de clés privées.
- Utilisez des variables d’environnement pour les clés.
- Envisagez
allowlistpour les bots de production. - Les signatures sont vérifiées avant la stratégie de l’expéditeur, et la stratégie de l’expéditeur est appliquée avant le déchiffrement, de sorte que les événements falsifiés sont rejetés tôt et les expéditeurs inconnus ne peuvent pas forcer le travail cryptographique complet.
Limitations (MVP)
Section intitulée « Limitations (MVP) »- Messages directs uniquement (pas de chats de groupe).
- Pas de pièces jointes multimédias.
- NIP-04 uniquement (NIP-17 gift-wrap prévu).
Connexes
Section intitulée « Connexes »- Vue d’ensemble des canaux — tous les canaux pris en charge
- Appariement — authentification DM et flux d’appariement
- Groups — comportement de la discussion de groupe et filtrage des mentions
- Channel Routing — routage de session pour les messages
- Security — modèle d’accès et durcissement