AI coding has a European alternative, but it feels a bit last year
By Magnus Hultberg • 21 June 2026
Last edited: 21 June 2026
When Fable 5 was released and then abruptly withdrawn, citing US export controls, my Claude Code subscription suddenly looked less like a reliable tool and more like a single point of failure. The (Opus) model still works. The bill still arrives. But what happens to my projects if access to my preferred coding harness becomes a geopolitical variable because a navel-gazing US government is playing a zero-sum game?
For some time I have been curious about Mistral, a European alternative that on the surface offers all the same tools and capabilities as Anthropic or OpenAI. This felt like a good reason to scratch that itch.
So I decided to explore Mistral Vibe CLI, their equivalent of Claude Code, by checking how well my Cloudflare opinionated web app template would work in the Mistral world. Vibe CLI also ships with a built-in option to run local models, allowing free usage, which has obvious benefits for hobby tinkering on a budget. And Mistral being based in Paris is a small but real signal in a world where the supply chain for software increasingly matters.

Using Mistral Vibe CLI itself as the guide (who very quickly started calling itself simply "Vibe") I chucked the Claude Code template on it and asked how it would have to change to fit the Mistral world.
Roughly €40 of pay-as-you-go API credits and half a day later it was done.
The result is now in my GitHub: github.com/mannepanne/useful-vibe-assets-template.
Same opinions and preferred tech stack as the Claude Code version, same scaffolding for "AI-assisted coding", same lifecycle approach.
Going in, I assumed I'd produce one template that could speak to both Claude Code and Vibe. Very quickly I realised that would not be possible. The differences between the harnesses are more than skin-deep, and pretending they were would have produced something that worked badly for both.
Based on the research Vibe did for me, a few examples of what that means.
Hooks and permissions. Claude Code lets you intercept behaviour with bash scripts that fire at specific moments, like the start of a session or before a tool runs. Vibe doesn't have hooks at all. It does have a declarative permissions file, a JSON document that says what the agent can and cannot do, but that's not at all as powerful. Both can be used to prevent the same kinds of disasters (like stopping some dangerous command before it is run), but the mental model is different. Hooks can be used for actual tooling, and make the interaction while using the template feel really interactive, like detecting when a person starts Claude Code in the template folder for the first time and fire off the onboarding flow. That has to go for the Vibe version in favour of "very clear documentation" to run the onboarding setup manually when starting out.
Saying that, the Vibe permissions feel more transparent and easier to reason about. I guess what Vibe gives up in flexibility they gain in clarity. I prefer the Claude Code approach though, it's much more powerful.
Skills. In Claude Code you invoke a skill with a slash command (eg /setup-profile). In Vibe you invoke it via a tool call (eg skill(name="setup-profile")). Functionally similar, but much poorer UX. Slash commands autocomplete; tool calls don't.
Agents. Claude Code spawns named agents from markdown files. Vibe uses predefined agent profiles via a "task" tool. Similar outcome (a sub-agent doing focused work) reached by different roads, with Claude Code also having the added benefit that sub-agents run in their own focused context. The Claude version is more flexible, better for keeping token consumption in check and in my opinion easier to understand. The Vibe version is more uniform. Neither is wrong, but Claude Code again wins the UX comparison.
What surprised me more than any of the architectural differences was the model.
All the work to migrate the template was done using mistral-medium-3.5. The prompting still works. The methodology still works. The Markdown specifications still get created, understood and acted on. But it felt like going back a year, to when I was calibrating my expectations of what Claude could and couldn't follow. Mistral's mid-tier model is capable, but it is not Opus 4.8. I had to pull it out of a few dead ends, restate things I'd grown used to stating only once, and watch more closely as it worked.
This is the part of the experiment that has stuck with me. The methodology I've been refining over the last eighteen months, specs first, lifecycle docs, sub-agent reviews, lightweight architecture conversations, transferred to Vibe almost untouched. Files got renamed. Some syntax changed. The shape of the work, the conversations, the artefacts, the discipline, all of that came across.
What didn't transfer was the felt experience of working with a frontier-grade model. That belongs to the model, not to the harness, and not to my notes about how to talk to it. Move down the capability ladder and you feel it immediately, regardless of how good your process is.
So I now have two templates. They share most of the underlying philosophy. They diverge in the specifics of how they tell the agent to behave. I'll keep them both. If Anthropic ever pulls Claude Code from Europe (please don't), or my hobby tinkering bill gets uncomfortable, or I just want to switch for the curiosity of it, I have a starting point that isn't "remember how I did it last time."
Next, I need to actually build something with the Vibe CLI version. Until I've done that the template is just an opinion in folder form.
Methodology is universal. Models and harnesses are not.