The honest starting point for Mistral Vibe alternatives is that Vibe CLI is not going anywhere: mistralai/mistral-vibe is Apache-2.0, not archived, shipped v2.25.5 on September 18, 2026 and was last pushed to on September 21, 2026. People replace it for four specific reasons — background calls that still reach Mistral, speech features with no third-party path, defaults that can be changed remotely, and a release cadence fast enough to break a working config — and each of those points at a different replacement. This page is the choice tree, plus what a switch actually costs you in files.
One disambiguation first, because it decides which prices are even relevant. Mistral renamed Le Chat to Vibe on May 28, 2026: "Le Chat is now Vibe", one agent and one licence across work and code. So "Mistral Vibe" now names both a consumer assistant and a coding agent, and every subscription figure you find under that name buys the assistant. The CLI is the mistral-vibe package, Apache-2.0, $0. A third product, Mistral Code Enterprise, is a separate deprecated plugin: "deprecated in favor of Mistral Vibe", working until March 2027, enterprise licence only. And two collisions worth naming: vibe.us sells meeting-room collaboration hardware, and "vibe coding" roundups of Replit, Bolt and Lovable are about a methodology, not about replacing a terminal agent.
Why people leave Vibe CLI
Not every request goes to the provider you declared. In v2.25.5 the utility-completion module defines a fast Mistral model, mistral-vibe-cli-fast, and its docstring states it is preferred whenever a Mistral provider is usable "even when the session's active provider is something else" — and the built-in defaults always configure one. The callers are background niceties, not your coding turns: session titles, git worktree names, the agent loop and the app server runtime. Three documented escape hatches exist in the same file: no usable Mistral provider, an allowed_models allowlist excluding the alias mistral-small, or an unresolvable MISTRAL_API_KEY. If your reason for leaving is "all traffic must hit one endpoint", start there before you migrate — it may already be solvable in place.
Speech is locked to Mistral's own audio protocol. In that release TranscribeClient and TTSClient are string enums whose only member is Mistral, and the shipped defaults point at wss://api.mistral.ai and https://api.mistral.ai, both keyed on MISTRAL_API_KEY. A [[transcribe_providers]] or [[tts_providers]] block does let you change api_base and the key variable — what it cannot change is the client, so whatever you point it at still has to speak Mistral's own audio API. Kunavo serves no speech-to-text, text-to-speech or embedding model either, so switching clients or gateways does not solve a speech requirement — that step needs a provider that sells it, and this page will not pretend otherwise.
Some defaults are set remotely. The 2.25.5 configuration schema ships ExperimentsConfig with enable = True against https://experiments.mistral.services/, and enable_telemetry defaults to True. That layer can supply routed_default_model, routed_model_config and routed_extra_models at runtime, and it gates the Smart Approve mode behind two experiment flags that stay off unless a rollout turns them on. That last part adds a caveat to our own Vibe CLI versus Claude Code page, which describes Smart Approve's classifier running on the fast Mistral model: at 2.25.5 both flags default to off and the mode is hidden until a rollout exposes it, so that routing only reaches you once Smart Approve is actually offered. The utility-model routing above still holds for titles and worktree names.
The cadence is fast enough to break a working config. The 2.25.5 changelog records a fix for providers configured without an API key environment variable — local or self-hosted model servers — which "run again on the Unified Harness instead of failing every turn with a missing MISTRAL_API_KEY error". That means a keyless local provider had been failing on the Unified Harness in at least one earlier release; the changelog does not say from which version, so check it against the one you install. The same release drops the "experimental" label from that harness and names --legacy-harness as the escape hatch, and 2.25.4 lists five CVE identifiers fixed in shell permission checking (ids as printed in the changelog, not separately checked against a CVE database). Pin the version in any runbook you write.
Which alternative matches which exit reason
| Why you are leaving | Group | What to look at | Status on September 21, 2026 |
|---|---|---|---|
| Every call must reach the endpoint you declared | Open API control | Crush, OpenCode | Crush v0.96.1 (2026-09-21); OpenCode v1.18.31 (2026-09-14), repository now resolves to anomalyco/opencode |
| Local-first, no vendor account in the loop | Local-first | Vibe's own built-in llama.cpp provider; Goose | Vibe 2.25.5 ships llamacpp at http://127.0.0.1:8080/v1 and a local Devstral entry at 0.0 input and output price; Goose v1.51.0, docs now under the Agentic AI Foundation |
| You want the agent inside an editor, not a terminal | IDE workflow | Cline, Kilo Code, Continue | Cline extension 4.1.19 (2026-09-17); Kilo Code v7.7.6 (2026-09-21); Continue active under Apache-2.0 |
| Long autonomous runs rather than turn-by-turn edits | Autonomous execution | OpenHands | v1.20.0 (2026-09-17), MIT; repository now resolves to OpenHands/OpenHands |
| You want OpenAI's own agent | Open API control, with a gate | Codex CLI | rust-v0.155.1 (2026-09-18); accepts only the Responses protocol for a custom provider |
| Someone recommended Roo Code | Retired | Kilo Code, or Roomote, where roocode.com now redirects | RooCodeInc/Roo-Code archived; last release v3.54.0 and last push both 2026-05-15; roocode.com 301s to roomote.dev |
| Someone recommended Aider | Dormant, decide on the dates | Aider | Not archived, Apache-2.0; last commit 2026-05-22, last GitHub release v0.86.0 of 2025-08-09, PyPI aider-chat 0.86.2 of 2026-02-12. No maintainer statement either way |
Repository, release and marketplace figures read from the GitHub API, PyPI, the Visual Studio Marketplace and each project's own documentation on September 21, 2026. Three of these now answer under a different owner than the URL most guides still print. GitHub redirects prove the new owner, but no dated announcement was found for any of them, so read them as renames on the record rather than as acquisitions. One limit on the first row: what was checked is each project's custom-provider configuration, not its background traffic, so if "every call reaches my endpoint" is the actual requirement, confirm it with a proxy log in your own setup. Deeper comparisons live on OpenCode alternatives, Aider alternatives and Crush versus OpenCode.
Check the wire before you pick
This is the part a feature table misses, and it decides whether your existing key works at all. Each client accepts a different set of protocols for a custom endpoint, and one of them rejects the shape most gateways serve.
| Client and version checked | Where a custom endpoint is declared | Protocols accepted |
|---|---|---|
| Vibe CLI 2.25.5 | ~/.vibe/config.toml or ./.vibe/config.toml, as [[providers]] plus [[models]] | Five api_style values: openai, reasoning, anthropic, openai-responses, vertex-anthropic. Bearer token for the three OpenAI-shaped ones; x-api-key plus anthropic-version: 2023-06-01 for anthropic |
| OpenCode 1.18.31 | opencode.json: provider.<id>.npm plus options.baseURL and options.apiKey | Chosen by package: @ai-sdk/openai-compatible for a /v1/chat/completions endpoint, @ai-sdk/openai when the model uses /v1/responses |
| Crush v0.96.1 | ./.crushrc, ./crushrc or ~/.config/crush/crushrc — "just Bash with some Crush-specific builtins" | Providers are added with provider add --type. The README documents openai and openai-compat for OpenAI-shaped APIs and anthropic for Anthropic-shaped ones, alongside types for Ollama, llama.cpp and Vertex; openai-compat is the one it names for non-OpenAI providers with OpenAI-compatible APIs |
| Codex CLI rust-v0.155.1 | ~/.codex/config.toml, under model_providers.<id> | Responses only. The WireApi enum has a single variant and the deserializer rejects "chat" with a removal error |
| Goose, docs checked September 21, 2026 | Environment: OPENAI_API_KEY, plus OPENAI_HOST and OPENAI_BASE_PATH | Custom providers support OpenAI Compatible, Anthropic Compatible and Ollama Compatible API types |
Three details that cost an afternoon each. For Vibe's OpenAI-shaped styles, api_base must be the /v1 root, because the OpenAI adapter appends /chat/completions itself — while the anthropic adapter appends /v1/messages, so that one wants the host root instead. Crush's configuration moved: at v0.96.1 crushrc is the documented place to add a provider while crush.json persists under $HOME/.local/share/crush/, so a tutorial adding a provider to the JSON file describes an older shape — and the README warns that both files are trusted code, since crushrc runs in a full shell. And Codex CLI's gate ends migrations early: a chat-completions key is not a Codex CLI provider at this version.
For the most common move — Vibe CLI to OpenCode, keeping one key — the target-side declaration is a file, not a wizard:
{
"provider": {
"kunavo": {
"npm": "@ai-sdk/openai-compatible",
"name": "Kunavo",
"options": {
"baseURL": "https://api.kunavo.com/v1",
"apiKey": "{env:KUNAVO_API_KEY}"
},
"models": {
"claude-sonnet-4-6": { "name": "Claude Sonnet 4.6" }
}
}
}
}Crush's equivalent is a crushrc line — provider add kunavo --type openai-compat --base-url "https://api.kunavo.com/v1" --api-key "$KUNAVO_API_KEY" — followed by a model add for each model you want listed, which is the shape the README's own custom-provider example uses. Both are published configuration shapes read from each project's own documentation, not runtime tests: Kunavo has run neither client against its endpoint. Setup references live at OpenCode integration, Crush integration and Mistral Vibe integration.
What migrates, what does not, and how to roll back
Travels as a file copy: AGENTS.md. Vibe CLI 2.25.5 defines AGENTS_MD_FILENAME = "AGENTS.md", OpenCode's documentation tells you to commit your project's AGENTS.md to Git, and Crush v0.96.1 reads ~/.config/AGENTS.md and ships an initialize-as AGENTS.md option. Same filename, so this part is portable — though each client interprets the contents its own way, so read it once in the new tool rather than assuming identical behaviour.
Does not travel: tools, skills, plugins and sub-agents. Vibe keeps those in a project .vibe/ directory with tools/, skills/, plugins/ and agents/ subdirectories plus an .agents/skills directory, with global equivalents under ~/.vibe. No other client here reads that layout, so budget re-declaring them by hand. Keys do not travel either: Vibe's setup flow writes them to ~/.vibe/.env, environment variables take precedence, and each target client names its own variable.
History does not travel at all. Vibe sessions are local files under ~/.vibe/logs/session — a .session_index.json, then a meta.json and messages.jsonl per session. The 2.25.5 wheel ships three console scripts (vibe, vibe-acp, vibe-app-server) and exposes --continue and --resume; no export command was found in it. Since 2.25.5 that directory is owner-only on non-Windows systems. Keep it rather than planning to import it.
A migration that will not strand you, in order: copy AGENTS.md into the new client's project root; declare the provider in that client's own file using the protocol from the table above; export the key variable it names; run one bounded task — a single-file edit, then an investigation across several files — in both clients; read what your provider account recorded for each. Set the rollback up before you start: Vibe CLI is an ordinary Python package, so reinstalling the version you were on (uv tool install mistral-vibe==2.25.5) restores the client, and leaving ~/.vibe untouched during the trial preserves both your config and your key file.
What the switch does to your bill
Mostly nothing, and that is the point: on a bring-your-own-key route the client is free software and the model decides the bill. These figures are illustrative token arithmetic, not measured task costs and not a bill ceiling. Assume one session sending 200,000 uncached input tokens and receiving 12,000 output tokens. The first row is Mistral's own published rate for Vibe CLI's default model, shown for comparison — Kunavo does not sell Mistral models. The rest are live Kunavo catalog rates per million tokens.
| Model | Input / output per 1M | Billed by | Estimate for the assumed session |
|---|---|---|---|
| Mistral Medium 3.5 | $1.50 / $7.50 | Mistral's own API | $0.390 |
| Claude Haiku 4.5 | $0.40 / $2.00 | Kunavo catalog | $0.104 |
| Gemini 3.8 Flash | $0.525 / $2.625 | Kunavo catalog | $0.137 |
| GPT-5.6 Terra | $0.70 / $4.20 | Kunavo catalog | $0.190 |
| Claude Sonnet 4.6 | $1.20 / $6.00 | Kunavo catalog | $0.312 |
| Claude Opus 5 | $2.00 / $10.00 | Kunavo catalog | $0.520 |
Mistral's figure is read from its API price list on September 21, 2026, and Vibe's shipped configuration declares the same two numbers for mistral-vibe-cli-latest. What the table cannot tell you: cheapest listed rate and lowest cost to finish the task are different claims, and a model that needs three attempts can cost more than a dearer one that lands in a single pass. Scale by your own sessions per day before treating any of it as a budget.
Kunavo's catalog amount is a billing floor rather than a cap: when the upstream reports its charge, the bill is the greater of catalog cost and upstream cost times the applicable markup. Cache charges and external tools sit outside this example. The minimum top-up is $10 in prepaid credit, which funds a balance rather than buying a plan — see billing details, and create a Kunavo account when you are ready to fund a key for whichever client you land on.
Still deciding between staying and moving? Mistral Vibe versus Claude Code covers keeping the CLI and pointing it elsewhere, the best API for OpenCode covers the provider question on the most common landing spot, and Claude Code alternatives widens the set if the terminal is not the constraint.
FAQ
What is the best alternative to Mistral Vibe CLI?
There is no single winner, because the four reasons people leave point at four different tools. If the problem is that background calls still go to Mistral, try Vibe's own escape hatches first, then look at Crush or OpenCode, each of which declares a custom endpoint in its own config file — though this page verified their configuration shape, not their background traffic, so confirm that with a proxy log rather than a table. If you want a local-first setup, note that Vibe CLI already ships a llama.cpp provider at http://127.0.0.1:8080/v1 and a zero-price local Devstral entry, so the cheapest alternative to Vibe CLI is sometimes Vibe CLI pointed at localhost; Goose also documents an Ollama Compatible custom provider. If you want the agent inside an editor rather than a terminal, Cline, Kilo Code and Continue are three actively released open-source options. If you want long autonomous runs, OpenHands. None of these has been runtime tested against Kunavo, and no benchmark on this page ranks them on output quality.
Is Mistral Vibe free?
The CLI is. The mistral-vibe package on PyPI is Apache-2.0, version 2.25.5 uploaded September 18, 2026, and requires Python 3.12 or newer, so the software costs $0. The subscription that now shares its name is separate: after Mistral renamed Le Chat to Vibe on May 28, 2026, mistral.ai/pricing lists Free at $0 with “Limited coding sessions”, Pro at $14.99 per month ($5.99 for verified students) with “All-day coding in the CLI, IDE, or on web”, and Team at $24.99 per user per month with a $50 monthly minimum. Mistral publishes no session count, token cap or reset window behind either wording, so “all-day” is the published claim and not a statement that usage is unlimited. What you pay beyond the plan is model tokens, at Mistral's rates or at whatever provider you declare yourself.
Is Roo Code still a usable alternative?
Not as a fresh recommendation. RooCodeInc/Roo-Code is archived on GitHub, its last release v3.54.0 and its last push are both dated May 15, 2026, and roocode.com returns an HTTP 301 to roomote.dev (all checked September 21, 2026). The VS Code extension RooVeterinaryInc.roo-cline is still installable but frozen at 3.54.0 from that same date. No official page carries a dated shutdown announcement, so treat those repository dates and the redirect as the evidence rather than any date quoted in a third-party write-up. Roomote, the site roocode.com now redirects to, describes itself as a source-available, self-hosted AI coding teammate and lists Cloud at $49 per month for up to 10 users and $249 per month for 11-50, with self-hosting free up to 10 users. Price it from roomote.dev rather than from third-party write-ups. For an actively released VS Code agent instead, Kilo Code is MIT-licensed and shipped v7.7.6 on September 21, 2026.
Do my AGENTS.md rules move to another coding agent?
The AGENTS.md file itself moves as a file copy, because three of these clients read that filename. Vibe CLI 2.25.5 defines AGENTS_MD_FILENAME as “AGENTS.md”, OpenCode's documentation says to commit your project's AGENTS.md to Git, and Crush v0.96.1 reads ~/.config/AGENTS.md and offers an initialize-as AGENTS.md option. What does not move is everything around it: Vibe's project .vibe directory with its tools, skills, plugins and agents subdirectories, and the .agents/skills directory, have no shared format with another client's equivalents, so those are re-declared by hand. Re-read the copied file once in the new client rather than assuming identical interpretation.
Can an OpenAI-compatible gateway drive Codex CLI?
Not at version rust-v0.155.1. The WireApi enum in that release has exactly one variant, Responses, its deserializer returns a removal error for the value “chat” and an unknown-variant error for anything else, and OpenAI's config reference states that responses is the only supported value and the default when omitted. So a gateway that serves /v1/chat/completions cannot be declared as a Codex CLI model provider at this version, and the ollama-chat provider id was removed as well. Older tutorials showing wire_api = “chat” describe an earlier release. Pin this to the version you install and re-check it, since it changed once already.
Does Vibe CLI still call Mistral when I point it at another provider?
For some background work, yes. In version 2.25.5 the utility-completion path defines a fast Mistral model, mistral-vibe-cli-fast, and its own docstring says that model is preferred whenever a Mistral provider is usable — and the built-in defaults always configure one — even when the session's active provider is something else. Its callers are background niceties rather than your coding turns: session titles, git worktree names, the agent loop and the app server runtime. The source names three escape hatches: no usable Mistral provider, an allowed_models allowlist that excludes the alias mistral-small, or an unresolvable MISTRAL_API_KEY, after which the utility call falls back to the session's active model. Automatic session titling is off by default in that release anyway, with a source comment explaining the fast model is not served by every Mistral deployment.
Do I need a Mistral account to run Vibe CLI on a third-party endpoint?
This page cannot answer that, and would rather say so than guess. The code path works without a resolvable MISTRAL_API_KEY, because utility completions fall back to the session's active model, and Mistral's documentation only states that browser-based sign-in is enabled by default when your config targets a model with a Mistral provider. No official sentence was found stating that no account is required, and none was found requiring one. Check it in your own account before you plan around either answer.
Checked September 21, 2026: the GitHub API for mistral-vibe, opencode, goose, OpenHands, Roo-Code, crush, codex, cline and kilocode; PyPI for mistral-vibe 2.25.5; the Visual Studio Marketplace and JetBrains Marketplace listings named above; the v2.25.5 wheel's source, changelog and README; docs.mistral.ai's CLI configuration and API-keys pages; mistral.ai/pricing, mistral.ai/pricing/api and the Vibe rename announcement; opencode.ai, goose-docs.ai, roomote.dev, the Crush v0.96.1 README and OpenAI's Codex config reference. No client was installed or run against Kunavo, so nothing here is a compatibility test, and every dollar figure is illustrative token arithmetic rather than a measured task cost.