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
2.7 KiB
| summary | read_when | |
|---|---|---|
| Tlon/Urbit support status, capabilities, and configuration |
|
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
- Gather your ship URL and login code.
- Add
tlonto your plugins allow list. - Configure
channels.tlon. - Restart the gateway (dependencies install automatically on first load).
- 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-palnetordm/~sampel-palnet - Group:
chat/~host-ship/channelorgroup:~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:
sendMediafalls back to text + URL (no native upload).