OpenClaw Tlon Channel
Connect OpenClaw to Tlon, the decentralized messenger built on Urbit. This integration enables your AI assistant to receive and respond to direct messages and group mentions across Tlon's peer-to-peer network — no centralized servers, no corporate accounts, just your Urbit ship identity and an authentication code. Ideal for sovereign computing enthusiasts and organizations that value true data ownership.
Tlon Supported Features
Text Messages
Supported
Media & Files
Not Supported
Reactions
Not Supported
Threads
Not Supported
Voice Messages
Not Supported
Group Chat
Not Supported
Tlon Prerequisites
- OpenClaw Gateway installed and running
- A running Urbit ship (planet, star, or comet) accessible via HTTP
- The ship's authentication code (obtainable from the ship's web interface)
- Node.js 18+ installed on your server
Tlon Quick Setup
Install the Tlon plugin
Run 'openclaw plugins install @openclaw/tlon' to add the Tlon channel. Alternatively, use 'openclaw onboard' or 'openclaw channels add' and select Tlon from the plugin list. Restart the Gateway after installation.
Configure your Urbit ship credentials
Set your Urbit ship identifier (e.g., ~sampel-palnet), the ship's host URL (e.g., http://localhost:8080), and the authentication code as environment variables. Reference them in your openclaw.json configuration using ${URBIT_SHIP}, ${URBIT_URL}, and ${URBIT_CODE}.
Start and send a test message
Restart the Gateway with 'openclaw start'. Open the Tlon app on your Urbit ship and send a direct message to the bot's ship. The bot should decrypt, process, and respond automatically.
Tlon Configuration Example
{
"channels": {
"tlon": {
"ship": "${URBIT_SHIP}",
"url": "${URBIT_URL}",
"code": "${URBIT_CODE}",
"enabled": true
}
}
}
Tlon Deep Dive
Architecture Overview
Plugin Installation
Urbit Ship Setup & Authentication
{
"channels": {
"tlon": {
"ship": "${URBIT_SHIP}",
"url": "${URBIT_URL}",
"code": "${URBIT_CODE}"
}
}
}
Auto-Discovery & Channel Pinning
{
"channels": {
"tlon": {
"autoDiscovery": false,
"channels": [
"chat/~host-ship/general",
"chat/~host-ship/support"
]
}
}
}
DM Policies
{
"channels": {
"tlon": {
"allowFrom": [
"~sampel-palnet",
"~timluc-miptev"
]
}
}
}
Group Access Control
{
"channels": {
"tlon": {
"groups": {
"chat/~host-ship/general": {
"mode": "restricted",
"authorized": ["~sampel-palnet"]
},
"chat/~host-ship/public": {
"mode": "open"
}
}
}
}
}
Delivery Targets (CLI & Cron)
# Send a DM to a specific ship
openclaw send tlon ~sampel-palnet "Your daily report is ready."
# Post to a group channel
openclaw send tlon chat/~host-ship/general "System status: all clear."
Media Handling Limitations
Tlon Configuration Reference
| Key | Type | Default | Description |
|---|---|---|---|
| ship | string | (required) | Your Urbit ship identifier (e.g., ~sampel-palnet). This is the ship that acts as the bot. |
| url | string | "http://localhost:8080" | HTTP endpoint where the Urbit ship is accessible |
| code | string | (required) | Authentication code for the Urbit ship's HTTP API. Use an environment variable reference. |
| enabled | boolean | true | Enable or disable the Tlon channel |
| name | string | "" | Display name for this channel instance |
| autoDiscovery | boolean | true | Automatically discover and monitor all group channels on the ship |
| channels | string[] | [] | List of group channel paths to monitor when autoDiscovery is disabled (e.g., chat/~host-ship/general) |
| allowFrom | string[] | [] | List of ship addresses allowed to DM the bot. Empty array permits all ships. |
| groups | object | {} | Per-group access control configuration with mode and authorized ship lists |
| groups.<path>.mode | string | "restricted" | Group access mode: 'restricted' (only authorized ships) or 'open' (any group member) |
| groups.<path>.authorized | string[] | [] | List of ship addresses authorized to trigger the bot in this group (when mode is 'restricted') |
Your Urbit ship identifier (e.g., ~sampel-palnet). This is the ship that acts as the bot.
HTTP endpoint where the Urbit ship is accessible
Authentication code for the Urbit ship's HTTP API. Use an environment variable reference.
Enable or disable the Tlon channel
Display name for this channel instance
Automatically discover and monitor all group channels on the ship
List of group channel paths to monitor when autoDiscovery is disabled (e.g., chat/~host-ship/general)
List of ship addresses allowed to DM the bot. Empty array permits all ships.
Per-group access control configuration with mode and authorized ship lists
Group access mode: 'restricted' (only authorized ships) or 'open' (any group member)
List of ship addresses authorized to trigger the bot in this group (when mode is 'restricted')
Tlon Frequently Asked Questions
Tlon Troubleshooting
The ship URL or authentication code may be incorrect, or the ship is not running.
The authentication code has expired or is incorrect. Urbit ships can rotate their authentication codes.
Auto-discovery may be disabled and the group channel is not pinned, or the group access control is blocking the sender.
The Gateway was not restarted after plugin installation, or the installation failed silently.
The Urbit ship's HTTP API may be unreachable due to network issues or the ship being under heavy load.