Quick verdict
Ship one agent to Slack, Discord, and Microsoft Teams only after you decide who owns the channel: the framework, a Chat SDK adapter, or your own webhook stack.
- Vercel Eve first-class channels — add a file under
agent/channels/for Slack, Discord, or Teams. Eve owns webhook handling, signature verification, thread management, and (on Vercel) credentials via Vercel Connect. Best for Next.js teams on Vercel that want two or more workplace surfaces this quarter. Honest limit: Connect and Eve are preview/beta in places; the deepest path assumes Vercel as the billing and credential center. - Chat SDK channel — Eve can wrap a Chat SDK adapter when you need a surface Eve does not ship first-class (WhatsApp, Google Chat, email) or when you already run Chat SDK bots and want to keep that credential model. Best for mixed surfaces. Honest limit: you now operate two channel runtimes in one repo.
- Custom adapters — Mastra, Strands, LangGraph, or a hand-rolled loop plus your own Slack/Teams apps. Best for teams that already own bot tokens, signing secrets, and a compliance story that forbids a managed connector. Honest limit: every new channel is a product.
Cipher's cutover rule: treat the channel as a product surface, not a connector checkbox. If you need Slack + one more workplace channel on Vercel, Eve's channel files are the lowest-glue path. If you already operate a Slack app and cannot put credentials through Connect, keep the custom stack. Eve stacks with the Vercel AI SDK at the web UI; it does not replace it — Eve vs AI SDK.
Last updated: August 2026. Re-check Eve Slack, Discord, and Teams channel docs — APIs move in preview.
Channel ownership matrix
| You want… | Use | You still own |
|---|---|---|
| Slack mentions, DMs, buttons, HITL | Eve slackChannel + Connect |
Workspace install, scopes, who may talk to the bot |
| Discord slash commands and components | Eve Discord channel | Guild install, intent flags, moderation policy |
| Microsoft Teams + Adaptive Cards | Eve Teams channel | Bot Framework registration, tenant admin consent |
| WhatsApp, Google Chat, email | Eve Chat SDK channel + adapter | Provider account, adapter upgrades |
| Web chat in your Next.js app | Eve HTTP channel + useEveAgent, or AI SDK UI |
Auth on the page, streaming UX |
| Same agent, but secrets must stay in your vault | Eve portable credentials (bot token + signing secret) or a custom adapter | Rotation, webhook URL, replay protection |
| Portable TypeScript agent, channels later | Mastra + your HTTP surface — Eve vs Mastra | Every channel |
What Eve actually ships
A channel in Eve is an edge adapter. It normalizes inbound transport, applies auth and delivery policy, and owns channel-local addresses. The harness still does one unit of AI work. The runtime still owns the session id. Slack thread IDs do not leak into your tool code.
On Slack, the recommended path is Connect: you authorize Vercel's managed Slack app, store a connector UID in SLACK_CONNECTOR, and Eve serves events at /eve/v1/slack. There is no SLACK_BOT_TOKEN in the happy path. Portable credentials exist when Connect is forbidden — Eve then wants the bot token and signing secret in env, and you wire the Request URL yourself.
Teams routes Bot Framework Activity POSTs and can render Adaptive Cards for human-in-the-loop prompts. Discord covers slash commands and components. Cron is a channel too: a Markdown schedule is how the same agent posts a daily digest without an open chat.
Primary sources: vercel.com/eve, Eve concepts, Chat SDK and Eve.
When custom is cheaper
Custom is cheaper when you already paid for the Slack or Teams app: event subscriptions, interactivity URLs, admin review, and a secret-rotation runbook. Adding Eve Connect on top of that is a second credential story, not a shortcut.
Custom is also the right call when the workplace is the product. A Slack-native SaaS that needs Block Kit, enterprise grid, and per-workspace billing will outgrow a channel file. Eve is the right call when the agent is the product and Slack/Teams/Discord are delivery surfaces.
Mastra, Strands, and LangGraph can all speak Slack. None of them make "add teams.ts" the whole integration. Budget the channel as a connector line item — see how we price production agents.
The cutover in practice
| Signal | Prefer Eve channels | Prefer custom / Chat SDK |
|---|---|---|
| Two or more of Slack, Discord, Teams this quarter | Default | Only if Connect is blocked |
| Already operate a reviewed Slack app | Optional; portable credentials | Default |
| Need WhatsApp or email too | Chat SDK channel on Eve | Fine if that is already your bot stack |
| AU/SG residency forbids Vercel-held tokens | Portable credentials or skip Eve | Default — or Strands on AWS |
| Agent must also be durable + sandboxed | Eve bundle — durable workflows | You assemble runner + sandbox + channel |
If the real fork is AWS inheritance rather than channels, stop here and read Eve vs Strands.
FAQ
Can one Eve agent serve Slack, Discord, and Teams? Yes. Add one channel file per surface. The session runtime is shared. Channel-local addresses stay behind the channel API.
Do I have to use Vercel Connect? No. Slack documents a portable-credentials path with SLACK_BOT_TOKEN and SLACK_SIGNING_SECRET. You then own webhook URLs and rotation. Connect is the happy path on Vercel, not a hard requirement of the framework.
Is n8n a multi-channel agent framework? n8n can post to Slack and Teams. It is a workflow tool, not a durable agent OS with sandboxes and evals. See n8n agents vs custom frameworks.
Who wires this for Australian and Singapore teams? Cipher Projects — we treat each workplace channel as a connector with its own auth, audit, and failure cost, not as a free extra.
Conclusion
Multi-channel agents fail on webhooks and credentials, not on model choice. Eve makes Slack, Discord, and Teams files on a durable Vercel runtime. Custom wins when you already own the apps or cannot use Connect. Pick the owner of the channel before you pick the model.
Related: Eve vs Mastra · Eve features vs Mastra · Eve alternatives · OSS alternatives to Eve
