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

  1. Instale o plugin do Tlon.
  2. Obtenha a URL e o código de login do seu ship.
  3. Configure channels.tlon.
  4. Reinicie o gateway.
  5. 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:8080
  • http://192.168.x.x:8080
  • http://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-palnet ou dm/~sampel-palnet
  • Grupo: chat/~host-ship/channel ou group:~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

FuncionalidadeStatus
Mensagens diretasSuportado
Grupos/canaisSuportado (requer menção por padrão)
ThreadsSuportado (respostas automáticas na thread)
Rich textMarkdown convertido para formato Tlon
ImagensUpload para armazenamento do Tlon
ReaçõesVia skill incluída
EnquetesAinda não suportado
Comandos nativosSuportado (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 dmAllowlist e nenhum ownerShip configurado 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 allowPrivateNetwork para 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.