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) eopenclaw channels addlistam 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
- Gere um par de chaves Nostr (se necessário):
# Usando nak
nak key generate
- Adicione ao config:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
- Exporte a chave:
export NOSTR_PRIVATE_KEY="nsec1..."
- Reinicie o Gateway.
Referência de configuração
| Chave | Tipo | Padrão | Descrição |
|---|---|---|---|
privateKey | string | obrigatório | Chave privada em formato nsec ou hex |
relays | string[] | ['wss://relay.damus.io', 'wss://nos.lol'] | URLs de relay (WebSocket) |
dmPolicy | string | pairing | Política de acesso a DM |
allowFrom | string[] | [] | Pubkeys de remetentes permitidos |
enabled | boolean | true | Habilitar/desabilitar canal |
name | string | - | Nome de exibição |
profile | object | - | 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
allowFrompodem 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
| NIP | Status | Descrição |
|---|---|---|
| NIP-01 | Suportado | Formato básico de evento + metadados |
| NIP-04 | Suportado | DMs criptografadas (kind:4) |
| NIP-17 | Planejado | DMs com gift-wrap |
| NIP-44 | Planejado | Criptografia 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
- Anote a pubkey do bot (npub) nos logs.
- Abra um cliente Nostr (Damus, Amethyst, etc.).
- Envie uma DM para a pubkey do bot.
- 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://(ouws://para local). - Confirme que
enablednã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
allowlistpara 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).