Documentação

Documentação

Mistral Vibe CLI

O Vibe CLI se conecta a um endpoint de terceiros por meio de um bloco TOML editado manualmente, e a própria documentação da Mistral usa um gateway como exemplo prático. São cinco linhas em [[providers]] para que o agente execute modelos Claude ou GPT usando sua chave.

Um bloco [[providers]] de cinco linhas em .vibe/config.toml — api_base, api_key_env_var, api_style — aponta o Vibe CLI para a Kunavo, com a chave em uma variável de ambiente em vez do arquivo.

.vibe/config.toml
# ./.vibe/config.toml (project) or ~/.vibe/config.toml (user).
# "Project-level configuration takes precedence over user-level
# configuration", and the project file loads only in a trusted folder.
active_model = "sonnet-kunavo"

[[providers]]
name = "kunavo"
api_base = "https://api.kunavo.com/v1"
api_key_env_var = "KUNAVO_API_KEY"
api_style = "openai"
backend = "generic"

[[models]]
name = "claude-sonnet-5"
provider = "kunavo"
alias = "sonnet-kunavo"
# Optional, and documented on the api-keys-profiles page:
#   temperature   sampling temperature
#   input_price   indicative per-input cost, fed to --max-price
#   output_price  indicative per-output cost, fed to --max-price
# Take the two prices from the table further down this page if you want
# --max-price to mean anything.

# The key never goes in config.toml. api_key_env_var names the variable:
#   export KUNAVO_API_KEY="sk-kn-..."
api_base preserva o /v1. A documentação de referência da Mistral descreve o campo apenas como “URL base da API do provedor” e não define nenhuma regra para o sufixo. O que esclarece a questão é o valor usado nos exemplos práticos das duas páginas de documentação: api_base = "https://openrouter.ai/api/v1". O motivo aparece no código-fonte da versão v2.25.5: o adaptador openai acrescenta /chat/completions a api_base e nada mais, e o provedor Mistral integrado à CLI usa uma URL base /v1 pelo mesmo motivo. Se você remover o sufixo, fará a solicitação a /chat/completions na raiz, o que resulta em 404, não em um erro de autenticação.
Esta configuração foi consultada na documentação da própria Mistral e no código-fonte do Vibe, na data indicada abaixo. O Kunavo não executou o Vibe CLI em seu endpoint: não houve sessão, turno transmitido em fluxo nem interação de ida e volta com ferramentas. Uma página de configuração publicada não é um teste em tempo de execução e não deve ser interpretada como tal. O curl abaixo é o que você pode verificar em dez segundos; tudo o que o cliente faz depois disso depende do Vibe.
O Kunavo não oferece modelos de embeddings, conversão de texto em fala ou conversão de fala em texto. Portanto, esse endpoint responde apenas a solicitações de conclusão de chat. Um bloco de provedor apontado para ele atende aos turnos do modelo, sem encaminhar qualquer outra chamada.
Há um comportamento que funciona a seu favor, e vale entender o motivo. O caminho OpenAI do Vibe inclui um campo temperature em todas as solicitações, enquanto vários IDs Claude — entre eles claude-sonnet-5 e claude-opus-5 — retornam 400 no sistema upstream para o conjunto completo dos três parâmetros de amostragem. O Kunavo remove esses parâmetros antes de encaminhar as solicitações, exatamente para os IDs que os rejeitam. Assim, o campo incluído incondicionalmente pelo cliente não causa uma rejeição definitiva. Portanto, a chave temperature em uma configuração predefinida [[models]] não causa problemas aqui e também não tem efeito nesses IDs.
Ainda não tem uma chave? Crie uma conta na Kunavo, gere uma chave (ela começa com 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 Mistral Vibe CLI.

Passo a passo

  1. Crie uma chave em /app/keys e copie-a — ela é exibida uma única vez.
  2. Abra ~/.vibe/config.toml (ou crie ./.vibe/config.toml no repositório em que deseja aplicar a configuração) e cole o bloco acima. Não há um fluxo de configuração de provedor para percorrer: a Mistral documenta esse arquivo como editável manualmente, e /config e /model apenas alternam entre configurações predefinidas já existentes.
  3. Exporte a variável definida em api_key_env_var — export KUNAVO_API_KEY="sk-kn-...". A página de credenciais da Mistral identifica ~/.vibe/.env como o arquivo carregado pela CLI na inicialização para obter credenciais, e o exemplo da própria Mistral com um provedor de terceiros usa o comando de shell export para a chave que não é da Mistral.
  4. Adicione uma configuração predefinida [[models]] para cada ID desejado, cada uma com seu próprio alias, e depois defina active_model como um desses aliases. O alias é local: é o que aparece em /model, enquanto name é o ID enviado ao endpoint.
  5. Execute vibe em uma pasta confiável e dê ao agente algo que altere um arquivo, não uma saudação. Um primeiro turno que lê e edita um arquivo exercita as chamadas de ferramentas, onde um provedor mal configurado costuma revelar o problema.

Verificado em página de configuração do Mistral Vibe Code CLI 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.

Esta é a versão resumida. O guia completo — escolha do modelo, custo de uma sessão real e modos de falha — está em a comparação entre Vibe CLI e Claude Code.

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 Mistral Vibe 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 modeloEntrada / saída da KunavoOnde se encaixa em Mistral Vibe CLI
claude-sonnet-5$1.40 / $7.00o alias funcional — aquele para o qual active_model aponta na maioria dos dias
claude-opus-5$3.50 / $17.50uma segunda configuração predefinida para o modo de planejamento, em que um plano errado é o que mais custa
claude-haiku-4-5$0.70 / $3.50turnos baratos e triagem rápida de arquivos, em um alias próprio para selecionar
gpt-5-6-sol$2.00 / $12.00outra família usando o mesmo bloco de provedor e a mesma chave
A cobrança é por token, usando um saldo pré-pago e sem tarifa mensal — consulte billing. Em contextos repetidos — que representam a maior parte do que um editor ou cliente de chat envia — o cache de prompt altera a conta mais do que a escolha do modelo.

Nem todo o seu tráfego passa por este provedor

Esta é uma particularidade que um bloco de configuração não revela, e que diz respeito ao Vibe, não ao Kunavo. Na versão v2.25.5, a CLI encaminha conclusões de “utilitários” em segundo plano — chamadas pequenas que dão nomes a conversas e worktrees — para o modelo próprio da Mistral mistral-vibe-cli-fast sempre que um provedor Mistral está disponível. Os valores padrão distribuídos sempre configuram um, mesmo quando o modelo ativo da sessão é o seu. O código-fonte deixa explícitos tanto essa preferência quanto o fallback: quando nenhum provedor Mistral está disponível, a chamada de utilitário usa o modelo ativo da sessão.

Portanto, para que todas as solicitações da sessão usem o provedor configurado, uma destas condições precisa ser atendida:

  • MISTRAL_API_KEY não está definido, então as credenciais do modelo rápido não são resolvidas e a chamada de utilitário usa o fallback; ou
  • o alias do modelo rápido é excluído por meio de allowed_models, o que produz o mesmo efeito pela lista de permissões, em vez de pela chave.

O classificador Smart Approve vai além: a entrada correspondente no changelog da versão 2.25.1 informa que ele usa o modelo rápido da Mistral independentemente do modelo ativo da sessão. Portanto, na prática, uma sessão que use apenas o Kunavo precisa funcionar no modo accept-edits ou plan, e não no Smart Approve. Nada disso impede a configuração acima; significa apenas que o bloco do provedor diz respeito aos turnos do seu modelo, não a cada solicitação enviada pelo binário.

Os outros valores de api_style

A documentação apresenta um valor para api_style e o descreve como exemplo: "openai". O código-fonte da versão v2.25.5 inclui outros quatro — "anthropic", "openai-responses", "reasoning" e "vertex-anthropic" — em um dicionário simples, sem validação. Por isso, um erro de digitação só aparece no momento da solicitação, não quando o arquivo é carregado. Considere esses valores verificados no código-fonte, mas não documentados. Se experimentar o valor Anthropic, atente para uma particularidade: o endpoint do adaptador é /v1/messages. Portanto, api_base deve ser apenas a origem, https://api.kunavo.com, sem /v1 — o oposto do bloco acima. O Kunavo responde a /v1/messages para IDs que começam com claude-. Esta página usa o estilo openai porque é o documentado pela Mistral.

Perguntas frequentes

Como adiciono um provedor personalizado ao Mistral Vibe CLI?

Manualmente, em config.toml — não há uma interface para adicionar provedores. A página de configuração da Mistral documenta ./.vibe/config.toml no diretório de trabalho e ~/.vibe/config.toml no diretório pessoal, sendo que o arquivo do projeto tem precedência. O exemplo completo apresenta uma tabela [[providers]] com name, api_base, api_key_env_var, api_style e backend, além de uma tabela [[models]] com name, provider e alias, e um active_model que aponta para esse alias. A chave em si nunca fica no arquivo: api_key_env_var indica a variável de ambiente que a contém.

O api_base do Vibe CLI precisa terminar em /v1?

Para api_style “openai”, sim. A referência de configuração da Mistral descreve api_base apenas como a URL base da API do provedor e não estabelece nenhuma regra sobre o sufixo, mas o exemplo completo em ambas as páginas usa um valor terminado em /v1, e o código-fonte da v2.25.5 explica o motivo: o adaptador no estilo OpenAI acrescenta /chat/completions a api_base e nada mais, e o provedor Mistral integrado ao próprio CLI usa por padrão uma base /v1. Portanto, para o Kunavo, o valor é https://api.kunavo.com/v1. Omitir o sufixo resulta em 404, não em falha de autenticação. O estilo “anthropic”, que não é documentado, é o caso oposto — seu endpoint é /v1/messages, então api_base não deve conter /v1.

O Mistral Vibe CLI consegue executar modelos Claude?

Sim, por meio de uma predefinição de provedor, e não de uma opção. api_style identifica o protocolo de comunicação, não o fornecedor, e o campo name da predefinição do modelo é enviado ao endpoint exatamente como foi escrito; portanto, um ID Claude é resolvido no endpoint configurado, e não dentro do CLI. A própria documentação da Mistral demonstra esse padrão com um gateway de terceiros, o que faz dele um caminho documentado, e não uma solução alternativa.

Por que o Vibe CLI ainda chama a Mistral depois que configuro meu próprio provedor?

Porque as conclusões utilitárias em segundo plano são roteadas separadamente. Na v2.25.5, sempre que um provedor Mistral está disponível, o CLI prioriza o modelo próprio da Mistral, mistral-vibe-cli-fast, para pequenas chamadas em segundo plano — como nomear conversas e worktrees. Os padrões fornecidos sempre configuram um provedor Mistral, mesmo quando o modelo ativo da sua sessão é outro. O CLI recorre ao modelo ativo quando nenhum provedor Mistral está disponível; na prática, isso significa que MISTRAL_API_KEY não está definida ou que esse alias foi excluído por meio de allowed_models. O classificador Smart Approve é ainda mais restrito: o changelog diz que ele é executado no modelo rápido da Mistral, independentemente do modelo ativo da sessão.

O Kunavo testou o Mistral Vibe CLI?

Não. O que foi verificado em 21 de setembro de 2026 foi a documentação da própria Mistral — os nomes dos campos, sua ordem e a questão do /v1 foram extraídos dela, e o raciocínio sobre a URL base foi confirmado com o código-fonte da v2.25.5 do pacote mistral-vibe. O Kunavo não executou uma sessão do Vibe contra seu endpoint e não faz afirmações sobre streaming, ciclos de chamadas de ferramentas ou o comportamento do cliente durante uma tarefa longa. É possível verificar separadamente o endpoint e a chave com o comando curl nesta página; o restante depende de você e do cliente.

De onde o Vibe CLI lê a chave de API?

Da variável de ambiente indicada em api_key_env_var — no bloco de provedor do Kunavo, seja qual for o nome que você deu a ela, por exemplo, KUNAVO_API_KEY. A página de credenciais da Mistral documenta três fontes, nesta ordem de precedência, para a própria chave: o fluxo de configuração interativo, que grava em ~/.vibe/.env; uma variável de ambiente exportada, que tem precedência sobre esse arquivo; e a edição direta de ~/.vibe/.env, carregado pelo CLI na inicialização. O exemplo para terceiros usa uma exportação no shell. A mesma página observa que .env serve apenas para credenciais e que a configuração geral deve ficar em config.toml.