Como isso se aplica aos planos
Como o BYOK funciona
O BYOK é provider-first: você conecta um provedor uma vez, adiciona os modelos que quiser a ele e então roteia esses modelos para as tarefas da Kody. A tela/organization/byok tem três abas:
Providers
Routing
Budget
/organization/byok. Veja Roles do workspace.Conectar um provedor
Abrir as configurações de BYOK
Escolha um provedor
- Providers — provedores de primeira classe que você conecta apenas com uma chave de API (OpenAI, Anthropic, Google AI Studio, OpenRouter, Novita…).
- Custom — provedores que você aponta para seu próprio endpoint ou nos quais roda um modelo arbitrário: OpenAI-compatible, Anthropic-compatible, Google Vertex AI e Amazon Bedrock. Eles vêm marcados com a dica Custom endpoint.
Adicione um modelo
- Se o Kodus conseguir listar os modelos do provedor, você recebe um dropdown.
- Caso contrário (endpoints personalizados, self-hosted ou quando chaves de plataforma não estão configuradas), digite o Model ID exato.
Ajuste configurações avançadas (opcional)
Teste e salve
Teste antes de salvar
O botão Test verifica sua configuração antes que ela possa quebrar uma revisão real. O que ele faz depende do provedor:- Uma temperature que um modelo sempre-thinking não respeitará (ela é fixada em
1— veja Temperature). - Reasoning Off em um modelo que sempre raciocina e não pode desabilitá-lo.
Model not found.Routing: qual modelo roda cada tarefa
Depois de conectar dois ou mais modelos, a aba Routing decide qual modelo roda o quê. O routing é flat: toda tarefa usa o padrão até você sobrescrever.Policy
Defaults
- Model for all tasks — o único modelo que toda tarefa usa a menos que seja sobrescrito.
- Fallback (opcional) — um modelo diferente que a Kody re-executa uma chamada uma vez quando o modelo da tarefa falha: chave inválida ou expirada, sem crédito ou provedor indisponível (após as próprias retentativas dele).
Per agent
Escolhendo modelos
Qualquer modelo que seu provedor sirva funciona. Se você não sabe por onde começar, estas são escolhas sólidas para revisão de código:Claude Sonnet / Opus
Gemini Pro
GPT (latest)
Kimi / GLM (coding plans)
Conectando Kimi (Moonshot) e GLM (Z.ai)
Moonshot e Z.ai cada uma oferece um plano de assinatura em um endpoint diferente da Developer API pay-per-token. Cada plano é uma conta separada com sua própria chave — escolha a base URL que corresponde à chave que você tem.- Kimi (Moonshot AI)
- GLM (Z.ai)
maxConcurrentRequests=30. Variantes Kimi sempre-reasoning (ex.: kimi-k2p7-code, kimi-k3) travam a temperature em 1 e não conseguem desligar o reasoning — veja Temperature.Provedores Suportados
- OpenAI
- Google Gemini
- Anthropic Claude
- Novita AI
- OpenRouter
- Google Vertex AI
- Amazon Bedrock
- OpenAI Compatible
- Anthropic-compatible
- Acesse OpenAI API Keys
- Crie uma nova chave para o Kodus
- Adicione informações de cobrança
Reasoning / Extended Thinking
O formulário Add a model expõe um toggle Thinking (Off / Low / Medium / High / Custom) em Advanced settings. As opções disponíveis espelham o que o modelo realmente consegue fazer:- Um modelo que não consegue raciocinar fica travado em Off com uma nota.
- Um modelo que só raciocina em certos níveis (ex.: o medium/high do GPT-5) desabilita os inválidos.
- Um modelo reasoning-by-default recebe Medium como um ponto de partida sensato.
Níveis predefinidos
Quando você escolhe Low / Medium / High, o Kodus traduz o nível para o formato nativo de cada provedor automaticamente:k2p7-code/k3, GLM-5.3) raciocinam incondicionalmente — não podem ser desligadas em Off, e o formulário desabilita essa opção.Sobrescrita via JSON customizado
Escolher Custom no toggle Thinking revela uma textarea de JSON. Cole as opções do provedor diretamente — o Kodus faz o auto-wrap sob o namespace do provedor ativo. Você não precisa conhecer as regras de roteamento do Vercel AI SDK. Use isso quando:- Você precisa de um valor específico de
budgetTokenspara o Claude (em vez do mapeamento por effort predefinido) - Você quer habilitar/desabilitar thinking por modelo para provedores OpenAI-compatible
- Você quer campos além de reasoning — caching, service tier, safety settings, tagging via
user, etc. A sobrescrita é mesclada emproviderOptions, então qualquer campo do adapter passa direto - O provedor lança um novo campo que o Kodus ainda não envolveu
Exemplos (cole direto — sem namespace)
- Anthropic
- Google Gemini
- OpenAI
- OpenRouter
- OpenAI-compatible (Kimi, GLM, etc.)
Usando namespaces manualmente (usuários avançados)
Se seu JSON já começa com uma chave de namespace conhecida no nível superior — qualquer chave da tabela de mapeamento abaixo — o Kodus deixa intocado. Útil quando você quer misturar múltiplos namespaces de provedor ou ser explícito:Pegadinhas
- Apenas JSON válido. Vírgulas faltando ou vírgulas finais quebram o parse e o Kodus ignora a sobrescrita.
- Precedência: a sobrescrita JSON substitui totalmente o bloco de namespace do effort predefinido — se você sobrescrever
anthropic.thinkingmas esqueceranthropic.effort, esse campo não será enviado. O roteamento do OpenRouter (Pin providers / Allow fallbacks) é a única exceção: ele faz deep-merge com sua sobrescrita sobopenrouter. - Provedor desconhecido = sem wrap. Se seu provedor BYOK não está na tabela de namespace acima, o Kodus passa o JSON como está.
Temperature
A temperature fica em Advanced settings, e o campo se adapta às regras do modelo — definidas pelo provedor, não adivinhadas pelo formulário:Fixando provedores do OpenRouter
O OpenRouter é um roteador — quando você solicita um modelo (ex.:moonshotai/kimi-k2), ele encaminha a chamada para um entre vários provedores upstream (Moonshot direto, Together, Groq, Fireworks, Novita…). Cada chamada pode cair em um backend diferente. Isso é conveniente, mas introduz variação silenciosa:
- Variação de qualidade — upstreams rodam em precisões diferentes (FP8, INT4, full) e entregam saídas sutilmente diferentes para prompts idênticos
- Inconsistência de tool-calling — alguns backends não suportam function calling da mesma forma, levando a uso de tool malformado
- Variação no formato de reasoning — um upstream respeita
reasoning_effort, outro sóthinking.enabled, outro ignora ambos - Oscilação de latência — o p50 pode saltar de 800ms para 4s entre chamadas conforme o roteamento muda
- Surpresas de rate-limit — você bate na cota de um backend que não escolheu explicitamente
Como fixar
Quando seu provedor BYOK é o OpenRouter, o painel Advanced settings exibe uma seção OpenRouter routing com dois campos:- Pin providers (in order) — lista separada por vírgulas com nomes dos upstreams (ex.:
moonshot, together). O OpenRouter os tenta em ordem e usa o primeiro disponível. - Allow fallbacks — quando desativado, as requisições falham diretamente se nenhum dos provedores fixados estiver disponível. Quando ativado (padrão), o OpenRouter pode recorrer a qualquer outro upstream que sirva o modelo.
Avançado: sobrescrita via JSON bruto
Se você precisa de campos além deorder e allow_fallbacks (ex.: ignore, data_collection, require_parameters), mude Thinking para Custom em Advanced settings e cole o payload de roteamento completo — ele é mesclado em providerOptions junto com qualquer configuração de reasoning:
Simultaneidade e limites de taxa
O campomaxConcurrentRequests (em Advanced settings) limita quantas requisições em voo o Kodus envia ao seu provedor em paralelo. Na maioria das vezes, o padrão é suficiente — mas planos de assinatura com limites estritos de simultaneidade precisam defini-lo explicitamente.
Valores a definir
Quando ajustar
Aumentar
- Você tem uma recarga de tier alto na Moonshot/OpenRouter e quer mais throughput em PRs grandes
- Você fez upgrade do seu GLM Coding Plan para Max e quer usar o budget completo de 30 simultâneas
- As revisões parecem serializadas em PRs com muitos arquivos e você não vê 429s
Diminuir
- Você vê erros
429ouToo much concurrencynos logs de revisão - Seu provedor avisa sobre limites de taxa no painel
- Você quer preservar a janela do Coding Plan (5h/semanal) em mais PRs
maxConcurrentRequests do próprio Fallback se aplica. Definir um Fallback generoso em um provedor diferente é uma boa forma de absorver picos quando seu modelo principal está em uma assinatura apertada.Boas Práticas
Segurança
Chaves Dedicadas
Rotação Regular
Monitorar Uso
Armazenamento Seguro
Estratégia de routing
- Use um provedor diferente para seu padrão e seu fallback (ex.: Anthropic como padrão, Google como fallback). Protege contra indisponibilidades específicas de um provedor.
- Assinaturas com limites de simultaneidade apertados (GLM Coding Plan Lite/Pro, Kimi Code Plan) fazem configurações solo ruins — combine-as com um fallback pay-per-token para que PRs em picos não fiquem sem recursos.
- Roteie as tarefas pesadas (revisão profunda de código) para o seu modelo mais forte e as leves (resumos, chat) para um mais barato em Per agent.
Solução de Problemas
'Invalid API key' ao clicar em Test
'Invalid API key' ao clicar em Test
- Copie a chave sem espaços extras, aspas ou quebras de linha finais.
- Confirme que o faturamento está habilitado e que a conta tem créditos.
- Para chaves do GLM Coding Plan / Kimi Code Plan, certifique-se de que a base URL corresponde ao plano — chaves de assinatura não funcionam no endpoint Developer API e vice-versa.
'Model not found' ao clicar em Test
'Model not found' ao clicar em Test
- Para os provedores de sondagem por chat (Anthropic-compatible, OpenAI-compatible, Novita), o Test envia uma requisição real ao modelo, então um Model ID errado ou com erro de digitação falha aqui — isso é esperado e melhor do que falhar no momento da revisão.
- Copie o Model ID exato do painel do provedor. Alguns provedores usam caminhos profundos (ex.: Fireworks
accounts/fireworks/models/kimi-k2p7-code) ou escrevem as versões de forma diferente (k2p7vsk2.7).
'Endpoint not found' ao clicar em Test
'Endpoint not found' ao clicar em Test
- Verifique se a URL base corresponde exatamente ao provedor (barra final importa para alguns).
- Para provedores OpenAI-compatible, o endpoint geralmente é
{baseURL}/chat/completions(o Kodus adiciona o caminho).
O Test rejeita a temperature ou o reasoning que defini
O Test rejeita a temperature ou o reasoning que defini
- Alguns modelos fixam a temperature ou sempre raciocinam (Kimi
k2p7-code/k3, GLM-5.3; Claude 4.7+/GPT-5 removem a temperature inteiramente). O Test valida seu ajuste contra as regras do modelo e retorna uma mensagem específica — siga-a (deixe a temperature indefinida ou use o valor exigido; não desligue o reasoning em Off em um modelo sempre-reasoning). Veja Temperature.
'Rate limited' ou 'Too much concurrency'
'Rate limited' ou 'Too much concurrency'
- Reduza Max concurrent requests em Advanced settings.
- No GLM Coding Plan Lite/Pro, mantenha em 1 concurrent. Faça upgrade para Max (30 concurrent) se precisar de mais throughput.
- No Kimi Code Plan, o limite documentado é 30 concurrent.
Variáveis de ambiente self-hosted não aparecem
Variáveis de ambiente self-hosted não aparecem
- Se o Kodus está configurado via
.env(Fixed Mode self-hosted), a tela de BYOK exibe um banner informativo azul com o provedor/modelo ativo — a chave nunca é exibida por segurança. - Conectar um modelo e salvar sobrescreve a configuração do
.env.
Custos altos ou inesperados
Custos altos ou inesperados
- Reasoning adiciona tokens. Se o custo está disparando, reduza Thinking de Medium para Low, ou roteie tarefas pesadas para um modelo mais barato em Per agent.
- Verifique o painel do seu provedor para o detalhamento por modelo, e defina um limite na aba Budget.
Perguntas Frequentes
Posso trocar de provedor a qualquer momento?
Posso trocar de provedor a qualquer momento?
O que acontece se minha chave de API ficar sem créditos?
O que acontece se minha chave de API ficar sem créditos?
Como funciona o sistema de padrão / fallback?
Como funciona o sistema de padrão / fallback?
Tarefas diferentes podem usar modelos diferentes?
Tarefas diferentes podem usar modelos diferentes?
Vocês armazenam nossas chaves de API com segurança?
Vocês armazenam nossas chaves de API com segurança?
Posso usar um LLM self-hosted (ex.: Ollama, vLLM)?
Posso usar um LLM self-hosted (ex.: Ollama, vLLM)?