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
EachChannelField describes one config key the channel needs.
Interactive Setup
Add an optionalsetup(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
Mark secrets with secret=True
Mark secrets with secret=True
Set
secret=True on tokens and passwords so the wizard masks them and logs never print the value.Provide an env fallback for secrets
Provide an env fallback for secrets
Add
env="IRC_NICKSERV_PASSWORD" so operators can supply credentials via environment variables instead of prompts.Keep the prompt hint short and concrete
Keep the prompt hint short and concrete
State the platform and its constraints in one line — for example plain text only, one short line — so the agent adapts its replies.
Use setup only when fields aren't enough
Use setup only when fields aren't enough
Reach for
setup(io) for bespoke, multi-step flows. Declarative config_fields cover the common case with no code.Related
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

