Tlon (Urbit)
Decentralized Tlon/Urbit messenger integration with DMs, group channels, threads, rich text, image uploads, and owner approval system.
Tags: decentralized, urbit, web3, privacy
Category: Decentralized
Use Cases
- Sovereign AI assistant on your personal Urbit ship
- Group knowledge bot in Urbit community channels
- Decentralized AI agent with a persistent Urbit identity
- Privacy-first AI chat where all data stays on your ship
- Community moderation assistant in Tlon group channels
- AI companion for Urbit power users who want everything on-network
Tips
- Use a dedicated moon or planet for the bot rather than your personal ship identity
- Pin critical channels with groupChannels config instead of relying solely on auto-discovery
- Set up per-channel authorization rules to control which ships can interact in each channel
- Use defaultAuthorizedShips for a global allowlist that applies across all channels
- Run your Urbit ship on a VPS or always-on server for reliable uptime
- The bundled Tlon skill provides CLI commands for managing contacts and channels — explore it
- Keep your ship's login code in an environment variable rather than hardcoding in config
- Test with a simple DM before configuring group channels to verify connectivity
Known Issues & Gotchas
- Your Urbit ship must be accessible via HTTP — local ships behind NAT need port forwarding or a tunnel
- The login code changes when you breach your ship — update OpenClaw config after any breach
- autoDiscoverChannels defaults to true — set to false if you only want specific channels
- Group replies require an @mention of the bot ship (e.g., ~your-bot-ship) to trigger a response
- Image uploads use Tlon's native storage — if upload fails, the URL is appended as text instead
- Reactions and polls are NOT supported — the plugin will silently ignore reaction attempts
- Thread replies follow the inbound context — if a message is in a thread, the reply stays in that thread
- The plugin uses the ship's identity — your bot IS a full Urbit citizen, not a webhook
Alternatives
- Nostr
- Matrix
- Signal
- IRC
Community Feedback
It is now possible to run a full Tlon Messenger bot on your own computer alongside OpenClaw. On Urbit, every identity can spawn lightweight agents that live on your personal server.
— Twitter/X @tloncorporation
The OpenClaw Tlon plugin is exactly what Urbit needed — an AI agent that lives on YOUR ship, talks through YOUR identity, and respects the sovereignty model. No cloud APIs involved in the messaging layer.
— Reddit r/urbit
Tlon channel works well for group chat bots. The auto-discover feature is convenient — just add the bot ship to a group and it shows up. Thread replies are a nice touch.
— GitHub Discussions
Frequently Asked Questions
Do I need to run my own Urbit ship?
Yes. The Tlon plugin connects to a running Urbit ship via its HTTP API. You need a ship (planet, star, or moon) that's accessible over the network. Hosted Tlon app access alone is not sufficient — the plugin needs direct ship access.
What's the difference between Tlon and Nostr in OpenClaw?
Tlon runs on Urbit with full messaging features (groups, threads, reactions, media). Nostr is a simpler protocol with only encrypted DMs. Tlon requires running a ship; Nostr only needs a keypair and relay access.
Can I use a moon instead of a planet?
Yes. Moons are lightweight Urbit identities spawned from planets. They're ideal for bot use — they have their own identity and can join groups and receive DMs independently.
Is the Tlon plugin bundled with OpenClaw?
No. Tlon is a separate plugin: openclaw plugins install @openclaw/tlon. It's maintained by the Tlon team (tloncorp) and published on npm.
Does it support image uploads?
Yes. Images are uploaded to Tlon's native storage system. If the native upload fails, the image URL is appended to the text message as a fallback. Other file types (documents, audio, video) are not supported.
How does auto-discovery work?
By default, the plugin discovers all group channels your ship belongs to and listens for messages. You can disable this with autoDiscoverChannels: false and manually pin channels via the groupChannels config array.
What happens if my ship goes down?
The plugin loses connectivity and stops receiving messages. When the ship comes back online, the plugin reconnects automatically. Messages sent while the ship was down may be missed depending on relay buffering.
Configuration Examples
Basic single-ship setup
channels:
tlon:
enabled: true
ship: "~sampel-palnet"
url: "https://your-ship-host"
code: "lidlut-tabwed-pillex-ridrup"
dmPolicy: allowlistPinned channels with authorization
channels:
tlon:
enabled: true
ship: "~sampel-palnet"
url: "https://your-ship-host"
code: "lidlut-tabwed-pillex-ridrup"
groupChannels:
- "chat/~host-ship/general"
- "chat/~host-ship/support"
autoDiscoverChannels: false
authorization:
channelRules:
"chat/~host-ship/general":
mode: restricted
allowedShips:
- "~zod"
- "~nec"
"chat/~host-ship/support":
mode: openDM-only with allowlist
channels:
tlon:
enabled: true
ship: "~sampel-palnet"
url: "https://your-ship-host"
code: "lidlut-tabwed-pillex-ridrup"
dmPolicy: allowlist
defaultAuthorizedShips:
- "~zod"
- "~bus"
autoDiscoverChannels: falseInstallation
openclaw plugins install @openclaw/tlon