Nostr
Estado: Complemento incluido opcional (desactivado de forma predeterminada hasta que se configure).
Nostr es un protocolo descentralizado para redes sociales. Este canal permite que OpenClaw reciba y responda a mensajes directos (DM) encriptados a través de NIP-04.
Complemento incluido
Sección titulada «Complemento incluido»Las versiones actuales de OpenClaw incluyen Nostr como un complemento incluido, por lo que las compilaciones empaquetadas normales no necesitan una instalación por separado.
Instalaciones antiguas/personalizadas
Sección titulada «Instalaciones antiguas/personalizadas»- El onboarding (
openclaw onboard) yopenclaw channels addtodavía muestran Nostr desde el catálogo de canales compartido. - Si tu compilación excluye el Nostr incluido, instala el paquete npm directamente.
openclaw plugins install @openclaw/nostrUsa el paquete básico para seguir la etiqueta oficial de lanzamiento actual. Fija una versión exacta solo cuando necesites una instalación reproducible.
Use una copia local (flujos de trabajo de desarrollo):
openclaw plugins install --link <path-to-local-nostr-plugin>Reinicie el Gateway después de instalar o habilitar plugins.
Configuración no interactiva
Sección titulada «Configuración no interactiva»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"Use --use-env para mantener NOSTR_PRIVATE_KEY en el entorno en lugar de almacenar la clave en la configuración.
Configuración rápida
Sección titulada «Configuración rápida»- Genere un par de claves Nostr (si es necesario):
# Using naknak key generate- Añadir a la configuración:
{ channels: { nostr: { privateKey: "${NOSTR_PRIVATE_KEY}", }, },}- Exportar la clave:
export NOSTR_PRIVATE_KEY="nsec1..."- Reinicie el Gateway.
Referencia de configuración
Sección titulada «Referencia de configuración»| Clave | Tipo | Por defecto | Descripción |
|---|---|---|---|
privateKey | string | requerido | Clave privada en formato nsec o hexadecimal |
relays | string[] | ['wss://relay.damus.io', 'wss://nos.lol'] | URLs de Relay (WebSocket) |
dmPolicy | string | pairing | Política de acceso de DM |
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 del perfil
Sección titulada «Metadatos del perfil»Los datos del perfil se publican como un evento NIP-01 kind:0. Puede gestionarlo desde la UI de Control (Canales -> Nostr -> Perfil) o establecerlo directamente en la configuración.
Ejemplo:
{ 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", }, }, },}Notas:
- Las URL de perfil deben usar
https://. - La importación desde relays fusiona los campos y conserva las anulaciones locales.
Control de acceso
Sección titulada «Control de acceso»Políticas de DM
Sección titulada «Políticas de DM»- pairing (por defecto): los remitentes desconocidos reciben un código de emparejamiento.
- allowlist: solo las claves públicas en
allowFrompueden enviar DM. - open: DM entrantes públicos (requiere
allowFrom: ["*"]). - disabled: ignorar DM entrantes.
Notas de cumplimiento:
- Las firmas de eventos entrantes se verifican antes de la política del remitente y el descifrado NIP-04, por lo que los eventos falsificados se rechazan temprano.
- Las respuestas de emparejamiento se envían sin procesar el cuerpo del MD original.
- Los MD entrantes tienen limitación de tasa y las cargas útiles excesivamente grandes se descartan antes del descifrado.
Ejemplo de lista de permitidos
Sección titulada «Ejemplo de lista de permitidos»{ channels: { nostr: { privateKey: "${NOSTR_PRIVATE_KEY}", dmPolicy: "allowlist", allowFrom: ["npub1abc...", "npub1xyz..."], }, },}Formatos de clave
Sección titulada «Formatos de clave»Formatos aceptados:
- Clave privada:
nsec...o hexadecimal de 64 caracteres - Claves públicas (
allowFrom):npub...o hexadecimal
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:
- Use 2-3 relés para redundancia.
- Evite demasiados relés (latencia, duplicación).
- Los relés de pago pueden mejorar la confiabilidad.
- Los relés locales son adecuados para pruebas (
ws://localhost:7777).
Soporte de protocolo
Sección titulada «Soporte de protocolo»| NIP | Estado | Descripción |
|---|---|---|
| NIP-01 | Soportado | Formato básico de eventos + metadatos de perfil |
| NIP-04 | Soportado | MD cifrados (kind:4) |
| NIP-17 | Planificado | MD envueltos para regalo |
| NIP-44 | Planificado | Cifrado con versiones |
Pruebas
Sección titulada «Pruebas»Relé local
Sección titulada «Relé local»# Start strfrydocker run -p 7777:7777 ghcr.io/hoytech/strfry{ channels: { nostr: { privateKey: "${NOSTR_PRIVATE_KEY}", relays: ["ws://localhost:7777"], }, },}Prueba manual
Sección titulada «Prueba manual»- Anote la clave pública del bot (npub) de los registros.
- Abra un cliente de Nostr (Damus, Amethyst, etc.).
- Envíe un MD a la clave pública del bot.
- Verifique la respuesta.
Solución de problemas
Sección titulada «Solución de problemas»No recibir mensajes
Sección titulada «No recibir mensajes»- Verifique que la clave privada sea válida.
- Asegúrese de que las URL de los relés sean accesibles y usen
wss://(ows://para locales). - Confirme que
enabledno seafalse. - Verifique los registros de Gateway para ver errores de conexión de relé.
No enviar respuestas
Sección titulada «No enviar respuestas»- Compruebe que el relé acepte escrituras.
- Verifique la conectividad saliente.
- Vigile los límites de tasa del relé.
Respuestas duplicadas
Sección titulada «Respuestas duplicadas»- Esperado al usar múltiples relés.
- Los mensajes se deduplican por ID de evento; solo la primera entrega activa una respuesta.
Seguridad
Sección titulada «Seguridad»- Nunca confirme claves privadas.
- Use variables de entorno para las claves.
- Considere
allowlistpara bots en producción. - Las firmas se verifican antes que la política del remitente, y la política del remitente se aplica antes del descifrado, por lo que los eventos falsificados se rechazan temprano y los remitentes desconocidos no pueden forzar el trabajo criptográfico completo.
Limitaciones (MVP)
Sección titulada «Limitaciones (MVP)»- Solo mensajes directos (sin chats grupales).
- Sin archivos adjuntos multimedia.
- Solo NIP-04 (envoltorio para regalo NIP-17 planificado).
Relacionado
Sección titulada «Relacionado»- Descripción general de canales — todos los canales compatibles
- Emparejamiento — autenticación de MD y flujo de emparejamiento
- Grupos — comportamiento del chat de grupo y filtrado de menciones
- Enrutamiento de canales — enrutamiento de sesiones para mensajes
- Seguridad — modelo de acceso y endurecimiento