Settings
Settings controls service parameters, credential models, usage data, and console security.
Service settings
| Field | Purpose |
|---|---|
| CodeBuddy API endpoint | Upstream URL; default https://copilot.tencent.com |
| Admin passkey RP ID / domain | WebAuthn hostname only; do not include scheme or port |
| Authentication mode (auto/token) | Upstream authentication method |
| Network environment (internal/ioa/public) | Upstream network environment |
| Log level | Choose DEBUG, INFO, WARNING, or ERROR |
| API timeout, first token (minutes) | Abort a request that produces no first delta in time; default 5 |
| Web search backend | Which engine runs web_search; one choice. See below. |
| Web fetch backend | Which backends fetch a page; several choices, tried in order. See below. |
Click Save after changing a field.
The API timeout is measured from the moment a request is sent until the upstream produces its first delta, so it bounds the wait for a response that never starts. Once output has begun, a long answer is allowed to finish however long it takes. Fractional minutes are accepted, clamped to 0.1–1440. Set the equivalent CODEBUDDY_API_TIMEOUT_MINUTES environment variable to seed the value before the console is ever opened.
Thinking effort
Every client asks for a thinking depth in its own vocabulary: Claude Code sends Anthropic thinking, Codex sends Responses reasoning.effort, and Chat clients send reasoning_effort. The upstream takes a single effort value instead, so /v1/messages and /v1/responses read whatever arrived onto one ladder — from off through low, medium and high up to xhigh — and send one effort:
- A model the catalog describes gets the nearest level it advertises, in its own spelling.
hy3-xadvertiseslowandhigh, soxhighbecomeshighandmediumbecomeshightoo. - A model the catalog does not describe gets the ladder level mapped onto the values the upstream uses for its own models —
low,medium,high,max.xhighis not one of them and becomeshigh. - A model upstream describes as unable to reason gets no thinking field at all.
Thinking cannot be switched off: every model that advertises efforts declares canDisableThinking: false, so a request for no thinking lands on the shallowest effort on offer rather than on a "none" the upstream does not accept. An Anthropic thinking block is dropped once it has been read — leaving it beside the effort would ask for the same thing twice, in two vocabularies — but a request in a vocabulary the proxy cannot read is forwarded untouched.
Server tools
Anthropic clients declare search and fetch as server-side tools (web_search_20260209, web_fetch_20250910) and Codex declares web_search_preview. CodeBuddy has no equivalent, so when a client declares one the proxy swaps it for a plain function tool, runs it itself, and appends the result as a tool message. The model answers normally and the client never learns the work happened locally.
Web search backend
One engine runs every web_search. Every engine is offered whether or not it is configured, and selecting one reveals the fields it needs:
| Backend | Configuration | Notes |
|---|---|---|
codebuddy | none | CodeBuddy's own /agenttool/v1/search; needs a saved credential. |
searxng | instance address (with port), API key | Your own instance. Default. Key is optional. |
duckduckgo | region | No credential at all; returns curated instant answers. |
brave | API key | Brave Search, an independent index. |
tavily | API key | Returns page text, not just snippets. |
serper | API key | Google results through Serper. |
bing | API key | Bing Web Search. |
exa | API key | Semantic search; matches meaning rather than keywords. |
An engine that cannot run — a key that was never filled in, or SearXNG with no address — resolves to no backend, and the tool is then dropped from the request rather than advertised and left to fail. That is why the default is searxng: a fresh deployment has no address, so nothing is promised until one is entered. codebuddy is the exception: it needs no configuration of its own, so it runs whenever it is selected and reports a missing credential as a failed search rather than being withdrawn.
Off closes the list. Pick it — or set CODEBUDDY_WEB_SEARCH_BACKEND=none — and the gateway stops running web_search; a client that declares the tool has it dropped from the request. A deployment that saved none before this list existed keeps that meaning after upgrading.
Web fetch backend
Any number of backends may be selected, and they are tried in the order they were selected — the first one that answers wins. This is worth doing because the backends fail in different ways: a direct fetch is refused by some pages, while a browser agent is far slower than a direct fetch.
| Backend | Configuration | Notes |
|---|---|---|
codebuddy | none | CodeBuddy's own /agenttool/v1/webfetch, falling back to a direct fetch. Default. |
codebuddy2api | none | This server fetches the page directly and converts HTML to text. |
browserable | address, API key | Drives a real browser through a Browserable deployment. Key is optional. |
jina | API key | Jina Reader returns the page as markdown. Key is optional. |
Selecting none is how the tool is turned off. web_fetch defaults to codebuddy now, so a deployment that had left it set to passthrough starts fetching pages itself on upgrade — clear the selection to go back.
codebuddy is the default because it is the same endpoint the CodeBuddy CLI calls: it needs no extra deployment, authenticates with the credential already saved in the gateway, and falls back to a direct fetch when the call fails.
The codebuddy2api fetch backend treats the URL as untrusted input, since it comes from the model: private and loopback addresses are refused before connecting, and redirects are re-checked at every hop so a public URL cannot redirect onto the deployment's own network.
Both selections can be seeded before the console is opened with CODEBUDDY_WEB_SEARCH_BACKEND and CODEBUDDY_WEB_FETCH_BACKEND (the latter accepts a comma-separated list), and every backend's own configuration has an equivalent environment variable — CODEBUDDY_SEARXNG_URL, CODEBUDDY_BRAVE_API_KEY, CODEBUDDY_BROWSERABLE_URL, and so on. SearXNG also still honours SEARXNG_URL and SEARXNG_API_KEY when the console fields are empty.
Models and usage
- Credential models lists models for each credential; edit the list or click Refresh.
- Usage event cache can be permanently cleared with Clear usage event cache.
Console security
Set the administrator username, password, and confirmation password under Console security, then click Save. Disabling authentication makes the console directly accessible.
The desktop app does not show this section while it is using its own gateway — there is no sign-in (see Desktop App). Pointed at a deployment you run, whether a sign-in is needed is that deployment's call.