Tlon (plugin)
Tlon é um mensageiro descentralizado construído sobre o Urbit. O OpenClaw se conecta ao seu ship Urbit e pode responder a DMs e mensagens de chat em grupo. Respostas em grupo requerem uma menção com @ por padrão e podem ser restringidas ainda mais via allowlists.
Status: suportado via plugin. DMs, menções em grupo, respostas em threads, formatação rich text e uploads de imagem são suportados. Reações e enquetes ainda não são suportadas.
Plugin necessário
O Tlon é distribuído como plugin e não vem incluído na instalação padrão.
Instalação via CLI (registro npm):
openclaw plugins install @openclaw/tlon
Checkout local (quando rodando a partir de um repositório git):
openclaw plugins install ./extensions/tlon
Detalhes: Plugins
Configuração
- Instale o plugin do Tlon.
- Obtenha a URL e o código de login do seu ship.
- Configure
channels.tlon. - Reinicie o gateway.
- Envie uma DM para o bot ou mencione-o em um canal de grupo.
Configuração mínima (conta única):
{
channels: {
tlon: {
enabled: true,
ship: "~sampel-palnet",
url: "https://your-ship-host",
code: "lidlut-tabwed-pillex-ridrup",
ownerShip: "~your-main-ship", // recomendado: seu ship, sempre permitido
},
},
}
Ships privados/LAN
Por padrão, o OpenClaw bloqueia hostnames privados/internos e faixas de IP para proteção contra SSRF. Se seu ship está rodando em uma rede privada (localhost, IP de LAN ou hostname interno), você precisa optar explicitamente:
{
channels: {
tlon: {
url: "http://localhost:8080",
allowPrivateNetwork: true,
},
},
}
Isso se aplica a URLs como:
http://localhost:8080http://192.168.x.x:8080http://my-ship.local:8080
Aviso: Habilite isso apenas se você confia na sua rede local. Essa configuração desabilita proteções contra SSRF para requisições à URL do seu ship.
Canais de grupo
A descoberta automática é habilitada por padrão. Você também pode fixar canais manualmente:
{
channels: {
tlon: {
groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"],
},
},
}
Desabilitar descoberta automática:
{
channels: {
tlon: {
autoDiscoverChannels: false,
},
},
}
Controle de acesso
Allowlist de DM (vazio = nenhuma DM permitida, use ownerShip para fluxo de aprovação):
{
channels: {
tlon: {
dmAllowlist: ["~zod", "~nec"],
},
},
}
Autorização de grupo (restrita por padrão):
{
channels: {
tlon: {
defaultAuthorizedShips: ["~zod"],
authorization: {
channelRules: {
"chat/~host-ship/general": {
mode: "restricted",
allowedShips: ["~zod", "~nec"],
},
"chat/~host-ship/announcements": {
mode: "open",
},
},
},
},
},
}
Proprietário e sistema de aprovação
Defina um ship proprietário para receber solicitações de aprovação quando usuários não autorizados tentarem interagir:
{
channels: {
tlon: {
ownerShip: "~your-main-ship",
},
},
}
O ship proprietário é automaticamente autorizado em todos os lugares — convites de DM são aceitos automaticamente e
mensagens de canal são sempre permitidas. Você não precisa adicionar o proprietário à dmAllowlist ou
defaultAuthorizedShips.
Quando definido, o proprietário recebe notificações por DM para:
- Solicitações de DM de ships fora da allowlist
- Menções em canais sem autorização
- Solicitações de convite para grupo
Configurações de aceite automático
Aceitar automaticamente convites de DM (para ships na dmAllowlist):
{
channels: {
tlon: {
autoAcceptDmInvites: true,
},
},
}
Aceitar automaticamente convites de grupo:
{
channels: {
tlon: {
autoAcceptGroupInvites: true,
},
},
}
Alvos de entrega (CLI/cron)
Use com openclaw message send ou entrega por cron:
- DM:
~sampel-palnetoudm/~sampel-palnet - Grupo:
chat/~host-ship/channelougroup:~host-ship/channel
Skill incluída
O plugin do Tlon inclui uma skill embutida (@tloncorp/tlon-skill)
que fornece acesso CLI a operações do Tlon:
- Contatos: obter/atualizar perfis, listar contatos
- Canais: listar, criar, postar mensagens, buscar histórico
- Grupos: listar, criar, gerenciar membros
- DMs: enviar mensagens, reagir a mensagens
- Reações: adicionar/remover reações emoji em posts e DMs
- Configurações: gerenciar permissões do plugin via slash commands
A skill fica automaticamente disponível quando o plugin é instalado.
Funcionalidades
| Funcionalidade | Status |
|---|---|
| Mensagens diretas | Suportado |
| Grupos/canais | Suportado (requer menção por padrão) |
| Threads | Suportado (respostas automáticas na thread) |
| Rich text | Markdown convertido para formato Tlon |
| Imagens | Upload para armazenamento do Tlon |
| Reações | Via skill incluída |
| Enquetes | Ainda não suportado |
| Comandos nativos | Suportado (apenas proprietário por padrão) |
Resolução de problemas
Execute esta sequência primeiro:
openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
Falhas comuns:
- DMs ignoradas: remetente não está na
dmAllowliste nenhumownerShipconfigurado para fluxo de aprovação. - Mensagens de grupo ignoradas: canal não descoberto ou remetente não autorizado.
- Erros de conexão: verifique se a URL do ship está acessível; habilite
allowPrivateNetworkpara ships locais. - Erros de autenticação: verifique se o código de login está atualizado (os códigos são rotativos).
Referência de configuração
Configuração completa: Configuração
Opções do provedor:
channels.tlon.enabled: habilitar/desabilitar inicialização do canal.channels.tlon.ship: nome do ship Urbit do bot (ex:~sampel-palnet).channels.tlon.url: URL do ship (ex:https://sampel-palnet.tlon.network).channels.tlon.code: código de login do ship.channels.tlon.allowPrivateNetwork: permitir URLs localhost/LAN (bypass de SSRF).channels.tlon.ownerShip: ship proprietário para sistema de aprovação (sempre autorizado).channels.tlon.dmAllowlist: ships com permissão de DM (vazio = nenhum).channels.tlon.autoAcceptDmInvites: aceitar DMs automaticamente de ships na allowlist.channels.tlon.autoAcceptGroupInvites: aceitar automaticamente todos os convites de grupo.channels.tlon.autoDiscoverChannels: descobrir canais de grupo automaticamente (padrão: true).channels.tlon.groupChannels: channel nests fixados manualmente.channels.tlon.defaultAuthorizedShips: ships autorizados para todos os canais.channels.tlon.authorization.channelRules: regras de autorização por canal.channels.tlon.showModelSignature: anexar nome do modelo às mensagens.
Observações
- Respostas em grupo requerem uma menção (ex:
~your-bot-ship) para responder. - Respostas em threads: se a mensagem de entrada está em uma thread, o OpenClaw responde na thread.
- Rich text: formatação Markdown (negrito, itálico, código, títulos, listas) é convertida para o formato nativo do Tlon.
- Imagens: URLs são enviadas para o armazenamento do Tlon e incorporadas como blocos de imagem.