Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@wca4a
Copy link

@wca4a wca4a commented Jan 23, 2026

Summary

Adds built-in Tlon (Urbit) channel plugin to support decentralized messaging on the Urbit network. This makes Tlon a first-class channel alongside Telegram, Signal, Slack, etc.

Motivation

Currently using Tlon as an external plugin (~/.clawdbot/extensions/tlon/) causes cron delivery to fail with:

Error: Outbound not configured for channel: tlon

Regular messages work fine, but cron's loadChannelOutboundAdapter() doesn't resolve external plugins properly. Making Tlon a built-in plugin should resolve this issue (see #1530).

Features

Direct Messages - Send/receive DMs with Urbit ships
Group Chats - Support for Urbit group channels
Real-time Monitoring - SSE-based event streaming
Auto-discovery - Automatically finds and subscribes to channels
Thread Replies - Support for threaded conversations
Reactions - Message reactions support
Cron Delivery - Works with clawdbot cron delivery (the key fix!)

Implementation

Plugin Structure

  • extensions/tlon/index.ts - Plugin registration via ClawdbotPluginApi
  • extensions/tlon/src/channel.js - Main channel plugin with outbound/config/gateway adapters
  • extensions/tlon/src/monitor.js - Inbound message handler and Urbit integration
  • extensions/tlon/src/urbit-sse-client.js - SSE client for Urbit event streaming
  • extensions/tlon/src/core-bridge.js - Runtime bridge for clawdbot integration

Key Components

Outbound Delivery:

outbound: {
  deliveryMode: "direct",
  chunker: (text, limit) => [text],
  textChunkLimit: 10000,
  sendText: async ({ cfg, to, text, accountId }) => { /* ... */ },
  sendMedia: async ({ cfg, to, text, mediaUrl, accountId }) => { /* ... */ }
}

Gateway Adapter:

  • Handles inbound messages from Urbit ships
  • Supports DM and group chat routing
  • Thread reply detection and processing
  • Authorization via ship allowlists

Configuration:

{
  "channels": {
    "tlon": {
      "enabled": true,
      "ship": "your-ship",
      "code": "your-+code",
      "url": "https://your-ship.tlon.network",
      "groupChannels": ["chat/~ship/channel-id", "dm/~ship"]
    }
  }
}

Testing

Tested with:

  • ✅ Direct messages (send/receive)
  • ✅ Group channel messages
  • ✅ Thread replies
  • ✅ Auto-discovery of channels
  • ✅ Gateway integration
  • ⏳ Cron delivery (pending built-in plugin installation)

Dependencies

Added to extensions/tlon/package.json:

{
  "dependencies": {
    "@urbit/http-api": "^3.0.0",
    "@urbit/aura": "^2.0.0",
    "eventsource": "^2.0.2"
  }
}

Configuration Example

clawdbot config set channels.tlon.enabled true
clawdbot config set channels.tlon.ship sitrul-nacwyl
clawdbot config set channels.tlon.code dolsug-ticsen-ripmus-bonmud
clawdbot config set channels.tlon.url https://sitrul-nacwyl.tlon.network

Documentation

Full documentation included in extensions/tlon/README.md covering:

  • Setup and authentication
  • DM and group chat configuration
  • Authorization modes
  • Cron job integration
  • Troubleshooting

Related Issues

Closes #1530

Checklist

  • Plugin follows clawdbot extension structure
  • Includes both sendText and sendMedia for delivery
  • Gateway adapter handles inbound messages
  • Configuration schema defined
  • README with setup instructions
  • Tested with real Urbit ship
  • CI/build passes (pending pnpm install)

Notes

This plugin has been tested extensively as an external plugin and works perfectly for regular message flow. The only issue was with cron delivery, which should be resolved by making it a built-in plugin.

Original plugin repo: https://github.com/wca4a/clawdbot-tlon-plugin

william arzt and others added 3 commits January 23, 2026 15:17
Adds built-in Tlon (Urbit) channel plugin to support decentralized messaging on the Urbit network.

Features:
- DM and group chat support
- SSE-based real-time message monitoring
- Auto-discovery of group channels
- Thread replies and reactions
- Integration with Urbit's HTTP API

This resolves cron delivery issues with external Tlon plugins by making it a first-class built-in channel alongside Telegram, Signal, and other messaging platforms.

Implementation includes:
- Plugin registration via ClawdbotPluginApi
- Outbound delivery with sendText and sendMedia
- Gateway adapter for inbound message handling
- Urbit SSE client for event streaming
- Core bridge for Clawdbot runtime integration

Co-authored-by: William Arzt <[email protected]>
@steipete
Copy link
Contributor

Landed via merge/pr-1544-tlon.

  • Reworked Tlon plugin to TS/plugin-sdk implementation (monitor + SSE client, bounded processed cache, late subscription PUT, CLI/onboarding wiring, docs).
  • Added external plugin catalog merge for onboarding/CLI.
  • Removed accidental node_modules from extensions/tlon.
  • Updated clawtributors list.

Commits:

  • 9cdd0c2 feat: add tlon channel plugin
  • f804626 chore: drop tlon node_modules
  • 084206ff5 merge branch feature/add-tlon-plugin -> merge/pr-1544-tlon
  • b4bfaa39f chore: update clawtributors

Tests: pnpm lint; pnpm build; pnpm test

@steipete steipete merged commit c1b7f6b into openclaw:main Jan 24, 2026
72 of 82 checks passed
@steipete
Copy link
Contributor

Merged with admin override due to stuck CI. PR branch synced with main first.
Merge commit: c1b7f6b
Main commits containing the changes: 791b568, 75cb78a, 12d22e1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cron delivery fails for custom channel plugins: 'Outbound not configured' despite proper registration

2 participants