Documentação

Documentação

CC Switch

O CC Switch alterna Claude Code e Codex entre provedores por meio de um aplicativo para desktop. Kunavo é configurado como uma Configuração Personalizada — raiz do serviço, autenticação Bearer, protocolo nativo Anthropic Messages, sem roteamento local.

Três campos e dois menus suspensos. https://api.kunavo.com como endpoint, sua chave sk-kn-… e — o detalhe que a maioria dos guias omite — deixe API Format em Anthropic Messages (Native) e Auth Field em ANTHROPIC_AUTH_TOKEN. Kunavo oferece suporte nativo à API Messages, então não há roteamento local no lado do Claude Code.

CC Switch → aba Claude Code → Add provider
Provider Name   Kunavo
API Key         sk-kn-...
API Endpoint    https://api.kunavo.com      <- service root, no /v1, no trailing slash

Advanced Options
  API Format    Anthropic Messages (Native) <- the default; do NOT switch
  Auth Field    ANTHROPIC_AUTH_TOKEN (Default)
O endpoint é a raiz do serviço: sem /v1, sem barra no final. Clientes no estilo Anthropic acrescentam /v1/messages por conta própria — por isso este campo é diferente de todos os exemplos OpenAI, em que /v1 faz parte da URL base. Veja a explicação completa na página ANTHROPIC_BASE_URL.

Passo a passo (aba Claude Code)

  1. Crie uma chave em /app/keys e copie-a — ela é exibida uma única vez.
  2. Abra o CC Switch na aba principal Claude Code e clique no botão de adição. Mantenha a opção padrão Custom Configuration em vez de escolher uma predefinição.
  3. Preencha Provider Name, API Key e API Endpoint = https://api.kunavo.com.
  4. Expanda Advanced Options e confirme se API Format está em Anthropic Messages (Native) e Auth Field em ANTHROPIC_AUTH_TOKEN (Default). Esses são os valores padrão; a ideia é conferir, não alterar.
  5. Salve e depois Activate. O cartão não deve exibir um indicador Needs Routing — esse indicador só aparece nos provedores cujo protocolo precisa ser traduzido.

Por que não há o indicador “Requer roteamento”

O roteamento local do CC Switch existe para fazer a ponte entre protocolos. O Claude Code envia solicitações Anthropic Messages para /v1/messages; um gateway que oferece apenas OpenAI Chat Completions ou a API Responses não pode atendê-las, então a rota converte a solicitação na saída e converte a resposta no retorno. Essa conversão reformata os eventos de streaming, as chamadas de ferramentas e a configuração de raciocínio — funciona, mas acrescenta mais uma etapa entre o editor e o modelo.

Kunavo oferece POST /v1/messages diretamente, então não há nada para converter no lado do Claude Code: o provedor permanece em Anthropic Messages (Native) e a rota nem chega a ser usada. Kunavo também oferece POST /v1/chat/completions e POST /v1/responses com a mesma chave, o que possibilita a configuração para o Codex descrita abaixo.

Aba do CC SwitchDefina o formato comoRoteamento local
Claude CodeAnthropic Messages (Native)Não é necessário
CodexAnthropic Messages (routing required)Obrigatório — a rota reescreve /responses como /v1/messages

Executar modelos Claude no Codex

Esta é a configuração que os guias dos outros provedores não abordam. O Codex usa a API OpenAI Responses, então apontá-lo diretamente para um endpoint /v1/messages retorna 404 — o CC Switch resolve isso mantendo o Codex na rota local e fazendo a tradução. Na aba Codex, não há predefinição Anthropic, então esta também é uma Custom Configuration:

CC Switch → aba Codex → Add provider
Provider Name      Kunavo
API Key            sk-kn-...
API Request URL    https://api.kunavo.com
Default Model      claude-sonnet-5

Advanced Options
  Upstream Format  Anthropic Messages (routing required)
O próprio guia do CC Switch acrescenta um alerta que vale repetir: alguns provedores restringem sua API Claude ao cliente Claude Code, então uma chave desse tipo pode gerar um erro quando usada pelo Codex. Kunavo não impõe essa restrição — a mesma chave sk-kn-… atende às interfaces Messages e Responses, e nenhuma delas tem uma lista de clientes permitidos. Se preferir evitar totalmente a tradução, a CLI do Codex também pode apontar diretamente para a interface nativa /v1/responses da Kunavo; esse caminho está na página da CLI do Codex.

Mapeamento de modelos

O CC Switch mapeia as três categorias do Claude Code para IDs de modelos reais. Preencha as três e também Default fallback model — caso contrário, solicitações sem correspondência são encaminhadas com o nome original do Claude e geram erro no serviço de origem. As tarifas são em USD por 1 milhão de tokens, entrada / saída, consultadas em tempo real no catálogo.

NívelID do modeloEntrada / saída da KunavoPor quê
Haikuclaude-haiku-4-5$0.70 / $3.50O Claude Code encaminha subtarefas em segundo plano para cá — a categoria mais barata é a escolha certa
Sonnetclaude-sonnet-5$1.40 / $7.00A opção padrão funcional para edição
Opusclaude-opus-5-5$2.80 / $14.00Alterações no nível da arquitetura
Deixe a caixa de seleção 1M desmarcada, a menos que a categoria realmente ofereça uma janela de um milhão de tokens. Declarar um contexto que o serviço de origem não tem não amplia nada — apenas desloca a falha para o meio de uma conversa longa.

Verifique antes de depurar o aplicativo

Um par de solicitações basta para determinar se a falha está na chave, no endpoint ou no CC Switch. Se ambas retornarem 200, qualquer problema restante está em um campo do formulário — quase sempre é Auth Field ou um /v1 que não deveria estar no endpoint.

# Settles whether a failure is the key, the endpoint, or CC Switch.
# 200 + a JSON list of model ids means the same key works in the app.
curl -sS https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer sk-kn-..."

# The Anthropic face, which is the one the Claude Code tab actually calls.
curl -sS https://api.kunavo.com/v1/messages \
  -H "Authorization: Bearer sk-kn-..." \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-haiku-4-5","max_tokens":16,
       "messages":[{"role":"user","content":"ping"}]}'

Referência

O CC Switch é de código aberto em github.com/farion1231/cc-switch. Os nomes dos campos e o comportamento acima vêm dos próprios guias — o guia de roteamento do Claude Code e o guia de roteamento do Codex —, ambos aplicáveis à versão 3.17.0 e posteriores. Em versões mais antigas, o formulário é diferente; consulte a seção Sobre do aplicativo se algum campo mencionado aqui não aparecer. A documentação do lado da Kunavo está em API Messages, chat completions e central de integrações.

Perguntas frequentes

Como adiciono um provedor personalizado ao CC Switch?

Na aba Claude Code, clique no botão de adição, mantenha Custom Configuration, a opção padrão, e preencha Provider Name, API Key e API Endpoint. API Endpoint é a raiz do serviço do gateway, sem barra final — para o Kunavo, é https://api.kunavo.com, sem /v1. Em seguida, abra Advanced Options e confira dois campos: API Format e Auth Field. Esses dois campos determinam se o provedor funciona, mas costumam ser omitidos nos guias de configuração.

Preciso ativar o roteamento local do CC Switch para usar o Kunavo?

Não. O roteamento local serve para converter protocolos — ele converte a solicitação /v1/messages do Claude Code para OpenAI Responses ou Chat Completions quando o serviço upstream oferece apenas esses formatos. O Kunavo oferece a API Anthropic Messages nativamente em https://api.kunavo.com/v1/messages, então mantenha API Format na opção padrão Anthropic Messages (Native), o cartão do provedor não exibirá o indicador Needs Routing e as solicitações serão enviadas diretamente ao upstream. Um gateway que ofereça apenas Chat Completions precisa usar o roteamento local em todas as solicitações.

Por que o campo API Endpoint não inclui /v1, como nos exemplos da OpenAI?

Porque as duas convenções são diferentes por definição. Clientes no estilo Anthropic acrescentam /v1/messages por conta própria; por isso, precisam apenas da origem — https://api.kunavo.com. Os SDKs da OpenAI esperam que /v1 já faça parte de base_url; por isso, precisam de https://api.kunavo.com/v1. A aba Claude Code do CC Switch usa o formato da Anthropic, então /v1 fica de fora. Inverter essas formas é a causa mais comum de falhas de configuração em todos os clientes; a página ANTHROPIC_BASE_URL explica as duas.

Devo definir Auth Field como ANTHROPIC_API_KEY?

Não — mantenha o valor padrão, ANTHROPIC_AUTH_TOKEN. Com esse valor, o CC Switch envia Authorization: Bearer <key>. Se escolher ANTHROPIC_API_KEY, ele envia um cabeçalho x-api-key, que o Kunavo também aceita; portanto, o problema não está no cabeçalho, e sim na autorização. Antes de usar ANTHROPIC_API_KEY em uma sessão interativa, o Claude Code solicita uma aprovação única. Se essa aprovação for recusada, a chave será ignorada nas solicitações seguintes — um erro de autenticação que parece indicar uma chave inválida, embora ela esteja correta.

Posso executar modelos Claude dentro do Codex usando o CC Switch?

Sim, e essa é a parte que a maioria dos guias de provedores omite. Na aba Codex, adicione uma Custom Configuration com API Request URL https://api.kunavo.com e um Default Model como claude-sonnet-5; em seguida, em Advanced Options, defina Upstream Format como Anthropic Messages (routing required). O roteamento local precisa estar ativado nessa direção, porque o Codex usa a API Responses e a rota reescreve /responses para /v1/messages. O próprio guia do CC Switch alerta que alguns provedores restringem a API Claude ao cliente Claude Code e que essas chaves falham no Codex — o Kunavo não tem essa restrição: a mesma chave sk-kn- funciona em ambos os casos.

Quais IDs de modelo devo colocar no mapeamento de modelos do CC Switch?

Use os IDs de catálogo da Kunavo. Uma divisão padrão adequada é claude-haiku-4-5 ($0.70 / $3.50 por 1M de tokens) no nível Haiku, pois o Claude Code envia as subtarefas em segundo plano para ele; claude-sonnet-5 ($1.40 / $7.00) no Sonnet; e claude-opus-5-5 ($2.80 / $14.00) no Opus. Sempre preencha também o modelo substituto padrão — o CC Switch encaminha solicitações não correspondentes usando o nome original do Claude se você deixar o campo vazio, e elas falham no upstream. A lista atualizada está em GET /v1/models.

Onde o CC Switch armazena minha chave de API?

No próprio banco de dados, não na configuração do cliente. O CC Switch armazena os provedores em ~/.cc-switch/cc-switch.db e, quando o roteamento local assume o controle de um cliente, grava apenas o endereço da rota local em ~/.claude/settings.json, com um valor de preenchimento no campo de autenticação — a rota insere a chave real ao encaminhar a solicitação. Isso é uma característica do CC Switch, não do Kunavo. Vale saber porque a chave que você cola não é a chave que aparece no arquivo que talvez esteja prestes a incluir em um commit.