Quick Start
Declare a descriptor
List your channel’s config fields and a prompt hint on a small descriptor class:
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.| Consumer | Reads | Effect |
|---|---|---|
| Config schema | config_fields | Plugin keys validate instead of being dropped |
| Onboarding wizard | config_fields (+ optional setup) | Prompts for each field, using env as fallback |
| Agent prompt | system_prompt_hint | Injects the hint whenever the channel is active |
ChannelField Options
EachChannelField describes one config key the channel needs.
| Field | Type | Default | Description |
|---|---|---|---|
name | str | — | Config key name (as it appears under channels.<platform>) |
required | bool | False | Whether the field must be provided |
secret | bool | False | Whether the value is sensitive (masked in prompts/logs) |
prompt | str | "" | Human-friendly prompt shown by the onboarding wizard |
env | Optional[str] | None | Environment-variable name used as a fallback source |
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

