Channels

How to Connect OpenClaw to Tlon (Urbit)

4 min read

Browse more in Channels.

All channels guides →

This guide walks you through connecting OpenClaw to Tlon so your agent can talk to Urbit ships over DMs and group channels. You will configure the bundled Tlon plugin, handle LAN/private ships safely, and lock down who can DM or mention your bot.

By the end, your OpenClaw gateway will respond to Tlon DMs and @-mentions from your Urbit ship.

Setup flow

Prerequisites

  • An existing OpenClaw gateway running a current packaged release that includes bundled plugins.
  • Access to an Urbit ship with its ship name, ship URL, and a valid login code (e.g. `~sampel-palnet`, `https://your-ship-host`, `lidlut-tabwed-pillex-ridrup`).
  • Permission to restart your OpenClaw gateway after changing its configuration.

Steps

  1. 1

    Ensure the Tlon plugin is available

    Tlon ships as a bundled plugin in current OpenClaw releases, so you usually do not need to install anything extra. If you run an older build or a custom install that excludes Tlon, install the plugin so the gateway can speak to your Urbit ship.

    bash
    openclaw plugins install @openclaw/tlon
  2. 2

    Install the Tlon plugin from a local checkout when developing

    If you are hacking on the Tlon plugin from a git repo, point OpenClaw at your local checkout instead of the npm registry. This keeps your gateway using your local changes while you iterate.

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

    Configure the basic Tlon channel connection

    tlon` block so OpenClaw knows which ship to log into and which ship owns the bot. This is where you wire in the ship URL, login code, and owner ship that always has access.

    json
    {
      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
        },
      },
    }
  4. 4

    Allow private or LAN Urbit ships when needed

    If your Urbit ship runs on localhost or a LAN IP, OpenClaw blocks it by default for SSRF protection. Explicitly enable private network access for the Tlon channel so the gateway can reach your ship.

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

    Control which Tlon group channels your bot joins

    By default, OpenClaw auto-discovers group channels, but you can pin specific nests or disable discovery entirely. This is useful when you want the bot only in a few curated channels.

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

    Disable auto-discovery of Tlon group channels when locking down scope

    If you do not want OpenClaw to auto-join or discover new Tlon channels, turn off auto-discovery. You can then rely entirely on `groupChannels` and explicit invites.

    json
    {
      channels: {
        tlon: {
          autoDiscoverChannels: false,
        },
      },
    }
  7. 7

    Configure DM allowlists and group authorization

    Tighten access by specifying which ships can DM the bot and which ships are allowed in each channel. This prevents random ships from talking to your agent and gives you per-channel control.

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

    Set the owner ship and auto-accept behavior

    Configure an owner ship to receive approval requests and decide who can talk to the bot. You can also enable auto-accept for DM and group invites to reduce manual approvals for trusted ships.

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

    Enable auto-accept for DM and group invites when appropriate

    If you want smoother onboarding for allowlisted ships and group invites, turn on the auto-accept flags. This lets OpenClaw accept DMs from `dmAllowlist` ships and all group invites without manual intervention.

    json
    {
      channels: {
        tlon: {
          autoAcceptDmInvites: true,
        },
      },
    }
  10. 10

    Restart the gateway and test with a DM or group mention

    After updating the configuration, restart your OpenClaw gateway so the Tlon channel comes up with the new settings. Then DM the bot or mention it in a group channel to confirm it responds as expected.

Configuration

OptionDescriptionExample
channels.tlon.enabledEnables or disables the Tlon channel startup in the OpenClaw gateway.true
channels.tlon.shipSets the bot’s Urbit ship name that OpenClaw logs in as.~sampel-palnet
channels.tlon.urlDefines the Urbit ship URL that OpenClaw connects to for Tlon messaging.https://sampel-palnet.tlon.network
channels.tlon.codeSpecifies the Urbit ship login code used to authenticate the Tlon connection.lidlut-tabwed-pillex-ridrup
channels.tlon.allowPrivateNetworkAllows OpenClaw to connect to localhost or LAN URLs for the Urbit ship, bypassing SSRF protections.true
channels.tlon.ownerShipSets the owner ship that is always authorized and receives approval requests for unauthorized interactions.~your-main-ship
channels.tlon.dmAllowlistLists ships that are allowed to DM the bot; if empty, no DMs are allowed.["~zod", "~nec"]
channels.tlon.autoAcceptDmInvitesControls whether the bot auto-accepts DM invites from ships in the DM allowlist.true
channels.tlon.autoAcceptGroupInvitesControls whether the bot auto-accepts all group invites.true
channels.tlon.autoDiscoverChannelsEnables or disables auto-discovery of Tlon group channels.false
channels.tlon.groupChannelsDefines manually pinned Tlon channel nests that the bot should join.["chat/~host-ship/general", "chat/~host-ship/support"]
channels.tlon.defaultAuthorizedShipsLists ships that are authorized for all channels by default.["~zod"]
channels.tlon.authorization.channelRulesProvides per-channel authorization rules, including mode and allowed ships.{ "chat/~host-ship/general": { mode: "restricted", allowedShips: ["~zod", "~nec"], } }
channels.tlon.showModelSignatureControls whether OpenClaw appends the model name to messages sent via Tlon.true

Troubleshooting

DMs are ignored when you message the bot from your Urbit ship.

This happens when the sender is not in `dmAllowlist` and you have no `ownerShip` configured for the approval flow. ownerShip` so the owner can approve DM requests.

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

Group messages are ignored even when the bot is in the channel.

OpenClaw may not have discovered the channel or the sender is not authorized. defaultAuthorizedShips` so the sending ship is allowed.

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

Connection errors occur when OpenClaw tries to reach your Urbit ship.

If your ship runs on localhost or a LAN IP, OpenClaw blocks it by default for SSRF protection. url` points to the correct private address.

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

Auth errors appear and the Tlon channel fails to log in.

code` will stop authentication. code`, then restart the gateway.

You are not sure whether the Tlon plugin and gateway are healthy.

Run the OpenClaw diagnostics ladder to check plugin status, gateway health, logs, and environment issues. This helps you quickly see if the Tlon plugin is loaded and whether any errors are thrown.

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

Frequently asked questions

Powered by Mem0

Add persistent memory to OpenClaw

Official Mem0 plugin for OpenClaw keeps context across chats and tools. Smaller prompts, lower cost, better continuity for your agents.

More in Channels