Ir al contenido

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.

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.

  • El onboarding (openclaw onboard) y openclaw channels add todavía muestran Nostr desde el catálogo de canales compartido.
  • Si tu compilación excluye el Nostr incluido, instala el paquete npm directamente.
Ventana de terminal
openclaw plugins install @openclaw/nostr

Usa 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):

Ventana de terminal
openclaw plugins install --link <path-to-local-nostr-plugin>

Reinicie el Gateway después de instalar o habilitar plugins.

Ventana de terminal
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.

  1. Genere un par de claves Nostr (si es necesario):
Ventana de terminal
# Using nak
nak key generate
  1. Añadir a la configuración:
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
},
},
}
  1. Exportar la clave:
Ventana de terminal
export NOSTR_PRIVATE_KEY="nsec1..."
  1. Reinicie el Gateway.
ClaveTipoPor defectoDescripción
privateKeystringrequeridoClave privada en formato nsec o hexadecimal
relaysstring[]['wss://relay.damus.io', 'wss://nos.lol']URLs de Relay (WebSocket)
dmPolicystringpairingPolítica de acceso de DM
allowFromstring[][]Claves públicas de remitentes permitidos
enabledbooleantrueHabilitar/deshabilitar canal
namestring-Nombre para mostrar
profileobject-Metadatos de perfil NIP-01

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.
  • pairing (por defecto): los remitentes desconocidos reciben un código de emparejamiento.
  • allowlist: solo las claves públicas en allowFrom pueden 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.
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
dmPolicy: "allowlist",
allowFrom: ["npub1abc...", "npub1xyz..."],
},
},
}

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).
NIPEstadoDescripción
NIP-01SoportadoFormato básico de eventos + metadatos de perfil
NIP-04SoportadoMD cifrados (kind:4)
NIP-17PlanificadoMD envueltos para regalo
NIP-44PlanificadoCifrado con versiones
Ventana de terminal
# Start strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
relays: ["ws://localhost:7777"],
},
},
}
  1. Anote la clave pública del bot (npub) de los registros.
  2. Abra un cliente de Nostr (Damus, Amethyst, etc.).
  3. Envíe un MD a la clave pública del bot.
  4. Verifique la respuesta.
  • Verifique que la clave privada sea válida.
  • Asegúrese de que las URL de los relés sean accesibles y usen wss:// (o ws:// para locales).
  • Confirme que enabled no sea false.
  • Verifique los registros de Gateway para ver errores de conexión de relé.
  • Compruebe que el relé acepte escrituras.
  • Verifique la conectividad saliente.
  • Vigile los límites de tasa del relé.
  • Esperado al usar múltiples relés.
  • Los mensajes se deduplican por ID de evento; solo la primera entrega activa una respuesta.
  • Nunca confirme claves privadas.
  • Use variables de entorno para las claves.
  • Considere allowlist para 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.
  • Solo mensajes directos (sin chats grupales).
  • Sin archivos adjuntos multimedia.
  • Solo NIP-04 (envoltorio para regalo NIP-17 planificado).