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) etopenclaw channels addlistent 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
- Generez une paire de cles Nostr (si necessaire) :
# En utilisant nak
nak key generate
- Ajoutez a la config :
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
- Exportez la cle :
export NOSTR_PRIVATE_KEY="nsec1..."
- Redemarrez la Gateway.
Reference de configuration
| Cle | Type | Defaut | Description |
|---|---|---|---|
privateKey | string | requis | Cle privee au format nsec ou hex |
relays | string[] | ['wss://relay.damus.io', 'wss://nos.lol'] | URL des relais (WebSocket) |
dmPolicy | string | pairing | Politique d’acces aux DMs |
allowFrom | string[] | [] | Cles publiques des expediteurs autorises |
enabled | boolean | true | Activer/desactiver le canal |
name | string | - | Nom d’affichage |
profile | object | - | 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
allowFrompeuvent 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
| NIP | Statut | Description |
|---|---|---|
| NIP-01 | Pris en charge | Format d’evenement de base + metadonnees de profil |
| NIP-04 | Pris en charge | DMs chiffres (kind:4) |
| NIP-17 | Prevu | DMs enveloppes (gift-wrapped) |
| NIP-44 | Prevu | Chiffrement 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
- Notez la cle publique du bot (npub) depuis les logs.
- Ouvrez un client Nostr (Damus, Amethyst, etc.).
- Envoyez un DM a la cle publique du bot.
- 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://(ouws://pour local). - Confirmez que
enabledn’est pasfalse. - 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
allowlistpour 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).