Quick Start
1
Declare a descriptor
List your channel’s config fields and a prompt hint on a small descriptor class:
Availability. Before PraisonAI PR #3622,
system_prompt_hint was declared but not delivered to the model on the gateway path — the resolver existed, but nothing called it. As of PR #3622 the gateway auto-injects the hint at per-channel bot construction (and again on hot-reload), so a plugin’s declared hint now actually reaches the agent.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.Guarantees. The auto-injection is:
- Bounded — a single trailing append.
- Idempotent — won’t double-append across hot-reload or re-clone if the hint is already present.
- Deterministic — one ordered append keeps the prompt prefix cache-stable.
- No-op for built-in channels that declare no hint.
- Opt-in — only affects third-party channels that declare a
system_prompt_hint.
backstory (and the rebuilt system_prompt) — the fields the runtime prompt builder actually reads — not instructions, which is a construction-only attribute.Issue #3621: Prior to this release the hint field existed on the descriptor but was never read by the runtime. Third-party channels that shipped a
system_prompt_hint before that release should verify their hint now reaches the model.How the hint reaches the model
The gateway resolves the descriptor’s hint and appends it to the cloned agent’sbackstory, then rebuilds system_prompt — the runtime prompt builder reads those, not the construction-only instructions.
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.Idempotency & prompt-cache safety
Idempotency & prompt-cache safety
The gateway appends the hint as a single trailing line, so injection is deterministic and the prompt prefix stays cache-stable across turns. A hint already present on the agent’s
backstory is a no-op on hot-reload, so re-clones never duplicate it.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
Visible-Outcome Guarantee
Every inbound turn ends in a visible reply or a deliberate silence
Prompt-hint auto-injection introduced in PraisonAI PR #3622 (fixes #3621).

