Messaging Orchestrator
One config file runs every channel. Each gateway starts with shared middleware and routes into the same agent and session layer, so a customer gets the same agent whether they arrive on WhatsApp or Slack.Shape of the config
Middleware
Applied across all channels, so you configure protection once rather than per gateway:The rate limiter is per-channel protection against a spam flood, and also a cost control — every
inbound message that reaches the agent costs model tokens.
maxPerHour is the ceiling on what a
single abusive sender can spend.Notification routing
Route engine events outward to the channels that should see them:"*" route catches everything not matched above —
useful as a safety net while you learn which events matter.
Channels
${VAR} interpolation — keep them out of the YAML.
Where messages go
All channels feed the same session layer, so conversation state persists per user across turns and, withpersistSessions: true, across restarts. That’s what lets a handoff work: a conversation
escalated to a human keeps its history.