Compatibility matrix
Every provider, client, agent framework and adapter the router connects to - and how each connection was verified.
What OpenSmartRoute connects to, how each connection is made, and how it was verified. One row per provider, client, framework and adapter; the Verified column names the evidence - a unit test that runs on every push, a live run with real credentials and its date, or "by protocol" when the connection is the OpenAI-compatible wire format and no deeper adapter exists. A test holds this page to the code: every provider preset the platform offers, every adapter module of the SDK and every framework the website names must have a row here.
Legend for Verified: CI = exercised by the test suite on every push (a fake endpoint speaking the
provider's wire format); live <date> = a real call with real credentials on that date, recorded in the
repository; protocol = reached through the OpenAI-compatible API without a dedicated adapter, so what is
verified is the protocol, not the vendor's quirks.
Model providers (hosted platform and osr serve)
The platform's Model providers page offers these presets (platform/api/osr_platform/providers.py); each is
an OpenAI-compatible endpoint the router calls with the workspace's own key. The SDK reaches the same endpoints
through attach_chat_handlers / OpenAICompatClient and, for Anthropic, AnthropicClient.
| Preset | Vendor API | Wire format | Verified |
|---|---|---|---|
openai | OpenAI | OpenAI chat / embeddings / responses | CI; live 2026-09-10 (token calibration against billed gpt-4.1 usage) |
azure | Azure OpenAI / Azure AI Foundry | OpenAI v1 with api-key header | CI; live 2026-09-10 (multi-cloud benchmark, 150 prompts) |
azure-identity | Azure OpenAI / Azure AI Foundry, keyless | OpenAI v1 with a managed-identity bearer token (identity://https://cognitiveservices.azure.com) | CI (reference resolution and caching); the token exchange is the same identity endpoint the Key Vault references use in production |
huggingface | Hugging Face Inference Providers | OpenAI-compatible router (router.huggingface.co/v1, Hub model ids) | protocol |
bedrock | Amazon Bedrock | OpenAI-compatible endpoint (openai.gpt-oss-*) | live 2026-09-10 (multi-cloud benchmark) |
gemini | Google Gemini API | OpenAI-compatible endpoint | protocol |
vertex | Google Cloud Vertex AI | OpenAI-compatible endpoint (google.thinking_config passed through) | live 2026-09-10 (multi-cloud benchmark, judge re-scoring) |
openrouter | OpenRouter | OpenAI | CI (the example catalogue names OpenRouter ids) |
anthropic | Anthropic | native Messages API (AnthropicClient) | CI (translation of chat calls, streaming) |
mistral | Mistral | OpenAI | protocol |
groq | Groq | OpenAI | protocol |
together | Together AI | OpenAI | protocol |
fireworks | Fireworks AI | OpenAI | protocol |
deepseek | DeepSeek | OpenAI | protocol |
xai | xAI | OpenAI | protocol |
cohere | Cohere | OpenAI-compatible endpoint | protocol |
ollama | Ollama (local models) | OpenAI | CI; live, in production (the on-prem targets of opensmartroute.ai run on it) |
vllm | vLLM | OpenAI | protocol (the vLLM semantic-router import is CI) |
litellm | LiteLLM proxy | OpenAI | protocol |
custom | any OpenAI-compatible endpoint | OpenAI | CI (the test fleet is one) |
The platform's own model server (osr-models, Ollama and OpenAI APIs over llama.cpp) is a ollama preset to
the router; its API coverage has its own matrix in the model-serving plan.
Clients that talk to the router
| Client | How | Verified |
|---|---|---|
| OpenAI Python SDK | OpenAI(base_url=<router>/v1, api_key=<key>), model="auto" | CI (the official client against osr serve, chat, streaming, tools, embeddings); openai>=1.50,<3 |
| OpenAI Node SDK and every OpenAI-compatible client (Vercel AI SDK, Continue, aider, LiteLLM, ...) | same base URL | protocol; the TypeScript SDK's live test runs against production |
| Anthropic SDK / Claude Code | /v1/messages with the router as base_url | CI (Messages API surface) |
| OpenAI Responses clients | /v1/responses | CI |
| MCP hosts (VS Code, Cursor, Windsurf, Claude Desktop, Claude Code) | /mcp (Streamable HTTP) or osr mcp (stdio) | CI (the official mcp client, mcp>=1.10,<2); live in production |
@opensmartroute/sdk (TypeScript) | typed REST client over the platform API | CI (surface and live tests) |
osr CLI | the SDK, in a terminal | CI |
Agent frameworks
| Framework | Integration | Depth | Verified |
|---|---|---|---|
| LangGraph | adapters.frameworks.langgraph_node / langgraph_condition | deep adapter (a routing node and an edge condition) | CI (the node runs without LangGraph installed; the graph wiring is the framework's) |
| Microsoft Agent Framework / AutoGen | adapters.frameworks.maf_router_executor | deep adapter (an executor) | CI |
| OpenAI function calling / Agents SDK | adapters.frameworks.openai_tool_spec / openai_tool_handler | deep adapter (the router as a tool) | CI |
| LangChain | ChatOpenAI(base_url=<router>/v1, model="auto") | protocol | protocol |
| CrewAI | the OpenAI-compatible LLM setting | protocol | protocol |
| LlamaIndex | OpenAILike(api_base=<router>/v1) | protocol | protocol |
| Semantic Kernel | the OpenAI connector with a base URL | protocol | protocol |
| pydantic-ai | the OpenAI model with a base URL | protocol | protocol |
SDK adapters (opensmartroute.adapters)
| Module | Connects | Verified |
|---|---|---|
a2a | A2A Agent Cards as agent targets; a2a_handler with task polling | CI |
anthropic_client | the Anthropic Messages API as a chat handler | CI |
catalogue | the live model catalogue (prices, context windows) | CI; live every 8 hours on the platform |
frameworks | LangGraph, Agent Framework, OpenAI tools (above) | CI |
handlers | HTTP endpoints, MCP tools and asynchronous queues as handlers | CI |
harness | agent harnesses: callable, HTTP, subprocess | CI |
marketplace | the marketplace (search, pull, sync, signed manifests) | CI; live in production |
mcp | MCP tool catalogues (stdio and Streamable HTTP), resources and prompts | CI (official client) |
mcp_servers | MCP server recommendation from a request | CI |
mock_client | the mock provider kind: a deterministic, network-free provider for tests, demos and pipelines | CI |
openai_compat | OpenAI-compatible HTTP client (chat, embeddings, retries, error mapping) | CI; live (above) |
optional | adapters with extra dependencies, imported lazily | CI |
personas | persona catalogues as targets | CI |
semantic_router | a vLLM semantic-router configuration imported as rules | CI |
skills | Agent-Skills SKILL.md packages as targets | CI |
websearch | web knowledge and feeds for the self-improver | CI; live on the platform |
Runtimes
| Runtime | Verified |
|---|---|
| CPython 3.11, 3.12 (Linux, Windows) | CI on every push; 3.11 is the floor |
| Node 22 (web, TypeScript SDK, extension, desktop) | CI |
| PostgreSQL 16 (platform) | CI and production |
| Redis, Kafka (platform clustering, optional) | CI (platform cluster job) |
A vendor that changes its wire format breaks a protocol row first; the CI rows carry a fake of the format the SDK was written against, so a change shows up as a red build only once the fake is updated - treat a protocol row as "should work" and a CI or live row as "does work".
Something wrong or out of date on this page? Tell us - the page is named for you, so a one-line note is enough.