Canal Nostr de OpenClaw
Conecta OpenClaw a la red descentralizada Nostr mediante un plugin opcional. Esta integración permite que tu asistente de IA reciba y responda mensajes directos cifrados con NIP-04 a través de cualquier relay de Nostr — sin servidores centralizados, sin cuentas que registrar, solo un par de claves criptográficas y una conexión a un relay. Ideal para despliegues enfocados en la privacidad donde la resistencia a la censura y la soberanía individual son importantes.
Nostr Funciones compatibles
Mensajes de texto
Compatible
Medios y archivos
No compatible
Reacciones
Compatible
Hilos
No compatible
Mensajes de voz
No compatible
Chat grupal
No compatible
Nostr Requisitos previos
- OpenClaw Gateway instalado y en ejecución
- Un par de claves Nostr (clave privada en formato nsec o hexadecimal) — genéralo con 'nak key generate'
- Al menos un relay de Nostr accesible vía WebSocket (por ejemplo, wss://relay.damus.io)
- Node.js 18+ instalado en tu servidor
Nostr Configuración rápida
Instalar el plugin de Nostr
Ejecuta 'openclaw plugins install @openclaw/nostr' para añadir el canal de Nostr. Alternativamente, usa 'openclaw onboard' o 'openclaw channels add' y selecciona Nostr de la lista de plugins. Reinicia el Gateway después de la instalación.
Generar un par de claves y configurar
Genera un par de claves Nostr usando 'nak key generate'. Establece la clave privada como variable de entorno (export NOSTR_PRIVATE_KEY="nsec1...") y haz referencia a ella en tu configuración de openclaw.json usando ${NOSTR_PRIVATE_KEY}.
Iniciar y enviar un DM de prueba
Reinicia el Gateway con 'openclaw start'. Encuentra la clave pública (npub) de tu bot en los registros de inicio. Abre cualquier cliente de Nostr (por ejemplo, Damus, Amethyst, Primal) y envía un DM cifrado al npub del bot. Si usas la política de emparejamiento por defecto, aprueba al remitente a través del CLI.
Nostr Ejemplo de configuración
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": [
"wss://relay.damus.io",
"wss://nos.lol"
],
"dmPolicy": "pairing"
}
}
}Nostr Documentación Detallada
Descripción general de la arquitectura
Instalación del plugin
Generación y gestión de claves
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}Configuración de relays
{
"channels": {
"nostr": {
"relays": [
"wss://relay.damus.io",
"wss://nos.lol",
"wss://relay.nostr.band"
]
}
}
}Políticas de DM
{
"channels": {
"nostr": {
"dmPolicy": "allowlist",
"allowFrom": [
"npub1abc...xyz",
"npub1def...uvw"
]
}
}
}Metadatos de perfil (NIP-01)
{
"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"
}
}
}
}Cifrado y soporte de protocolo
Pruebas con un relay local
{
"channels": {
"nostr": {
"relays": ["ws://localhost:7777"],
"dmPolicy": "open",
"allowFrom": ["*"]
}
}
}Nostr Referencia de Configuración
| Key | Type | Default | Description |
|---|---|---|---|
| privateKey | string | (requerido) | Clave privada de Nostr en formato nsec (Bech32) o hexadecimal de 64 caracteres. Usa una referencia a variable de entorno. |
| relays | string[] | ["wss://relay.damus.io", "wss://nos.lol"] | Lista de URLs WebSocket de relays de Nostr a los que conectarse |
| dmPolicy | string | "pairing" | Política de control de acceso de DM: 'pairing', 'allowlist', 'open' o 'disabled' |
| allowFrom | string[] | [] | Claves públicas (npub o hexadecimal) permitidas para enviar mensajes al bot (cuando dmPolicy es 'allowlist') |
| enabled | boolean | true | Habilitar o deshabilitar el canal de Nostr |
| name | string | "" | Nombre para mostrar de esta instancia de canal |
| profile.name | string | "" | Nombre de usuario del bot publicado como metadatos NIP-01 |
| profile.display_name | string | "" | Nombre para mostrar completo publicado como metadatos NIP-01 |
| profile.about | string | "" | Biografía / descripción del bot publicada como metadatos NIP-01 |
| profile.picture | string | "" | URL de imagen de avatar (se requiere HTTPS) publicada como metadatos NIP-01 |
| profile.banner | string | "" | URL de imagen de banner (se requiere HTTPS) publicada como metadatos NIP-01 |
| profile.website | string | "" | URL del sitio web publicada como metadatos NIP-01 |
| profile.nip05 | string | "" | Identificador de verificación NIP-05 (por ejemplo, 'bot@yourdomain.com') |
| profile.lud16 | string | "" | Dirección Lightning para recibir zaps |
Clave privada de Nostr en formato nsec (Bech32) o hexadecimal de 64 caracteres. Usa una referencia a variable de entorno.
Lista de URLs WebSocket de relays de Nostr a los que conectarse
Política de control de acceso de DM: 'pairing', 'allowlist', 'open' o 'disabled'
Claves públicas (npub o hexadecimal) permitidas para enviar mensajes al bot (cuando dmPolicy es 'allowlist')
Habilitar o deshabilitar el canal de Nostr
Nombre para mostrar de esta instancia de canal
Nombre de usuario del bot publicado como metadatos NIP-01
Nombre para mostrar completo publicado como metadatos NIP-01
Biografía / descripción del bot publicada como metadatos NIP-01
URL de imagen de avatar (se requiere HTTPS) publicada como metadatos NIP-01
URL de imagen de banner (se requiere HTTPS) publicada como metadatos NIP-01
URL del sitio web publicada como metadatos NIP-01
Identificador de verificación NIP-05 (por ejemplo, 'bot@yourdomain.com')
Dirección Lightning para recibir zaps
Nostr Preguntas Frecuentes
Nostr Solución de Problemas
La conexión al relay pudo haber fallado, o el remitente está publicando en relays diferentes a los que el bot está suscrito.
La clave privada no está en un formato nsec (Bech32) válido o en formato hexadecimal de 64 caracteres, o la variable de entorno no está configurada.
Los relays configurados del bot y los relays del cliente del destinatario no coinciden, por lo que los eventos no pueden propagarse.
El Gateway no se reinició después de la instalación del plugin, o la instalación falló silenciosamente.