문서

문서

Mistral Vibe CLI

Vibe CLI는 직접 편집한 TOML 블록을 통해 타사 엔드포인트에 연결하며, Mistral 자체 문서에서는 게이트웨이를 예시로 사용합니다. [[providers]] 아래에 다섯 줄을 설정하면 에이전트가 키를 사용해 Claude 또는 GPT를 실행합니다.

.vibe/config.toml의 5줄 [[providers]] 블록 — api_base, api_key_env_var, api_style — 로 Vibe CLI를 Kunavo에 연결하며 키는 파일이 아닌 환경 변수에 저장됩니다

.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를 유지하면 /v1가 유지됩니다. Mistral 참고 문서에서는 이 필드를 “공급자 API의 기본 URL”이라고만 설명하며 접미사 규칙은 명시하지 않습니다. 판단 근거는 Mistral의 두 문서 페이지에 있는 실제 예시 값 api_base = "https://openrouter.ai/api/v1"와 v2.25.5 소스의 작동 방식입니다. openai 어댑터는 api_base에 /chat/completions를 추가할 뿐 다른 작업은 하지 않으며, CLI에 내장된 Mistral 공급자도 같은 이유로 /v1 기본 주소를 사용합니다. 접미사를 빼면 루트에서 /chat/completions를 요청하게 되고, 인증 오류가 아니라 404가 발생합니다.
이 구성은 아래에 표시된 날짜를 기준으로 Mistral 자체 문서와 Vibe 자체 소스를 확인해 작성했습니다. Kunavo는 Vibe CLI를 자사 엔드포인트에 연결해 실행한 적이 없습니다. 세션, 스트리밍 턴, 도구 왕복 호출 중 어느 것도 실행하지 않았습니다. 설정 페이지를 게시했다는 사실은 런타임 테스트를 했다는 뜻이 아니며, 이 페이지의 어떤 내용도 그렇게 해석해서는 안 됩니다. 아래의 curl로 확인하는 부분은 10초 안에 검증할 수 있습니다. 그 이후 클라이언트가 하는 모든 일은 사용자와 Vibe 사이의 문제입니다.
Kunavo는 임베딩, 텍스트 음성 변환 또는 음성 텍스트 변환 모델을 제공하지 않으므로, 이 엔드포인트는 채팅 완료 요청에만 응답합니다. 따라서 여기에 연결한 공급자 블록은 모델 턴만 처리하며 그 외의 요청은 처리하지 않습니다.
알아두면 좋은 작동 방식이 하나 있습니다. Vibe의 OpenAI 경로는 모든 페이로드에 temperature 필드를 포함하지만, 여러 Claude ID(그중 claude-sonnet-5 및 claude-opus-5)는 업스트림에서 400를 샘플링 매개변수 세 가지 모두에 대해 거부합니다. Kunavo는 해당 매개변수를 거부하는 ID에 한해 전달 전에 이 값을 제거하므로, 클라이언트가 필드를 무조건 포함해도 요청이 거부되지 않습니다. 따라서 [[models]] 사전 설정에서 temperature 키는 문제를 일으키지 않으며, 해당 ID에는 아무런 영향을 주지 않습니다.
아직 키가 없나요? Kunavo 계정을 만들고, 키를 생성한 다음(키는 sk-kn-로 시작합니다) $10부터 크레딧을 추가하세요. 호출 비용은 해당 잔액에서 차감되며 실패한 호출에는 요금이 부과되지 않습니다. 그러면 대시보드가 Mistral Vibe CLI 설정 화면에서 열립니다.

단계별 안내

  1. /app/keys에서 키를 생성해 복사하세요. 키는 한 번만 표시됩니다.
  2. ~/.vibe/config.toml를 열거나, 설정을 적용할 저장소에 ./.vibe/config.toml를 만들고 위 블록을 붙여 넣으세요. 클릭해서 공급자를 추가하는 절차는 없습니다. Mistral은 이 파일을 직접 편집하도록 안내하며, /config와 /model는 이미 존재하는 사전 설정 사이에서만 전환합니다.
  3. api_key_env_var에서 지정한 변수 export KUNAVO_API_KEY="sk-kn-..."를 내보내세요. Mistral의 인증 정보 페이지에서는 CLI가 시작할 때 인증 정보 파일 ~/.vibe/.env를 불러온다고 설명하며, Mistral의 타사 예시에서는 Mistral이 아닌 키에 셸 export를 사용합니다.
  4. 사용하려는 각 ID에 대해 [[models]] 사전 설정을 하나씩 추가하고, 각각에 자체 alias를 지정한 다음 active_model를 별칭 중 하나로 설정하세요. 별칭은 로컬에서만 사용되며, /model에 표시되는 이름입니다. 실제로 엔드포인트에 전달되는 ID는 name입니다.
  5. 신뢰할 수 있는 폴더에서 vibe를 실행하고 인사말이 아니라 파일을 다루는 작업을 맡기세요. 파일을 읽고 수정하는 첫 턴으로 도구 호출을 확인할 수 있으며, 공급자 설정 오류는 대개 이 과정에서 드러납니다.

Mistral Vibe Code CLI 구성 페이지에서 확인했습니다(2026년 9월 21일 기준). 서드파티 설정은 변경될 수 있으므로, 여기의 필드 이름이 실제 화면과 다르면 이 문서가 아니라 해당 페이지를 기준으로 삼으세요.

이것이 요약본입니다. 전체 안내—모델 선택, 실제 세션 비용, 실패 유형—는 Vibe CLI와 Claude Code 비교에 있습니다.

클라이언트를 디버깅하기 전에 확인할 사항

한 번의 요청으로 문제가 엔드포인트, 키 또는 구성 파일 중 어디에 있는지 판단할 수 있습니다. 이 요청에서 JSON이 반환되면 동일한 base URL과 키가 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-..."

필드에 입력할 model id

모든 텍스트 모델은 model id로 접근할 수 있습니다. 현재 목록은 GET /v1/models이며, 가격이 포함된 카탈로그는 모델 페이지에서 확인할 수 있습니다. 요금은 토큰 100만 개당 USD 기준이며 입력 / 출력 순서입니다.

모델 IDKunavo 입력/출력Mistral Vibe CLI에서의 위치
claude-sonnet-5$1.40 / $7.00작동 세션에서 기본으로 사용할 별칭 — 대부분의 경우 active_model이 가리키는 항목
claude-opus-5$3.50 / $17.50잘못된 계획의 비용이 큰 계획 모드용 두 번째 사전 설정
claude-haiku-4-5$0.70 / $3.50저렴한 턴과 빠른 파일 분류를 위한 별도 별칭
gpt-5-6-sol$2.00 / $12.00같은 공급자 블록과 키를 사용하는 다른 모델군
월정액 없이 선불 잔액에서 토큰별로 청구됩니다. billing을 참고하세요. 반복되는 컨텍스트(에디터나 채팅 클라이언트가 보내는 데이터의 대부분)에서는 모델 선택보다 프롬프트 캐싱이 청구액에 더 큰 영향을 줍니다.

모든 트래픽이 이 공급자로 전송되는 것은 아닙니다

구성 블록만으로는 알 수 없는 내용이며, Kunavo가 아니라 Vibe에 해당합니다. v2.25.5에서 CLI는 백그라운드 “유틸리티” 완료 요청(대화와 작업 트리의 이름을 지정하는 소규모 호출)을 Mistral 공급자를 사용할 수 있을 때마다 Mistral 자체의 mistral-vibe-cli-fast 모델로 전송합니다. 기본 제공 설정에는 항상 공급자가 지정되어 있으므로, 세션의 활성 모델이 사용자 지정 모델이어도 마찬가지입니다. 소스에는 우선순위와 대체 동작이 모두 명시되어 있습니다. 사용할 수 있는 Mistral 공급자가 없으면 유틸리티 호출은 세션의 활성 모델로 전송됩니다.

따라서 세션의 모든 요청을 설정한 공급자로 보내려면 다음 중 하나가 충족되어야 합니다.

  • MISTRAL_API_KEY를 설정하지 않아 빠른 모델의 인증 정보를 확인할 수 없고, 유틸리티 호출이 대체 경로로 전송되거나
  • allowed_models를 통해 빠른 모델의 별칭이 제외되어야 합니다. 이 경우 키 대신 허용 목록 설정으로 같은 효과를 냅니다.

Smart Approve 분류기는 더 나아갑니다. 버전 2.25.1 변경 로그에 따르면 세션의 활성 모델과 관계없이 빠른 Mistral 모델에서 실행됩니다. 따라서 Kunavo만 사용하는 세션에서는 현실적으로 Smart Approve보다 accept-edits 또는 plan를 사용하게 됩니다. 이 동작이 위 구성을 깨뜨리는 것은 아닙니다. 다만 공급자 블록은 모델 턴에 적용되며 바이너리가 전송하는 모든 요청에 적용되는 것은 아닙니다.

그 밖의 api_style 값

문서에는 api_style의 값 하나가 예시로 나와 있습니다. "openai"입니다. v2.25.5 소스에는 "anthropic", "openai-responses", "reasoning", "vertex-anthropic" 등 네 가지 값이 더 있지만, 유효성 검사 없이 일반 딕셔너리에 정의되어 있습니다. 따라서 오타는 파일을 불러올 때가 아니라 요청 시점에 드러납니다. 이 값들은 소스에서 확인했지만 문서화되지 않은 것으로 취급하세요. Anthropic 값을 사용하려는 경우 주의할 점이 있습니다. 해당 어댑터의 엔드포인트는 /v1/messages이므로, api_base는 위 블록과 반대로 접미사 /v1가 없는 기본 주소 https://api.kunavo.com여야 합니다. Kunavo는 ID가 claude-로 시작하는 경우 /v1/messages에도 응답합니다. 이 페이지에서는 Mistral 문서에 나온 openai 스타일을 사용합니다.

자주 묻는 질문

Mistral Vibe CLI에 사용자 지정 공급자를 어떻게 추가하나요?

config.toml에서 직접 설정합니다. 공급자 추가 UI는 없습니다. Mistral의 구성 페이지에는 작업 디렉터리의 ./.vibe/config.toml과 홈 디렉터리의 ~/.vibe/config.toml이 설명되어 있으며, 프로젝트 파일이 우선 적용됩니다. 예제에서는 name, api_base, api_key_env_var, api_style, backend를 포함한 [[providers]] 테이블과 name, provider, alias를 포함한 [[models]] 테이블을 사용하고, active_model은 해당 alias를 가리킵니다. 키 자체는 파일에 들어가지 않습니다. api_key_env_var에는 키가 저장된 환경 변수의 이름을 지정합니다.

Vibe CLI의 api_base는 끝에 /v1을 붙여야 하나요?

api_style이 “openai”라면 그렇습니다. Mistral의 구성 참조 문서는 api_base를 공급자 API의 기본 URL이라고만 설명하고 접미사 규칙은 명시하지 않지만, 두 페이지의 예제 모두 /v1로 끝나는 값을 사용합니다. v2.25.5 소스가 그 이유를 보여 줍니다. OpenAI 스타일 어댑터는 api_base 뒤에 /chat/completions만 추가하며, CLI에 내장된 Mistral 공급자의 기본값도 /v1이 포함된 주소입니다. 따라서 Kunavo에는 https://api.kunavo.com/v1을 입력해야 합니다. 접미사를 생략하면 인증 오류가 아니라 404가 발생합니다. 문서화되지 않은 “anthropic” 스타일은 반대입니다. 엔드포인트가 /v1/messages이므로 api_base에 /v1을 붙이면 안 됩니다.

Mistral Vibe CLI에서 Claude 모델을 실행할 수 있나요?

예. 전환 옵션이 아니라 공급자 사전 설정을 통해 사용할 수 있습니다. api_style은 업체가 아니라 와이어 프로토콜을 지정하며, 모델 사전 설정의 name 필드는 입력한 그대로 엔드포인트로 전달됩니다. 따라서 Claude ID는 CLI 내부가 아니라 설정한 엔드포인트에서 확인됩니다. Mistral 자체 문서에도 타사 게이트웨이를 이용한 패턴이 나와 있으므로, 이는 우회 방법이 아니라 문서화된 경로입니다.

내 공급자를 설정했는데도 Vibe CLI가 계속 Mistral을 호출하는 이유는 무엇인가요?

백그라운드 유틸리티 완료 작업은 별도로 라우팅되기 때문입니다. v2.25.5에서 CLI는 대화 이름 지정 및 작업 트리와 같은 소규모 백그라운드 호출에 Mistral 자체의 mistral-vibe-cli-fast 모델을 우선 사용하며, Mistral 공급자를 사용할 수 있는 경우 세션의 활성 모델이 다른 모델이어도 그렇게 합니다. 배포된 기본 설정에는 항상 Mistral 공급자가 포함되어 있습니다. 사용할 수 있는 Mistral 공급자가 없으면 활성 모델로 대체되며, 실제로는 MISTRAL_API_KEY가 설정되지 않았거나 allowed_models에서 해당 alias를 제외한 경우를 의미합니다. Smart Approve 분류기는 더 엄격합니다. 변경 로그에 따르면 세션의 활성 모델과 관계없이 빠른 Mistral 모델을 사용합니다.

Kunavo에서 Mistral Vibe CLI를 테스트했나요?

아니요. 2026년 9월 21일에 확인한 것은 Mistral 자체 문서입니다. 필드 이름과 순서, /v1 관련 내용은 해당 문서에서 가져왔으며, 기본 URL에 관한 추론은 mistral-vibe 패키지의 v2.25.5 소스로 확인했습니다. Kunavo는 엔드포인트에 연결해 Vibe 세션을 실행한 적이 없으며, 스트리밍, 도구 왕복 호출 또는 긴 작업에서의 클라이언트 동작에 대해서도 주장하지 않습니다. 이 페이지의 curl 명령으로 엔드포인트와 키만 따로 확인할 수 있습니다. 나머지는 사용자와 클라이언트 사이의 문제입니다.

Vibe CLI는 API 키를 어디서 읽나요?

api_key_env_var에 지정된 환경 변수에서 읽습니다. Kunavo 공급자 블록에서는 변수 이름을 자유롭게 정할 수 있습니다. 예를 들면 KUNAVO_API_KEY입니다. Mistral의 자격 증명 페이지에는 자체 키를 가져오는 세 가지 방법이 우선순위 순으로 설명되어 있습니다. 대화형 설정 과정은 ~/.vibe/.env에 기록하고, 내보낸 환경 변수는 해당 파일보다 우선하며, ~/.vibe/.env를 직접 편집하면 CLI가 시작할 때 불러옵니다. 타사 공급자 예제에서는 셸 export를 사용합니다. 같은 페이지에서는 .env 파일은 자격 증명 전용이며 일반 구성은 config.toml에 둬야 한다고 설명합니다.