Tlon (plugin)

Tlon es un mensajero descentralizado construido sobre Urbit. OpenClaw se conecta a tu ship Urbit y puede responder a DMs y mensajes de chat grupal. Las respuestas en grupo requieren una mención @ de forma predeterminada y pueden restringirse adicionalmente vía listas de acceso.

Estado: compatible vía plugin. DMs, menciones en grupo, respuestas en hilos, formato de texto enriquecido y subida de imágenes son compatibles. Reacciones y encuestas aún no son compatibles.

Plugin requerido

Tlon se distribuye como plugin y no viene incluido en la instalación base.

Instalar vía CLI (registro npm):

openclaw plugins install @openclaw/tlon

Checkout local (cuando se ejecuta desde un repositorio git):

openclaw plugins install ./extensions/tlon

Detalles: Plugins

Configuración

  1. Instala el plugin de Tlon.
  2. Obtén la URL de tu ship y el código de inicio de sesión.
  3. Configura channels.tlon.
  4. Reinicia el gateway.
  5. Envía un DM al bot o menciónalo en un canal de grupo.

Configuración mínima (cuenta única):

{
  channels: {
    tlon: {
      enabled: true,
      ship: "~sampel-palnet",
      url: "https://your-ship-host",
      code: "lidlut-tabwed-pillex-ridrup",
      ownerShip: "~your-main-ship", // recomendado: tu ship, siempre permitido
    },
  },
}

Ships privados/LAN

De forma predeterminada, OpenClaw bloquea nombres de host privados/internos y rangos de IP para protección contra SSRF. Si tu ship está ejecutándose en una red privada (localhost, IP de LAN o nombre de host interno), debes habilitarlo explícitamente:

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

Esto aplica a URLs como:

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

Solo habilita esto si confías en tu red local. Esta configuración desactiva las protecciones SSRF para solicitudes a la URL de tu ship.

Canales de grupo

El autodescubrimiento está habilitado de forma predeterminada. También puedes fijar canales manualmente:

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

Desactivar el autodescubrimiento:

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

Control de acceso

Lista de acceso de DM (vacía = no se permiten DMs, usa ownerShip para flujo de aprobación):

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

Autorización de grupo (restringida de forma predeterminada):

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

Propietario y sistema de aprobación

Configura un ship propietario para recibir solicitudes de aprobación cuando usuarios no autorizados intenten interactuar:

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

El ship propietario está autorizado automáticamente en todas partes — las invitaciones de DM se aceptan automáticamente y los mensajes de canal siempre se permiten. No necesitas añadir al propietario a dmAllowlist o defaultAuthorizedShips.

Cuando está configurado, el propietario recibe notificaciones por DM para:

  • Solicitudes de DM de ships no incluidos en la lista de acceso
  • Menciones en canales sin autorización
  • Solicitudes de invitación a grupos

Configuración de auto-aceptación

Auto-aceptar invitaciones de DM (para ships en dmAllowlist):

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

Auto-aceptar invitaciones a grupos:

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

Destinos de entrega (CLI/cron)

Usa estos con openclaw message send o entregas cron:

  • DM: ~sampel-palnet o dm/~sampel-palnet
  • Grupo: chat/~host-ship/channel o group:~host-ship/channel

Skill incluido

El plugin de Tlon incluye un skill incorporado (@tloncorp/tlon-skill) que proporciona acceso CLI a operaciones de Tlon:

  • Contactos: obtener/actualizar perfiles, listar contactos
  • Canales: listar, crear, publicar mensajes, obtener historial
  • Grupos: listar, crear, gestionar miembros
  • DMs: enviar mensajes, reaccionar a mensajes
  • Reacciones: añadir/eliminar reacciones emoji a publicaciones y DMs
  • Configuración: gestionar permisos del plugin vía comandos slash

El skill está disponible automáticamente cuando se instala el plugin.

Capacidades

CaracterísticaEstado
Mensajes directosSoportado
Grupos/canalesSoportado (restricción por mención predeterminada)
HilosSoportado (auto-respuestas en hilo)
Texto enriquecidoMarkdown convertido a formato Tlon
ImágenesSubidas al almacenamiento de Tlon
ReaccionesVía skill incluido
EncuestasAún no soportado
Comandos nativosSoportado (solo propietario por defecto)

Resolución de problemas

Ejecuta esta secuencia primero:

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

Fallos comunes:

  • DMs ignorados: remitente no está en dmAllowlist y no hay ownerShip configurado para flujo de aprobación.
  • Mensajes de grupo ignorados: canal no descubierto o remitente no autorizado.
  • Errores de conexión: verifica que la URL del ship sea accesible; habilita allowPrivateNetwork para ships locales.
  • Errores de autenticación: verifica que el código de inicio de sesión sea actual (los códigos rotan).

Referencia de configuración

Configuración completa: Configuración

Opciones del proveedor:

  • channels.tlon.enabled: habilitar/deshabilitar inicio del canal.
  • channels.tlon.ship: nombre del ship Urbit del bot (ej. ~sampel-palnet).
  • channels.tlon.url: URL del ship (ej. https://sampel-palnet.tlon.network).
  • channels.tlon.code: código de inicio de sesión del ship.
  • channels.tlon.allowPrivateNetwork: permitir URLs localhost/LAN (bypass de SSRF).
  • channels.tlon.ownerShip: ship propietario para sistema de aprobación (siempre autorizado).
  • channels.tlon.dmAllowlist: ships permitidos para DM (vacío = ninguno).
  • channels.tlon.autoAcceptDmInvites: auto-aceptar DMs de ships en la lista.
  • channels.tlon.autoAcceptGroupInvites: auto-aceptar todas las invitaciones a grupos.
  • channels.tlon.autoDiscoverChannels: auto-descubrir canales de grupo (predeterminado: true).
  • channels.tlon.groupChannels: nests de canal fijados manualmente.
  • channels.tlon.defaultAuthorizedShips: ships autorizados para todos los canales.
  • channels.tlon.authorization.channelRules: reglas de autenticación por canal.
  • channels.tlon.showModelSignature: añadir nombre del modelo a los mensajes.

Notas

  • Las respuestas en grupo requieren una mención (ej. ~your-bot-ship) para responder.
  • Respuestas en hilo: si el mensaje entrante está en un hilo, OpenClaw responde dentro del hilo.
  • Texto enriquecido: el formato Markdown (negrita, cursiva, código, encabezados, listas) se convierte al formato nativo de Tlon.
  • Imágenes: las URLs se suben al almacenamiento de Tlon y se incrustan como bloques de imagen.