Choose an OpenAI-compatible client without guessing
A client belongs on this list only if its current documentation exposes a custom endpoint or Base URL. Start with the matrix, then verify your key with /v1/models before changing any app settings.
Which clients have a verified custom-endpoint path?
The five options below were checked against their current upstream documentation on 2026-08-02. “Verified” means the client or SDK documents a Base URL or custom-provider field. It does not promise that every model supports tools, images, streaming or the client’s preferred API transport.
| Client | Verified configuration | Important boundary |
|---|---|---|
| Cline | OpenAI Compatible provider, Base URL, API Key, Model ID | Model capabilities still need checking |
| Roo Code | OpenAI Compatible provider, Base URL, API Key, Model ID | Requires native OpenAI-style tool calling |
| Codex CLI | model_providers, base_url, env_key, wire_api | The gateway must support the selected wire API |
| Hermes Agent | Custom Endpoint wizard or named provider | Transport and model must match the endpoint |
| OpenAI Python SDK | base_url argument or OPENAI_BASE_URL | Your code chooses Responses or Chat Completions |
What should every setup verify first?
Test the API outside the client. Use the exact key you plan to save, then copy a model ID from the response instead of typing one from memory.
curl https://monkeytheme.com/v1/models \ -H "Authorization: Bearer ***"
| Response | What it tells you |
|---|---|
| 200 with a model list | The endpoint and key work for model discovery |
| 401 JSON | The route is reachable, but the credential is missing or rejected |
| 404 or HTML | Check the path and whether the client adds /v1 itself |
Which fields go into Cline and Roo Code?
Both projects document the same four basic fields: choose “OpenAI Compatible,” enter the provider Base URL, add the API key, and enter a Model ID. For MonkeyAI, start with https://monkeytheme.com/v1.
Roo Code documents an extra requirement: it uses native tool calling only, with no XML fallback. A model that can answer ordinary chat requests may still fail as a Roo coding agent if it does not support OpenAI-compatible function calls.
How do Codex CLI, Hermes and SDK apps differ?
Codex CLI and Hermes are configurable agent runtimes, not generic desktop chat boxes. Codex custom providers expose a wire_api choice; Hermes asks for a transport. Those values must match what the gateway actually implements.
The OpenAI Python SDK is lower level. Its README documents a base_url constructor argument and the OPENAI_BASE_URL environment variable. Your application still decides which API method to call and where the key is stored.
Why is Claude Code not in the OpenAI-compatible matrix?
Claude Code can use an LLM gateway, but Anthropic’s current gateway documentation describes supported API formats and the ANTHROPIC_BASE_URL path. A plain OpenAI-compatible endpoint is not enough by itself. The gateway must expose the Anthropic protocol Claude Code expects or translate it correctly.
Use the dedicated Claude Code gateway guide rather than copying the OpenAI client settings above.
Official sources checked
FAQ
Which OpenAI-compatible client should I use?
Use Cline or Roo Code for a VS Code coding agent, Codex CLI or Hermes for a terminal agent, and the OpenAI SDK when you are building your own application.
What Base URL should I use for MonkeyAI?
Start with https://monkeytheme.com/v1 unless the client explicitly appends /v1 for you.
Does a 200 response from /v1/models prove tool calling works?
No. It verifies endpoint, credential and model discovery. Tool calling and streaming require a real request with the chosen model.
Why can Roo Code fail when normal chat works?
Roo Code requires native OpenAI-compatible tool calling. A chat-only model or partial compatibility layer may not provide it.
Can Claude Code use the same OpenAI-compatible settings?
Not directly. Claude Code expects a supported gateway API format, normally the Anthropic protocol or a gateway that translates it.