Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/vercel/eve/llms.txt

Use this file to discover all available pages before exploring further.

A channel is the edge adapter between a platform and your agent. Every inbound message — whether it originates from a Slack mention, a Telegram webhook, an SMS, or a plain HTTP request — passes through a channel before the agent ever sees it. Channels are also responsible for sending responses back to the right surface. A channel does three things:
  • Normalizes input — converts platform-specific payloads (Slack event JSON, TwiML transcripts, GitHub webhook bodies) into a user message the agent can process.
  • Owns the continuationToken — holds the resume handle that links an incoming request to an existing conversation on that surface.
  • Decides delivery — determines how, where, and whether a response goes back to the platform (inline reply, threaded post, SMS, ephemeral DM, etc.).

Where channels live

Channel files live under agent/channels/ in the root agent. The file stem is the channel id: agent/channels/intake.ts is addressed as intake. Export the channel as the module’s default export. Local subagents do not declare channels.
agent/
  agent.ts
  channels/
    eve.ts
    slack.ts
    intake.ts
Only the root agent declares channels. Local subagents inherit the parent agent’s channel context automatically.

Scaffolding a channel

Scaffold a channel file with eve channels add (interactive), or pass a platform kind directly:
eve channels add slack
# or
eve channels add web
You can also author the file by hand. Every channel is just a TypeScript file that exports a channel definition as its default export.

The eve HTTP channel (default)

The eve channel is the framework’s built-in HTTP session API. It is what the terminal UI, useEveAgent, and curl all communicate with when starting sessions, sending messages, and streaming events. It is enabled by default — even when agent/channels/eve.ts does not exist. Add agent/channels/eve.ts only when you need to override the defaults, most often the route auth policy:
agent/channels/eve.ts
import { eveChannel } from "eve/channels/eve";
import { localDev, vercelOidc } from "eve/channels/auth";

export default eveChannel({
  auth: [localDev(), vercelOidc()],
});
See Platform Channels for the full route list, auth options, and customization hooks.

Custom channels

When eve doesn’t ship a channel for your surface, build one with defineChannel from eve/channels. A custom channel declares route handlers (GET, POST, PUT, PATCH, DELETE, WS), an events map, and a send call inside a handler to start or resume a session. See Custom Channels for the full walkthrough, including WebSocket routes, cross-channel hand-off, channel metadata, continuation tokens, and file uploads.

Which channel should I use?

You want…Use
A web app / browser chat UIeve channel + useEveAgent
Local tooling, SDK clients, curleve channel (default)
Slack mentions, DMs, buttonsSlack
Discord slash commands, componentsDiscord
Microsoft Teams messages + Adaptive CardsTeams
Telegram bot messagesTelegram
SMS or speech-transcribed phone callsTwilio
GitHub @mentions, PR review with checkoutGitHub
Linear issue delegation and Agent SessionsLinear channel
Anything else (internal webhook, WebSocket)Custom channel (defineChannel)

Security and compliance

Each channel has its own provider terms, data flow, auth model, and user-consent expectations. Before sending non-public, sensitive, regulated, or production data through a channel, confirm that the channel provider and your configured scopes, signature checks, route auth, and delivery behavior are appropriate for your use case. Where an eve agent communicates with people, you may be required to disclose that they are interacting with an automated AI system. eve does not add this disclosure automatically — configure it in your instructions and/or channel responses.

Platform Channels

Slack, Discord, Teams, Telegram, Twilio, GitHub, and the built-in eve HTTP channel — all covered with setup code and environment variables.

Custom Channels

Build a channel for any surface using defineChannel, with WebSocket support, cross-channel hand-off, metadata, and file uploads.

Build docs developers (and LLMs) love