Canal Nostr do OpenClaw
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.
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
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.
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}.
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
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": [
"wss://relay.damus.io",
"wss://nos.lol"
],
"dmPolicy": "pairing"
}
}
}Nostr Documentação Detalhada
Visao Geral da Arquitetura
Instalacao do Plugin
Geracao e Gerenciamento de Chaves
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}Configuracao de Relays
{
"channels": {
"nostr": {
"relays": [
"wss://relay.damus.io",
"wss://nos.lol",
"wss://relay.nostr.band"
]
}
}
}Politicas de DM
{
"channels": {
"nostr": {
"dmPolicy": "allowlist",
"allowFrom": [
"npub1abc...xyz",
"npub1def...uvw"
]
}
}
}Metadados de Perfil (NIP-01)
{
"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"
}
}
}
}Criptografia e Suporte a Protocolos
Teste com um Relay Local
{
"channels": {
"nostr": {
"relays": ["ws://localhost:7777"],
"dmPolicy": "open",
"allowFrom": ["*"]
}
}
}Nostr Referência de Configuração
| Key | Type | Default | Description |
|---|---|---|---|
| privateKey | string | (obrigatorio) | Chave privada Nostr no formato nsec (Bech32) ou hex de 64 caracteres. Use uma referencia a variavel de ambiente. |
| relays | string[] | ["wss://relay.damus.io", "wss://nos.lol"] | Lista de URLs WebSocket de relays Nostr para conexao |
| dmPolicy | string | "pairing" | Politica de controle de acesso de DM: 'pairing', 'allowlist', 'open' ou 'disabled' |
| allowFrom | string[] | [] | Chaves publicas (npub ou hex) autorizadas a enviar mensagens ao bot (quando dmPolicy e 'allowlist') |
| enabled | boolean | true | Habilitar ou desabilitar o canal Nostr |
| name | string | "" | Nome de exibicao para esta instancia do canal |
| profile.name | string | "" | Nome de usuario do bot publicado como metadados NIP-01 |
| profile.display_name | string | "" | Nome de exibicao completo publicado como metadados NIP-01 |
| profile.about | string | "" | Biografia / descricao do bot publicada como metadados NIP-01 |
| profile.picture | string | "" | URL da imagem de avatar (HTTPS obrigatorio) publicada como metadados NIP-01 |
| profile.banner | string | "" | URL da imagem de banner (HTTPS obrigatorio) publicada como metadados NIP-01 |
| profile.website | string | "" | URL do site publicada como metadados NIP-01 |
| profile.nip05 | string | "" | Identificador de verificacao NIP-05 (ex.: 'bot@yourdomain.com') |
| profile.lud16 | string | "" | Endereco Lightning para receber zaps |
Chave privada Nostr no formato nsec (Bech32) ou hex de 64 caracteres. Use uma referencia a variavel de ambiente.
Lista de URLs WebSocket de relays Nostr para conexao
Politica de controle de acesso de DM: 'pairing', 'allowlist', 'open' ou 'disabled'
Chaves publicas (npub ou hex) autorizadas a enviar mensagens ao bot (quando dmPolicy e 'allowlist')
Habilitar ou desabilitar o canal Nostr
Nome de exibicao para esta instancia do canal
Nome de usuario do bot publicado como metadados NIP-01
Nome de exibicao completo publicado como metadados NIP-01
Biografia / descricao do bot publicada como metadados NIP-01
URL da imagem de avatar (HTTPS obrigatorio) publicada como metadados NIP-01
URL da imagem de banner (HTTPS obrigatorio) publicada como metadados NIP-01
URL do site publicada como metadados NIP-01
Identificador de verificacao NIP-05 (ex.: 'bot@yourdomain.com')
Endereco Lightning para receber zaps
Nostr Perguntas Frequentes
Nostr Solução de Problemas
A conexao com o relay pode ter falhado, ou o remetente esta publicando em relays diferentes daqueles nos quais o bot esta inscrito.
A chave privada nao esta em um formato nsec (Bech32) ou hex de 64 caracteres valido, ou a variavel de ambiente nao esta definida.
Os relays configurados do bot e os relays do cliente do destinatario nao possuem sobreposicao, impedindo a propagacao dos eventos.
O Gateway nao foi reiniciado apos a instalacao do plugin, ou a instalacao falhou silenciosamente.