Nostr

Status: Plugin opcional (desabilitado por padrão).

Nostr é um protocolo descentralizado para redes sociais. Este canal permite que o OpenClaw receba e responda a mensagens diretas (DMs) criptografadas via NIP-04.

Instalação (sob demanda)

Onboarding (recomendado)

  • O assistente de onboarding (openclaw onboard) e openclaw channels add listam plugins de canais opcionais.
  • Selecionar Nostr solicita a instalação do plugin sob demanda.

Padrões de instalação:

  • Canal dev + checkout git disponível: usa o caminho local do plugin.
  • Stable/Beta: baixa do npm.

Você sempre pode alterar a escolha no prompt.

Instalação manual

openclaw plugins install @openclaw/nostr

Usando um checkout local (workflows de dev):

openclaw plugins install --link <path-to-openclaw>/extensions/nostr

Reinicie o Gateway após instalar ou habilitar plugins.

Configuração rápida

  1. Gere um par de chaves Nostr (se necessário):
# Usando nak
nak key generate
  1. Adicione ao config:
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}"
    }
  }
}
  1. Exporte a chave:
export NOSTR_PRIVATE_KEY="nsec1..."
  1. Reinicie o Gateway.

Referência de configuração

ChaveTipoPadrãoDescrição
privateKeystringobrigatórioChave privada em formato nsec ou hex
relaysstring[]['wss://relay.damus.io', 'wss://nos.lol']URLs de relay (WebSocket)
dmPolicystringpairingPolítica de acesso a DM
allowFromstring[][]Pubkeys de remetentes permitidos
enabledbooleantrueHabilitar/desabilitar canal
namestring-Nome de exibição
profileobject-Metadados de perfil NIP-01

Metadados de perfil

Os dados de perfil são publicados como um evento NIP-01 kind:0. Você pode gerenciá-los pela interface de controle (Channels -> Nostr -> Profile) ou definir diretamente no config.

Exemplo:

{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "profile": {
        "name": "openclaw",
        "displayName": "OpenClaw",
        "about": "Bot assistente pessoal por DM",
        "picture": "https://example.com/avatar.png",
        "banner": "https://example.com/banner.png",
        "website": "https://example.com",
        "nip05": "[email protected]",
        "lud16": "[email protected]"
      }
    }
  }
}

Observações:

  • URLs de perfil devem usar https://.
  • Importar de relays faz merge dos campos e preserva overrides locais.

Controle de acesso

Políticas de DM

  • pairing (padrão): remetentes desconhecidos recebem um código de pareamento.
  • allowlist: apenas pubkeys em allowFrom podem enviar DM.
  • open: DMs de entrada públicas (requer allowFrom: ["*"]).
  • disabled: ignorar DMs de entrada.

Exemplo de allowlist

{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "dmPolicy": "allowlist",
      "allowFrom": ["npub1abc...", "npub1xyz..."]
    }
  }
}

Formatos de chave

Formatos aceitos:

  • Chave privada: nsec... ou hex de 64 caracteres
  • Pubkeys (allowFrom): npub... ou hex

Relays

Padrões: relay.damus.io e nos.lol.

{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "relays": ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"]
    }
  }
}

Dicas:

  • Use 2-3 relays para redundância.
  • Evite muitos relays (latência, duplicação).
  • Relays pagos podem melhorar a confiabilidade.
  • Relays locais funcionam bem para testes (ws://localhost:7777).

Suporte a protocolo

NIPStatusDescrição
NIP-01SuportadoFormato básico de evento + metadados
NIP-04SuportadoDMs criptografadas (kind:4)
NIP-17PlanejadoDMs com gift-wrap
NIP-44PlanejadoCriptografia versionada

Testes

Relay local

# Iniciar strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "relays": ["ws://localhost:7777"]
    }
  }
}

Teste manual

  1. Anote a pubkey do bot (npub) nos logs.
  2. Abra um cliente Nostr (Damus, Amethyst, etc.).
  3. Envie uma DM para a pubkey do bot.
  4. Verifique a resposta.

Resolução de problemas

Não recebe mensagens

  • Verifique se a chave privada é válida.
  • Confirme que as URLs dos relays são acessíveis e usam wss:// (ou ws:// para local).
  • Confirme que enabled não está false.
  • Verifique os logs do Gateway para erros de conexão com relays.

Não envia respostas

  • Verifique se o relay aceita escritas.
  • Verifique a conectividade de saída.
  • Fique atento a limites de taxa dos relays.

Respostas duplicadas

  • Esperado ao usar múltiplos relays.
  • Mensagens são deduplicadas por ID de evento; apenas a primeira entrega dispara uma resposta.

Segurança

  • Nunca faça commit de chaves privadas.
  • Use variáveis de ambiente para chaves.
  • Considere allowlist para bots em produção.

Limitações (MVP)

  • Apenas mensagens diretas (sem chats em grupo).
  • Sem anexos de mídia.
  • Apenas NIP-04 (NIP-17 gift-wrap planejado).