Trae, Windsurf and Kilo Code: how base_url configuration differs across the new IDEs
Screen for protocol support first
Before touching a configuration file, answer one question: which protocols does this client support?
That decides whether you can point it straight at a relay site or have to convert formats first.
| Client | OpenAI format | Anthropic format | Note |
|---|---|---|---|
| Trae | On some versions | Version-dependent | Official channel wins; a custom API must be explicitly enabled in settings |
| Windsurf | Yes | Usually not | Uses the OpenAI-compatible endpoint |
| Kilo Code | Yes | Yes | Built on the VS Code extension model, fairly complete configuration |
| Roo Code | Yes | Yes | Same, and the provider is selectable |
| Cline | Yes | Yes | The clearest configuration of the group |
Conclusion: if your relay site offers only an OpenAI-compatible endpoint, clients like Windsurf and Trae are less trouble. If the models you need only behave properly under the Anthropic protocol — Claude-family tool calling in particular — pick a client that supports Anthropic.
Three problems they all share
One: the model name must be typed in, and must match the relay site
This is the same as Cursor. No client pulls the model list from the relay automatically.
The reliable approach: curl /v1/models first to get the real list, then copy names from it.
Two: does tool calling need enabling separately
Agent features — reading files, editing files, running commands — depend on tool calling. Three things to confirm:
- Client side: is an Agent or Tools mode switched on?
- Relay side: does it support tool calling? Test with the four cases from our tool use compatibility article.
- Protocol side: if you are calling Claude over OpenAI format, the quality of tool-call conversion decides whether the agent works at all.
A rule of thumb: calling Claude-family models over OpenAI format breaks tool calling noticeably more often than using the native Anthropic format. This is not superstition. OpenAI's arguments is a string and Anthropic's input is an object, and conversion layers get this step wrong very often.
So use the native Anthropic protocol when it is available. Do not unify everything onto OpenAI format just for convenience.
Three: the priority between official login and a custom API
All of these clients have official subscription channels. When configuring a custom API, watch out for:
- Some versions prefer the official channel whenever an official login is detected, so you think you are spending your own key when you are not.
- Log out of the official account in settings first, or switch the provider explicitly.
How to check: look at the request log in the relay site's dashboard. If the site records nothing after you send a request, the request never arrived.
This is the fastest single move when "configured but nothing happens" — check whether the server received anything at all, and the problem immediately splits into "the client never sent it" and "the server failed to handle it".
Common configuration points for the VS Code family
Kilo Code, Roo Code and Cline share a similar configuration structure:
- API Provider: choose
OpenAI CompatibleorAnthropic. - Base URL: mind the
/v1, which is usually required. - API Key.
- Model ID: typed by hand, matching the relay site.
- Context length: typed by hand. This one is easily overlooked, and leaving the default can push requests over the limit. Set it to about 80% of the relay's advertised figure to leave headroom.
- Tool calling enabled: switch it on explicitly.
Item 5 deserves its own emphasis. These extensions send the entire conversation history plus the system prompt, so the payload is far larger than a chat message. A wrong context length either errors outright or triggers silent truncation, which presents as "the agent starts forgetting things after a few turns".
An troubleshooting order
When configuration does not work, check in this order. Each step halves the search space:
- curl the relay's
/v1/chat/completionsdirectly — if that fails, it is the site or the key, nothing to do with the client. - curl a request carrying tools — if that fails, the site's tool calling is broken and no amount of client configuration will help.
- Send a plain chat message from the client — if that fails, the Base URL or key is wrong.
- Have the agent read a file from inside the client — if only this step fails, it is a tool-calling or protocol conversion problem.
The overwhelming majority of "cannot configure it" problems are located at steps 1 and 2, and never require repeated fiddling inside the client.
Summary
These clients differ little on whether they can talk to a relay site. The real differences are protocol coverage and how clear the configuration is.
Suggested order of choice:
- For Claude-family models, prefer a client with native Anthropic protocol support.
- For GPT, Gemini and domestic models, prefer a client with OpenAI format support.
- Context length and model name are the two manual fields that must line up exactly.
Our detail pages note each site's supported clients, taken from the sites' own claims and labelled as such on the page. Read them alongside this article.
Was this useful? If you have run into something the article does not cover, tell us and we will verify it and update the text.
Related articles
Video generation behind a relay: three API shapes, four billing traps, one acceptance checklist
MCP through a relay: what works, what never will, and how to test it in ten minutes
A relay selection decision tree: working back from your scenario to a site
Logging and reconciliation: attributing token spend to the project level
Migrating suppliers gradually: replacing an API site without interrupting service
Build your own probe: twenty lines of script to monitor your API suppliers
Read on: a few of the services we list
This article does not point at a specific model family, so here are a few of the highest-scoring services we list, in case you want to read on. They are ordered by score and uptime and are not a recommendation.
See the full list in the directory, or browse by model family.