Quick Start
1
Zero Configuration (Transient Retry)
All six adapters now retry on transient failures by default — no config needed:Slack, Discord, WhatsApp, Email, Linear, and AgentMail behave identically — transient 5xx and 429 errors are retried automatically.
2
Enable Dead Letter Queue
Add a
dlq_path so permanently-failed replies are parked for later replay:3
Tune Backoff Parameters
Fine-tune retry behaviour per channel:
How It Works
The mixin (OutboundResilienceMixin) wraps each adapter’s raw send with deliver_outbound(). State is initialised lazily from self.config.outbound_resilience — existing adapter constructors need no changes.
Channel Support
All six channels now share the same durable delivery path:What Gets Retried
Configuration Options
Best Practices
Always configure a DLQ path in production
Always configure a DLQ path in production
Without
dlq_path, failed replies after max attempts are re-raised and logged but not recoverable. A DLQ lets you replay them after fixing an outage.Respect rate limits with Retry-After
Respect rate limits with Retry-After
The mixin reads the
Retry-After response header and waits exactly that long before the next attempt, so your bot stays within platform rate limits without sleeping longer than necessary.Opt channels out individually
Opt channels out individually
Set
outbound_resilience.enabled = False in a channel’s config to disable durable delivery for that channel only — useful for fire-and-forget channels where retries would send duplicates.Monitor your DLQ
Monitor your DLQ
Parked entries are permanent failures. Set up alerts on DLQ growth to detect channels that are consistently unreachable (e.g. bots kicked from a workspace).
Related
Dead-Target Registry
Short-circuit known-dead channels before sending
Bot Channels
Overview of all supported messaging channels
Delivery Config
Full delivery configuration reference
Inbound DLQ
Dead-letter queue for inbound messages

