MCPcopy Index your code
hub / github.com/mistralai/mistral-vibe

github.com/mistralai/mistral-vibe @v2.19.0 sqlite

repository ↗ · DeepWiki ↗ · release v2.19.0 ↗
11,136 symbols 52,275 edges 761 files 702 documented · 6%
README

Mistral Vibe

PyPI Version Python Version CI Status License

██████████████████░░
██████████████████░░
████  ██████  ████░░
████    ██    ████░░
████          ████░░
████  ██  ██  ████░░
██      ██      ██░░
██████████████████░░
██████████████████░░

Mistral's open-source CLI coding assistant.

Mistral Vibe is a command-line coding assistant powered by Mistral's models. It provides a conversational interface to your codebase, allowing you to use natural language to explore, modify, and interact with your projects through a powerful set of tools.

[!WARNING] Mistral Vibe works on Windows, but we officially support and target UNIX environments.

One-line install (recommended)

Linux and macOS

curl -LsSf https://mistral.ai/vibe/install.sh | bash

Windows

First, install uv

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Then, use uv command below.

Using uv

uv tool install mistral-vibe

Using pip

pip install mistral-vibe

Table of Contents

Features

  • Interactive Chat: A conversational AI agent that understands your requests and breaks down complex tasks.
  • Powerful Toolset: A suite of tools for file manipulation, code searching, version control, and command execution, right from the chat prompt.
  • Read, write, and patch files (read, write_file, edit).
  • Execute shell commands in a stateful terminal (bash).
  • Recursively search code with grep (with ripgrep support).
  • Manage a todo list to track the agent's work.
  • Ask interactive questions to gather user input (ask_user_question).
  • Delegate tasks to subagents for parallel work (task).
  • Project-Aware Context: Vibe automatically scans your project's file structure and Git status to provide relevant context to the agent, improving its understanding of your codebase.
  • Advanced CLI Experience: Built with modern libraries for a smooth and efficient workflow.
  • Autocompletion for slash commands (/) and file paths (@).
  • Image attachments via @ mentions — .png, .jpg, .jpeg, .gif, .webp files are sent to vision-capable models (e.g. Mistral Medium 3.5) as native multimodal content.
  • Persistent command history.
  • Beautiful Themes.
  • Highly Configurable: Customize models, providers, tool permissions, and UI preferences through a simple config.toml file.
  • Safety First: Features tool execution approval.
  • Multiple Built-in Agents: Choose from different agent profiles tailored for specific workflows.

Built-in Agents

Vibe comes with several built-in agent profiles, each designed for different use cases:

  • default: Standard agent that requires approval for tool executions. Best for general use.
  • plan: Read-only agent for exploration and planning. Auto-approves safe tools like grep and read.
  • accept-edits: Auto-approves file edits only (write_file, edit). Useful for code refactoring.
  • auto-approve: Auto-approves all tool executions. Use with caution.

Use the --agent flag to select a different agent:

vibe --agent plan

To change the default agent used when --agent is not passed, set default_agent in your config.toml:

default_agent = "plan"

Valid values are default, plan, accept-edits, auto-approve, lean (only when listed in installed_agents), or the name of any custom agent file in ~/.vibe/agents/ or the project's .vibe/agents/ directory. Subagents such as explore are not accepted.

Note: default_agent applies in both interactive and programmatic (-p / --prompt) sessions. Pass --auto-approve or --yolo with any agent when a run should approve all tool calls without prompting.

Subagents and Task Delegation

Vibe supports subagents for delegating tasks. Subagents run independently and can perform specialized work without user interaction, preventing the context from being overloaded.

The task tool allows the agent to delegate work to subagents:

> Can you explore the codebase structure while I work on something else?

🤖 I'll use the task tool to delegate this to the explore subagent.

> task(task="Analyze the project structure and architecture", agent="explore")

Create custom subagents by adding agent_type = "subagent" to your agent configuration. Vibe comes with a built-in subagent called explore, a read-only subagent for codebase exploration used internally for delegation.

Interactive User Questions

The ask_user_question tool allows the agent to ask you clarifying questions during its work. This enables more interactive and collaborative workflows.

> Can you help me refactor this function?

🤖 I need to understand your requirements better before proceeding.

> ask_user_question(questions=[{
    "question": "What's the main goal of this refactoring?",
    "options": [
        {"label": "Performance", "description": "Make it run faster"},
        {"label": "Readability", "description": "Make it easier to understand"},
        {"label": "Maintainability", "description": "Make it easier to modify"}
    ]
}])

The agent can ask multiple questions at once, displayed as tabs. Each question supports 2-4 options plus an automatic "Other" option for free text responses.

Terminal Requirements

Vibe's interactive interface requires a modern terminal emulator. Recommended terminal emulators include:

  • WezTerm (cross-platform)
  • Alacritty (cross-platform)
  • Ghostty (Linux and macOS)
  • Kitty (Linux and macOS)

Most modern terminals should work, but older or minimal terminal emulators may have display issues.

Quick Start

  1. Navigate to your project's root directory:

bash cd /path/to/your/project

  1. Run Vibe:

bash vibe

  1. If this is your first time running Vibe, it will:
  2. Create a default configuration file at ~/.vibe/config.toml
  3. Prompt you to enter your API key if it's not already configured
  4. Save your API key to ~/.vibe/.env for future use

Alternatively, you can configure your API key separately using vibe --setup.

  1. Start interacting with the agent!

```

Can you find all instances of the word "TODO" in the project?

🤖 The user wants to find all instances of "TODO". The grep tool is perfect for this. I will use it to search the current directory.

grep(pattern="TODO", path=".")

... (grep tool output) ...

🤖 I found the following "TODO" comments in your project. ```

Usage

Interactive Mode

Simply run vibe to enter the interactive chat loop.

  • Multi-line Input: Press Ctrl+J or Shift+Enter for select terminals to insert a newline.
  • File Paths: Reference files in your prompt using the @ symbol for smart autocompletion (e.g., > Read the file @src/agent.py).
  • Shell Commands: Prefix any command with ! to execute it directly in your shell, bypassing the agent (e.g., > !ls -l).
  • External Editor: Press Ctrl+G to edit your current input in an external editor.
  • Tool Output Toggle: Press Ctrl+O to toggle the tool output view.
  • Todo View Toggle: Press Ctrl+T to toggle the todo list view.
  • Debug Console: Press Ctrl+\ to toggle the debug console.
  • Agent Selection: Press Shift+Tab to cycle through agents (default, plan, ...).
  • Exit: Type /exit, exit, quit, :q, or :quit in the input box, or press Ctrl+C / Ctrl+D twice within ~1 second. Set ask_confirmation_on_exit = false (or toggle it in /config) to make Ctrl+D quit on the first press; Ctrl+C always requires confirmation.

You can start Vibe with a prompt using the following command:

vibe "Refactor the main function in cli/main.py to be more modular."

Trust Folder System

Vibe includes a trust folder system to ensure you only run the agent in directories you trust. When you first run Vibe in a new directory which contains a .vibe subfolder, it may ask you to confirm whether you trust the folder.

Trusted folders are remembered for future sessions. You can manage trusted folders through its configuration file ~/.vibe/trusted_folders.toml.

This safety feature helps prevent accidental execution in sensitive directories.

Programmatic Mode

You can run Vibe non-interactively by piping input or using the --prompt flag. This is useful for scripting.

vibe --prompt "Refactor the main function in cli/main.py to be more modular."

By default, it uses your configured default_agent (default unless changed). To approve all tool calls without prompting, pass --auto-approve or --yolo (also available for interactive sessions):

vibe --prompt "Refactor the main function in cli/main.py to be more modular." --auto-approve

Programmatic Mode Options

When using --prompt, you can specify additional options:

  • --max-turns N: Limit the maximum number of assistant turns. The session will stop after N turns.
  • --max-price DOLLARS: Set a maximum cost limit in dollars. The session will be interrupted if the cost exceeds this limit.
  • --max-tokens N: Set a maximum cumulative LLM token budget for the session, counting both prompt and completion tokens. The session will be interrupted if usage exceeds this limit.
  • --agent NAME: Select the agent profile for this run.
  • --auto-approve, --yolo: Approves all tool calls without prompting, including in interactive sessions. Can be combined with any --agent value.
  • --enabled-tools TOOL: Enable specific tools. In programmatic mode, this disables all other tools. Can be specified multiple times. Supports exact names, glob patterns (e.g., bash*), or regex with re: prefix (e.g., re:^serena_.*$).
  • --output FORMAT: Set the output format. Options:
  • text (default): Human-readable text output
  • json: All messages as JSON at the end
  • streaming: Newline-delimited JSON per message

Example:

vibe --prompt "Analyze the codebase" --max-turns 5 --max-price 1.0 --max-tokens 50000 --output json

Voice Mode

[!WARNING] Voice mode is experimental and may change in future releases.

Voice mode allows you to dictate input using your microphone instead of typing.

Activating Voice Mode

Toggle voice mode on or off with the /voice slash command:

> /voice

Recording Shortcuts

Shortcut Action
Ctrl+R Start recording
Any key Stop recording
Escape Cancel recording
Ctrl+C Cancel recording

Slash Commands

Use slash commands for meta-actions and configuration changes during a session.

Built-in Slash Commands

Vibe provides several built-in slash commands. Use slash commands by typing them in the input box:

> /help

Custom Slash Commands via Skills

You can define your own slash commands through the skills system. Skills are reusable components that extend Vibe's functionality.

To create a custom slash command:

  1. Create a skill directory with a SKILL.md file
  2. Set user-invocable = true in the skill metadata
  3. Define the command logic in your skill

Example skill metadata:

---
name: my-skill
description: My custom skill with slash commands
user-invocable: true
---

Custom slash commands appear in the autocompletion menu alongside built-in commands.

Skills System

Vibe's skills system allows you to extend functionality through reusable components. Skills can add new tools, slash commands, and specialized behaviors.

Vibe follows the Agent Skills specification for skill format and structure.

Creating Skills

Skills are defined in directories with a SKILL.md file containing metadata in YAML frontmatter. For example, ~/.vibe/skills/code-review/SKILL.md:

```markdown

name: code-review description: Perform automated code reviews license: MIT compatibility: Python 3.12+ user-invocable: true allowed-tools: - read -

Core symbols most depended-on inside this repo

append
called by 628
vibe/core/types.py
pause
called by 471
vibe/cli/textual_ui/message_queue.py
get
called by 343
vibe/core/tools/manager.py
mock_llm_chunk
called by 337
tests/mock/utils.py
load
called by 239
vibe/core/config/layer.py
collect_result
called by 165
tests/mock/utils.py
act
called by 150
vibe/core/agent_loop.py
new_session
called by 133
vibe/acp/acp_agent_loop.py

Shape

Method 6,224
Function 3,193
Class 1,651
Route 68

Languages

Python100%

Modules by API surface

vibe/cli/textual_ui/app.py256 symbols
vibe/acp/acp_agent_loop.py133 symbols
tests/tools/test_mcp.py120 symbols
tests/core/test_hooks.py111 symbols
tests/core/test_config_resolution.py104 symbols
vibe/cli/textual_ui/widgets/messages.py103 symbols
vibe/core/agent_loop.py98 symbols
tests/core/test_config_layer.py91 symbols
tests/tools/test_granular_permissions.py87 symbols
tests/tools/test_connectors.py85 symbols
vibe/core/types.py81 symbols
tests/agent_loop/test_agents.py78 symbols

Dependencies from manifests, versioned

agent-client-protocol0.10.1 · 1×
annotated-types0.7.0 · 1×
anyio4.14.1 · 1×
attrs26.1.0 · 1×
beautifulsoup44.14.3 · 1×
cachetools7.0.6 · 1×
certifi2026.6.17 · 1×
cffi2.0.0 · 1×
charset-normalizer3.4.7 · 1×
cryptography48.0.1 · 1×
eval-type-backport0.3.1 · 1×
gitdb4.0.12 · 1×

For agents

$ claude mcp add mistral-vibe \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact