Nostr
Estado: Complemento opcional (desactivado por defecto).
Nostr es un protocolo descentralizado para redes sociales. Este canal permite a OpenClaw recibir y responder a mensajes directos cifrados (DM) a través de NIP-04.
Instalación (bajo demanda)
Sección titulada «Instalación (bajo demanda)»Incorporación (recomendado)
Sección titulada «Incorporación (recomendado)»- Onboarding (
openclaw onboard) yopenclaw channels addlistan los complementos de canal opcionales. - Seleccionar Nostr le pedirá que instale el complemento bajo demanda.
Valores predeterminados de instalación:
- Canal de desarrollo + git checkout disponible: utiliza la ruta local del complemento.
- Estable/Beta: descargas desde npm.
Siempre puede anular la elección en el mensaje.
Instalación manual
Sección titulada «Instalación manual»openclaw plugins install @openclaw/nostrUse un checkout local (flujos de trabajo de desarrollo):
openclaw plugins install --link <path-to-local-nostr-plugin>Reinicie la puerta de enlace (Gateway) después de instalar o activar complementos.
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 | Predeterminado | 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 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 de perfil
Sección titulada «Metadatos de perfil»Los datos del perfil se publican como un evento NIP-01 kind:0. Puede gestionarlos desde la UI de Control (Channels -> Nostr -> Profile) o establecerlos 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 URLs 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 (predeterminado): 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 sobre el cumplimiento:
- La política del remitente se verifica antes de la verificación de la firma y el descifrado de NIP-04.
- Las respuestas de emparejamiento se envían sin procesar el cuerpo del DM original.
- Los DM entrantes tienen límite de velocidad y las cargas excesivamente grandes se descartan antes de descifrar.
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 usar demasiados relés (latencia, duplicación).
- Los relés de pago pueden mejorar la confiabilidad.
- Los relés locales están bien para pruebas (
ws://localhost:7777).
Soporte de protocolo
Sección titulada «Soporte de protocolo»| NIP | Estado | Descripción |
|---|---|---|
| NIP-01 | Soportado | Formato de evento básico + metadatos de perfil |
| NIP-04 | Soportado | DM cifrados (kind:4) |
| NIP-17 | Planificado | DM envueltos (gift-wrapped) |
| 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 DM a la clave pública del bot.
- Verifique la respuesta.
Solución de problemas
Sección titulada «Solución de problemas»No se reciben mensajes
Sección titulada «No se reciben 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 local). - Confirme que
enabledno seafalse. - Revise los registros de Gateway para ver errores de conexión de relé.
No se envían respuestas
Sección titulada «No se envían respuestas»- Compruebe que el relé acepte escrituras.
- Verifique la conectividad saliente.
- Vigile los límites de velocidad 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 de producción. - La política de emparejamiento y lista de permitidos se aplica antes de descifrar, por lo que los remitentes desconocidos no pueden forzar todo el trabajo criptográfico.
Limitaciones (MVP)
Sección titulada «Limitaciones (MVP)»- Solo mensajes directos (sin chats grupales).
- Sin archivos adjuntos multimedia.
- Solo NIP-04 (NIP-17 gift-wrap planificado).
Relacionado
Sección titulada «Relacionado»- Resumen de canales — todos los canales compatibles
- Emparejamiento — autenticación y flujo de emparejamiento de MD
- Grupos — comportamiento del chat grupal y filtrado de menciones
- Enrutamiento de canales — enrutamiento de sesiones para mensajes
- Seguridad — modelo de acceso y endurecimiento