Vol. II · Production Doctrine · II.8
Trigger from Anywhere
Factor 11: the loop does not live in one text box. Mail, chat, tickets, cron, webhooks, and IDE events are all legal starts. The agent is a reducer over events, not a chatbot with extra steps.
5 min read
Doctrine
- Normalize every inbound channel into the same event type before the loop sees it.
- A cron tick, a Stripe webhook, and a Slack mention should hit the same pause/resume API.
- The UI is a viewer of the run, not the only door into it.
The gateway is Factor 11 in product form
DeerFlow's message gateway, n8n's triggers, Inngest's events, and Cloudflare Agents sitting on Durable Objects are the same move: meet the user where the event already is. Own the adapter. Do not clone the agent per channel.
Anti-patterns
- A Slack-only agent that cannot be invoked from a ticket, then a second agent for tickets.
- Channel-specific prompts that fork the policy.