openclaw/docs/channels/tlon.md
Hunter Miller 3bf74611c2 fix(plugins): auto-install dependencies for bundled plugins
Bundled plugins ship with source but not node_modules. When a bundled
plugin is enabled and has external dependencies, the loader now
automatically runs npm install on first load.

This fixes the issue where plugins like tlon (which depend on
@urbit/http-api and @urbit/aura) would fail to load from a fresh
npm install because their dependencies weren't installed.

Changes:
- loader.ts: Add ensureBundledPluginDeps() to install deps before loading
- docs/channels/tlon.md: Update to reflect bundled status and auto-install
- docs/plugin.md: Add tlon to plugin list, update dep install guidance
- docs/reference/RELEASING.md: Clarify bundled vs npm-published plugins
2026-01-26 12:31:26 -06:00

2.7 KiB

summary read_when
Tlon/Urbit support status, capabilities, and configuration
Working on Tlon/Urbit channel features

Tlon (plugin)

Tlon is a decentralized messenger built on Urbit. Clawdbot connects to your Urbit ship and can respond to DMs and group chat messages. Group replies require an @ mention by default and can be further restricted via allowlists.

Status: supported via plugin. DMs, group mentions, thread replies, and text-only media fallback (URL appended to caption). Reactions, polls, and native media uploads are not supported.

Plugin setup

Tlon is bundled with Clawdbot. Its dependencies (@urbit/http-api, @urbit/aura) are automatically installed on first load when you enable the plugin.

To enable, add tlon to your plugins allow list and configure the channel:

{
  plugins: {
    allow: ["tlon"]
  },
  channels: {
    tlon: {
      enabled: true,
      // ... config below
    }
  }
}

Details: Plugins

Setup

  1. Gather your ship URL and login code.
  2. Add tlon to your plugins allow list.
  3. Configure channels.tlon.
  4. Restart the gateway (dependencies install automatically on first load).
  5. DM the bot or mention it in a group channel.

Minimal config (single account):

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

Group channels

Auto-discovery is enabled by default. You can also pin channels manually:

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

Disable auto-discovery:

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

Access control

DM allowlist (empty = allow all):

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

Group authorization (restricted by default):

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

Delivery targets (CLI/cron)

Use these with clawdbot message send or cron delivery:

  • DM: ~sampel-palnet or dm/~sampel-palnet
  • Group: chat/~host-ship/channel or group:~host-ship/channel

Notes

  • Group replies require a mention (e.g. ~your-bot-ship) to respond.
  • Thread replies: if the inbound message is in a thread, Clawdbot replies in-thread.
  • Media: sendMedia falls back to text + URL (no native upload).