Tlon (plugin)

Tlon est une messagerie decentralisee construite sur Urbit. OpenClaw se connecte a votre ship Urbit et peut repondre aux DMs et aux messages de discussion de groupe. Les reponses de groupe necessitent une @mention par defaut et peuvent etre davantage restreintes via des listes d’autorisation.

Statut : pris en charge via plugin. DMs, mentions de groupe, reponses en fil, formatage de texte enrichi et envois d’images sont pris en charge. Les reactions et les sondages ne sont pas encore pris en charge.

Plugin requis

Tlon est fourni comme plugin et n’est pas inclus dans l’installation de base.

Installation via CLI (registre npm) :

openclaw plugins install @openclaw/tlon

Checkout local (execution depuis un depot git) :

openclaw plugins install ./extensions/tlon

Details : Plugins

Configuration

  1. Installez le plugin Tlon.
  2. Rassemblez l’URL de votre ship et le code de connexion.
  3. Configurez channels.tlon.
  4. Redemarrez la gateway.
  5. Envoyez un DM au bot ou mentionnez-le dans un canal de groupe.

Configuration minimale (compte unique) :

{
  channels: {
    tlon: {
      enabled: true,
      ship: "~sampel-palnet",
      url: "https://your-ship-host",
      code: "lidlut-tabwed-pillex-ridrup",
      ownerShip: "~your-main-ship", // recommande : votre ship, toujours autorise
    },
  },
}

Ships prives/LAN

Par defaut, OpenClaw bloque les noms d’hote prives/internes et les plages IP pour la protection SSRF. Si votre ship fonctionne sur un reseau prive (localhost, IP LAN ou nom d’hote interne), vous devez explicitement accepter :

{
  channels: {
    tlon: {
      url: "http://localhost:8080",
      allowPrivateNetwork: true,
    },
  },
}

Cela s’applique aux URLs comme :

  • http://localhost:8080
  • http://192.168.x.x:8080
  • http://my-ship.local:8080

Avertissement : N’activez cela que si vous faites confiance a votre reseau local. Ce parametre desactive les protections SSRF pour les requetes vers l’URL de votre ship.

Canaux de groupe

La decouverte automatique est activee par defaut. Vous pouvez aussi epingler des canaux manuellement :

{
  channels: {
    tlon: {
      groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"],
    },
  },
}

Desactiver la decouverte automatique :

{
  channels: {
    tlon: {
      autoDiscoverChannels: false,
    },
  },
}

Controle d’acces

Liste d’autorisation DM (vide = pas de DMs autorises, utilisez ownerShip pour le flux d’approbation) :

{
  channels: {
    tlon: {
      dmAllowlist: ["~zod", "~nec"],
    },
  },
}

Autorisation de groupe (restreinte par defaut) :

{
  channels: {
    tlon: {
      defaultAuthorizedShips: ["~zod"],
      authorization: {
        channelRules: {
          "chat/~host-ship/general": {
            mode: "restricted",
            allowedShips: ["~zod", "~nec"],
          },
          "chat/~host-ship/announcements": {
            mode: "open",
          },
        },
      },
    },
  },
}

Proprietaire et systeme d’approbation

Definissez un ship proprietaire pour recevoir les demandes d’approbation quand des utilisateurs non autorises essaient d’interagir :

{
  channels: {
    tlon: {
      ownerShip: "~your-main-ship",
    },
  },
}

Le ship proprietaire est automatiquement autorise partout — les invitations DM sont auto-acceptees et les messages de canal sont toujours autorises. Vous n’avez pas besoin d’ajouter le proprietaire a dmAllowlist ou defaultAuthorizedShips.

Quand il est defini, le proprietaire recoit des notifications DM pour :

  • Les demandes DM de ships non dans la liste d’autorisation
  • Les mentions dans les canaux sans autorisation
  • Les demandes d’invitation de groupe

Parametres d’auto-acceptation

Auto-accepter les invitations DM (pour les ships dans dmAllowlist) :

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

Auto-accepter les invitations de groupe :

{
  channels: {
    tlon: {
      autoAcceptGroupInvites: true,
    },
  },
}

Cibles de livraison (CLI/cron)

Utilisez-les avec openclaw message send ou la livraison cron :

  • DM : ~sampel-palnet ou dm/~sampel-palnet
  • Groupe : chat/~host-ship/channel ou group:~host-ship/channel

Skill integre

Le plugin Tlon inclut un skill integre (@tloncorp/tlon-skill) qui fournit un acces CLI aux operations Tlon :

  • Contacts : obtenir/mettre a jour les profils, lister les contacts
  • Canaux : lister, creer, poster des messages, recuperer l’historique
  • Groupes : lister, creer, gerer les membres
  • DMs : envoyer des messages, reagir aux messages
  • Reactions : ajouter/supprimer des reactions emoji aux posts et DMs
  • Parametres : gerer les permissions du plugin via des commandes slash

Le skill est automatiquement disponible quand le plugin est installe.

Fonctionnalites

FonctionnaliteStatut
Messages privesPris en charge
Groupes/canauxPris en charge (filtre par mention par defaut)
FilsPris en charge (auto-reponse dans le fil)
Texte enrichiMarkdown converti au format Tlon
ImagesEnvoyees vers le stockage Tlon
ReactionsVia skill integre
SondagesPas encore pris en charge
Commandes nativesPris en charge (proprietaire uniquement par defaut)

Depannage

Executez cette echelle en premier :

openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor

Echecs courants :

  • DMs ignores : expediteur non dans dmAllowlist et pas de ownerShip configure pour le flux d’approbation.
  • Messages de groupe ignores : canal non decouvert ou expediteur non autorise.
  • Erreurs de connexion : verifiez que l’URL du ship est accessible ; activez allowPrivateNetwork pour les ships locaux.
  • Erreurs d’authentification : verifiez que le code de connexion est a jour (les codes tournent).

Reference de configuration

Configuration complete : Configuration

Options du fournisseur :

  • channels.tlon.enabled : activer/desactiver le demarrage du canal.
  • channels.tlon.ship : nom du ship Urbit du bot (ex : ~sampel-palnet).
  • channels.tlon.url : URL du ship (ex : https://sampel-palnet.tlon.network).
  • channels.tlon.code : code de connexion du ship.
  • channels.tlon.allowPrivateNetwork : autoriser les URL localhost/LAN (contournement SSRF).
  • channels.tlon.ownerShip : ship proprietaire pour le systeme d’approbation (toujours autorise).
  • channels.tlon.dmAllowlist : ships autorises a envoyer des DMs (vide = aucun).
  • channels.tlon.autoAcceptDmInvites : auto-accepter les DMs des ships autorises.
  • channels.tlon.autoAcceptGroupInvites : auto-accepter toutes les invitations de groupe.
  • channels.tlon.autoDiscoverChannels : decouverte automatique des canaux de groupe (par defaut : true).
  • channels.tlon.groupChannels : nids de canaux epingles manuellement.
  • channels.tlon.defaultAuthorizedShips : ships autorises pour tous les canaux.
  • channels.tlon.authorization.channelRules : regles d’autorisation par canal.
  • channels.tlon.showModelSignature : ajouter le nom du modele aux messages.

Remarques

  • Les reponses de groupe necessitent une mention (ex : ~your-bot-ship) pour repondre.
  • Reponses en fil : si le message entrant est dans un fil, OpenClaw repond dans le fil.
  • Texte enrichi : le formatage Markdown (gras, italique, code, titres, listes) est converti au format natif de Tlon.
  • Images : les URLs sont envoyees vers le stockage Tlon et integrees comme blocs d’image.