OpenClaw

Canal Nostr do OpenClaw

Descentralizado
Avançado

Conecte o OpenClaw a rede descentralizada Nostr por meio de um plugin opcional. Esta integracao permite que seu assistente de IA receba e responda a mensagens diretas criptografadas via NIP-04 em qualquer relay Nostr - sem servidores centralizados, sem contas para registrar, apenas um par de chaves criptograficas e uma conexao com um relay. Ideal para implantacoes focadas em privacidade, onde resistencia a censura e soberania digital importam.

Info rápida
DificuldadeAvançado
CategoriaDescentralizado
Recursos suportados2 / 6

Nostr Recursos suportados

Mensagens de texto

Suportado

Mídia e arquivos

Não suportado

Reações

Suportado

Threads

Não suportado

Mensagens de voz

Não suportado

Chat em grupo

Não suportado

Nostr Pré-requisitos

  • OpenClaw Gateway instalado e em execucao
  • Um par de chaves Nostr (chave privada no formato nsec ou hex) - gere com 'nak key generate'
  • Pelo menos um relay Nostr acessivel via WebSocket (ex.: wss://relay.damus.io)
  • Node.js 18+ instalado no seu servidor

Nostr Configuração rápida

1

Instalar o plugin Nostr

Execute 'openclaw plugins install @openclaw/nostr' para adicionar o canal Nostr. Alternativamente, use 'openclaw onboard' ou 'openclaw channels add' e selecione Nostr na lista de plugins. Reinicie o Gateway apos a instalacao.

2

Gerar um par de chaves e configurar

Gere um par de chaves Nostr usando 'nak key generate'. Defina a chave privada como variavel de ambiente (export NOSTR_PRIVATE_KEY="nsec1...") e referencie-a na configuracao do openclaw.json usando ${NOSTR_PRIVATE_KEY}.

3

Iniciar e enviar um DM de teste

Reinicie o Gateway com 'openclaw start'. Encontre a chave publica (npub) do seu bot nos logs de inicializacao. Abra qualquer cliente Nostr (ex.: Damus, Amethyst, Primal) e envie um DM criptografado para o npub do bot. Se estiver usando a politica de pareamento padrao, aprove o remetente pela CLI.

Nostr Exemplo de configuração

config.json
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}",
      "relays": [
        "wss://relay.damus.io",
        "wss://nos.lol"
      ],
      "dmPolicy": "pairing"
    }
  }
}

Nostr Documentação Detalhada

Visao Geral da Arquitetura

Diferente das plataformas de mensagens centralizadas, o Nostr e um protocolo descentralizado onde as mensagens sao distribuidas por servidores de relay independentes. O OpenClaw se conecta a um ou mais relays via WebSocket e se inscreve para receber mensagens diretas criptografadas via NIP-04 enderecadas a chave publica do bot. O fluxo de mensagens e direto: 1. Um usuario envia um DM criptografado a partir de qualquer cliente Nostr (Damus, Amethyst, Primal, etc.) 2. A mensagem se propaga para os relays nos quais o usuario publica 3. A inscricao de relay do OpenClaw captura o evento 4. O Gateway descriptografa a mensagem, processa-a pelo seu agente de IA, criptografa a resposta e publica-a de volta nos relays configurados Como o Nostr e baseado em relays, nao ha um ponto unico de falha - se um relay cair, as mensagens ainda podem fluir por outros. O bot e seus usuarios nao precisam usar exatamente os mesmos relays, pois os relays frequentemente trocam eventos entre si.
A chave publica do bot e derivada da chave privada e exibida nos logs de inicializacao do Gateway. Compartilhe este npub com os usuarios para que possam encontrar e enviar mensagens ao seu bot.
O Nostr nao possui o conceito de 'status online' - as mensagens sao armazenadas nos relays e entregues quando o cliente se conecta.

Instalacao do Plugin

O canal Nostr e distribuido como um plugin opcional do OpenClaw, em vez de ser integrado ao Gateway principal. Isso mantem a instalacao base leve, permitindo adicionar suporte ao Nostr quando necessario. Existem varios metodos de instalacao: * **npm (recomendado):** Execute 'openclaw plugins install @openclaw/nostr' para instalar a versao estavel. * **Canal beta:** Use 'openclaw plugins install @openclaw/nostr@beta' para recursos em pre-lancamento. * **Desenvolvimento local:** Clone o repositorio do plugin e use 'openclaw plugins install --link /caminho/para/checkout/local' para vincula-lo. * **Configuracao interativa:** Execute 'openclaw onboard' ou 'openclaw channels add' e selecione Nostr na lista. Apos a instalacao, reinicie o Gateway para que o plugin entre em vigor.
Execute 'openclaw plugins list' para verificar se o plugin Nostr esta instalado e ativo.

Geracao e Gerenciamento de Chaves

A identidade no Nostr e baseada em criptografia de chave publica. A identidade do seu bot e seu par de chaves - uma chave privada (nsec) usada para assinar e descriptografar, e uma chave publica (npub) usada como seu endereco. Gere um par de chaves usando a ferramenta CLI 'nak': 1. Instale o nak: 'go install github.com/fiatjaf/nak@latest' (ou baixe dos releases) 2. Gere: 'nak key generate' - isso retorna a chave privada no formato hex 3. Derive a chave publica: 'nak key public <hex-private-key>' - converta para npub se necessario O OpenClaw aceita chaves privadas nos formatos nsec (codificado em Bech32) e hex de 64 caracteres. Chaves publicas em allowFrom podem usar o formato npub ou hex.
openclaw.json
{
  "channels": {
    "nostr": {
      "privateKey": "${NOSTR_PRIVATE_KEY}"
    }
  }
}
Nunca insira sua chave privada diretamente no openclaw.json. Sempre use uma variavel de ambiente (ex.: ${NOSTR_PRIVATE_KEY}) e defina-a via 'export NOSTR_PRIVATE_KEY="nsec1..."' no seu shell ou em um arquivo .env.

Configuracao de Relays

Os relays sao a espinha dorsal do Nostr - eles armazenam e distribuem eventos. O OpenClaw se conecta aos relays configurados via WebSocket para enviar e receber DMs criptografados. A configuracao padrao usa dois relays publicos conhecidos: relay.damus.io e nos.lol. Para uso em producao, voce deve personalizar isso de acordo com suas necessidades. Dicas para selecao de relays: * Use 2-3 relays para um bom equilibrio entre redundancia e desempenho * Muitos relays aumentam a latencia e o uso de largura de banda * Relays pagos (ex.: relay.nostr.band) oferecem maior confiabilidade e menos spam * Para desenvolvimento, execute um relay local (ex.: Strfry via Docker) em ws://localhost:7777
openclaw.json
{
  "channels": {
    "nostr": {
      "relays": [
        "wss://relay.damus.io",
        "wss://nos.lol",
        "wss://relay.nostr.band"
      ]
    }
  }
}
Relays publicos sao gratuitos, mas podem ter limites de taxa ou spam. Relays pagos geralmente oferecem melhor desempenho e filtragem.
Seu bot e seus usuarios nao precisam estar nos mesmos relays - a maioria dos relays troca eventos entre si.

Politicas de DM

As politicas de DM (Mensagem Direta) controlam quem pode interagir com seu assistente de IA pelo Nostr. Como o Nostr e aberto por design, o controle de acesso e especialmente importante para evitar o uso nao autorizado da sua cota de IA. O OpenClaw suporta quatro politicas: * **pairing (padrao)** - Remetentes desconhecidos recebem um codigo de pareamento. Voce aprova ou recusa via 'openclaw pairing approve nostr <code>'. Uma vez aprovados, eles podem conversar livremente. * **allowlist** - Apenas chaves publicas (npub ou hex) listadas em allowFrom podem enviar mensagens ao bot. Todos os outros sao ignorados silenciosamente. * **open** - Qualquer pessoa pode enviar mensagens ao bot. Requer allowFrom: ["*"] para habilitar. Use com cautela. * **disabled** - O bot nao responde a nenhum DM recebido.
openclaw.json
{
  "channels": {
    "nostr": {
      "dmPolicy": "allowlist",
      "allowFrom": [
        "npub1abc...xyz",
        "npub1def...uvw"
      ]
    }
  }
}

Metadados de Perfil (NIP-01)

Voce pode publicar um perfil para seu bot na rede Nostr usando eventos de metadados kind:0 do NIP-01. Isso torna seu bot descobrivel em clientes Nostr - os usuarios verao seu nome, avatar, biografia e outros detalhes ao consultar o npub do bot. Campos de perfil configuraveis incluem: * **name** - Nome de usuario curto (ex.: "openclaw-bot") * **display_name** - Nome de exibicao completo * **about** - Biografia / descricao * **picture** - URL do avatar (deve ser HTTPS) * **banner** - URL da imagem de banner (deve ser HTTPS) * **website** - Site do bot ou projeto * **nip05** - Identificador de verificacao NIP-05 (ex.: "bot@yourdomain.com") * **lud16** - Endereco Lightning para zaps
openclaw.json
{
  "channels": {
    "nostr": {
      "profile": {
        "name": "openclaw-bot",
        "display_name": "OpenClaw AI Assistant",
        "about": "AI-powered assistant on Nostr. DM me!",
        "picture": "https://example.com/bot-avatar.png",
        "nip05": "bot@yourdomain.com"
      }
    }
  }
}
A verificacao NIP-05 (bot@yourdomain.com) adiciona uma marca de verificacao na maioria dos clientes Nostr e ajuda os usuarios a verificar a identidade do seu bot.
Todas as URLs de imagem (picture, banner) devem usar HTTPS.

Criptografia e Suporte a Protocolos

Todas as mensagens diretas na integracao Nostr do OpenClaw usam criptografia NIP-04 - as mensagens sao criptografadas com um segredo compartilhado derivado dos pares de chaves do remetente e do destinatario usando ECDH (Elliptic Curve Diffie-Hellman). NIPs atualmente suportados: * **NIP-01** - Protocolo basico: eventos, inscricoes, metadados (kind:0) * **NIP-04** - Mensagens diretas criptografadas (kind:4) Suporte futuro planejado: * **NIP-17** - Mensagens privadas com encapsulamento (privacidade de metadados aprimorada) * **NIP-44** - Criptografia versionada (primitivas criptograficas mais robustas) Embora o NIP-04 seja amplamente suportado em todos os clientes Nostr, ele possui vazamentos de metadados conhecidos (operadores de relay podem ver quem esta enviando mensagens para quem, embora nao o conteudo). O NIP-17 e o NIP-44 resolverao essas limitacoes assim que forem adotados.
O NIP-04 criptografa o conteudo da mensagem, mas nao os metadados. Operadores de relay podem ver as chaves publicas do remetente/destinatario e os timestamps.
Para maxima privacidade, use um par de chaves dedicado para seu bot e conecte-se por meio de um relay pago ou auto-hospedado.

Teste com um Relay Local

Para desenvolvimento e testes, voce pode executar um relay Nostr local em vez de se conectar a relays publicos. A abordagem recomendada usa o Strfry, um relay de alto desempenho que pode ser executado facilmente via Docker. Passos de configuracao: 1. Execute o relay: 'docker run -p 7777:7777 hoytech/strfry' 2. Configure o OpenClaw para usar o relay local: ws://localhost:7777 3. Inicie o Gateway 4. Use um cliente Nostr configurado para conectar ao seu relay local para enviar DMs de teste Isso isola seus testes da rede publica Nostr e proporciona ciclos de iteracao mais rapidos.
openclaw.json (development)
{
  "channels": {
    "nostr": {
      "relays": ["ws://localhost:7777"],
      "dmPolicy": "open",
      "allowFrom": ["*"]
    }
  }
}
Use dmPolicy: 'open' com allowFrom: ['*'] durante testes locais para pular o fluxo de pareamento.

Nostr Referência de Configuração

privateKey
Type: stringDefault: (obrigatorio)

Chave privada Nostr no formato nsec (Bech32) ou hex de 64 caracteres. Use uma referencia a variavel de ambiente.

relays
Type: string[]Default: ["wss://relay.damus.io", "wss://nos.lol"]

Lista de URLs WebSocket de relays Nostr para conexao

dmPolicy
Type: stringDefault: "pairing"

Politica de controle de acesso de DM: 'pairing', 'allowlist', 'open' ou 'disabled'

allowFrom
Type: string[]Default: []

Chaves publicas (npub ou hex) autorizadas a enviar mensagens ao bot (quando dmPolicy e 'allowlist')

enabled
Type: booleanDefault: true

Habilitar ou desabilitar o canal Nostr

name
Type: stringDefault: ""

Nome de exibicao para esta instancia do canal

profile.name
Type: stringDefault: ""

Nome de usuario do bot publicado como metadados NIP-01

profile.display_name
Type: stringDefault: ""

Nome de exibicao completo publicado como metadados NIP-01

profile.about
Type: stringDefault: ""

Biografia / descricao do bot publicada como metadados NIP-01

profile.picture
Type: stringDefault: ""

URL da imagem de avatar (HTTPS obrigatorio) publicada como metadados NIP-01

profile.banner
Type: stringDefault: ""

URL da imagem de banner (HTTPS obrigatorio) publicada como metadados NIP-01

profile.website
Type: stringDefault: ""

URL do site publicada como metadados NIP-01

profile.nip05
Type: stringDefault: ""

Identificador de verificacao NIP-05 (ex.: 'bot@yourdomain.com')

profile.lud16
Type: stringDefault: ""

Endereco Lightning para receber zaps

Nostr Perguntas Frequentes

Nostr Solução de Problemas

O bot inicia mas nao recebe nenhuma mensagem

A conexao com o relay pode ter falhado, ou o remetente esta publicando em relays diferentes daqueles nos quais o bot esta inscrito.

Verifique os logs do Gateway para erros de conexao WebSocket. Confirme que as URLs dos relays estao corretas e acessiveis. Tente adicionar um relay publico comum (ex.: wss://relay.damus.io) que o remetente tambem utilize. Certifique-se de que a chave privada esta configurada corretamente.
Erro: formato de chave privada invalido

A chave privada nao esta em um formato nsec (Bech32) ou hex de 64 caracteres valido, ou a variavel de ambiente nao esta definida.

Verifique se a variavel de ambiente esta exportada corretamente: 'echo $NOSTR_PRIVATE_KEY'. Certifique-se de que a chave comeca com 'nsec1' (formato Bech32) ou tem exatamente 64 caracteres hexadecimais. Regenere com 'nak key generate' se necessario.
As mensagens sao enviadas mas nunca chegam ao destinatario

Os relays configurados do bot e os relays do cliente do destinatario nao possuem sobreposicao, impedindo a propagacao dos eventos.

Adicione pelo menos um relay que o cliente Nostr do destinatario tambem utilize. Relays publicos comuns como relay.damus.io e nos.lol sao utilizados pela maioria dos clientes. Verifique a lista de relays no perfil do cliente Nostr do destinatario.
Plugin nao encontrado apos a instalacao

O Gateway nao foi reiniciado apos a instalacao do plugin, ou a instalacao falhou silenciosamente.

Execute 'openclaw plugins list' para verificar se o plugin Nostr esta instalado. Se nao estiver listado, execute novamente 'openclaw plugins install @openclaw/nostr'. Reinicie o Gateway com 'openclaw start' apos a instalacao.