Skip to main content
A channel plugin declares — in one place — everything the gateway needs to treat it as first-class: its own config keys, a system-prompt hint, and an optional setup wizard.

Quick Start

1

Declare a descriptor

List your channel’s config fields and a prompt hint on a small descriptor class:
2

Register the platform

Pass the descriptor when you register the adapter — the gateway wires config, onboarding, and prompt for you:
Without a descriptor, a plugin channel’s own keys (like IRC’s server) are silently dropped by the fixed ChannelConfigSchema. The descriptor keeps them.

How It Works

One declaration feeds three consumers when the channel is active.

ChannelField Options

Each ChannelField describes one config key the channel needs.

Interactive Setup

Add an optional setup(io) hook for multi-step flows that a flat field list can’t express — the wizard calls it when present and merges the returned values.
setup is optional. A descriptor that only needs declarative config_fields omits it entirely.

Best Practices

Set secret=True on tokens and passwords so the wizard masks them and logs never print the value.
Add env="IRC_NICKSERV_PASSWORD" so operators can supply credentials via environment variables instead of prompts.
State the platform and its constraints in one line — for example plain text only, one short line — so the agent adapts its replies.
Reach for setup(io) for bespoke, multi-step flows. Declarative config_fields cover the common case with no code.

Messaging Bots

Connect agents to Telegram, Slack, Discord, and more

Bot Platform Capabilities

How platform capabilities drive channel behaviour

Gateway

Multi-agent coordination across channels

Plugins

Ship channels and tools as pip packages

Channel Directory

How an adapter enumerates the channels it can see