mlx-optiq
Integration · Mistral Vibe

Mistral Vibe

Mistral Vibe is Mistral’s open-source CLI coding assistant. It speaks the OpenAI Chat Completions API, which optiq serve exposes by default. That means it drives any OptiQ-served model, including Mistral’s own Devstral.

Quick start: optiq run

One command starts optiq serve for the model (or reuses one already running on the port), configures Mistral Vibe for that session only, and launches it. When Mistral Vibe exits, a server it started is stopped. Arguments after -- go to Mistral Vibe.

terminalbash
# interactive
$ optiq run vibe -m mlx-community/Qwen3.6-27B-OptiQ-4bit

# one-shot, non-interactive
$ optiq run vibe -m mlx-community/Qwen3.6-27B-OptiQ-4bit -- -p "read AGENTS.md and summarise the build steps" --auto-approve

Your Vibe settings are kept and the local model is made active for that session; ~/.vibe/config.toml is not edited. Use a 24B-or-larger model for agent work: in our tests a 9B model finished the file-editing task in 4 of 6 runs.

The steps below set up the same connection by hand, for when you run optiq serve yourself. See optiq run for every option.

1. Install Vibe

terminalbash
$ pip install mistral-vibe

# or with uv:
$ uv tool install mistral-vibe

2. Start optiq serve

terminalbash
$ optiq serve \
    --model mlx-community/Qwen3.6-27B-OptiQ-4bit \
    --port 8080

optiq serve accepts a request without an Authorization header, but rejects one carrying a token that is not an OptiQ key. Because Vibe always sends whatever key you configure, set it to something with the sk-optiq- prefix:

terminalbash
$ export OPTIQ_API_KEY=sk-optiq-local

3. Configure Vibe

Vibe reads ~/.vibe/config.toml (override the directory with VIBE_HOME). Add a provider pointing at your local server and a model that uses it:

~/.vibe/config.tomltoml
active_model = "optiq"

[[providers]]
name = "optiq"
api_base = "http://127.0.0.1:8080/v1"
api_style = "openai"
api_key_env_var = "OPTIQ_API_KEY"

[[models]]
alias = "optiq"
name = "mlx-community/Qwen3.6-27B-OptiQ-4bit"
provider = "optiq"
temperature = 0.2

optiq serve hosts one model and treats the request’s model field as a label. name can therefore be any string. Keeping the repo id there just makes the config self-documenting.

Then run Vibe in your project:

terminalbash
# interactive:
$ vibe

# or one-shot, non-interactive:
$ vibe -p "read AGENTS.md and summarise the build steps" --auto-approve

Using Devstral

Vibe and Devstral both come from Mistral, so they pair naturally. Point optiq serve at a Devstral build and leave the Vibe config above unchanged. The model field is just a label.

terminalbash
$ optiq serve \
    --model mlx-community/mistralai_Devstral-Small-2-24B-Instruct-2512-MLX-MXFP4 \
    --port 8080

Notes

  • Tool use: works. Vibe drives file reads and edits through function calling.
  • Trust prompt: Vibe ignores a project’s AGENTS.md until the directory is trusted. Pass --trust for a non-interactive run.
  • Streaming: works.
  • Verified: vibe 2.21.0 against optiq serve on macOS (Apple Silicon), driving Devstral-Small-2-24B; optiq run with vibe 2.25.4 and Qwen3.5-9B.