Mistral Vibe CLI for design.
Mistral Vibe CLI is Mistral AI's open-source terminal coding agent, powered by the Devstral model family. It edits files, runs commands, and works over the Agent Client Protocol — which makes it a real design tool once you give it references, conventions, and a verification loop. Open Design wires it into an open-source design workflow: your Mistral API key (BYOK) or local models, your files, local-first.
Open Design turns Mistral Vibe CLI into a local-first, open-source design agent — your Mistral API key or local Devstral models, your files, a curated skill and design-system library around it.
Mistral Vibe CLI is Mistral AI's open-source (Apache-2.0) coding agent for the terminal. It scans your project's file structure and Git status for context, then explores, edits, and runs changes across your codebase from natural-language tasks. Two things make it interesting for design specifically: it is powered by Mistral's Devstral coding models, part of an open-weights ecosystem you can run locally or in the cloud; and it speaks the Agent Client Protocol (ACP), so it slots into editors and tools rather than living only in one terminal. Paired with the right references, conventions, and a verification loop, it builds real, responsive UI. This is a practical, end-to-end guide to using Vibe CLI for UI, frontend, and design-system work, and to wiring it into a structured design workflow with Open Design.
It covers what Vibe CLI actually is, why an open-weights coding agent fits design, how to set it up from zero, the reference-to-UI loop, how config.toml, MCP, and ACP extend it, how it compares to Codex, Claude Code, Cursor, and Gemini CLI, the pitfalls that make AI output look generic, and how Open Design closes the gap as an open, local-first design layer — a natural pairing, since both are open-source and run on your own machine.
What Mistral Vibe CLI actually is
Mistral Vibe CLI is an open-source (Apache-2.0) coding agent that Mistral AI ships for the terminal. It provides an interactive chat interface with tools for file manipulation, code searching, version control, and command execution, and it automatically scans your project's file structure and Git status to give the agent relevant context. It is powered by Mistral's Devstral coding models — planning and verifying work from natural-language tasks rather than just completing lines.
For design work, two properties stand out. It runs on Mistral's open-weights Devstral family (Devstral 2 and the smaller Devstral Small 2), so you can run the agent against the Mistral API in the cloud or against local models — useful for privacy-sensitive or offline design work. And it speaks the Agent Client Protocol, so the same agent can drive editors and tools, not just one terminal session.
- Config files: Vibe CLI is configured through a config.toml file (project-level ./.vibe/config.toml, with a fallback at ~/.vibe/config.toml). It is a practical place to encode your providers, model choice, and project settings.
- Built-in tools + MCP: It ships file, search, version-control, and command-execution tools, and supports MCP servers (configured under an [[mcp_servers]] section) to add external context like a live Figma file.
- BYOK or local: Authenticate with a Mistral API key from the Mistral console, or point it at local/compatible models so it works fully offline.
- Vendor: Mistral AI
- Credential: Mistral API key (BYOK) from the Mistral console, or local / compatible models
- License: Apache-2.0, open source
Why an open-weights coding agent fits design
Vibe CLI's design edge comes from its open-weights model family and its protocol reach — but, as with every agent, taste still has to be supplied.
- Devstral coding models: Vibe runs on Mistral's Devstral family, coding-tuned models built for agentic, multi-file work — so the agent edits across a real frontend codebase rather than emitting isolated snippets.
- Open-weights and local-friendly: Devstral Small 2 is small enough to run on consumer hardware, so design work can stay fully local and offline — references and code never have to leave your machine.
- Conventions in config.toml + context: Project config and your own instructions point the agent at your tokens, components, and real specs, so it works against a brand instead of a default look.
The lesson is the same one every agent teaches: Vibe CLI does not have taste by default. It produces good design when you give it constraints — a design system, an aesthetic skill, and concrete references. Open Design packages exactly those inputs, which is why the two fit together (more below).
Set up Vibe CLI for design work, from zero
Here is the full path from a clean machine to a Vibe CLI that can build and verify UI.
# 1. Install Mistral Vibe CLI
uv tool install mistral-vibe
# or: pip install mistral-vibe
# 2. Run the setup wizard to register your API key
vibe --setup # saves config to ~/.vibe/config.toml and ~/.vibe/.env
# or set it directly: export MISTRAL_API_KEY=...
# 3. Start Vibe in your project
cd your-project
vibe
# 4. Wire the Figma MCP server (optional, for design handoff)
# add an [[mcp_servers]] entry in your config.toml
- Encode your design rules: Keep your tokens, primitives, and conventions where the agent reads them and point Vibe at them, so output matches a brand instead of defaulting to a generic look.
- Add browser verification: Wire a Playwright or browser MCP so Vibe renders in a real browser and checks its output across breakpoints instead of only confirming the build passes.
The reference-to-UI workflow
The highest-leverage design loop with Vibe CLI is turning a clear reference into working, responsive UI and iterating until it matches — leaning on the agent's tools to render, inspect, and correct its own output.
- Start from the clearest references you have — and describe multiple states (desktop and mobile, hover, empty, loading), not just one hero shot.
- Be specific in the prompt; vague prompts produce generic UI even with a strong model.
- Keep your design system and conventions where Vibe reads them, and tell it where the tokens and canonical primitives live.
- Run a dev server and have Vibe render in a real browser, resizing to breakpoints to check the result.
- Iterate by having Vibe compare its implementation back to the references — not merely confirm it builds.
Reference files with @ (Vibe autocompletes file paths) and drive slash commands with /, then give concrete constraints:
vibe
# in the prompt:
> @design-spec.md @tokens.css
Implement this design in React + Vite + Tailwind + TypeScript.
Reuse my existing design-system components and tokens.
Match spacing, layout, and hierarchy; make it responsive.
Run the dev server, render it in the browser, and iterate until
it matches the references across breakpoints.Keep prompts small and focused, commit good iterations and revert bad ones (telling Vibe when you revert), so each pass builds on a clean base.
config.toml, MCP, and ACP
Three extension points make Vibe CLI practical for sustained design work, and all three map cleanly onto an open design workflow.
- config.toml: Project rules and provider/model settings live in a config.toml (project-level, with a ~/.vibe fallback). It is the durable home for how the agent is wired into your project, read on every run.
- MCP servers: Configure MCP servers in your config.toml ([[mcp_servers]], with HTTP, streamable-HTTP, and stdio transports) — the portable way to bring in design context and external tools, most relevantly the Figma MCP server, that work across agents, not just Vibe.
- Agent Client Protocol: Vibe speaks ACP, so the same agent can be driven from editors and other ACP clients. This is exactly how Open Design integrates it — over ACP via the vibe-acp binary.
These are portable, multi-agent capabilities — exactly the kind of thing Open Design is built to orchestrate, rather than re-create per project.
Vibe CLI vs Codex vs Claude Code vs Cursor vs Gemini CLI for design
There is no single winner for design work — each agent has a different strength, and experienced teams stack them. A fair summary:
| Agent | Design strength | Best for |
|---|---|---|
| Mistral Vibe CLI | Open-weights Devstral coding models you can run locally; Apache-2.0 and ACP-native | Privacy-sensitive or offline design work and an open-weights stack |
| Codex | Strong visual polish with a frontend skill; sandboxed async builds | Delegated async builds and portable AGENTS.md rules |
| Claude Code | Specific design decisions (hex, spacing, type) and codebase-aware UX | Frontend reasoning and large-context refactors |
| Cursor | Visual build-and-see loop with live preview and inline edits | Tight iterate-and-watch UI work inside an IDE |
| Gemini CLI | Strong multimodal image understanding and a very large context window | Screenshot-heavy work and holding a whole design system in context |
The recurring community verdict is that taste comes from humans: all of them default to a generic aesthetic without skills, references, and constraints. That is the real problem to solve — and it is design-tool-shaped, not model-shaped.
Pitfalls, and how to avoid the “AI slop” look
The most common complaint about AI-generated design is that it looks generic — soft gradients, floating panels, oversized rounded corners, dramatic shadows, an Inter-and-purple vibe that “screams an AI made this.” Other reported issues include broken mobile layouts and instructions leaking into UI copy. None of these are unique to Vibe CLI; they are what happens when any agent runs without a curated design context.
- Add an aesthetic skill: A curated design skill forces the agent to commit to a real direction instead of the default look.
- Verify in a real browser: Have Vibe render and self-check across breakpoints so layouts do not silently break on mobile.
- Supply tokens and references: Real design tokens and reference screenshots are the single biggest lever on output quality.
- Encode rules in config and context: Put “no hero cards, max two typefaces, brand-first hierarchy” style rules where the agent reads them every run.
Notice that every mitigation is about giving the agent a curated design context. Maintaining that context by hand, per project, is the toil Open Design removes.
Designing with Vibe CLI inside Open Design
Open Design is the open-source design layer the workflow above keeps asking for. It treats Mistral Vibe CLI as a first-party adapter — driving it over ACP via the vibe-acp binary — and wraps it in a curated skill and design-system library, a structured render pipeline, and a local desktop UI. So the design context that makes Vibe good is there from the first run, not assembled by hand each time. Both are open-source and local-first, which makes the pairing a natural fit.
- Install Open Design and select Mistral Vibe CLI as your agent.
- Authenticate with your Mistral API key (BYOK) or point Vibe at local models — credentials stay on your machine and are never proxied through us.
- Pick a design system and a skill, then generate decks, prototypes, and landing pages with consistent taste.
- Every artifact and DESIGN.md file lives in your own repo, not a hosted cloud.
Same Vibe CLI agent, same key — plus a real, portable, open-source design workflow around it. It is local-first and Apache-2.0, so nothing about your work or your credentials leaves your machine.
Frequently asked questions
-
01 Can Mistral Vibe CLI really do design work?
Yes — with an aesthetic skill, a design system, and real references in context, Vibe CLI produces production-quality, responsive UI, and its Devstral models edit across a real frontend codebase. Without that context it tends to default to a generic look, which is the gap Open Design fills.
-
02 How do I authenticate Vibe CLI?
Run the setup wizard with vibe --setup to register a Mistral API key (from the Mistral console), or set MISTRAL_API_KEY in your environment. It can also run against local or compatible models, fully offline. Open Design never proxies your credentials either way.
-
03 What makes Vibe CLI good for design specifically?
It is an Apache-2.0, ACP-native agent powered by Mistral's open-weights Devstral coding models — so you can run it locally for privacy-sensitive work and edit across a real codebase. But taste still comes from the design system, skill, and references you supply.
-
04 Vibe CLI or Claude Code for frontend design?
Both are strong. Claude Code is known for specific, codebase-aware design decisions; Vibe CLI's edge is an open-weights Devstral stack you can run locally and an Apache-2.0 license. Many teams use both — Open Design lets you switch agents without changing your design workflow.
-
05 How do I connect Vibe CLI to Figma?
Add the Figma MCP server as an [[mcp_servers]] entry in your config.toml. Vibe can then pull real design context — components, variables, layout data — so the generated code matches the source instead of approximating it.
-
06 Is Open Design affiliated with Mistral AI?
No. Mistral Vibe CLI is a product of Mistral AI; Open Design is an independent open-source project that supports it as a first-party adapter, driven over ACP. Mistral is a trademark of Mistral AI.
-
07 Are my files and credentials safe?
Yes — Open Design is local-first and Apache-2.0. Your files, artifacts, and DESIGN.md stay in your own repo, and your Mistral credentials are used directly by your agent, never routed through Open Design servers.
Design with Mistral Vibe CLI, the open way.
Bring your own Mistral API key or local models, keep every file local, and get a curated design library around the agent you already use.