Supported providers and clients
Aperture routes model requests from clients to upstream providers. Use this reference to compare their API formats, setup options, and requirements.
A provider serves models. A client or agent harness sends requests. The client, provider, and selected model must support the same API format. Matching formats does not guarantee every provider and client combination works.
Provider matrix
Provider names link to setup instructions. The table lists upstream API formats and their compatibility flags.
| Provider | API formats and flags | Base URL |
|---|---|---|
| OpenAI | OpenAI Chat Completions: openai_chat. OpenAI Responses: openai_responses. | https://api.openai.com |
| Anthropic | Anthropic Messages: anthropic_messages. | https://api.anthropic.com |
| Google Gemini | Direct Gemini: gemini_generate_content. | https://generativelanguage.googleapis.com |
| Gemini Enterprise Agent Platform (Gemini) | Google-hosted Gemini: google_generate_content. Optional OpenAI Chat Completions: openai_chat. | https://aiplatform.googleapis.com |
| Gemini Enterprise Agent Platform (Anthropic) | Google-hosted Anthropic: google_raw_predict. | https://aiplatform.googleapis.com |
| Amazon Bedrock | InvokeModel: bedrock_model_invoke. Converse: bedrock_converse. | https://bedrock-runtime.<region>.amazonaws.com |
| Microsoft Foundry (OpenAI) | OpenAI Chat Completions: openai_chat. OpenAI Responses: openai_responses. | https://<resource>.services.ai.azure.com/api/projects/<project>/openai/ |
| Microsoft Foundry (Anthropic) | Anthropic Messages: anthropic_messages. | https://<resource>.services.ai.azure.com/anthropic/ |
| OpenRouter | OpenAI Chat Completions: openai_chat. OpenAI Responses: openai_responses. Anthropic Messages: anthropic_messages. | https://openrouter.ai/api/ |
| Vercel AI Gateway | OpenAI Chat Completions: openai_chat. OpenAI Responses: openai_responses. Anthropic Messages: anthropic_messages. | https://ai-gateway.vercel.sh |
| Self-hosted LLM providers | OpenAI Chat Completions: openai_chat by default. | Your server URL |
| Other OpenAI-compatible providers | OpenAI Chat Completions: openai_chat by default. The OpenAI Responses API requires upstream support and openai_responses. | Provider URL prefix before /v1/... |
Set baseurl to the value shown. Aperture appends the full incoming request path to it. If your provider's API base URL ends in /v1, remove only that suffix. Keep any earlier path segments, such as OpenRouter's /api. Refer to upstream URL construction for details.
Provider requirements
- Gemini Enterprise Agent Platform uses separate API flags for Gemini and Anthropic models. Its optional Chat Completions path is for Gemini only. The Aperture CLI labels this platform Google Vertex.
- Bedrock InvokeModel request formats depend on the model family. The Claude Code setup uses Claude InvokeModel. Converse uses a separate format. Neither is the Anthropic Messages endpoint used by Claude Desktop.
- Microsoft Foundry's OpenAI and Anthropic endpoints require separate provider configurations.
- OpenRouter and Vercel AI Gateway models must support the selected API format.
- Claude subscription and ChatGPT subscription credentials require their own setup. They are not interchangeable with developer API keys.
When you route requests to a provider, you direct Aperture to send request content to that third-party provider. The provider's handling of that content is governed by your agreement with the provider, not your agreement with Tailscale.
Clients and agent harnesses
Choose a client that supports your provider's API. Client names link to setup instructions. CLI links use the Aperture CLI. Gateway links use settings from the Aperture gateway.
| Client and setup | API formats or back ends | Requirements and limits |
|---|---|---|
| Claude Code (CLI, gateway) | Anthropic Messages, Claude Bedrock InvokeModel, Google-hosted Anthropic | Select the matching provider type. Subscription passthrough differs from shared API-key setup. |
| Claude Code Action | Anthropic Messages | The GitHub Actions runner needs Tailscale connectivity, a CI identity, and model grants. |
| Claude Desktop (CLI) | Anthropic Messages | Requires HTTPS with a trusted certificate for the gateway hostname. CLI setup, labeled Claude Cowork, supports macOS and Windows, not Linux. This connection is for model inference, not every desktop feature. It does not use native Bedrock APIs. |
| OpenAI Codex (CLI, gateway) | OpenAI Responses | Chat Completions is insufficient. ChatGPT subscription passthrough uses a separate endpoint and authentication configuration. |
| OpenCode (CLI, gateway) | OpenAI Responses, OpenAI Chat Completions, Anthropic Messages, native Google APIs, Bedrock | The CLI uses Google-hosted Gemini and Bedrock Converse. Gateway configuration also supports Google-hosted Anthropic and Claude InvokeModel, but not ChatGPT subscription authentication. |
| Gemini CLI | Direct and Google-hosted Gemini | Version 0.40 or later requires HTTPS and a fully qualified gateway hostname. This setup uses native Google APIs, not Chat Completions. |
| GitHub Copilot CLI (gateway) | OpenAI Chat Completions, OpenAI Responses, Anthropic Messages | Select the matching API mode. This entry does not cover Copilot editor integrations. |
| Pi (gateway) | OpenAI Responses, Anthropic Messages, OpenAI Chat Completions, Gemini | The CLI configures Google-hosted Gemini. Gateway configuration uses direct Gemini. Neither includes Bedrock. |
| Oh My Pi | OpenAI Responses, Anthropic Messages, OpenAI Chat Completions, Google-hosted Gemini | Uses the omp binary. The Google Vertex back end requires Gemini models. No Bedrock back end. |
| Hermes Agent (gateway) | OpenAI Chat Completions through the CLI. Also Anthropic Messages and OpenAI Responses through gateway configuration. | Neither setup configures native Google or Bedrock APIs. |
| Kilo Code | Anthropic Messages, OpenAI Responses, OpenAI Chat Completions, native Google APIs, Bedrock InvokeModel and Converse | Gateway configuration matches back ends to APIs and model families. InvokeModel is for Claude. ChatGPT subscription authentication is excluded. |
| Grok Build | OpenAI Chat Completions preferred, OpenAI Responses for models without an OpenAI Chat Completions route | Labeled Grok in the Aperture gateway. No Messages, native Google, or Bedrock back end. Responses routes require a compatible model response shape. |
| Aperture chat | Anthropic Messages, OpenAI Chat Completions, OpenAI Responses, direct and Google-hosted Gemini | Requires model access and a chat-compatible provider. Passthrough-only providers without a fallback key are unavailable. |
Limitations
- Model access depends on provider configuration and user permissions, in addition to matching API formats.
- Compatibility flags describe upstream capabilities. Enabling a flag does not convert the provider to a different API.
- Generic API compatibility does not cover every model feature, request field, response field, or non-chat modality.
- Client-side Aperture gateway URLs and provider-side
baseurlvalues are different settings. Follow the setup guide for each. - A placeholder API key cannot replace a required passthrough credential.
- The Aperture CLI configures clients. Bridges and
ts-unplugprovide network connectivity. Network connectivity and MCP connector access do not establish LLM inference compatibility. - Tokens bought through Aperture provide managed model access in built-in chat. Model availability in chat does not establish external client compatibility.
Other providers and clients
For providers without a dedicated guide, use the OpenAI-compatible provider setup. It configures the /v1/chat/completions API by default. Tailscale does not test or guarantee compatibility with every OpenAI-compatible provider.
Groq, Together AI, Fireworks, Mistral, DeepSeek, and Perplexity are examples of the generic provider setup, not individually verified integrations. The self-hosted provider guide covers servers such as llama.cpp, vLLM, and Ollama.
Roo Code, Cline, and custom applications can use the generic OpenAI-compatible client setup when their API requirements match the provider. Providers and clients not listed here might also work with these generic setups.
Related
- For compatibility flags, authorization, and pricing fields, refer to Provider configuration.
- For the complete configuration schema, refer to the Aperture configuration reference.
- For step-by-step provider setup instructions, refer to the set up LLM providers guides.
- To connect coding agents through Aperture, refer to the set up LLM clients guides.
- For automated client configuration, refer to the Aperture CLI.
- For connection and request failures, refer to Troubleshooting Aperture.