Developer and self-hosted

Tlon

Tlon é um mensageiro descentralizado criado sobre Urbit. O OpenClaw se conecta ao seu ship Urbit e pode responder a DMs e mensagens de chat em grupo. Respostas em grupo exigem uma menção @ por padrão e podem ser ainda mais restritas por allowlists.

Status: plugin integrado. DMs, menções em grupo, respostas em threads, formatação de rich text e uploads de imagens são compatíveis. Reações e enquetes ainda não são compatíveis.

Plugin integrado

Tlon é distribuído como um plugin integrado nas versões atuais do OpenClaw, então builds empacotados normais não precisam de uma instalação separada.

Se você estiver em um build antigo ou em uma instalação personalizada que exclui o Tlon, instale um pacote npm atual:

Instalar via CLI (registro npm):

openclaw plugins install @openclaw/tlon

Use o pacote sem versão fixa para acompanhar a tag oficial de lançamento atual. Fixe uma versão exata somente quando precisar de uma instalação reproduzível.

Checkout local (ao executar a partir de um repositório git):

openclaw plugins install ./path/to/local/tlon-plugin

Detalhes: Plugins

Configuração

  1. Verifique se o plugin Tlon está disponível.
    • Versões empacotadas atuais do OpenClaw já o incluem.
    • Instalações antigas/personalizadas podem adicioná-lo manualmente com os comandos acima.
  2. Reúna a URL do seu ship e o código de login.
  3. Configure channels.tlon.
  4. Reinicie o gateway.
  5. Envie uma DM ao 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", // recommended: your ship, always allowed
    },
  },
}

Ships privados/LAN

Por padrão, o OpenClaw bloqueia nomes de host e faixas de IP privados/internos para proteção contra SSRF. Se o seu ship estiver sendo executado em uma rede privada (localhost, IP da LAN ou nome de host interno), você precisa habilitar isso 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

⚠️ Habilite isso somente se você confiar na sua rede local. Essa configuração desativa as proteções contra SSRF para solicitaçõ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 DMs (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 a 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 aceitação automática

Aceitar automaticamente convites de DM (para ships em dmAllowlist):

{
  channels: {
    tlon: {
      autoAcceptDmInvites: true,
    },
  },
}

Aceitar automaticamente convites de grupo de ships confiáveis:

{
  channels: {
    tlon: {
      autoAcceptGroupInvites: true,
      groupInviteAllowlist: ["~zod"],
    },
  },
}

autoAcceptGroupInvites falha fechado quando groupInviteAllowlist está vazia. Defina a allowlist para os ships cujos convites de grupo devem ser aceitos automaticamente.

Destinos de entrega (CLI/cron)

Use estes 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 integrada

O plugin Tlon inclui uma skill integrada (@tloncorp/tlon-skill) que fornece acesso pela CLI a operações do Tlon:

  • Contatos: obter/atualizar perfis, listar contatos
  • Canais: listar, criar, publicar mensagens, buscar histórico
  • Grupos: listar, criar, gerenciar membros
  • DMs: enviar mensagens, reagir a mensagens
  • Reações: adicionar/remover reações de emoji em publicações e DMs
  • Configurações: gerenciar permissões do plugin por comandos slash

A skill fica disponível automaticamente quando o plugin é instalado.

Recursos

Recurso Status
Mensagens diretas ✅ Compatível
Grupos/canais ✅ Compatível (exige menção por padrão)
Threads ✅ Compatível (respostas automáticas na thread)
Rich text ✅ Markdown convertido para o formato do Tlon
Imagens ✅ Enviadas ao armazenamento do Tlon
Reações ✅ Via skill integrada
Enquetes ❌ Ainda não compatível
Comandos nativos ✅ Compatível (somente proprietário por padrão)

Soluçã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á em dmAllowlist e nenhum ownerShip foi configurado para o 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á atual (códigos fazem rotação).

Referência de configuração

Configuração completa: Configuração

Opções do provedor:

  • channels.tlon.enabled: habilita/desabilita a inicialização do canal.
  • channels.tlon.ship: nome do ship Urbit do bot (por exemplo, ~sampel-palnet).
  • channels.tlon.url: URL do ship (por exemplo, https://sampel-palnet.tlon.network).
  • channels.tlon.code: código de login do ship.
  • channels.tlon.allowPrivateNetwork: permite URLs localhost/LAN (bypass de SSRF).
  • channels.tlon.ownerShip: ship proprietário para o sistema de aprovação (sempre autorizado).
  • channels.tlon.dmAllowlist: ships autorizados a enviar DM (vazio = nenhum).
  • channels.tlon.autoAcceptDmInvites: aceita automaticamente DMs de ships na allowlist.
  • channels.tlon.autoAcceptGroupInvites: aceita automaticamente convites de grupo de ships na allowlist.
  • channels.tlon.groupInviteAllowlist: ships cujos convites de grupo podem ser aceitos automaticamente.
  • channels.tlon.autoDiscoverChannels: descobre automaticamente canais de grupo (padrão: true).
  • channels.tlon.groupChannels: ninhos de canais fixados manualmente.
  • channels.tlon.defaultAuthorizedShips: ships autorizados para todos os canais.
  • channels.tlon.authorization.channelRules: regras de autenticação por canal.
  • channels.tlon.showModelSignature: anexa o nome do modelo às mensagens.

Observações

  • Respostas em grupo exigem uma menção (por exemplo, ~your-bot-ship) para responder.
  • Respostas em threads: se a mensagem recebida estiver em uma thread, o OpenClaw responde na thread.
  • Rich text: a formatação Markdown (negrito, itálico, código, cabeçalhos, listas) é convertida para o formato nativo do Tlon.
  • Imagens: URLs são enviadas ao armazenamento do Tlon e incorporadas como blocos de imagem.

Relacionados