Skip to content

Custom providers (BYOK)

Custom Provider lets you connect any API that follows the OpenAI or Anthropic format. This includes large cloud services (OpenRouter, Groq, Mistral, and others) as well as local proxies and self-hosted servers.

Image

Go to Kodik settings → ProviderCustom ProviderAdd provider. Fill in the following fields:

FieldDescription
NameA display name of your choice
Base URLThe root address of the API (see URL requirements)
API KeyAuthorization key (optional if the endpoint does not require one)
Formatopenai (default) or anthropic
Custom headersAdditional HTTP headers as key-value pairs
StreamingEnabled by default; disable if the provider does not support it

After you click Continue, Kodik checks the endpoint, fetches its model catalog, and asks you to pick the models you want — at least one is required. The provider is created only when you confirm your selection; closing the wizard without confirming adds nothing.

  • Remote (non-local) endpoints must use https://. Using http:// is only allowed for localhost, 127.0.0.1, ::1, .local addresses, and private IP ranges (10.x.x.x, 172.16–31.x.x, 192.168.x.x).
  • /responses endpoints are not supported — use a base URL or a /chat/completions path.
  • If you enter a URL ending in /chat/completions (OpenAI format) or /messages (Anthropic format), Kodik automatically strips the suffix and infers the correct base path.

When you add or update a provider, Kodik fetches the model list from the /models or /v1/models endpoint. Discovered models appear in the model selector along with metadata: name, description, context window size, and image/tool support flags if the provider returns them.

Each model row in the provider card shows VISION, TOOL USE, and THINKING capability badges — they are clickable toggles (colored = on, dimmed = off). If automatic detection doesn’t match what your model actually supports, click a badge to flip that capability.

The “Context” value on a model row is also click-to-edit. Set the real window for models whose provider doesn’t report one — Kodik otherwise assumes 128k, which makes small local models overflow mid-task. A manually set value sticks across catalog refreshes; clear the field to return to automatic.

Reasoning-capable models get a per-model reasoning selector in the chat model picker, the same control Kodik models have. When the provider’s catalog advertises the model’s reasoning modes (LM Studio’s native API reports the exact options and the default), Kodik offers exactly those, with the provider default preselected. Models whose catalog advertises nothing get the standard effort list (None…X-High) with Medium preselected. Your choice is saved on the model and applied to every request — as reasoning_effort for OpenAI-format providers, as OpenRouter’s unified reasoning object for OpenRouter, or mapped to a thinking budget for Anthropic-format providers.

If the first model-catalog response is empty, Kodik waits briefly and retries before showing the picker. If the models endpoint is unreachable or still returns an empty list, Kodik still lets you use the provider — just select the model name manually.

A colored dot is shown next to each provider in the list:

ColorStatusMeaning
GreenokProvider responds quickly
YellowdegradedResponse took more than 3 seconds
RedunreachableProvider is down or returned an error

Kodik checks each provider’s health every minute by fetching its model list. The status updates automatically without a page reload.

Kodik recognizes popular services from the base URL and automatically applies appropriate defaults:

ServiceURLDefault format
OpenRouteropenrouter.aiopenai
Groqgroq.comopenai
Together AItogether.xyzopenai
Mistralmistral.aiopenai
Perplexityperplexity.aiopenai
Fireworksfireworks.aiopenai
DeepSeekdeepseek.comopenai
LM Studiolocalhost:1234openai
LiteLLMlocalhost:4000openai

For unrecognized URLs Kodik defaults to openai format. You can override any setting manually.

Detection only affects branding and connection defaults — it never limits what a provider can do. Every model starts with tool use enabled regardless of where the provider is hosted, so agent features (file edits, terminal, MCP servers) work out of the box; a capability is only turned off when the provider’s own model catalog reports that the model does not support it.

The Custom headers section lets you add arbitrary HTTP headers to every request. This is useful, for example, for authentication via X-Custom-Auth or for passing provider-specific routing parameters.

Click a provider card to open its settings and make changes. Delete a provider using the Delete provider button inside that card.