Nostr
Estado: Plugin opcional (desactivado de forma predeterminada).
Nostr es un protocolo descentralizado para redes sociales. Este canal permite a OpenClaw recibir y responder mensajes directos cifrados (DMs) vía NIP-04.
Instalar (bajo demanda)
Onboarding (recomendado)
- El asistente de onboarding (
openclaw onboard) yopenclaw channels addlistan los plugins de canales opcionales. - Al seleccionar Nostr se te solicita instalar el plugin bajo demanda.
Valores predeterminados de instalación:
- Canal dev + checkout git disponible: usa la ruta local del plugin.
- Stable/Beta: descarga desde npm.
Siempre puedes modificar la elección en el prompt.
Instalación manual
openclaw plugins install @openclaw/nostr
Usar un checkout local (flujos de desarrollo):
openclaw plugins install --link <path-to-openclaw>/extensions/nostr
Reinicia el Gateway después de instalar o habilitar plugins.
Configuración rápida
- Genera un par de claves Nostr (si es necesario):
# Usando nak
nak key generate
- Añade a la configuración:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
- Exporta la clave:
export NOSTR_PRIVATE_KEY="nsec1..."
- Reinicia el Gateway.
Referencia de configuración
| Clave | Tipo | Predeterminado | Descripción |
|---|---|---|---|
privateKey | string | requerido | Clave privada en formato nsec o hex |
relays | string[] | ['wss://relay.damus.io', 'wss://nos.lol'] | URLs de relays (WebSocket) |
dmPolicy | string | pairing | Política de acceso a mensajes directos |
allowFrom | string[] | [] | Claves públicas de remitentes permitidos |
enabled | boolean | true | Habilitar/deshabilitar canal |
name | string | - | Nombre para mostrar |
profile | object | - | Metadatos de perfil NIP-01 |
Metadatos de perfil
Los datos de perfil se publican como un evento NIP-01 kind:0. Puedes gestionarlos desde la interfaz de control (Channels -> Nostr -> Profile) o configurarlos directamente en la configuración.
Ejemplo:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"profile": {
"name": "openclaw",
"displayName": "OpenClaw",
"about": "Bot asistente personal por DM",
"picture": "https://example.com/avatar.png",
"banner": "https://example.com/banner.png",
"website": "https://example.com",
"nip05": "[email protected]",
"lud16": "[email protected]"
}
}
}
}
Notas:
- Las URLs de perfil deben usar
https://. - La importación desde relays fusiona campos y preserva las configuraciones locales.
Control de acceso
Políticas de mensajes directos
- pairing (predeterminado): los remitentes desconocidos reciben un código de emparejamiento.
- allowlist: solo las claves públicas en
allowFrompueden enviar DMs. - open: DMs entrantes públicos (requiere
allowFrom: ["*"]). - disabled: ignorar DMs entrantes.
Ejemplo de lista de acceso
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"dmPolicy": "allowlist",
"allowFrom": ["npub1abc...", "npub1xyz..."]
}
}
}
Formatos de clave
Formatos aceptados:
- Clave privada:
nsec...o hex de 64 caracteres - Claves públicas (
allowFrom):npub...o hex
Relays
Predeterminados: relay.damus.io y nos.lol.
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"]
}
}
}
Consejos:
- Usa 2-3 relays para redundancia.
- Evita demasiados relays (latencia, duplicación).
- Los relays de pago pueden mejorar la fiabilidad.
- Los relays locales funcionan para pruebas (
ws://localhost:7777).
Soporte de protocolo
| NIP | Estado | Descripción |
|---|---|---|
| NIP-01 | Soportado | Formato básico de eventos + metadatos |
| NIP-04 | Soportado | DMs cifrados (kind:4) |
| NIP-17 | Planeado | DMs con gift-wrap |
| NIP-44 | Planeado | Cifrado con versiones |
Pruebas
Relay local
# Iniciar strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["ws://localhost:7777"]
}
}
}
Prueba manual
- Anota la clave pública del bot (npub) desde los logs.
- Abre un cliente Nostr (Damus, Amethyst, etc.).
- Envía un DM a la clave pública del bot.
- Verifica la respuesta.
Resolución de problemas
No se reciben mensajes
- Verifica que la clave privada sea válida.
- Asegúrate de que las URLs de los relays sean accesibles y usen
wss://(ows://para local). - Confirma que
enabledno seafalse. - Revisa los logs del Gateway en busca de errores de conexión con los relays.
No se envían respuestas
- Verifica que el relay acepte escrituras.
- Verifica la conectividad saliente.
- Presta atención a los límites de velocidad del relay.
Respuestas duplicadas
- Es esperable cuando se usan múltiples relays.
- Los mensajes se deduplicación por ID de evento; solo la primera entrega activa una respuesta.
Seguridad
- Nunca hagas commit de claves privadas.
- Usa variables de entorno para las claves.
- Considera
allowlistpara bots en producción.
Limitaciones (MVP)
- Solo mensajes directos (sin chats grupales).
- Sin archivos adjuntos multimedia.
- Solo NIP-04 (NIP-17 gift-wrap planeado).