Channels
How to Connect OpenClaw to Tlon (Urbit)
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.
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
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.
bashopenclaw plugins install @openclaw/tlon - 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.
bashopenclaw plugins install ./path/to/local/tlon-plugin - 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
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
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
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
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
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
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
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
| Option | Description | Example |
|---|---|---|
| channels.tlon.enabled | Enables or disables the Tlon channel startup in the OpenClaw gateway. | true |
| channels.tlon.ship | Sets the bot’s Urbit ship name that OpenClaw logs in as. | ~sampel-palnet |
| channels.tlon.url | Defines the Urbit ship URL that OpenClaw connects to for Tlon messaging. | https://sampel-palnet.tlon.network |
| channels.tlon.code | Specifies the Urbit ship login code used to authenticate the Tlon connection. | lidlut-tabwed-pillex-ridrup |
| channels.tlon.allowPrivateNetwork | Allows OpenClaw to connect to localhost or LAN URLs for the Urbit ship, bypassing SSRF protections. | true |
| channels.tlon.ownerShip | Sets the owner ship that is always authorized and receives approval requests for unauthorized interactions. | ~your-main-ship |
| channels.tlon.dmAllowlist | Lists ships that are allowed to DM the bot; if empty, no DMs are allowed. | ["~zod", "~nec"] |
| channels.tlon.autoAcceptDmInvites | Controls whether the bot auto-accepts DM invites from ships in the DM allowlist. | true |
| channels.tlon.autoAcceptGroupInvites | Controls whether the bot auto-accepts all group invites. | true |
| channels.tlon.autoDiscoverChannels | Enables or disables auto-discovery of Tlon group channels. | false |
| channels.tlon.groupChannels | Defines manually pinned Tlon channel nests that the bot should join. | ["chat/~host-ship/general", "chat/~host-ship/support"] |
| channels.tlon.defaultAuthorizedShips | Lists ships that are authorized for all channels by default. | ["~zod"] |
| channels.tlon.authorization.channelRules | Provides per-channel authorization rules, including mode and allowed ships. | { "chat/~host-ship/general": { mode: "restricted", allowedShips: ["~zod", "~nec"], } } |
| channels.tlon.showModelSignature | Controls 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.
{
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.
{
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.
{
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.
openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctorFrequently 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.