Skip to main content

Tlon

Tlon gives Fased an Urbit-native chat surface without forcing a separate hosted backend. The plugin connects to your ship, handles DMs and group channels, and keeps the same allowlist and mention gates that the rest of the gateway uses. Status: bundled channel extension for DMs, group mentions, thread replies, and text-plus-URL media fallback. Reactions, polls, and native media uploads are not supported.

Setup from Agent > Channels

Tlon ships with Fased as a local bundled channel extension. You do not need to download an npm package in a normal install. Open Agents, select the Agent, then use Agent > Channels > Tlon. Enter the ship URL and login code, save the channel, then restart the gateway if the UI reports that the runtime still needs to load.

Setup

You need one ship URL plus a valid ship login code. After that, the main decision is whether you rely on auto-discovered group channels or pin an explicit allowlist.
  1. Gather your ship URL and login code.
  2. Configure Agent > Channels > Tlon.
  3. Restart the gateway if the UI asks for it.
  4. 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",
    },
  },
}
Private/LAN ship URLs (advanced): By default, Fased blocks private/internal hostnames and IP ranges for this plugin (SSRF hardening). If your ship URL is on a private network (for example http://192.168.1.50:8080 or http://localhost:8080), you must explicitly opt in:
{
  channels: {
    tlon: {
      allowPrivateNetwork: true,
    },
  },
}

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 fased message send or cron delivery:
  • DM: ~sampel-palnet or dm/~sampel-palnet
  • Group: chat/~host-ship/channel or group:~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, Fased replies in-thread.
  • Media: sendMedia falls back to text + URL (no native upload).