Documentação
Junie CLI
O Junie CLI aceita um endpoint personalizado em um arquivo JSON, não em uma tela de configurações. Com nove linhas em $JUNIE_HOME/models/kunavo.json e junie --model custom:kunavo, você executa Claude e GPT usando uma chave só — e direciona o tráfego auxiliar para uma opção barata.
O Junie CLI aceita um endpoint personalizado como um perfil JSON em $JUNIE_HOME/models/, onde baseUrl é a URL completa do endpoint e fasterModel decide para onde vai o tráfego auxiliar.
{
"id": "claude-sonnet-5",
"baseUrl": "https://api.kunavo.com/v1/chat/completions",
"displayName": "Kunavo",
"providerName": "Kunavo",
"apiType": "OpenAICompletion",
"apiKey": "${KUNAVO_API_KEY}",
"fasterModel": {
"id": "claude-haiku-4-5"
}
}baseUrl é o endpoint completo, incluindo todo o caminho. A JetBrains afirma claramente: “O baseUrl é usado como a URL completa do endpoint — o Junie não acrescenta um caminho a ele” e orienta a “defini-lo como o endpoint completo para o apiType escolhido”. Portanto, este campo não é nem a origem nem a raiz /v1 que a maioria dos clientes requer — é https://api.kunavo.com/v1/chat/completions. Parar em https://api.kunavo.com/v1 é a causa mais provável de um erro 404 em um perfil que, de resto, está correto.apiKey e extraHeaders aceitam referências $${VAR_NAME}, e a JetBrains documenta exatamente o que acontece: “Se uma variável de ambiente referenciada não estiver definida, o perfil não será carregado e o Junie exibirá um erro identificando a variável ausente.” Exporte KUNAVO_API_KEY antes de iniciar o Junie — o perfil é lido no carregamento, não na primeira solicitação; por isso, se o shell perdeu a exportação, o perfil desaparece de /model em vez de retornar um 401.fasterModel é onde o Junie envia tarefas que você não solicitou. A JetBrains descreve essa opção como “O modelo usado em tarefas auxiliares internas, como resumir o contexto ou classificar tarefas” e diz que, se primaryModel ou fasterModel “não for definido explicitamente, eles herdarão as propriedades do nível superior”. Portanto, sem um bloco fasterModel, as tarefas de manutenção são cobradas à tarifa do seu modelo principal. A substituição de uma linha acima é a solução completa e é por isso que o bloco aparece na configuração mínima, em vez de ficar em um apêndice.curl abaixo é o que você pode verificar em dez segundos; o comportamento do Junie sobre essa base depende de você e da JetBrains.sk-kn-) e adicione crédito a partir de $10 — as chamadas são pagas com esse saldo, e chamadas malsucedidas não são cobradas. O painel então abre na configuração de Junie CLI.Passo a passo
- Crie uma chave em
/app/keyse copie-a — ela será exibida uma única vez. Exporte-a comoKUNAVO_API_KEYno shell a partir do qual iniciará o Junie ou insira uma chave literal no arquivo; a JetBrains observa que “os valores sem qualquer referência$${...}são usados como estão”. - Salve o JSON acima como
$JUNIE_HOME/models/kunavo.jsonpara sua conta ou como.junie/models/kunavo.jsonpara compartilhá-lo com um repositório. O nome do arquivo sem.jsonse torna o ID do perfil — é isso que faz o seletor abaixo mostrarcustom:kunavo. - Defina
idcomo o ID do modelo que você realmente quer usar. Ele é descrito como “O identificador do modelo esperado pelo endpoint da API”, então basta inserir um slug da Kunavo da tabela abaixo; os IDs são resolvidos no endpoint, não dentro do Junie. - Inicie o Junie e escolha o perfil:
junie --model custom:kunavoou o comando/modelem uma sessão interativa. Os modelos personalizados “aparecem na lista de seleção de modelos depois dos provedores integrados”. - Dê a ele uma tarefa que edite um arquivo, em vez de apenas cumprimentá-lo. O Junie é um cliente agêntico e depende da chamada de ferramentas para quase tudo o que faz; por isso, uma primeira execução que lê e grava algo informa muito mais do que uma única resposta.
Verificado em Página de LLMs personalizados da JetBrains para o Junie em 21 de setembro de 2026. As configurações de terceiros podem mudar; se o nome de um campo aqui já não corresponder ao que você vê, aquela página é a autoridade, não esta.
Verifique antes de depurar o cliente
Uma solicitação determina se a falha está no endpoint, na chave ou no arquivo de configuração. Se isto retornar JSON, a mesma URL base e a mesma chave funcionarão em Junie CLI.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Qual ID de modelo inserir no campo
Todo modelo de texto pode ser acessado como um ID de modelo — a lista atual está em GET /v1/models, e o catálogo com preços está na página de modelos. As tarifas são em USD por 1 milhão de tokens, entrada / saída.
| ID do modelo | Entrada / saída da Kunavo | Onde se encaixa em Junie CLI |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | o primaryModel para tarefas comuns — tarefas que editam arquivos |
claude-opus-5 | $3.50 / $17.50 | um plano em que seria caro errar, fixado por sessão |
claude-haiku-4-5 | $0.70 / $3.50 | a função fasterModel: resumir o contexto e classificar tarefas |
gpt-5-6-sol | $2.00 / $12.00 | uma segunda opinião de outra família — outro perfil, a mesma chave |
Os outros dois valores de apiType atendidos pela Kunavo
apiType indica um formato de solicitação, não um fornecedor, e o Junie aceita quatro valores: OpenAICompletion, OpenAIResponses, Google e Anthropic. A Kunavo oferece três rotas, então dois dos outros três valores têm uma baseUrl correspondente aqui — e, como o Junie não acrescenta nenhum caminho, mudar o formato também exige mudar a URL na mesma edição:
"apiType": "OpenAICompletion"comhttps://api.kunavo.com/v1/chat/completions— o perfil acima e o recomendado nesta página, pois essa rota é a mais amplamente utilizada das três."apiType": "Anthropic"comhttps://api.kunavo.com/v1/messages— a Kunavo atende ao formato Messages nesse caminho."apiType": "OpenAIResponses"comhttps://api.kunavo.com/v1/responses.
Qual dos três funciona melhor no Junie para determinado modelo é exatamente o tipo de pergunta que um teste em tempo de execução responde e uma leitura da documentação não; por isso, esta página não os classifica além da primeira opção. Escolha um, mantenha a URL e o apiType alinhados e, se um perfil configurado com chave retornar 401, informe a credencial explicitamente, em vez de tentar adivinhar o cabeçalho usado pelo Junie: a JetBrains documenta apiKey apenas em termos negativos — “Se omitido, as solicitações são enviadas sem um cabeçalho Authorization” — e nunca informa qual esquema é usado quando ele está presente. extraHeaders é documentado como “cabeçalhos HTTP adicionais a incluir em cada solicitação” e aceita as mesmas referências $${VAR}, o que torna "extraHeaders": {"Authorization": "Bearer $${KUNAVO_API_KEY}"} a forma inequívoca.
Perguntas frequentes
Como adiciono um provedor personalizado ao Junie CLI?
O Junie CLI lê provedores personalizados de perfis JSON, não de uma tela de configurações. Coloque um arquivo em $JUNIE_HOME/models/ para sua conta ou em .junie/models/ dentro de um projeto; o nome do arquivo sem a extensão .json se torna o ID do perfil. As chaves obrigatórias são id, baseUrl e apiType; apiKey, displayName, providerName, extraHeaders, extraBody, temperature, maxContextLength, primaryModel e fasterModel são opcionais. Depois, selecione o perfil com `junie --model custom:<id>` ou o comando /model — os modelos personalizados aparecem na lista depois dos provedores integrados.
A baseUrl do Junie CLI precisa de /v1 ou do caminho completo?
Do caminho completo. A JetBrains afirma que baseUrl é usada como a URL completa do endpoint, que o Junie não acrescenta um caminho a ela, e orienta defini-la como o endpoint completo correspondente ao apiType escolhido. Em um perfil OpenAICompletion para a Kunavo, use https://api.kunavo.com/v1/chat/completions — não a origem nem a raiz /v1 que clientes como o Kilo Code exigem. Os dois perfis de exemplo na documentação da própria JetBrains incluem um caminho completo pelo mesmo motivo.
Por que o Junie informa que um perfil não foi carregado porque falta uma variável de ambiente?
Porque os valores de apiKey e extraHeaders aceitam referências ${VAR_NAME}, e a JetBrains documenta que, se uma variável de ambiente referenciada não estiver definida, o perfil não será carregado e o Junie exibirá um erro com o nome da variável ausente. A resolução ocorre quando o perfil é carregado; por isso, o sintoma é o desaparecimento do perfil da lista de modelos, e não uma solicitação com falha. Exporte a variável antes de iniciar o Junie ou substitua a referência por um valor literal.
O Junie CLI pode usar sua própria chave BYOK com um gateway como a Kunavo?
A tela BYOK e um perfil personalizado são duas opções distintas. A página BYOK da JetBrains trata da conexão com um provedor identificado — OpenAI, Anthropic, Google, xAI, OpenRouter ou GitHub Copilot — por meio de /account ou de “Use your own API key” na tela de boas-vindas, e informa que todo o uso é cobrado pelo provedor, sem necessidade de uma assinatura do JetBrains AI. Um endpoint que não esteja nessa lista, incluindo a Kunavo, deve ser configurado como um perfil de LLM personalizado, ou seja, o arquivo JSON desta página. Usar sua própria chave é um recurso do Junie CLI: a documentação do plugin da JetBrains informa que esse recurso não é compatível com o plugin do Junie.
Por que o Junie está chamando um modelo que não selecionei?
O Junie divide um perfil em duas funções, e fasterModel é documentado como o modelo usado em tarefas auxiliares internas, como resumir o contexto ou classificar tarefas. Se você não definir esse bloco, a JetBrains informa que as funções herdam as propriedades do nível superior — então o tráfego auxiliar usa seu modelo principal e é cobrado à tarifa dele. Definir fasterModel.id como um ID mais barato, como no perfil desta página, é a solução; baseUrl, apiType e apiKey do nível superior são herdados pelas duas funções, então basta alterar o ID.
A Kunavo testou o Junie CLI?
Não. O que foi verificado, em 21 de setembro de 2026, foi a documentação de LLMs personalizados da própria JetBrains — os nomes e a ordem dos campos, os valores aceitos para apiType e a regra de endpoint completo são citados dessa documentação. A Kunavo não instalou o Junie CLI, não fixou uma versão nem enviou uma solicitação por meio dele e não afirma nada aqui sobre streaming, interações com ferramentas ou roteamento de modelos dentro do cliente. A única coisa que você pode verificar de forma isolada é se o endpoint e a chave funcionam, e o curl desta página faz isso.