Providers
Most of these docs are organized by capability: language models, embeddings, speech, and so on. This page flips that around. If you already use a provider somewhere else and want to know what effect-uai can do with it, find its row and follow the link to the usage page.
Switching providers is always a Layer swap. Each one registers under both its own typed tag and the generic capability tag, so code you write against the generic tag keeps working when you change the backend.
Capability matrix
Four tables, split on lines the library itself draws. Model
capabilities take a model id: you pick a model and quality varies by which
one. Web capabilities are backend services you send requests to.
Runtime capabilities are environments your agent acts inside: a sandbox
it runs code in, a browser it drives. Messaging is the one where people
talk to the agent. A provider can appear in more than one (Jina does).
A ✓ links to the usage page for that provider and capability.
Models
| Provider | LLM | Embeddings | Images | Speech | Realtime | Music | Decisions |
|---|---|---|---|---|---|---|---|
| OpenAI | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| Anthropic | ✓ | ||||||
| Mistral | ✓ | ✓ | |||||
| Fal | ✓ | ||||||
| ElevenLabs | ✓ | ✓ | |||||
| Jina | ✓ | ||||||
| Inworld | ✓ | ||||||
| TypeSafe AI | ✓ |
Speech is one direction at a time: audio to text, or text to audio. Realtime is the duplex session where both run at once over one socket and the model decides whose turn it is. Only Google takes camera frames on that session. Decisions is the one model column that returns no text: typed questions in, a probability per answer out.
Web
| Provider | Web search | Web reading |
|---|---|---|
| Exa | ✓ | ✓ |
| Perplexity | ✓ | |
| Tavily | ✓ | ✓ |
| Firecrawl | ✓ | |
| Jina | ✓ |
Runtimes
| Provider | Sandbox | Browser |
|---|---|---|
| Microsandbox | ✓ | |
| Deno | ✓ | |
| CDP (Chromium, obscura, hosted browser clouds) | ✓ |
Messaging
Where people talk to the agent rather than the agent acting on the world.
| Provider | Messenger |
|---|---|
| Telegram | ✓ |
| Discord | ✓ |
| Slack | ✓ |
Gateways and protocol adapters
Not every backend is a provider. OpenRouter and Requesty
are routing gateways: one key, hundreds of models, reached through the OpenAI
protocol adapters. Those adapters, Responses and the
legacy Chat Completions base
(@effect-uai/chat-completions), are named for the wire protocol, not a vendor,
so they point at any conforming endpoint via baseUrl.
Realtime has its own set of those, since several vendors speak the OpenAI Realtime protocol on their own host: see compatible endpoints.
MCP is a third kind of not-a-provider: a server there
supplies tools, not a capability. @effect-uai/mcp connects to any of them
and hands the loop a Toolkit, so it composes with whichever provider you
picked above rather than replacing one.
OpenAI
@effect-uai/openai
GPT models via the Responses API, text embeddings, images, speech, and
realtime sessions, all under one install. The Responses provider also ships
standalone as @effect-uai/responses.
- Language model: Responses
- Embeddings: OpenAI
- Images: OpenAI Images
- Speech: OpenAI
- Realtime: OpenAI Realtime
@effect-uai/google
Gemini models, Gemini embeddings, Nano Banana images, Gemini speech, Gemini Live sessions, and Lyria music.
- Language model: Google Gemini
- Embeddings: Google Gemini
- Images: Google Images
- Speech: Google Gemini
- Realtime: Gemini Live, the only one that takes camera frames
- Music: Google Lyria
Mistral
@effect-uai/mistral
Mistral chat models plus Voxtral realtime STT and TTS, enough for a full voice pipeline on one brand.
- Language model: Mistral
- Speech: Mistral (Voxtral)
Anthropic
@effect-uai/anthropic
Claude models via the Messages API.
- Language model: Anthropic
Fal
@effect-uai/fal
Other people’s image models behind one key: FLUX.2, Seedream 5, Qwen Image, Muse, and the open-weights field, including the sub-second tier. The model id here is an endpoint path rather than a model name, and generating and editing are separate endpoints.
- Images: Fal
ElevenLabs
@effect-uai/elevenlabs
Streaming speech-to-text, text-to-speech, and music generation.
- Speech: ElevenLabs
- Music: ElevenLabs Music
Jina
@effect-uai/jina
Text and multimodal embeddings, including multivector output, plus the Reader for turning URLs into clean markdown.
- Embeddings: Jina
- Web reading: Jina Reader
Inworld
@effect-uai/inworld
Text-to-speech.
- Speech: Inworld
TypeSafe AI
@effect-uai/typesafe-ai
Jev, a decision model: classify, rate and probability questions about one input, answered with probabilities in a single call instead of generated text.
- Decisions: TypeSafe AI
Exa
@effect-uai/exa
Neural web search ranked by relevance score, plus /contents for reading a
URL to clean markdown.
- Web search: Exa
- Web reading: Exa Contents
Perplexity
@effect-uai/perplexity
Fast, current-events web search snippets.
- Web search: Perplexity
Tavily
@effect-uai/tavily
Web search with snippets, scores, and depth control, plus /extract for
reading a URL to clean markdown.
- Web search: Tavily
- Web reading: Tavily Extract
Firecrawl
@effect-uai/firecrawl
JS-rendered pages turned into clean markdown or HTML.
- Web reading: Firecrawl
Microsandbox
@effect-uai/microsandbox
Isolated microVM sandboxes for running model-generated code.
- Sandbox: Microsandbox
Deno
@effect-uai/deno
Sandboxed code execution on the Deno runtime.
- Sandbox: Deno Sandbox
CDP
@effect-uai/browser
One adapter for everything that speaks the Chrome DevTools Protocol, which in practice is the whole browser-automation field: a headless Chromium container, a locally installed Chrome or Edge, a from-scratch engine like obscura, or a hosted browser cloud’s connect URL (Browserbase, Browserless, and the like).
- Browser: Generic CDP
Telegram
@effect-uai/telegram
Your agent as a Telegram bot: DMs, group mentions and commands in, streamed answers, media and reactions out. Long-polls the Bot API over a plain HTTP client, no SDK.
- Messenger: Telegram
Discord
@effect-uai/discord
Your agent as a Discord bot: DMs, channel mentions, threads and button presses in, streamed markdown answers, media and reactions out. Holds one gateway websocket and calls the v10 REST API over a plain HTTP client, no discord.js.
- Messenger: Discord
Slack
@effect-uai/slack
Your agent as a Slack bot: mentions, DMs, slash commands and button presses in, streamed markdown answers in a thread, files and reactions out. Holds one Socket Mode websocket and calls the Web API over a plain HTTP client, no Bolt.
- Messenger: Slack