{
  "description": "Browse aymeric's, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.",
  "feed_url": "https://aggr.aymericbeaumet.com/sources/mistral.ai/feed.json",
  "home_page_url": "https://aggr.aymericbeaumet.com/sources/mistral.ai/",
  "items": [
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Mistral and NVIDIA are collaborating to revolutionize engineering workflows by integrating Mistral’s AI models with NVIDIA’s accelerated computing and physics modeling tools, enabling faster simulations and closed-loop AI-driven design. The partnership will introduce public benchmarks and open datasets to standardize evaluations for physics and agentic AI in computer-aided engineering, while leveraging NVIDIA’s Omniverse for 3D simulation and asset creation. Building on their existing work, including the development of Mistral Large 4, the initiative aims to push the boundaries of AI-powered engineering across industries like aerospace, automotive, and semiconductors.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Linkedin-Partnership-nvidia_ZN2dNk.webp?dpl=6ad891705b98f56fcbc3981c\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Mistral is collaborating with NVIDIA to develop a new generation of AI-native engineering workflows powered by NVIDIA accelerated computing. Combining <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/mistral-large-4/\">Mistral Large 4</a>, with Mistral’s data generation, and physics modeling pipelines, accelerated by <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.nvidia.com/en-us/technologies/cuda-x/\">NVIDIA CUDA-X</a> libraries and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://developer.nvidia.com/warp-python\">NVIDIA Warp</a>, the initiative aims to accelerate engineering simulation and enable closed-loop workflows that connect simulation, AI model development and engineering design. Mistral and NVIDIA will also work together to integrate Mistral's models with <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.nvidia.com/en-us/omniverse/\">NVIDIA Omniverse</a> libraries for GPU-accelerated 3D scene generation and SimReady asset creation.</p>\n<p>A central focus of the collaboration is the development of public benchmarks and open datasets for evaluating physics models. These benchmarks will give researchers, developers and industrial teams a shared foundation to compare model accuracy and performance and build and validate automated CAD-to-simulation workflows.</p>\n<p>&quot;For too long, the pace of engineering has been set by the pace of simulation. With Mistral's open-weight models and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/introducing-physics-ai-at-mistral/\">physics AI</a> capabilities, combined with NVIDIA’s accelerated computing stack, we’re giving engineers faster simulation cycles, as well as open benchmarks rigorous enough to validate agents on real CAE and EDA work.” Neil Ashton, VP of Computational Engineering, Mistral</p>\n<p>Beyond physics AI, Mistral and NVIDIA will also work together to develop dedicated evaluations and benchmarks for agentic AI in computer-aided engineering (CAE) and electronic design automation (EDA) to accelerate the application of <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/industry/manufacturing/\">AI for engineering</a> within aerospace, automotive and semiconductor use-cases. These benchmarks will assess agents’ ability to use engineering tools, complete multistep workflows and produce technically correct results, while measuring execution time and computational cost.</p>\n<p>Through this work, Mistral and NVIDIA will help define standards for agentic and physics AI evaluations in engineering, establishing consistent, reproducible methods for assessing capabilities and tracking progress. Powered by NVIDIA accelerated computing, libraries and tools, Mistral will redefine AI for engineering, transforming how engineers design, simulate and build the next generation of products.</p>\n<p>“The next wave of engineering breakthroughs will come from exploring ideas that were once too complex or time-consuming to test,” said Tim Costa, vice president and general manager of industrial and computational engineering at NVIDIA. “By combining Mistral’s advanced open models and deep expertise in physics AI with NVIDIA accelerated computing and libraries, we’re helping engineers push the boundaries of design—with shared industry benchmarks to build confidence in what AI can do.”</p>\n<h2><strong>Building on the ongoing NVIDIA and Mistral partnership</strong></h2>\n<p>The industrial engineering collaboration builds on an ongoing partnership between NVIDIA and Mistral spanning open model development, domain-specific AI and the infrastructure needed to bring these capabilities into production.</p>\n<p>The companies previously co-developed <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://developer.nvidia.com/blog/power-text-generation-applications-with-mistral-nemo-12b-running-on-a-single-gpu/\">Mistral NeMo</a> and are now <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/mistral-ai-and-nvidia-partner-to-accelerate-open-frontier-models/\">working together</a> through the NVIDIA Nemotron Coalition to develop a frontier base model that will continue to advance the open weight frontier. This shared foundation will enable developers and enterprises worldwide to specialize AI for their industries, languages and regions, supported by contributions of data, evaluations and domain expertise from coalition members.</p>\n<p>Mistral recently introduced the public preview of <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/mistral-large-4/\">Mistral Large 4</a>, known as Le Chonk, its largest and most capable frontier model to date. With approximately 1 trillion total parameters and 49 billion active parameters, the multimodal model was trained on 3,800 NVIDIA Grace Blackwell GPUs in Mistral-operated data centers in Europe. It advances capabilities across coding, agentic workflows and multimodal understanding, with weights planned for release at the end of October.</p>\n<p>Alongside model development, Mistral and NVIDIA are expanding the infrastructure that powers AI training, customization and inference. Mistral is bringing additional NVIDIA-powered AI infrastructure online in support of Mistral’s compute roadmap targeting 1 GW of capacity by 2030.</p>\n<p>This expansion strengthens Europe’s role in developing and delivering AI for the world. By connecting European infrastructure and research with open models, specialized engineering capabilities and customer applications, Mistral and NVIDIA are helping enterprises build AI around their own expertise and scale it to serve markets worldwide.</p>\n",
      "date_modified": "2026-10-21T12:00:20+00:00",
      "date_published": "2026-10-21T12:00:20+00:00",
      "external_url": "https://mistral.ai/news/mistral-nvidia-ai-for-industrial-engineering/",
      "id": "urn:aggr:item:c35491545ecc34d646352e1ed4b17993c54c3b7b",
      "summary": "Mistral is collaborating with NVIDIA to develop a new generation of AI-native engineering workflows powered by NVIDIA accelerated computing.",
      "tags": [
        "ai"
      ],
      "title": "Mistral Advances AI for Engineering with NVIDIA",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-10-21-mistral-advances-ai-for-engineering-with-nvidia/"
    },
    {
      "authors": [
        {
          "name": "ilreb"
        }
      ],
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Voxtral 3 introduces a cutting-edge voice agent SDK and state-of-the-art speech models designed for real-time, multi-step conversations across 50+ languages. It combines accurate transcription, natural speech synthesis with emotional adaptability, and deep tool integration for seamless workflow automation. Available via Mistral’s EU-hosted API or self-deployment, it ensures data sovereignty while delivering low-latency, human-like interactions for contact centers, virtual assistants, and hands-free copilots.</p>\n<p>Speech transcription and voice generation have come a long way, but building end-to-end voice agents that can listen, reason, interact, and handle complex workflows remains difficult.</p>\n<p>A reliable voice agent needs to do four things very well (and simultaneously):</p>\n<ol>\n<li>\n<p><strong>Listen accurately</strong> across languages, accents, speakers, and interruptions,</p>\n</li>\n<li>\n<p><strong>Reason</strong> <strong>deeply</strong> about what users mean in specific contexts,</p>\n</li>\n<li>\n<p><strong>Speak naturally</strong> with emotion and expression, and</p>\n</li>\n<li>\n<p><strong>Take action</strong> over multiple steps through connected systems.</p>\n</li>\n</ol>\n<p>Getting all four to work together reliably in real time remains a challenge.</p>\n<p>To address this, we introduce Voxtral 3: a new family of state-of-the-art <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio/audio/speech-to-text/overview\">speech-to-text</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/voxtral-mini-tts-3\">text-to-speech</a> models, alongside a voice agent SDK that brings listening, thinking, tool calling, and speaking into a single real-time streaming pipeline.</p>\n<p>Voxtral 3 is built to create natural conversational experiences, from contact-center agents and service desks to virtual assistants and hands-free copilots. With support for dozens of languages, expressive speech, complex reasoning, and deep integration with your own tools and data, agents built with Voxtral can interpret nuanced intent, reason through sophisticated requests, and execute multi-step actions across connected systems.</p>\n<p>As with other Mistral models, the Voxtral 3 family is designed for sovereign deployment. Available today through Mistral's EU-hosted API or for self-deployment on your own infrastructure, it gives organizations control over where audio is processed, how data is handled, and whether conversations are retained.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=xFhyfPC-VzI\">www.youtube.com</a></p>\n<h2>Highlights</h2>\n<ol>\n<li>\n<p><strong>Accurate transcription across 50+ languages</strong>. The speech-to-text model, <em>Voxtral Small Transcribe 3</em>, is state-of-the-art in multilingual transcription, identifying who said what (diarization), using keyphrases to improve its accuracy (context-biasing). It detects when someone has finished speaking so agents can respond without delay (end-of-turn detection).</p>\n</li>\n<li>\n<p><strong>Natural speech that adapts to the conversation</strong>. The text-to-speech model, <em>Voxtral Mini TTS 3</em>, introduces new voices that adjust their emotion, pace, and emphasis based on conversational context, with support for 35+ languages and 50+ dialects.</p>\n</li>\n<li>\n<p><strong>Human-like intelligence at your (spoken) command</strong>. The new voice agent SDK combines listening, reasoning, tool calling, and speaking into a real-time experience. Agents can retrieve information, interact with business systems, and complete tasks during live conversations over phone or web.</p>\n</li>\n<li>\n<p><strong>Pro Voice for distinctly accurate voice adaptation</strong>. For professional use cases where basic voice cloning does not suffice, Voxtral’s <em>Pro Voice</em> adaptation is able to reproduce a speaker’s distinctive character, emotional range, and speaking style across languages, using just 30 minutes of audio.</p>\n</li>\n<li>\n<p><strong>Your voice AI, on your infrastructure</strong>. Use Mistral's EU-hosted API or deploy Voxtral 3 on your own infrastructure. Keep sensitive conversations within your environment and control whether any audio is retained.</p>\n</li>\n</ol>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/api-keys\">Try Voxtral now</a>  | <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio/audio/overview\">Learn more</a></p>\n<h2>It hears 50+ languages, with state-of-the-art accuracy.</h2>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://docs.mistral.ai/models/voxtral-small-transcribe-3-0\">Voxtral Transcribe 3</a> represents a significant milestone across transcription, diarization (who spoke when) and context biasing capabilities. The supported list of languages is expanded to 50, including 24 official EU languages and many low-resource Asian and Indic languages.</p>\n<p>The Small version achieves state-of-the-art results across diarization and multilingual transcription, including in English, French and Spanish. It outperforms Whisper, Scribe v2 and Gemini 3.5 Transcribe. The <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/voxtral-mini-transcribe-3-0\">Mini variant</a> is 4B parameters, enabling fast and accurate transcriptions at a price of $0.0035/min.</p>\n<p>Both models support context biasing, where key terms and free-form text can be given to bias the transcription and improve recall on technical terms. This enables them to be used in production settings with domain-specific vocabulary without the need for fine-tuning.</p>\n<h3>FLEURS 45 Forced vs Inferred</h3>\n<p>Word Error Rate — lower is better</p>\n<ul>\n<li>\n<p>Forced</p>\n</li>\n<li>\n<p>Inferred</p>\n</li>\n</ul>\n<p>Macro-average WER over the intersection of 45 languages in the FLEURS benchmark supported by all seven models. WER is used for all languages except Japanese, Korean, Thai, and Chinese, which use CER. Lower is better.</p>\n<p>Forced = language specified; Inferred = language auto-detected. Languages: AR, BN, BG, CA, ZH, CS, DA, NL, EN, ET, FI, FR, DE, EL, GU, HI, HU, IS, ID, IT, JA, KN, KO, LV, LT, MK, MS, ML, MR, NO, FA, PL, PT, RO, RU, SK, SL, ES, SV, FIL, TE, TH, TR, UK, VI</p>\n<h3>Diarization</h3>\n<p>Concatenated Minimum Permutation WER — lower is better</p>\n<p>Macro-average concatenated minimum permutation WER (cpWER) over public diarization benchmarks: AMI-IHM, AMI-SDM, Switchboard, Switchboard CallHome, AISHELL-4. For maximum compatibility of API baselines, we use 30 minute versions of AMI and AISHELL. Lower is better.</p>\n<p>Diarization benchmark, Concatenated Minimum Permutation Word Error Rate (cpWER).</p>\n<h3>Keyphrase Recall</h3>\n<p>With and without contextual prompting — higher is better</p>\n<ul>\n<li>\n<p>Without Context</p>\n</li>\n<li>\n<p>With Context</p>\n</li>\n</ul>\n<p>Voxtral Small Transcribe 3 is highlighted in brand colours. Keyphrase recall on the Earnings 22 benchmarks. The context bias contains keyterms and a randomly sampled number of distractors, ranging from 0 to 100. Bars are superposed absolute values — the outer bar is recall with context, the inner bar is recall without context; the visible band is the uplift from contextual prompting. Higher is better.</p>\n<p>Keyphrase recall benchmark. Context = domain-specific vocabulary and speaker names supplied to the model.</p>\n<h3>Artificial Analysis Benchmark</h3>\n<p>Word Error Rate — lower is better</p>\n<p>Artificial Analysis WER Index, a weighted average over VoxPopuli, Earnings-22 and AgentTalk.</p>\n<p>Lower is better.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=7a65lAUvAxQ\">www.youtube.com</a></p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=hHIs0pc-RVQ\">www.youtube.com</a></p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://docs.mistral.ai/models/voxtral-mini-transcribe-realtime-3-0\">Voxtral Realtime Transcribe 3</a> is a realtime transcription model built for agentic use-cases. It achieves high-quality transcriptions at sub-500ms latency in over 35 languages, including with diarization and context biasing.</p>\n<h3>FLEURS 35</h3>\n<p>Realtime transcription Word Error Rate — lower is better</p>\n<p>Macro-average WER over 35 languages from the FLEURS benchmark. WER is used for all languages except Japanese, Korean, and Chinese, which use CER. Lower is better. *Voxtral Mini Transcribe 3 is an offline baseline. The remaining models are realtime.</p>\n<p>Languages: AR, BN, BG, CA, CS, NL, EN, ET, FI, FR, DE, EL, GU, HI, ID, IT, JA, KN, KO, LV, MK, MS, ML, MR, NO, FA, PL, PT, RO, RU, SK, ES, FIL, TE, TR</p>\n<p>End-of-turn prediction is natively supported, incorporating both acoustic and semantic information to accurately predict when a user is finished speaking. This allows for low-latency voice agent applications, while minimizing false cut-off rates when the user is prematurely interrupted.</p>\n<h2>It answers with the right emotion, in your or your customer’s brand's own voice and local dialect.</h2>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://docs.mistral.ai/models/voxtral-mini-tts-3-0\">Voxtral Mini TTS 3.0</a>, available in batch and realtime, achieves state-of-the-art expressiveness and instruction following for 35+ languages and 50+ dialects. At $13 per 1M characters, Voxtral Speech 3 costs less to run than comparable models from OpenAI TTS-1, Deepgram, ElevenLabs Flash and Gemini Flash.</p>\n<p>The speech model implicitly interprets the semantic meaning of context better, producing natural speech across a diverse range of emotions and languages. New and improved features include voice cloning from 30+ minutes of sampled audio, custom prompt instruction following (IF), contextual TTS, and a vocabulary library, all of which serve the goal of speech reliability in deployment. Variables for Explicit IF include <code>emotion</code>, <code>pacing</code>, and <code>emphasis</code>.</p>\n<p>Prompt</p>\n<p>Let's end the debate here: it's GIF.</p>\n<p>Default</p>\n<p>Non-standard phoneme hint: dʒ ɪ f</p>\n<p>All natural-sounding speech relies on emotion, which determines its prosody, rhythm, pacing, emphasis, and transitions. Voxtral TTS natively interprets a prompt’s text context to determine the emotion and voice style, making the model inherently better at natural speech without requiring additional instructions or voice prompts.</p>\n<h3>Voice Code Bench: quality per dollar</h3>\n<p>Voice Code Bench made by BeSimple AI is focused on enterprise customer support failure states related to numbers and unique names.</p>\n<ul>\n<li>\n<p>Other TTS</p>\n</li>\n<li>\n<p>Mistral</p>\n</li>\n</ul>\n<p>Up and to the left is better.</p>\n<p>Voice Code Bench (BeSimple AI): 300 English prompts, 2 voices per system (female and male); judge gemini-3.8-flash; prices from vendor pricing pages; generated 2026-10-20.</p>\n<h3>Pronunciation control: quality per dollar</h3>\n<p>Share of clips where the target word is pronounced as intended, with its phonemes</p>\n<ul>\n<li>\n<p>Mistral</p>\n</li>\n<li>\n<p>Other TTS</p>\n</li>\n</ul>\n<p>Internal eval. Up and to the left is better. Systems without a documented pronunciation control are listed in the data, not plotted.</p>\n<p>300 English sentences, each with one rare or made-up word (150 easy, 150 hard), 2 voices per system; judge gemini-3.8-flash hears the clip with the word's intended IPA; prices from vendor pricing pages; generated 2026-10-20.</p>\n<h3>Multilingual: quality per dollar</h3>\n<p>Mean judge score across 11 languages, 1 native voice per language and system</p>\n<ul>\n<li>\n<p>Other TTS</p>\n</li>\n<li>\n<p>Mistral</p>\n</li>\n</ul>\n<p>Internal eval. Up and to the left is better. Systems covering fewer than 11 languages are listed in the data, not plotted.</p>\n<p>377 prompts selected for release, 11 languages, unweighted mean of per-language mean judge scores, 1 to 5 scale; judge gemini-3.8-flash; prices from vendor pricing pages; generated 2026-10-20.</p>\n<h3>Expressive English: quality per dollar</h3>\n<p>Mean judge score on one_eval, 237 prompts selected for release</p>\n<ul>\n<li>\n<p>Other TTS</p>\n</li>\n<li>\n<p>Mistral</p>\n</li>\n</ul>\n<p>Internal eval. Up and to the left is better.</p>\n<p>Expressive English (one_eval): 237 prompts selected for release, 2 voices per system (Voxtral TTS: Sarah and James), 1 to 5 scale; judge gemini-3.8-flash; prices from vendor pricing pages; generated 2026-10-20.</p>\n<h3>Illustrating Voxtral hill-climbing in expressiveness, numbers and unique names.</h3>\n<p>Prompt</p>\n<p>Thank you for calling Mistral! I understand you're having difficulty logging into AI Studio. Can I confirm your email address? I have here <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"mailto:elena.vance82@yahoo.com\">elena.vance82@yahoo.com</a>, is that correct?</p>\n<p>Voxtral 1</p>\n<p>Voxtral 3</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=y7Dtkjz3MZM\">www.youtube.com</a></p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=1czHOKcAtfY\">www.youtube.com</a></p>\n<h3>Speech sounds local in 35 languages and over 50 dialects.</h3>\n<p>Voxtral TTS supports over <strong>35 languages</strong> and regional dialects. Our multilingual evals adhere to dialect differences in pronunciation, formal vs. informal register, spelling, verbosity, and locale conventions (time, dates, temperatures, addresses, currencies).</p>\n<p>Voxtral 3 multilingual library</p>\n<p>Voice Presets are available in 18 languages: Arabic (Emirati, Modern Standard), Brazilian (Portuguese), Catalan, Chinese (Mandarin), Dutch, English (American, British), French (France), German, Greek, Hindi, Italian, Korean, Norwegian, Russian, Spanish (Spain), and Vietnamese.</p>\n<h2>The voice agent is in control of the whole conversation.</h2>\n<p>Voxtral 3 introduces a voice agent SDK, built on LiveKit, that runs speech in, reasoning, and speech out as one streaming pipeline. Voxtral Mini Transcribe Realtime 3 listens and detects when the caller has finished speaking, a general model—like <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/mistral-small-4-0-26-03\">Mistral Small</a>—reasons and calls tools, and Voxtral Speech 3 replies in the tone of the conversation so far. No stage waits for the one before it, so each turn completes in under one second, and the agent stops talking when the caller cuts in.</p>\n<p>During a call, the agent can verify a caller's identity, check a bill, or book an appointment, using function calling, web search, and retrieval over your own systems. It answers and places calls over SIP, runs in browsers and apps over WebRTC, and connects to the telephony, IVR, and contact-center software you already use.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/diagram-voxtral-alt_1j0WYp.webp?dpl=6ad795c23ec0b6e8ad0a703a\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Each stage is a separate model, so you can change the LLM, the voice, or the language without rewriting the agent, and run the whole stack on Mistral's API in Europe or on your own infrastructure.</p>\n<h2>Get started.</h2>\n<p>Voxtral 3 is available today through the Mistral API, hosted through our European, US, and global endpoints.</p>\n<p>You can test out voice agents, audio transcription, speech generation, and voice cloning in the Studio playgrounds.</p>\n<table>\n<thead>\n<tr>\n<th><strong>Model</strong></th>\n<th><strong>Price</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Voxtral Mini Transcribe 3 (batch)</td>\n<td>$0.0035/min</td>\n</tr>\n<tr>\n<td>Voxtral Mini Transcribe Realtime 3</td>\n<td>$0.008/min</td>\n</tr>\n<tr>\n<td>Voxtral Small Transcribe 3</td>\n<td>$0.0040/min</td>\n</tr>\n<tr>\n<td>Voxtral Speech 3 (batch and realtime, same API)</td>\n<td>$13/1M chars</td>\n</tr>\n</tbody>\n</table>\n<p>To run the full stack on-premises or in a private cloud, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact/\">talk to our team</a>.</p>\n",
      "date_modified": "2026-10-20T16:02:07+00:00",
      "date_published": "2026-10-20T16:02:07+00:00",
      "external_url": "https://mistral.ai/news/voxtral-3/",
      "id": "urn:aggr:item:45cd019c7f2cb9fa96951d30f40e2df0d752d6a6",
      "image": "https://mistral.ai/cms-media/api/media/file/hero-blog-voxtral.png",
      "summary": "Thinking Summary Voxtral 3 introduces a cutting-edge voice agent SDK and state-of-the-art speech models designed for real-time, multi-step conversations across 50+ languages. It combines accurate transcription, natural speech synthesis…",
      "tags": [
        "news"
      ],
      "title": "Voxtral 3",
      "url": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-10-20-voxtral-3/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Timestral, Mistral’s first family of time-series foundation models, delivers state-of-the-art probabilistic, multivariate forecasts with just 209M parameters, outperforming larger models on key benchmarks while supporting past and future covariates. Available in four sizes (5M to 209M parameters), it balances accuracy and efficiency, running efficiently on CPUs and excelling in zero-shot forecasting for diverse domains. The model combines synthetic pre-training, covariate-aware attention, and long-context learning, with fine-tuning options for domain adaptation via Mistral Forge.</p>\n<p>Today, we’re releasing Timestral, our first family of time-series foundation models. Our largest model, at just 209M parameters, ranks first on all three of the field's main public benchmarks, GIFT-Eval, TIME, and fev-bench, outperforming the previous state of the art with only two-thirds of the model parameters.</p>\n<p>Timestral delivers probabilistic, multivariate forecasts and supports past-only and known-future covariates. Our family of models sits on the Pareto front of forecasting accuracy versus model size, delivering leading performance at each size. Results have been submitted to the GIFT-Eval and TIME leaderboards.</p>\n<p>Time series is one of the most common data types in enterprise, from sensor telemetry to observability metrics. Forecasts built on it drive decisions in capacity planning, energy, supply chains, risk and maintenance.</p>\n<p>Industrial plants forecast process sensors against the production schedule, catch equipment drift before it fails, and plan capacity and spare parts across thousands of assets. Finance teams forecast flows, volumes, and volatility to inform positions, hedging, and treasury across thousands of accounts.</p>\n<p>Classical models such as ARIMA and linear regression remain well-established tools for forecasting time series. These models are usually fitted to a single series and learn only from that series' history.</p>\n<p>Deep learning models such as PatchTST add the capacity to learn nonlinear patterns across many related series, but they are still typically trained from scratch on each dataset, so what they learn doesn't carry over to new domains.</p>\n<p>Time series foundation models bring the pre-training approach to time series. Trained on a large and diverse corpus, our model learns patterns that transfer across series, forecasting zero-shot on data it has never seen, even in domains where data is scarce.</p>\n<h2>Benchmark Results</h2>\n<p>We evaluated Timestral on the three main public forecasting benchmarks: GIFT-Eval, TIME and fev-bench. Among pre-trained, zero-shot models, it ranks first across all five metrics. These results come from a single checkpoint, without ensembling.</p>\n<p><em>GIFT-Eval, top ten of 83 comparable pretrained and zero-shot entries. Lower is better.</em></p>\n<p><em>TIME, top ten of the 35 leaderboard entries. Lower is better on both metrics.</em></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/SQL%20skill%20score_yUMlC.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>fev-bench, top ten of the 37 leaderboard entries, by SQL skill score. Higher is better.</em></p>\n<h2>Family of models optimised for every specification</h2>\n<p>Timestral has been optimised as a family of four models: 5M, 28M, 123M and 209M parameters. The larger models improve forecast performance, while the smaller ones are faster and cheaper. All four share the same architecture and training recipe. Every size sits on the Pareto front of accuracy versus model size: for each model size, no public model forecasts better.</p>\n<p><em>Score vs model size on GIFT-Eval, TIME and fev-bench (shown as 1 − skill score). Lower is better. Our 28M model beats Chronos-2, about four times larger, on GIFT-Eval and TIME. Our 209M model beats TimesFM-3 and Falcon-2.0 with fewer parameters.</em></p>\n<p>Timestral does not need a GPU at inference. On a standard server CPU with 8 threads, forecasting one day ahead from three weeks of 15-minute history takes 10 ms with the 5M model and 140 ms with the 209M model. Smaller models trade some accuracy for speed: the 28M model is five times faster than the 209M model, and the 123M model comes within 0.2% of the 209M score at three quarters of its latency.</p>\n<h2>An industrial example</h2>\n<p>Consider an industrial plant with thousands of sensors across its equipment. Timestral can improve the forecasts on that data in several ways.</p>\n<p><strong>Multivariate forecasting.</strong> A pump's vibration, temperature and pressure don't move independently. A rise in one often explains or causes a change in another. Timestral models related series jointly, so it can use those dependencies instead of forecasting each sensor in isolation.</p>\n<p><strong>Probabilistic forecasting.</strong> A single predicted value may not show the full picture. Timestral predicts a full set of quantiles, so teams can see how wide the uncertainty is, set alert thresholds that reflect it, and plan maintenance around risk rather than a single number.</p>\n<p><strong>Categorical covariates.</strong> Some covariates take values from a set of categories rather than continuous numbers, such as the day of the week, or a machine's state (running, idle, under maintenance). Encoding these as numbers would impose an order or scale they don't have. Timestral takes them as categorical inputs directly to improve forecasts.</p>\n<p><strong>Known-future covariates.</strong> Some drivers of sensor behaviour are known in advance, such as production schedules, planned shutdowns, weather forecasts. Timestral can condition on them to improve forecast quality, so a scheduled load increase is expected rather than flagged as a surprise.</p>\n<p><strong>From Model to System</strong></p>\n<p>Timestral is a numerical model that can run inside existing monitoring pipelines, or be paired with our language models in multi-modal agentic workflows.</p>\n<p>In the plant, that could look like this:</p>\n<ol>\n<li>\n<p>Timestral running continuously on the plant's sensor streams, detecting anomalies as they occur.</p>\n</li>\n<li>\n<p>When it flags an anomaly on a pump, an agent embeds the signals and compares against embeddings of past sensor data to find similar historical failures.</p>\n</li>\n<li>\n<p>The agent then starts sub-agents to run a root cause analysis, drawing on context from that plant, such as maintenance records, shift logs and operator notes, equipment manuals, past work orders, and readings from related equipment.</p>\n</li>\n<li>\n<p>The agent drafts a suggested diagnosis based on the findings, with supporting evidence and possible next steps.</p>\n</li>\n</ol>\n<p>The plant manager gets a diagnosis and a plan backed by the sensor data, rather than just an alert.</p>\n<h2>Key technical contributions</h2>\n<p>Several ideas have been combined to produce these results. Each will be described in detail in the technical report.</p>\n<ol>\n<li>\n<p><strong>Decoupled Horizon Forecasting.</strong> Causal decoders trained with contiguous patch masking, as in Toto 2.0 and TimesFM-3, mask out the values to be forecast, so they look like missing values and are also lost as context for later forecasts. Our approach, DHF, separates the two: the full history stays in the sequence, and learned forecast tokens read the history before them. Every observed value thus serves as both target and context, true gaps stay flagged as missing, and training horizon lengths and missing-data augmentation can be tuned independently of each other.</p>\n</li>\n<li>\n<p><strong>Covariate-aware attention.</strong> Each input series is assigned a role: target variate, past-only covariate or known-future covariate. Known-future covariates are visible across the whole window while targets stay causal, and information flows only from covariates to targets. Timestral can therefore use a holiday calendar or a weather forecast without leaking a target's own future into its forecast.</p>\n</li>\n<li>\n<p><strong>Synthetic-first data.</strong> The majority of the training data was synthetic. We first generated univariate processes with coherent temporal dynamics, including trends, seasonality and diverse noise patterns. We then used a multivariate synthesizer to construct multivariate series by introducing nonlinear dependencies between these processes.</p>\n</li>\n<li>\n<p><strong>Two-stage training.</strong> Timestral is first pre-trained at scale on purely synthetic data with context size 8192, then post-trained on a mix of real and synthetic data with a 4x longer context. The objective is a pinball loss over 21 quantiles, a discrete approximation of CRPS.</p>\n</li>\n</ol>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/01-timestral-overview_WcSY2.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>A model that can be adapted</h2>\n<p>Public benchmarks measure general performance, but production data can be significantly different in behavior and structure. It may also shift over time as markets change regime, equipment degrades and demand patterns move. The lasting value lies in being able to adapt a model to in-domain data and keep retraining it as the distribution moves.</p>\n<p>For organisations that want to go further, Timestral is available through <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/forge/\">Mistral Forge</a>, the same training pipeline we use for our language models. It supports:</p>\n<ul>\n<li>\n<p><strong>Zero-shot inference</strong> out of the box.</p>\n</li>\n<li>\n<p><strong>Architectural extensions</strong>, such as domain-specific covariates.</p>\n</li>\n<li>\n<p><strong>Fine-tuning on proprietary data</strong>, specialising to a domain while preserving general performance.</p>\n</li>\n<li>\n<p><strong>Control over the training data</strong>, including adjusting the training mix, replaying pre-training data, and generating synthetic data samples to reflect the target domain. Full control over the data ensures that nothing we backtest was seen during pre-training.</p>\n</li>\n</ul>\n<p>The full pipeline can be deployed on our clients’ hardware, including air-gapped environments.</p>\n<h2>What’s next</h2>\n<p>We have published a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai/timestral\">GitHub repository</a> so you can run Timestral on your own data. A technical report with the full results will follow. For more specialised forecasting problems, or to collaborate on research, please reach out to us.</p>\n<table>\n<thead>\n<tr>\n<th>Timestral</th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Type</td>\n<td>Time-series foundation model (TSFM)</td>\n</tr>\n<tr>\n<td>Parameters</td>\n<td>5M, 28M, 123M and 209M</td>\n</tr>\n<tr>\n<td>Context length</td>\n<td>32,768 time steps</td>\n</tr>\n<tr>\n<td>Output</td>\n<td>Probabilistic forecasts, 21 quantiles</td>\n</tr>\n<tr>\n<td>Inputs</td>\n<td>Multivariate targets, past-only and known-future covariates</td>\n</tr>\n<tr>\n<td>Deployment</td>\n<td>On-prem, VPC or air-gapped</td>\n</tr>\n<tr>\n<td>Licence</td>\n<td>Modified MIT</td>\n</tr>\n</tbody>\n</table>\n",
      "date_modified": "2026-10-15T12:00:00+00:00",
      "date_published": "2026-10-15T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/timestral/",
      "id": "urn:aggr:item:cdd1b5b2cbe10dca27c88812637382b495e101de",
      "summary": "State-of-the-art probabilistic forecasting in four sizes (5M–209M params), CPU-efficient, zero-shot ready.",
      "tags": [
        "ai"
      ],
      "title": "Introducing Timestral",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-10-15-introducing-timestral/"
    },
    {
      "content_html": "<h2>Le Chonk</h2>\n<p>Today, we’re launching a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/mistral-large-4\">public preview</a> of Mistral Large 4. Unofficially ML4, very officially: <em>le Chonk</em>. ML4 pushes the frontier of open-weight performance. You can try the preview API today on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/\">Mistral Studio</a>. Weights drop end of this month.</p>\n<h2>Frontier performance</h2>\n<p>ML4 is a 1 trillion-parameter natively multimodal model with 52 billion active parameters. It is our largest and most capable model to date, and it continues to improve rapidly as we refine it.</p>\n<p>The model demonstrates exceptional performance across coding, agentic workflows, and multimodal understanding. It already achieves performance competitive with the strongest open-source models globally, while significantly outperforming any open-weight model developed in the US or Europe. On critical enterprise workloads, including cybersecurity, finance and law, we find it to be state-of-the-art among open models. In some domains such as visual grounding, it goes further still, surpassing even frontier closed models.</p>\n<p>We will release the weights by the end of the month. Until then, we are red-teaming the model in real-world settings with cybersecurity leaders, vetted partners, and state authorities, who will access the same model with reduced moderation and expanded cyber capabilities.</p>\n<h2>Forged in Europe. Built for AI sovereignty.</h2>\n<p>ML4 was trained from scratch on 3,800 NVIDIA Grace Blackwell GPUs in Mistral’s own datacenters in Europe. The public preview is served on that same infrastructure. It is a significant milestone in our long-term investment across infrastructure, research, and product development: state-of-the-art performance in critical verticals, delivered through open weights, designed to give customers control over their AI.</p>\n<p>This is particularly important in cybersecurity, where provider-level refusals can block legitimate vulnerability research and incident response, and where losing access to a capability mid-incident can itself become a critical security risk. ML4 pairs top-tier cyber performance with open weights and self-deployment, giving organizations both the capability and the autonomy to run advanced security work under their own policies.</p>\n<p>The model will be available across multiple regions worldwide, including a European deployment that Mistral operates end-to-end, independently of other digital service providers and under European law. Fun fact: a significant share of ML4’s training data was multilingual, spanning more than 160 languages, including every official language of the European Union.</p>\n<p>We’ve been working closely with leading enterprises across the world in finance, engineering, manufacturing, logistics, pharmaceuticals, science, shipping, public sector, and other mission-critical industries to train ML4. In fact, the model uses the same training, customization, and RL environment we offer our customers through <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/forge/\">Mistral Forge.</a></p>\n<h2>Try it today</h2>\n<p>There is still more to come. As we work toward releasing the weights, we will share further details on the model architecture, additional benchmarks, and our post-training methodology.</p>\n<p>This model will also serve as the foundation for a new generation of specialized and optimized Mistral models. In the meantime, we invite you to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/mistral-large-4-0\">try the preview API</a> and share your feedback with us on social media.</p>\n<h2>Capabilities deep-dive</h2>\n<h3>Cybersecurity</h3>\n<p>ML4 is one of the world's strongest AI models for cybersecurity. On the Artificial Analysis Cyber Index, an independent evaluation of how well AI models find and fix security flaws in real software, it ranks among the top five models globally and leads open-weight models developed outside China by a wide margin. On one of the index's tests, which asks a model to reproduce a real vulnerability in open-source software and then patch it, ML4 scores 82%, the highest of any model. It also solves 93% of the challenges in Cybench, a set of 40 exercises drawn from security competitions, one of the highest scores reported for an open-weight model.</p>\n<p>That top score reflects a practical advantage. Several leading closed models, including Claude Opus 5.5 and GPT-6 Astra, score near zero on the same test because they refuse to perform the task. Yet defending software often starts with proving that a flaw is real, exactly the kind of work safety filters in closed models can block. This matters even more as threat actors increasingly jailbreak those same models to support offensive cyber activity: defenders need systems that can match those capabilities without being constrained by the same refusals. ML4 can do that work, and its capabilities extend beyond what it was explicitly trained for: in internal testing, it proved useful for analysing malware, prioritising vulnerabilities, and writing detection rules. For organisations that need sovereign, auditable AI for security operations, it will be able to run on private cloud or on-premise.</p>\n<h5>ML4 against the field : efficiently reasoning over diverse complex challenges</h5>\n<h5>Malware reverse-engineering: solving an out-of-distribution investigation task</h5>\n<h3>Agentic coding</h3>\n<p>ML4 excels across software engineering, repository understanding, and complex terminal workflows, scoring 61.7% on DeepSWE v1.1, 59.4% on SWE-Atlas-QnA, and 28.3% on Terminal-Bench 4. Its combined Coding Agent Index score of 49.8% places it ahead of DeepSeek V4 Pro 0813 and Qwen3.8 Max.</p>\n<p>We also ran a blind human evaluation with Surge AI on coding quality: professional annotators rated model outputs on a 1–5 scale, with model identities hidden. ML4 Preview ranked second of five models (3.74), ahead of Kimi K3 (3.59), GLM-5.3 (3.60) and GLM-5.2 (3.40), and behind only Claude Opus 5 (4.22).</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/human-evaluation---surge-(human-eval-on-code)%201_ZCsHgr.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h4>Agentic Workflows</h4>\n<p>ML4 runs general-purpose agents that gather information, use tools, and produce finished deliverables across complex workflows. On AutomationBench — 657 business workflows across apps like Gmail, Google Sheets, Slack, and Salesforce — it scores 59.9%, ahead of Kimi K3, MiMo-V2.6-Pro, and DeepSeek V4 Pro.</p>\n<p>It's just as strong on the professional deliverables that knowledge work actually produces: spreadsheets, slides, and PDFs. On AA-Briefcase, which evaluates long-horizon knowledge work, it reaches 1,393 Elo, ahead of DeepSeek V4 Pro.</p>\n<h4>Multimodal</h4>\n<p>ML4 is a step change in the ability of our models to understand images. It reasons powerfully across complex documents, charts, and natural images, and brings vision to the industries where perception is critical such as engineering, manufacturing, and earth observation.</p>\n<p>The model can further combine visual grounding with agentic capabilities: from inspecting gigapixel satellite imagery — helping disaster-response teams act when time counts — to analyzing engineering-drawings — zooming in, inspecting, and verifying until the answer is exact. In our demos above, ML4 grounds dense natural scenes, verifies mechanical parts in technical drawings, retrieves evidence from PDFs, and scans massive geospatial images for the hardest-to-find objects.</p>\n<p>On visual grounding particularly, we find ML4 to be one of the most capable models we tested, for instance surpassing GPT-6-Astra on Dense 200 (42% vs 41%).</p>\n<h4>Science and Math</h4>\n<p>ML4 brings strong scientific capabilities, built by combining AI-driven methods with our researchers' expertise in mathematics, physics, and chemistry.</p>\n<p>It's highly proficient at agentic coding for scientific tasks such as data analysis, modeling, and simulating physical reality, which lets researchers focus on the questions rather than the plumbing. In benchmarks, ML4 is state of the art on SciCode-Verified among open-weight models. In practice, it can generate a full Hartree–Fock simulation in one shot — a complex, multi-step chemistry task built from a series of advanced routines.</p>\n<p>ML4's math is stronger too, in both formal reasoning and applied mathematics. In our human evaluations it reasons more precisely and with more structure than GLM-5.3, and it can sustain long, domain-specific applied-mathematics tasks, including work relevant to frontier theoretical physics.</p>\n<p>Together, these capabilities make ML4 a strong research assistant across the full technical workflow — from the first question to the final result.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/scicode-verified-pass@1-(n_6)-alt_Z1DedbC.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>SciCode-Verified tests the capabilities of models to implement complex scientific workflows in code for domains such as physics, mathematics, material science and biology.</em></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/ml4-vs-glm-5.3-%E2%80%94-stem-win-rate-breakdown%201_Z24YWt5.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>Internal eval on STEM tasks (math and physics) of ML4 against GLM5.3</em></p>\n<h2>Knowledge Work</h2>\n<p>ML4 is our most capable model for the real-world tasks which professionals handle every day. It can create, edit and fix complex spreadsheets and documents, showing exemplary performance on both legal and financial benchmarks.</p>\n<p>Notably, we evaluated ML4 through third party evaluators (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://vals.ai\">vals.ai</a>) on representative tasks for both legal and financial tasks, finding the model exceeds GPT-6-Astra in both cases. On HarveyAI’s Legal Agent benchmark, ML4 outperforms all open-source models.</p>\n<p><em>FinWorkBench tests model capabilities at creating/editing spreadsheets on real life Finance and Accounting use cases.</em></p>\n<p>Financial analysis demands precision and the ability to synthesize information from multiple sources, a process that remains time-consuming at many financial institutions today. In this demo, ML4 compared to other top OSS models take on the same multistep corporate finance challenge, searching through public company filings and financial reports, such as those available via EDGAR and equivalent European databases. An animated semantic map traces each model's journey toward a solution, highlighting every document retrieved along the way. Each track's position reflects the evidence gathered, the results of calculations, and the questions that remain unresolved. Viewers can follow how the investigations unfold and compare the distinct paths each model takes before arriving at its final answer.</p>\n<h2>Model Safety</h2>\n<p>ML4 has saturated our benchmarks on robustness to indirect prompt injections, putting it at the frontier of OSS models (compared to GLM-5.2, GLM-5.3, Kimi-K2.6, Kimi-K3, DS-V4-Pro-0813). On Lakera’s public <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/datasets/Lakera/b3-agent-security-benchmark-weak\">B3 AI Security Benchmark</a>, ML4 resists 93.3% of attacks – we see no higher scores among competitors.</p>\n<p>ML4 also engages more responsibly with users than any of our previous models. We highlight our results on the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://korabench.ai/\">KORA Benchmark</a>, where ML4 again sits at our highest measured score among OSS models (1.691, with 2 being the maximum denoted as “<em>Exemplary</em>”).</p>\n<p>Of particular relevance is the model’s propensity to refuse malicious requests regarding cybersecurity. Despite strong performance on Cyber benchmarks, the average refusal rate of the model on cyber prompts from <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://jailbreakbench.github.io/\">JailbreakBench</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/datasets/walledai/StrongREJECT\">StrongREJECT</a>, and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/datasets/ai-safety-institute/AgentHarm\">AgentHarm</a> is higher than all OSS models.</p>\n<h3>Human Evaluation</h3>\n<p>We ran an internal evaluation in which expert annotators across coding, computer-aided design (CAD), finance, mathematics and physics compared Mistral Large 4 with GLM-5.3. ML4 was preferred in CAD and STEM, while performing on par or close to GLM-5.3 in finance and coding.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/win-rate_Z1VxWvu.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Reinforcement learning at scale</h2>\n<p>Base models are improving fast, and our post-training has to keep pace. A recipe tuned for yesterday's model leaves capability on the table with today's frontier, because ground truth samples that once pushed a model to its limits won’t anymore. We use Reinforcement Learning (RL) because it adapts as the model does: we train on the outcomes of the model's own attempts, and we can raise the difficulty and the breadth of the tasks as it gets stronger.</p>\n<p>Our RL library was designed to make new environments easy to add and train at scale. A shared, composable interface allows a single training run to combine tasks ranging from single-turn chat and complex scientific problem solving to safety alignment, factuality, and long-horizon tool use. These environments share scaffolds and resources such as code sandboxes, web search, and external APIs. The same composability extends to verification, with reward models, unit tests, LLM judges, and static checks combined as needed for each task.</p>\n<p>At runtime, an autoscaling fleet of actors generates tens of thousands of rollouts in parallel while model training proceeds asynchronously. The generation and training pipeline is optimized for long trajectories, supporting rollout budgets of millions of tokens across multiple compactions while keeping staleness low. Novel methods and optimizations across both stages minimize off-policy drift and enable stable RL over long horizons.</p>\n<p>At our current scale (3k GPUs), a single training run produces roughly <strong>33 billion tokens per day</strong>, of which around <strong>16 billion are trainable completion tokens</strong> after filtering and masking. We can see the run progress directly in the training rollouts: training rewards rise across several representative environments as the policy learns to solve increasingly complex tasks. Below are a few examples.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/training-reward_1n1Dxj.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>The improvements are not specific to the environments we train on; they transfer to downstream evals, and the final model owes them to both post-training stages (supervised fine-tuning and RL), as shown in the charts.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/sft-rl-three-tasks-alt_2tyhkR.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>What comes next</h2>\n<p>This is only the beginning. ML4 is the first milestone on the roadmap funded by our €3 billion Series D — the largest equity round ever raised by a European technology company. That capital is already being put to work: we are significantly scaling up our compute capacity in our own European datacenters, and much more is coming online in the months ahead.</p>\n<p>More compute means more training. The reinforcement learning run behind this preview is still in flight, and the model is showing no signs of saturation — there is substantial headroom ahead. As we scale up training on our expanded infrastructure, we expect large and rapid improvements in the weeks and months to come.</p>\n<p>We will release the weights by the end of the month, along with more details on the architecture, additional benchmarks, and our post-training methodology. And ML4 is only the foundation: it will serve as the base for a new generation of specialized and optimized Mistral models, built for the industries and workloads our customers care about most.</p>\n<p>The pace of progress from here will be fast. Stay tuned.</p>\n",
      "date_modified": "2026-10-06T12:00:27+00:00",
      "date_published": "2026-10-06T12:00:27+00:00",
      "external_url": "https://mistral.ai/news/mistral-large-4/",
      "id": "urn:aggr:item:642b4dadf65ac146764581e4fb36e70cdc796791",
      "summary": "Le Chonk Today, we’re launching a public preview of Mistral Large 4. Unofficially ML4, very officially: le Chonk. ML4 pushes the frontier of open-weight performance. You can try the preview API today on Mistral Studio. Weights drop end of…",
      "tags": [
        "ai"
      ],
      "title": "Introducing Mistral Large 4",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-10-06-introducing-mistral-large-4/"
    },
    {
      "content_html": "<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Linkedin_Mistral02%20(1)_ZcuYp3.webp?dpl=6abac980129798dca7ed89b0\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><strong>Mistral Opens German Hub in Munich to Advance Industrial AI in Europe’s Largest Economy</strong></p>\n<p>At Mistral, we have always believed that the most consequential AI applications will be built where real industrial problems are solved. Today, we are putting that conviction into practice by opening our new hub in Munich.</p>\n<p>Germany is the largest industrial economy in the European Union. Its enterprises have accumulated proprietary data and process knowledge over generations, across automotive, energy, aerospace, and advanced manufacturing. That depth of industrial knowledge is exactly where AI, done right, compounds into competitive advantage. Munich is where we want to do that work.</p>\n<p>Our Munich hub will house specialised research teams dedicated to Physics AI and Industrial AI, alongside applied engineers serving our enterprise partners directly. We are not coming as a software vendor. We are coming as a long-term technological partner.</p>\n<h2><strong>Building for sovereignty, not just access</strong></h2>\n<p>German industry, public institutions, and organizations already have access to our full AI stack: frontier language models, Physics AI capabilities, enterprise deployment, and sovereign compute infrastructure under one roof. To secure Europe’s AI sovereignty, Mistral will build one gigawatt of European compute capacity by 2030. In parallel, we continue to advance our frontier model development at full speed.</p>\n<p>What makes this stack genuinely sovereign is our open-weight architecture. Unlike closed AI systems where the model’s internal logic is hidden and runs on the vendor’s servers, Mistral’s model weights are fully accessible to the customer. Our models run on the customer’s own infrastructure, trained on their data, operated under European law, with full auditability and no data leaving the organization. The intelligence stays where it was built.</p>\n<p>Mistral is a powerful example of what Europe can achieve: developing cutting-edge technology, turning it into a global success, and taking responsibility at the same time. It demonstrates what European research, talent, and entrepreneurial spirit can achieve. And that technological success and responsible AI development are not contradictory.</p>\n<p>Dr. Karsten Wildberger, German Federal Minister for Digital Transformation and Government Modernisation</p>\n<h2><strong>Physics AI: a new capability for heavy industry</strong></h2>\n<p>The next major advance in industrial AI will come from systems that understand the physical world: fluid dynamics, material deformation, thermal behavior, mechanical stress. These are the calculations at the heart of German manufacturing and engineering. Today, the necessary simulations require enormous compute time, sometimes taking days per run.</p>\n<p>Following our acquisition of Emmi AI in May 2026, more than 30 physicists, researchers, and engineers with unique expertise in Physics and Engineering AI joined Mistral. Emmi AI has specialised in large-scale AI modelling of computational fluid dynamics, structural mechanics, and multi-physics simulations. In Munich, we are working with BMW on crash simulations and engineering AI, and with Siemens Energy on industrial AI applications – developing what we believe will be the blueprint for Physics AI in European heavy industry.</p>\n<h2><strong>Why Munich</strong></h2>\n<p>Bavaria has a long record of establishing and scaling new technologies, from precision manufacturing and defence tech to advanced materials and semiconductors. Munich gives us world-class research institutions and universities, deep industrial roots, a dense technology ecosystem, and the engineering talent to match – drawn from across Europe and beyond by the quality of life and proximity to the Alps.</p>\n<p>As part of our investment in Germany, we have formed a research partnership with the Technical University Munich (TUM), using TUM’s wind tunnel facilities to develop digital twins for automotive aerodynamics in collaboration with Prof. Dr. Nikolaus A. Adams. This research aims to fuse real-time experimental sensor data with offline computational fluid dynamics simulations to deliver highly accurate aerodynamic predictions in real time.</p>\n<p>Mistral stands for powerful AI made in Europe. Technological sovereignty is political sovereignty. That is why we need strong European AI champions that take a leading role in international competition. Mistral’s decision to choose Munich sends a strong signal for our position as a high-tech location. Bienvenue à Munich, bienvenue en Bavière!</p>\n<p>Dr. Florian Herrmann, Head of the Bavarian State Chancellery and State Minister for Federal and Media Affairs</p>\n<p>The Munich hub will anchor our hiring across research, engineering, and applied AI roles. We are actively recruiting in the Munich region as we scale our Physics AI and industrial AI capabilities.</p>\n<p>Our new hub in Germany is where we build. Germany’s industrial base is the backbone of Europe’s economy. The engineering problems defining the next decade of industrial AI are being solved right here – on the development floors, inside the facilities, and in the research institutes and universities that produce Europe’s best technical talents. We are here to support the German industry in mastering the most demanding AI applications. This is the transition that will drive the next phase of sovereign European AI.</p>\n<p>Arthur Mensch, Co-founder and CEO, Mistral</p>\n<p>Today marks a new chapter – for Mistral in Germany, and for industrial AI in Europe.</p>\n<p><strong>We are here to build.</strong></p>\n",
      "date_modified": "2026-09-28T15:57:59+00:00",
      "date_published": "2026-09-28T15:57:59+00:00",
      "external_url": "https://mistral.ai/news/hallo-deutschland/",
      "id": "urn:aggr:item:b375847f2f6d5752a06dd6c56da4d854c45b2d7f",
      "summary": "Mistral opens a Munich hub for Physics AI and Industrial AI research, partnering with German industry.",
      "tags": [
        "ai"
      ],
      "title": "Hallo, Deutschland!",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-09-28-hallo-deutschland/"
    },
    {
      "content_html": "<p>By Mistral and Mozilla</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Linkedin-Partnership-Firefox%20copie_1chG4c.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Today, we are announcing a partnership with Mozilla to bring privacy, control and choice to people using AI to browse online.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://blog.mozilla.org/en/firefox/firefox-smart-window/\">Firefox Smart Window</a> (beta), Mozilla’s AI browsing assistant, is now powered by Mistral models. Smart Window helps you make sense of complex searches, remember something important you clicked away from and source information important to you based on your browser tabs. Mistral will help power Smart Window for users in France and North America, with the United Kingdom and Germany expected to follow later this year.</p>\n<p>This partnership represents two open source advocates working together to bring Mistal’s scientific innovations to consumers around the world. We are building AI systems that are trained and fine-tuned on regional languages, dialects and cultural context, so anyone can get responses that understand their local nuance.</p>\n<p>This announcement is important to the global AI ecosystem for four reasons:</p>\n<ol>\n<li>\n<p><strong>Open technology needs open distribution</strong>: Mozilla has spent more than two decades fighting for an open web and Mistral has been releasing open weight, frontier models since our first release. This partnership is about demonstrating the potential of open source to serve people around the world.</p>\n</li>\n<li>\n<p><strong>AI optimized for local countries and cultures, not exported to them:</strong> We’re fine-tuning our models on regional languages and dialects so that everyone, no matter where they are or how they communicate, can benefit from AI that understands their local nuances. This partnership extends this capability to people who use Firefox worldwide so that their AI experience feels native to them.</p>\n</li>\n<li>\n<p><strong>Giving people control of their interactions with AI</strong>: Firefox has a long history of control and privacy in its DNA, and these are values we share at Mistral. Our partnership is rooted in a shared commitment to user choice, control and openness. Together, we’re blending Firefox’s privacy-first legacy with Mistral’s cutting-edge open models to give people autonomy over their browsing experience. Privacy protections are built into how Firefox Smart Window works: conversations aren’t saved on Mozilla’s servers by default, and partners like Mistral agree to zero data retention.</p>\n</li>\n<li>\n<p><strong>Putting sovereign AI in everyone’s hands</strong>: At Mistral, we’re committed to putting sovereign AI in everyone's hands. While we traditionally focus on serving the enterprise, by partnering with ecosystem leaders like Firefox, we extend beyond businesses and reach their consumers worldwide. This way, end users can benefit from our technology that’s rooted in user control, transparency and open innovation.</p>\n</li>\n</ol>\n<p>You can learn more about Smart Window <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.firefox.com/en-US/smart-window/?view=download\">here</a>.</p>\n<p>AI is becoming part of how people experience the web every day. We want to make sure that doesn’t mean people are chained to one company’s self-serving pipeline. With the browser sitting at the heart of the web and online experience, it should be a place where different AI providers can compete and open source has a seat at the table. This isn't just a product partnership. A browser shouldn’t be a one-way funnel. It should preserve what made the internet powerful to begin with: the freedom to explore, discover different ideas and tech, and decide for ourselves where to go next.</p>\n<p>Anthony Enzor-DeMeo, CEO, Mozilla Corporation</p>\n<p>This partnership represents two open source advocates working together to bring Mistral’s scientific innovations to Mozilla’s consumers around the world. Together, we are bringing privacy, control and choice to AI-powered web browsing.</p>\n<p>Arthur Mensch, co-founder and CEO of Mistral</p>\n<p>0%</p>\n",
      "date_modified": "2026-09-16T12:00:00+00:00",
      "date_published": "2026-09-16T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/mistral-x-mozilla/",
      "id": "urn:aggr:item:29131e47b63a679949796dbfbb4929393562ff18",
      "summary": "Open, private and multilingual AI is coming to your web browser. Mistral and Mozilla team up to put powerful, trustworthy AI where you already browse.",
      "tags": [
        "ai"
      ],
      "title": "Mistral and Mozilla are bringing open, private and multilingual AI to your web browser",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-09-16-mistral-and-mozilla-are-bringing-open-private-and/"
    },
    {
      "content_html": "<p>Company</p>\n<p>September 10, 2026</p>\n<p>By Mistral</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Linkedin-Partnership-02-Cloudera_ZKBpeu.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>We’ve spoken with many of the world’s largest enterprises across regulated industries like financial services, manufacturing and telecommunications. One of their common strategic partners is Cloudera, providing them with a platform to gain valuable data insights across both on-prem and cloud environments.</p>\n<p>What these organizations have in common is that they are data-driven and the processes they’re looking to transform with AI are mission-critical. These are industries that stand to benefit the most from AI, provided they have complete confidence in controlling their data and intelligence. This is exactly why a partnership between Mistral and Cloudera is a natural way to support the demand of our joint customers and help them continue to innovate under their terms.</p>\n<p>Here’s what Mistral and Cloudera are announcing today as a part of our new partnership:</p>\n<ol>\n<li>\n<p><strong>Running inference in your environment</strong>: Our models will be integrated with Cloudera’s hybrid data platform, allowing enterprises to deploy their AI models across private and public cloud environments, on-prem and fully air-gapped environments while maintaining full control.</p>\n</li>\n<li>\n<p><strong>Building custom models so enterprises control their own intelligence:</strong> Mistral enables enterprises to train their AI models against large amounts of proprietary data within controlled environments. Decades of institutional data can be transformed into customized AI models while maintaining ownership over both the data and the resulting intelligence.</p>\n</li>\n</ol>\n<p>&quot;Every enterprise is heading toward the same destination: specialized intelligence,” said Abhas Ricky, Chief Business Officer &amp; GM, Applied AI at Cloudera. “General-purpose models are the starting point, not the finish line. The real advantage comes from models trained on decades of proprietary data — the loan decisions, the production runs, the network telemetry that no one else has. With Mistral, our customers can turn that data into intelligence they own outright, tuned to their business and governed inside their own environment. That’s the shift we’re building for: “from renting generic AI to owning intelligence that’s uniquely theirs.”</p>\n<p>“It’s a privilege to have the opportunity to bring Mistral’s sovereign AI to Cloudera’s 30 exabytes of customer-managed data running on its platform. We are looking forward to innovating on behalf of our joint customers,” said Kamal Brar, SVP of Partnerships &amp; Alliances at Mistral.</p>\n<p>The collaboration is designed to meet growing demand for sovereign AI: AI that keeps data, intelligence, compute, and operations under the customer's control. That means data can remain within customer-defined boundaries, models can be adapted and owned on open weights, training and inference can run on infrastructure and in jurisdictions the customer chooses, and AI systems can be deployed, governed, observed, and improved over time without ceding control of the learning loop to an external platform.</p>\n<p>0%</p>\n",
      "date_modified": "2026-09-10T10:42:55+00:00",
      "date_published": "2026-09-10T10:42:55+00:00",
      "external_url": "https://mistral.ai/news/mistral-x-cloudera/",
      "id": "urn:aggr:item:fe6b39612b631c9d51194274f8dc52a714a3492d",
      "image": "https://mistral.ai/cms-media/api/media/file/Linkedin-Partnership-02-Cloudera.png",
      "summary": "Cloudera and Mistral join forces to bring specialized, sovereign AI intelligence to enterprise data, helping regulated industries innovate on their own terms.",
      "tags": [
        "ai"
      ],
      "title": "Cloudera and Mistral Partner to Bring Specialized, Sovereign Intelligence to Enterprise Data",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-09-10-cloudera-and-mistral-partner-to-bring-specialized-sovereign/"
    },
    {
      "content_html": "<p>Legacy scientific codebases accumulate over decades, and when original authors leave, the knowledge embedded in the code becomes hard to recover. Moreover, using languages with no active developer ecosystem means missing out on the opportunity to build on top of others’ work. Mistral helped a European energy operator migrate 40,000 lines of Fortran 77 to C++, a physics-intensive reservoir simulator with no test suite and no centralized documentation.</p>\n<h2>Moving beyond code translation in legacy code modernization.</h2>\n<p>Translating syntax from one language to another is a largely solved task. Asking any recent model to translate a snippet from a non-completely-obscure language to another, will likely converge to an acceptable outcome in few iterations. However, migrating a full system from a procedural language to object-oriented C++ creates the need for architectural refactors that make the task non-trivial.</p>\n<p>Fortran 77 was standardized in 1977, as the name may suggest, and code written in it reflects those constraints directly: no modules, no namespaces, no structured types. State lives in COMMON blocks—global memory shared across the entire program. Variables are implicitly typed by their first letter, so a misspelled name silently creates a new variable instead of raising a compiler error.</p>\n<p>For a simple but illustrative example, take the following implementation of a first-degree Taylor expansion. Inputs and outputs are globals in a COMMON block, and <code>IC</code> is an integer only because its name starts with a letter between I and N. Variable names are quite cryptic, as their length is capped to 6 characters.</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\">   <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-other syntax-constant syntax-python\">SUBROUTINE</span></span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-other syntax-constant syntax-python\">GASDEN</span></span>   <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-other syntax-constant syntax-python\">INCLUDE</span></span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-single syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&#39;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-single syntax-python\">common.h<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&#39;</span></span></span>   <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">DO</span></span> <span class=\"syntax-constant syntax-numeric syntax-integer syntax-decimal syntax-python\">10</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">IC</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-constant syntax-numeric syntax-integer syntax-decimal syntax-python\">1</span>, <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">NCELL10</span></span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">RHOG</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">IC</span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">ROG</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">IV</span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span> <span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-python\">+</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">DROG</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">IV</span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span><span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-python\">*</span><span class=\"syntax-meta syntax-group syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">P</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">IC</span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span><span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-python\">-</span><span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">PTAB</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">IV</span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-python\">)</span></span>   <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-other syntax-constant syntax-python\">END</span></span>\n</span></span></code></pre>\n<p>In C++, one will be able to leverage explicit types, write object-oriented code, and return a value returned instead of a global write:</p>\n<pre><code class=\"language-javascript\"><span class=\"code-snippet\" data-language=\"JavaScript\"><span class=\"syntax-source syntax-js\"><span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">double</span> <span class=\"syntax-meta syntax-function-call syntax-js\"><span class=\"syntax-variable syntax-function syntax-js\">gasDensity</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">const</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">GasProperties</span><span class=\"syntax-keyword syntax-operator syntax-bitwise syntax-js\">&amp;</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">gas</span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">double</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">pressure</span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span> <span class=\"syntax-meta syntax-block syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">{</span>    <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">size_t</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">i</span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-js\">=</span> <span class=\"syntax-meta syntax-function-call syntax-js\"><span class=\"syntax-variable syntax-function syntax-js\">lookup</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-variable syntax-other syntax-object syntax-js\">gas</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-property syntax-object syntax-js\">pressure</span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">pressure</span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span><span class=\"syntax-punctuation syntax-terminator syntax-statement syntax-js\">;</span>    <span class=\"syntax-keyword syntax-control syntax-flow syntax-js\">return</span> <span class=\"syntax-variable syntax-other syntax-object syntax-js\">gas</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-property syntax-object syntax-js\">density</span><span class=\"syntax-meta syntax-brackets syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-js\">[</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">i</span><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-js\">]</span></span> <span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-js\">+</span> <span class=\"syntax-variable syntax-other syntax-object syntax-js\">gas</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-property syntax-object syntax-js\">slope</span><span class=\"syntax-meta syntax-brackets syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-js\">[</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">i</span><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-js\">]</span></span> <span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-js\">*</span> <span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">pressure</span> <span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-js\">-</span> <span class=\"syntax-variable syntax-other syntax-object syntax-js\">gas</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-property syntax-object syntax-js\">pressure</span><span class=\"syntax-meta syntax-brackets syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-js\">[</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">i</span><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-js\">]</span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span><span class=\"syntax-punctuation syntax-terminator syntax-statement syntax-js\">;</span><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">}</span></span>\n</span></span></code></pre>\n<p>The scattered COMMON arrays become a single <code>GasProperties</code> parameter and the grid loop moved out to the caller, so there's no line-for-line correspondence to check, which is what makes verifying the migration hard.</p>\n<p>These structural differences, plus the requirement to integrate modern scientific computing frameworks such as PetSc, raised a few important questions even before starting the migration:</p>\n<ul>\n<li>\n<p>How to prove the migrated codebase matches the legacy one numerically</p>\n</li>\n<li>\n<p>How to split the migration into manageable chunks</p>\n</li>\n<li>\n<p>How to best use autonomous agents to speed up the process</p>\n</li>\n</ul>\n<h2>Building a parity harness before migrating legacy code.</h2>\n<p>Before letting agents loose, we needed a way to prove the two codebases agreed. Here, &quot;agreement&quot; meant numerical equality of the outputs—both the final results and a set of critical intermediate points flagged by the client's reservoir engineers.</p>\n<p>We added:</p>\n<ul>\n<li>\n<p>subroutines allowing to export the state of the Fortran codebase</p>\n</li>\n<li>\n<p>a test framework to load the checkpoints into C++</p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://Skill.md\">Skill.md</a> files to steer agents into using them correctly</p>\n</li>\n</ul>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/blog-storengy-1_Z2npsCv.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>In the migration workflows, agents successfully instrumented the Fortran codebase to dump state snapshots and used the C++ test framework to verify correctness of migrated modules.</p>\n<p>Building this part of the harness first was a net-positive investment for the project: it made long agent runs safer, and numerical parity is an easy-to-verify and compelling argument to show a piece of code has been successfully migrated. We believe this should be one of the first steps for any code modernization engagement.</p>\n<p>The example below illustrates this. We first inserted a line into the Fortran code to dump the value of the RHOG variable (42.71834 in this run), and then used that same value as the reference checkpoint when testing the migrated C++ module.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/blog-storengy-2_eKcDf.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Using AI agents to understand and document legacy codebases.</h2>\n<p>The project’s documentation was scattered across old PDFs and comments buried in the Fortran itself, and one of the largest side-wins of the whole effort was reconciling this documentation and moving it next to the code.</p>\n<p>Luckily, procedural code like Fortran has a convenient property: the whole program can be drawn as a single caller-callee tree. We generated that tree by parsing the codebase with a custom parser, then used <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/vibe/\">Vibe CLI</a> to spawn over a hundred agents to document it. Each agent could pull in the relevant PDFs through document libraries and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/solutions/document-ai/\">Mistral OCR</a>.</p>\n<p>Starting from the leaves of the tree and working upward, each node spawned a subagent to document it and open a PR to the original repository. A reviewer agent running in a loop on a cron schedule looked for newly opened PRs, reviewing them and scheduling fix tasks when necessary.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/blog-storengy-3_Z2dgfSV.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Utilizing the AI agents for code modernization.</h2>\n<p>On our first attempt, we gave agents full autonomy: one agent per Fortran subroutine, each translating its function to C++ independently over the course of a week. The result was functional, but it couldn't be called code modernization. COMMON blocks became global structs, one-to-one. GOTO-driven control flow stayed intact instead of being restructured into loops or early returns. It looked like Fortran retyped in C++ syntax rather than modernized code.</p>\n<p>In the second attempt, we addressed this by giving agents structure instead of just autonomy: a planner, a coder, a tester and a code quality reviewer working together on each module. Code quality improved substantially over the first attempt. But the source code's complexity caught up with the agents eventually. They would hit a bug, attempt a few fixes, and stall, with no one available to intervene.</p>\n<p>We landed on a middle ground: a human operating a workflow of coder, tester, and reviewer agents, migrating the codebase module by module. This preserved the code quality of the second attempt while adding a human checkpoint to unblock agents when they got stuck. The next section covers this workflow in detail.</p>\n<h2>Running structured AI agent workflows for complex code migration.</h2>\n<p>With the codebase documented and the parity harness in place, the remaining fun bit was tuning how much autonomy we could hand the agents while still getting mergeable code out. We tried both extremes, from fully autonomous runs to closely supervised manual sessions. The structured workflow below is where we landed for this use case.</p>\n<p>Working with the client's reservoir engineers, we used the caller-callee tree to identify independent modules—self-contained subtrees of manageable size (empirically, less than ~10’000 lines of Fortran). Each module ran through the same workflow:</p>\n<ol>\n<li>\n<p>Generate the target C++ architecture.</p>\n</li>\n<li>\n<p>Review it with a reservoir engineer.</p>\n</li>\n<li>\n<p>On approval, break it into a task queue.</p>\n</li>\n<li>\n<p>Run an implementation sub-workflow per task: plan → implement → test → repeat.</p>\n</li>\n<li>\n<p>A human reviews the resulting PRs and requests changes until they merge.</p>\n</li>\n</ol>\n<h3>Recognizing the limits of AI assisted legacy code modernization.</h3>\n<p>The first sprint covered core functionality: 40,000 of 300,000 lines. The Fortran codebase was self-contained and runnable, which is a favorable starting condition. Migrations that depend on external systems, lack a runnable baseline, or encode physics documented nowhere would bring additional challenges not discussed in this post.</p>\n<h2>Applying three principles for modernizing complex legacy systems.</h2>\n<p>Three lessons from this project should carry over to any large legacy migration.</p>\n<ol>\n<li>\n<p>Build the parity harness before you write migration code—numerical agreement is the cheapest, most convincing proof that a module is done.</p>\n</li>\n<li>\n<p>Get the documentation in order before you lean on the agents, because you can't migrate code nobody can read.</p>\n</li>\n<li>\n<p>And at this scale, structured workflows with human review gates beat both full autonomy and hand-driven manual sessions.</p>\n</li>\n</ol>\n<h2>We are hiring!</h2>\n<p>Mistral's Applied AI team is a group of engineers building full-stack solutions around Mistral models and Enterprise platform. We ship high-stakes, domain-specific solution to solve some of the world’s hardest problems.</p>\n<p>If this is the kind of work you want to be involved in, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers/\">apply to join our team</a>.</p>\n",
      "date_modified": "2026-09-09T12:00:46+00:00",
      "date_published": "2026-09-09T12:00:46+00:00",
      "external_url": "https://mistral.ai/news/legacy-code-modernization/",
      "id": "urn:aggr:item:1d172a6db09f02d71f6e653f3dd85333138af284",
      "summary": "Mistral helped a European energy operator migrate 40,000 lines of Fortran 77 to C++. Learn how it was done, and the lessons to carry forward.",
      "tags": [
        "ai"
      ],
      "title": "Modernizing complex legacy code with AI agents.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-09-09-modernizing-complex-legacy-code-with-ai-agents/"
    },
    {
      "content_html": "<p>Mistral today announced that it has raised €3 billion in a Series D funding round at a post-money valuation of more than €21 billion, the largest equity fundraising round ever completed by a European technology company, three years after the company's launch.</p>\n<p>Samsung Electronics led the round, joined by co-leads Scaleup Europe Fund, managed by EQT, and existing investor PSG Equity.</p>\n<p>The round will significantly expand Mistral's frontier research, which is the foundation underpinning its infrastructure, products and sovereignty. While allowing Mistral to scale its compute capacity for training powerful models, it will help Mistral expand infrastructure and accelerate its commercial growth and international footprint. The company now operates across 20 countries and supports 125+ global enterprises’ mission-critical AI transformation, including Airbus, ASML, and HSBC.</p>\n<p>During the first wave of generative AI, the central question was who could build the most powerful model. Organizations and governments are now asking a different one: how to harness the power of AI for their mission-critical needs without surrendering control over the infrastructure and intelligence loop. Demand for that combination of performance with control, choice and independence is growing internationally, as enterprises and governments weigh the long-term technology dependencies, data governance requirements and deployment choices that come with any AI investment.</p>\n<p>Mistral is the only AI company in the world building the full stack required to answer that question: open-weight models, the infrastructure and the compute capacity they run on, and the products that bring them into production; ensuring that customers are never locked into a single vendor's roadmap, pricing or availability.</p>\n<p>Mistral’s full-stack and open approach also allows organizations to build on it without exposing their most valuable data, workflows and institutional knowledge to anyone outside their own walls. That's what makes Mistral’s stack the sovereign AI layer, meaning retaining control across four dimensions: data that stays inside the organization's boundaries, models that are controllable and customizable, compute that is private and predictable, and systems in production that are fully controllable and auditable.</p>\n<p>The round reflects a strategic endorsement from investors across Europe, Asia and North America. It brings together a world-class syndicate of strategic and financial investors, including global technology leaders, growth investors and existing shareholders that have supported Mistral’s development to date.</p>\n<p>With a Series C led by ASML and a Series D led by Samsung Electronics, Mistral has attracted backing from companies at the forefront of advanced manufacturing, engineering and industrial technology. This support reflects growing confidence that Mistral's approach can help organisations deploy state-of-the-art AI inside complex real-world environments while maintaining control over their data, infrastructure and knowledge.</p>\n<p>Advent, funds and accounts managed by BlackRock as well as the Grand Duchy of Luxembourg joined the round as new investors. Existing investors a16z, ASML, Belfius, BNP Paribas CIB, Bpifrance, Carmignac, DST Global, Eurazeo, General Catalyst, Headline, Hillspire, Index Ventures, Korelya Capital, Lightspeed, NVIDIA, Phoenix Court's Solar fund (home to LocalGlobe, Latitude and Solar) and Salesforce Ventures participated in the round.</p>\n",
      "date_modified": "2026-09-08T12:00:22+00:00",
      "date_published": "2026-09-08T12:00:22+00:00",
      "external_url": "https://mistral.ai/news/mistral-makes-sovereign-open-weight-ai-to-frontier/",
      "id": "urn:aggr:item:604702a694129b49876a75c2663e3f69b472f20e",
      "summary": "Mistral today announced that it has raised €3 billion in a Series D funding round at a post-money valuation of more than €21 billion.",
      "tags": [
        "ai"
      ],
      "title": "Mistral raises €3B to make sovereign, open-weight AI the technology frontier",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-09-08-mistral-raises-eur3b-to-make-sovereign-open-weight-ai-the/"
    },
    {
      "content_html": "<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Linkedin-Partnership-Humain_1Wb2RV.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>Over the past few weeks, we have announced several important steps to expand sovereign AI by increasing access to local infrastructure capacity. Earlier this summer, we announced an</em> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=xr4VUV-7rN0\"><em>expanded partnership with Microsoft</em></a> <em>to increase compute capacity in Europe. In early August, we introduced</em> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/regional-inference-open-models-new-compute/\"><em>European Compute Units</em></a><em>, a structure designed to bring together long-term enterprise commitments so the capacity Europe needs gets built and can support its global competitiveness. Today, we are announcing a new strategic collaboration with HUMAIN to support sovereign AI in Saudi Arabia and across the Middle East. See more below.</em></p>\n<h3>Mistral and HUMAIN Announce Strategic Collaboration to Advance Sovereign AI in Saudi Arabia and Regionally</h3>\n<p>Mistral and HUMAIN today announced a strategic collaboration spanning AI infrastructure, advanced model development, and the deployment of AI solutions in Saudi Arabia and across the region. Together, the companies will pursue the development and localization of advanced AI models, with initial areas of focus including cybersecurity and voice. The companies also plan to develop frontier models that perform strongly in Arabic language to help support the broader region. This represents a collaboration in the hundreds of millions of Euros. As part of the collaboration, Mistral will explore using HUMAIN’s data center infrastructure to support growing local compute needs. HUMAIN and Mistral also plan to develop a joint go-to-market strategy in Saudi Arabia focused on bringing advanced AI solutions to regulated industries.</p>\n<p>The collaboration is designed to meet growing demand for sovereign AI: AI that keeps data, intelligence, compute, and operations under the customer's control. That means data can remain within customer-defined boundaries, models can be adapted and owned on open weights, training and inference can run on infrastructure and in jurisdictions the customer chooses, and AI systems can be deployed, governed, observed, and improved over time without ceding control of the learning loop to an external platform. This is especially important in financial services, manufacturing, telecommunications, cybersecurity, and the public sector, where security, compliance, resilience, and operational autonomy are non-negotiable.</p>\n<p>This collaboration also reflects a broader shift in how AI is being adopted globally, through partnerships that combine local infrastructure, market knowledge, and sovereign AI capabilities. Mistral and HUMAIN believe that supporting AI innovation in the region requires both the compute capacity to meet demand over time and the open, customizable AI models that allow organizations to innovate on their own terms. This collaboration will support long-term AI innovation, performance, cost control, and operational sovereignty.</p>\n<h3>Forward-Looking Statement:</h3>\n<p>This announcement may contain forward-looking statements based on current expectations and assumptions. Actual results may differ materially due to various risks and uncertainties and subsequent commercial agreements. HUMAIN and MISTRAL undertake no obligation to update these statements.</p>\n",
      "date_modified": "2026-08-24T16:02:41+00:00",
      "date_published": "2026-08-24T16:02:41+00:00",
      "external_url": "https://mistral.ai/news/mistral-x-humain/",
      "id": "urn:aggr:item:33b37401f8810ec7bd58482410dd2627fc8f828c",
      "summary": "Over the past few weeks, we have announced several important steps to expand sovereign AI by increasing access to local infrastructure capacity. Earlier this summer, we announced an expanded partnership with Microsoft to increase compute…",
      "tags": [
        "ai"
      ],
      "title": "Mistral x HUMAIN",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-08-24-mistral-x-humain/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Mistral Agentic Search delivers more accurate search results while reducing turns, token use, and latency against FinanceBench and OfficeQA Pro benchmarks. Agentic Search is the retrieval layer that enables AI systems to navigate, read, and verify information inside even the most complex documents. Available through Mistral Search Toolkit and Libraries.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Thumbnail-Blog-Agenticsearch_ZvnTim.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Mistral Agentic Search helps enterprises get better results from their AI systems by letting models search and navigate their organization’s most complex data and documents. Agentic Search introduces a multi-step retrieval loop for finding, inspecting, and verifying information across data sources, wherever it is stored. Agentic Search is available through <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio/search-toolkit\">Mistral Search Toolkit</a>, built into <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio/libraries\">Libraries</a> in both <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/studio/\">Studio</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/vibe/\">Vibe</a>, and gives you:</p>\n<ul>\n<li>\n<p><strong>Support for sensitive domain-specific data</strong>. Mistral’s portable and open tooling helps you unlock value from your data without crossing your isolation boundaries in the cloud or on-premises.</p>\n</li>\n<li>\n<p><strong>Improved search results</strong>. Your models can search and navigate your data beyond retrieved chunks–inside long, dense documents or across multiple sources.</p>\n</li>\n<li>\n<p><strong>Access to existing indexes.</strong> Agentic Search builds on your existing search index using five tools: <code>search</code>, <code>open</code>, <code>navigate</code>, <code>read</code>, and <code>grep</code>.</p>\n</li>\n<li>\n<p><strong>Higher accuracy.</strong> Agentic Search delivers to <strong>3x</strong> <strong>correctness</strong> on financial filings, from 26.7% to 86%, based on FinanceBench. On table-heavy, multi-doc questions of the OfficeQA Pro benchmark, we measure a <strong>+45.6 point</strong> gain (6.3% to 51.9%).</p>\n</li>\n<li>\n<p><strong>Lower latency and token use.</strong> Targeted navigation enables Agentic Search to reduce p90 <strong>latency up to 39.6%</strong>. Fewer repeated searches reduce token consumption by up to one-third.</p>\n</li>\n</ul>\n<h2><strong>Data creates competitive advantage</strong></h2>\n<p>Competitive edge is built upon years of real-world operations–your data, your processes, and your domain expertise. Proprietary knowledge is both critical to your success and highly confidential, meaning it lives behind isolation boundaries, segmented deployments, and self-hosted platforms. It accumulates in financial filings, legal contracts, internal resources, and government records–long, dense documents that traditional search methods can’t navigate effectively.</p>\n<p>Agents that learn and improve continuously can help you compound your competitive advantage, but these agents are often separated from confidential data and proprietary knowledge for security reasons. Getting real impact from AI means pairing frontier reasoning with retrieval tools that can safely reach your most sensitive material.</p>\n<h2><strong>Traditional RAG falls short</strong></h2>\n<p>Traditional, one-shot RAG retrieves a fixed set of text chunks and asks a model to answer in a single pass. This works when the answer appears in one of the top results, but falters when the model must navigate a long report, follow references, compare multiple documents, or verify the underlying evidence.</p>\n<p>The limitation is more pronounced on dense, complex data and documents. The information needed to answer a question may be spread across documents or buried in a particular table, footnote, or clause. One-shot RAG-based search fails to use the full power of frontier AI and to provide reliable answers for three reasons:</p>\n<ul>\n<li>\n<p><strong>Retrieval without reasoning</strong>: The model must answer from the chunks selected during the initial retrieval, even when they are incomplete or not relevant. It cannot decide that it needs a different document, another section, or more context before responding, which limits the impact of the model’s reasoning.</p>\n</li>\n<li>\n<p><strong>Chunk-level limit</strong>: Critical data is often held in complex multi-modal documents. When asked, “<em>What was the company’s effective tax rate in Q3?”</em> an index may find the correct document but cannot open it, navigate to the table, read the surrounding context, or verify the answer.</p>\n</li>\n<li>\n<p><strong>No iteration</strong>: Many questions need more than one retrieval pass to get the correct answer. The model may need to refine its search, inspect a promising document, follow a reference, compare multiple sources, keep track of what it has seen, and try a new route when the first results are insufficient. One-shot RAG provides no way to take these next steps.</p>\n</li>\n</ul>\n<p>With Agentic Search</p>\n<p>Using specifically only the reported values for all individual calendar months in 1953, what is the total sum of these values of expenditures for U.S. national defense and associated activities (in millions of nominal dollars)?</p>\n<p>Trajectory 3 tool_calls (2× search → read)</p>\n<p><code>search(&quot;national defense expenditures monthly 1953&quot;)</code> → per-month bulletins (partial year)</p>\n<p><code>search(&quot;…1953 November December 1954 to date&quot;)</code> → surfaces <code>treasury_bulletin_1954_02.pdf</code>p.15 (Table 3, all 12 months of 1953)</p>\n<p><code>read(treasury_bulletin_1954_02.pdf, p.15)</code> → pulls the complete Table 3</p>\n<p>Monthly Values for 1953</p>\n<p>Table 3, in $millions</p>\n<table>\n<thead>\n<tr>\n<th>Jan</th>\n<th>Feb</th>\n<th>Mar</th>\n<th>Apr</th>\n<th>May</th>\n<th>Jun</th>\n<th>Jul</th>\n<th>Aug</th>\n<th>Sep</th>\n<th>Oct</th>\n<th>Nov</th>\n<th>Dec</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>3,632</td>\n<td>3,501</td>\n<td>3,789</td>\n<td>3,891</td>\n<td>3,746</td>\n<td>4,056</td>\n<td>3,890</td>\n<td>3,519</td>\n<td>3,787</td>\n<td>3,647</td>\n<td>3,540</td>\n<td>3,465</td>\n</tr>\n</tbody>\n</table>\n<p>Sum = 44,463.</p>\n<h2><strong>How Agentic Search works</strong></h2>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/en/studio/search-toolkit\">Mistral Search Toolkit</a> provides open modules for ingesting, embedding, and indexing critical and complex data in the cloud or on-premises. Agentic Search builds on this index by giving the model five tools that resemble familiar file-system operations:</p>\n<ul>\n<li>\n<p><code>search</code> finds relevant documents across the corpus using the existing index.</p>\n</li>\n<li>\n<p><code>open</code> opens a specific document.</p>\n</li>\n<li>\n<p><code>navigate</code> moves to a page, section, or region within it.</p>\n</li>\n<li>\n<p><code>read</code> retrieves the content at that location.</p>\n</li>\n<li>\n<p><code>grep</code> finds a pattern within an open document.</p>\n</li>\n</ul>\n<p>Rather than answering only from the initial top-<em>k</em> results, the model can inspect what it finds, refine its search, open relevant documents, navigate to specific sections, and read the source material before answering. The index identifies likely sources; Agentic Search determines what to inspect within and across them.</p>\n<h3><strong>One-shot RAG</strong></h3>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/pasted-image-4_INqkQ.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3><strong>Agentic Search</strong></h3>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/pasted-image-5_Z1Id2ck.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>These tools do not require fine-tuning or model-specific training. As models get better at reasoning and tool use, retrievals get better without infrastructure changes. This is a key property: retrieval quality scales with model capability instead of being capped by your chunking strategy.</p>\n<h2><strong>Use Agentic Search for</strong></h2>\n<ul>\n<li>\n<p><strong>Long documents.</strong> Filings, contracts, manuals, technical specifications, and reports where the answer may appear on a particular page or in a specific table, clause, figure, or footnote.</p>\n</li>\n<li>\n<p><strong>Questions across multiple sources.</strong> Research that requires the model to find, compare, or reconcile evidence from several documents before reaching an answer.</p>\n</li>\n<li>\n<p><strong>Answers that must be verified.</strong> Financial figures, legal clauses, regulatory references, and operational data, where the response can be referenced in a stable and specific document location.</p>\n</li>\n<li>\n<p><strong>Tables and structured documents.</strong> Financial statements, government records, and scanned PDFs where meaning depends on rows, columns, page position, or surrounding context–not narrative text alone.</p>\n</li>\n</ul>\n<h2><strong>Indexed retrieval is the right starting point for</strong></h2>\n<ul>\n<li>\n<p><strong>Direct lookups.</strong> Short, clean documents where the answer is likely to appear in one of the first retrieved chunks.</p>\n</li>\n<li>\n<p><strong>High-volume search.</strong> Keyword or semantic lookups that need to return relevant passages without reasoning over or navigating through them.</p>\n</li>\n<li>\n<p><strong>Simple, predictable questions.</strong> Use cases where the likely source and location of the answer are known in advance and additional retrieval steps are unlikely to improve the result.</p>\n</li>\n</ul>\n<p>One-shot RAG is often sufficient for these searches. Add Agentic Search when questions require the model to move beyond the initial results and investigate the source material. A well-configured index remains the right foundation in both cases.</p>\n<h2><strong>More relevant results, faster</strong></h2>\n<p>We benchmarked Agentic Search on two industry-standard evaluations, using the out-of-the-box Mistral Search Toolkit stack: default chunking, default ranking, no tuning. These results are floors, not ceilings, meaning you can further improve result quality with use-case-specific tuning.</p>\n<p>With these benchmarks, we tested two models using the Mistral Search Toolkit: <strong>Mistral Medium 3.5</strong> (MM 3.5) and <strong>Z.ai GLM-5.2</strong> (GLM-5.2), showcasing performance of a smaller model (MM 3.5) and a larger model (GLM-5.2).</p>\n<p>Benchmark results are consistent: the agentic loop delivers substantive quality improvements and navigation tools increase accuracy while reducing wasted tokens, turns, and latency. We observe the same performance patterns across first- and third-party models, which indicates that Agentic Search is model-agnostic, and that search quality should improve with new models.</p>\n<h3><strong>FinanceBench: 368 SEC filings, 150 questions</strong></h3>\n<p>FinanceBench (Islam et al., 2023) tests financial question-answering over 368 SEC filings (10-K / 10-Q / 8-K), averaging ~147 pages each, ~53,900 pages total: long, table-heavy financial documents. Answers scored by an LLM judge calibrated against human labels.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/cms-media/api/media/file/financebench_-one-shot-rag-vs-agentic-search.svg\" alt=\"financebench_-one-shot-rag-vs-agentic-search\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/cms-media/api/media/file/financebench_-one-shot-rag-vs-agentic-search%20(1)-1.svg\" alt=\"financebench_-one-shot-rag-vs-agentic-search-glm\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>We found:</p>\n<ul>\n<li>\n<p><strong>The search-only Agentic loop is the biggest quality lever.</strong> Moving from one-shot RAG to a search-only loop lifts accuracy by <strong>+47.3pp</strong> for MM 3.5 and <strong>+52.6pp</strong> for GLM-5.2–a ~3x improvement for both models. Because models can search iteratively, they can recover from weak first results, refine queries, and use the index as an active tool.</p>\n</li>\n<li>\n<p><strong>Navigation adds accuracy</strong>. Adding open, navigate, read, and grep lifts accuracy again (<strong>+8.7pp</strong> for MM 3.5, <strong>+6.7pp</strong> for GLM-5.2). This means a targeted drill-in search beats repeated broad search in complex documents.</p>\n</li>\n<li>\n<p><strong>Token and performance efficiency improve with better retrieval tools.</strong> The full loop with Navigation answers more questions correctly while using fewer tokens than the search-only loop (MM 3.5: <strong>-23.9% token usage</strong>, GLM-5.2: <strong>-33.7%</strong>). The retrieval tools are not additional overhead–they replace wasted search retries with precise navigation.</p>\n</li>\n<li>\n<p><strong>Latency goes down where it matters.</strong> Across FinanceBench, adding navigation retrieval tools improves latency: p90 drops <strong>255s → 154s</strong> and mean latency drops <strong>108s → 71s</strong>. In general, we see the search-only loops conduct repeated broad searches, while navigation helps the model identify evidence more quickly.</p>\n</li>\n</ul>\n<h3><strong>OfficeQA Pro: 696 Treasury Bulletins, 133 questions</strong></h3>\n<p>OfficeQA Pro is a verifiable numeric benchmark over historical U.S. Treasury Bulletins: scanned, table-heavy government-finance PDFs across a 696-document, ~89,000-page corpus. We report the first pass for the 133-question &quot;pro&quot; subset.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/cms-media/api/media/file/officeqa-pro_-one-shot-rag-vs-agentic-search%20(1).svg\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/cms-media/api/media/file/officeqa-pro_-one-shot-rag-vs-agentic-search.svg\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>We found:</p>\n<ul>\n<li>\n<p><strong>Agentic Search and the Agentic loop + Navigation are successful against a harder, verifiable benchmark.</strong> OfficeQA Pro has numeric answers, scanned PDFs, and deep table lookups. Even here, the full agentic loop lifts accuracy materially from one-shot RAG, reaching <strong>51.9%</strong> for GLM-5.2 (<strong>+45.6pp</strong>) and increasing <strong>+27.1pp</strong> for MM 3.5.</p>\n</li>\n<li>\n<p><strong>Navigation improves quality while cutting waste.</strong> Using the full loop (Agentic loop + Navigation) improves accuracy by <strong>up to 35.6%</strong> (<strong>+7.5pp</strong>, MM 3.5; <strong>+8.3pp, 19.0%</strong> GLM-5.2), while reducing token consumption. Turns declined by <strong>up to 7.0%</strong> (MM 3.5, <strong>2.3%</strong> GLM-5.2).</p>\n</li>\n<li>\n<p><strong>The harder the benchmark, the more important the retrieval loop becomes.</strong> OfficeQA Pro is built around numeric answers in scanned, table-heavy documents. One-shot RAG barely gets started, while the agentic loop allows the model to search iteratively, inspect evidence, and deliver substantial accuracy improvements.</p>\n</li>\n<li>\n<p><strong>The tooling stack drives substantial impact on document intelligence and search performance</strong>. Per <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.kimi.ai/blog/kimi-k3\">Kimi research</a>, GLM-5.2 scores 41.4% on OfficeQA Pro with the Claude Code harness, compared with 51.9% on the Mistral harness–+10.5pp on the same underlying model.</p>\n</li>\n</ul>\n<h2><strong>Getting started</strong></h2>\n<p>Learn more about Agentic Search in the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio/search/agentic-search\">documentation</a>. You can get started across cloud and on-premises deployments using either:</p>\n<ul>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio/search/search-toolkit\">Mistral Search Toolkit</a>. Integrate Agentic Search into your own agents, workflows, and customer deployments.</p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio/libraries\">Libraries</a>. Use Agentic Search out-of-the-box in Studio and Vibe, without building the retrieval system yourself.</p>\n</li>\n</ul>\n<p>The fastest way to test Search Toolkit is with the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai/search-starter-app/tree/main\">Search Starter App</a>. It creates a local index for your own corpus using a default configuration, so you can try Agentic Search without needing to be a search expert. When you’re ready to configure your use case, you can:</p>\n<ul>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio/search/search-toolkit/ingestion\">Set up ingestion</a>. Select parsers, chunking strategies, embedding models, and extractors for your data and file types.</p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio/search/search-toolkit/search-index\">Tune indexing and ranking</a>. Manage Vespa schemas, indexing behavior, and relevance profiles.</p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio/search/search-toolkit/retrieval\">Extend retrieval</a>. Add query rewriting, reranking, or hybrid retrieval to the search pipeline.</p>\n</li>\n</ul>\n",
      "date_modified": "2026-08-20T12:00:17+00:00",
      "date_published": "2026-08-20T12:00:17+00:00",
      "external_url": "https://mistral.ai/news/agentic-search/",
      "id": "urn:aggr:item:6d2ee20d1c42d6f7e5b104f59fba73e8f7461add",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Blog-Agenticsearch.png",
      "summary": "The retrieval layer that helps AI systems navigate, read, and verify information inside even the most complex documents",
      "tags": [
        "ai"
      ],
      "title": "Agentic Search. More accurate and efficient results from your AI systems.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-08-20-agentic-search-more-accurate-and-efficient-results-from/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Mistral is advancing AI sovereignty by offering enterprises and countries control over AI models, infrastructure, and compute capacity, ensuring regional compliance and reliability. The company is expanding open model access, introducing regional endpoints and priority tiers, and forming a coalition to secure long-term European AI compute capacity. With plans to build up to 1 GW of capacity by 2030, Mistral aims to provide a scalable, sovereign AI infrastructure that retains value and control for users.</p>\n<h4>At Mistral, we believe every enterprise and country must be in control of the models it uses, choose where the intelligence runs, control the compute capacity to scale it, and retain its compounding value.</h4>\n<h4>Today, we are taking three concrete steps as we build the foundations of our customers' AI sovereignty: strengthening the reliability and regional control of inference, expanding access to third-party open models within that infrastructure, and bringing together enterprises and institutions to secure long-term commitments for compute capacity in Europe.</h4>\n<h2>Regional control, production-grade reliability.</h2>\n<p>Most of our customers run our models inside their own data centers and cloud environments today. As AI becomes more deeply embedded in production, they need confidence that the underlying capacity will remain available, resilient, and under the regional controls their workloads require. For some, that means complementing infrastructure they manage themselves with capacity provided and operated by Mistral.</p>\n<p>At the inference layer, that means two things: keeping data and processing in-region, and having dependable access to capacity when demand peaks. We are strengthening both.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio-api/regional-inference\">Mistral Regional Endpoints</a>, now generally available, let customers choose whether their inference runs in Europe or the US, helping them align inference location with their data-residency, regulatory, and latency requirements. Inference and the associated processing take place in the selected region, subject to limited, safeguarded transfers to sub-processors that may occur outside that region, as described in our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://trust.mistral.ai/\">Trust Center</a>. Our new <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://docs.mistral.ai/inference/priority-tier\">Mistral Priority Tier</a>, now in public preview, provides committed service levels for mission-critical workloads, including custom rate limits, and is backed by an uptime SLA. Mistral is the only European AI lab to offer both: choice of processing region and a committed, SLA-backed service level.</p>\n<p>Of course Mistral models will continue to be available through partners, as well - you can learn more about our close partnerships <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/partners/\">here</a>.</p>\n<h2>Sovereign intelligence, built on open model choice.</h2>\n<p>Control over where AI runs, however, is only one part of AI sovereignty. Customers also need control over the intelligence they choose to run on that infrastructure. Today’s AI systems are no longer built on a single model but on an ensemble of capabilities: extended reasoning, high-volume production, or work shaped around a company's own data. Mistral builds for each, from frontier models to specialist ones like Mistral <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/overview\">OCR and Voxtral</a> to custom models trained on a company's own knowledge.</p>\n<p>Our customers particularly value us for pioneering open models. Open weights give them what mission-critical work demands: the ability to <em>see</em> inside a model, <em>adapt</em> it, and <em>retain</em> the intelligence they build with it. This is why we are enthusiastic contributors to the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://blogs.nvidia.com/blog/open-secure-ai-alliance/\">Open Secure AI Alliance</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/mistral-ai-and-nvidia-partner-to-accelerate-open-frontier-models/\">NVIDIA Nemotron Coalition</a>. We are now extending that openness beyond our own models. Mistral’s platform will support third-party open models, starting with Z.ai’s <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/model-cards/zai-glm-5-2\">GLM-5.2</a>. This and future open models will run on the same infrastructure, regional controls, and service commitments as Mistral models, so customers can broaden model choice without fragmenting where their AI runs.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Mistral%20and%20thrird%20party%20models_Z2mw7h3.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<blockquote>\n<blockquote>\n<p>&quot;Different workloads need different models, and that will keep changing as the frontier evolves. Mistral allows us to run open models under strict regional controls and service commitments, making it easy for us to maintain data residency and compliance requirements while furthering our commitment to open source&quot;</p>\n</blockquote>\n</blockquote>\n<p>Matan Grinberg, CEO and cofounder of <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://factory.ai/\">Factory</a></p>\n<h2>A coalition that secures long-term AI capacity.</h2>\n<p>Open intelligence is inseparable from the compute beneath it. And without assured access to that compute, Europe cannot control the AI systems on which its industries, institutions, and future competitiveness will depend. Capacity is increasingly strategic, yet remains scarce, fragmented, and difficult to secure.</p>\n<p>Mistral is bringing together an anchor group of enterprises whose multi-year commitments can support infrastructure in Europe at a scale no participant could secure alone. Aggregating long-term demand in this way will help determine what capacity is built, where it is located, and whom it serves. European Compute Units, or ECUs, convert those commitments into access to Mistral-built infrastructure over multiple years. Participants can use that capacity across the range of products available on Mistral Compute as their needs evolve.</p>\n<h2>A framework for advancing AI sovereignty.</h2>\n<p>Europe is the place where this framework begins, but the same challenge exists everywhere: organizations and governments need to harness the power of frontier AI for their mission-critical  needs without surrendering control over the infrastructure and intelligence loop.</p>\n<p>The path will differ by region, but the foundations are the same: operational control, choice of intelligence, and assured access to compute. Europe can show how these elements come together to create an AI ecosystem that remains open to global innovation while preserving institutional autonomy.</p>\n<p>That is the model Mistral is building toward: one in which enterprises, public institutions, and startups can use the best AI available, shape it around their own knowledge, and retain the value it creates.</p>\n",
      "date_modified": "2026-08-11T12:00:27+00:00",
      "date_published": "2026-08-11T12:00:27+00:00",
      "external_url": "https://mistral.ai/news/regional-inference-open-models-new-compute/",
      "id": "urn:aggr:item:a28adad2cfce88a3780944218681506ad9d31a6a",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Blog-GLM-OptB.jpg",
      "summary": "Mistral is bringing together the inference infrastructure, open models, and long-term commitments Europe needs to control its AI future, and setting a roadmap for the world.",
      "tags": [
        "ai"
      ],
      "title": "In-region inference, open models, and new European infrastructure for sovereign AI.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-08-11-in-region-inference-open-models-and-new-european/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Shieldstral introduces a 3B open-weights multimodal safety classifier that outperforms models up to 7x its size by framing content moderation as a policy-adaptive question-answering task. Unlike traditional guardrail models, it accepts plain-language policies at inference time, unifying text and image safety evaluation without retraining. Released under Apache 2.0, it delivers calibrated safety scores across diverse benchmarks while running efficiently on a single 16GB NVIDIA GPU.</p>\n<p><strong>A 3B open-weights, policy-adaptive multimodal safety classifier that matches models up to 7x its size on text safety and sets a new state of the art on multimodal moderation.</strong></p>\n<p>“Does this content promote violence against a protected group? Is this image safe to show to a minor? Did the assistant refuse the request?”</p>\n<p>Every product that ships a model needs to answer questions like these — but the right answer depends on the product, the audience, and the moment. The same content can be fine for a cybersecurity research tool and harmful on a mental-health platform. Most guardrail models bake a fixed taxonomy of harm categories into their weights, so re-targeting them to a new deployment context means retraining. And because safety definitions differ across applications and domains, there is no single &quot;correct&quot; set of categories to model in the first place.</p>\n<p>Shieldstral takes a different approach: you write the policy as a plain-language question at inference time, and the model returns a calibrated safety score. No retraining, one interface for text and images, and a verdict from a single token. Please refer to our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2607.25857\">technical report</a> here.</p>\n<p>As an inaugural member of the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://blogs.nvidia.com/blog/open-secure-ai-alliance/\">Open Secure AI Alliance</a> with NVIDIA and other organizations, today we're releasing <strong>Shieldstral</strong> as open weights under Apache 2.0, available for download <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/mistralai/Shieldstral-1.0-3B\">here</a>.</p>\n<h2>Moderation as a question</h2>\n<p>Shieldstral frames content moderation as a <strong>binary question-answering task</strong>. Each request has three parts:</p>\n<ul>\n<li>\n<p><code>&lt;Instruct&gt;</code> — the evaluation context, strictness, and (optionally) a definition of what counts as unsafe content.</p>\n</li>\n<li>\n<p><code>&lt;Query&gt;</code> — a single yes/no question, e.g. <em>&quot;Does this content promote physical violence?&quot;</em></p>\n</li>\n<li>\n<p><code>&lt;Document&gt;</code> — the content to judge: a prompt, a response, a prompt–response pair, or an image with optional text.</p>\n</li>\n</ul>\n<p>At inference the model reads out only the <code>yes</code> and <code>no</code> logits and softmax-normalizes them into a continuous safety score. This one simple formulation does a lot of work: it unifies prompt classification, response moderation, refusal detection, and toxicity detection into a single problem; it lets policies live entirely in the prompt, so one checkpoint adapts to novel policies at deployment time.</p>\n<h2>Highlights</h2>\n<ul>\n<li>\n<p><strong>Strong performance</strong> — matches or outperforms open guard models up to 7× its size across text safety, refusal detection, policy adaptability, and multimodal benchmarks.</p>\n</li>\n<li>\n<p><strong>Adaptive and flexible</strong> — a single natural-language interface covers text, image, and text+image content across prompts, responses, and prompt–response pairs. Policies are supplied as free-form queries and re-targeted at inference time, without retraining.</p>\n</li>\n<li>\n<p><strong>Small, trained on heterogeneous sources</strong> — a 3B model that runs on a single 16GB GPU, trained on real and synthetic data with diverse label formats and taxonomies, consolidated into one framework.</p>\n</li>\n<li>\n<p><strong>Continuous safety score</strong> — returns a calibrated <code>yes</code>/<code>no</code> probability from a single forward pass, so you can threshold or rank by confidence rather than relying on a discrete label.</p>\n</li>\n<li>\n<p><strong>Open</strong> — Apache 2.0 weights.</p>\n</li>\n</ul>\n<h2>Benchmarks</h2>\n<p>We evaluate Shieldstral against open guard models up to 7x its size across four axes. All evaluation samples are held out from training.</p>\n<h2>How we built it</h2>\n<p>The core idea is that a small model can beat much larger ones if the data is right. Getting the data right meant solving four problems:</p>\n<p><strong>Unify heterogeneous data.</strong> Public safety datasets disagree on taxonomies, labels, and annotation conventions — from binary safe/unsafe flags to fine-grained multi-label taxonomies. We convert every dataset into the same instruction–query–document format with a per-dataset processor, and we vary the wording of instructions, queries, and prompt–response delimiters so the model generalizes across phrasing instead of overfitting to one style. We also calibrate strictness per source — strict for adversarial jailbreaks, lenient for response-quality data — so the model learns <em>calibrated</em> decision boundaries. This lets us consolidate sources that would otherwise be incompatible.</p>\n<p><strong>Teach discrimination, not memorization.</strong> If trained on a fixed set of policy labels, a model learns only to classify those predefined policies, rather than reasoning about the precise boundaries of a given policy. This prevents generalization to novel policies. Instead, we construct sets of deliberately similar, easily confused policies and ask an LLM to rewrite safe text into contrastive pairs: each rewrite is engineered to violate one policy but not its sibling. This trains the model to <em>distinguish which specific policy a piece of content violates</em>, a skill that transfers to unseen, user-defined policies at inference time.</p>\n<p><strong>Ground safety in images.</strong> Unsafe images can't be synthezised by an LLM the way text can, so visual safety data is scarce. We supplement limited moderation datasets with general-purpose image datasets as high-quality negatives, mutate queries to augment the dataset, and filter every image–query pair through a vision–language reranker to reduce mislabeled data and hallucinations.</p>\n<p><strong>Combine complementary checkpoints.</strong> We fine-tune with LoRA and merge — via SLERP — a checkpoint calibrated on public data, one that adds fine-grained policy discrimination from generated data, and the base instruct model. The merge recovers common policy calibration and policy adaptability in a single model, and instruction-following from the base model transfers to the moderation task.</p>\n<p><strong>Forge</strong>. We built Shieldstral end to end on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/forge/\">Forge</a>, our platform for training, aligning, and evaluating custom models. Forge managed the infrastructure, data and model sharding, metrics, and logging on top of state-of-the-art distributed training, so the team could stay focused on the data which is what determines the safety model's quality.</p>\n<h2>What's next</h2>\n<p>Shieldstral is a step toward moderation that adapts to context instead of forcing every product through one frozen taxonomy. We're continuing to push on multilingual coverage, longer-document robustness, and broader multimodal safety — and we'd love to see what the community builds on top of it.</p>\n<p><em>BTW, we're hiring! If you want to help make AI better, see our</em> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\"><em>careers page</em></a><em>.</em></p>\n",
      "date_modified": "2026-08-04T12:00:26+00:00",
      "date_published": "2026-08-04T12:00:26+00:00",
      "external_url": "https://mistral.ai/news/shieldstral/",
      "id": "urn:aggr:item:4fc95036f6ab89561d7dacd15cdd834a71c5920a",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Model%3DShieldstral.jpg",
      "summary": "Shieldstral introduces a 3B open-weights multimodal safety classifier that outperforms models up to 7x its size.",
      "tags": [
        "ai"
      ],
      "title": "Introducing Shieldstral.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-08-04-introducing-shieldstral/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Most enterprises struggle with unmanaged, scattered AI prompts and skills, leading to inconsistent behavior and untraceable issues. Studio provides a centralized system of record for versioning, ownership, and traceability, enabling fast iteration and controlled deployment while maintaining compliance. By treating prompts as production assets with immutable versions, clear ownership, and audit logs, Studio ensures AI behavior is governed, discoverable, and aligned with business policies.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Thumbnail-Skillsandprompts-1_10laEh.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Most enterprises can't say which version of a prompt is running in their AI right now. The instructions that decide how that AI behaves get scattered the moment more than one team touches them, leading to an inconsistent experience for users and an untraceable problem for teams.</p>\n<p>As of today, Studio gives your Prompts and Skills a system of record: a single place where each one is versioned, owned, and traceable.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=nxhRrry5UiY\">www.youtube.com</a></p>\n<h2><strong>Prompts and skills outgrew the way they're managed</strong></h2>\n<p>Prompts and Skills are production assets. They hold the business logic, the tone, and the policy your AI follows when it answers a customer or makes a call. What your AI does in front of a customer comes down to the prompts and skills in use. When that behaviour is wrong, the fix has to ship as fast as any production incident, not wait for the next code release.</p>\n<p>And in most enterprises, they're managed like scratch notes. Prompts started as quick experiments, then they shipped. Now they sit in code repos, notebooks, and Slack threads, with no clear owner and no shared history. Skills get rebuilt, or forked by one team because they lacked visibility to another team’s version.</p>\n<p>In many enterprises, prompts already live in version-controlled code, which means tracking changes was never the hard part. The friction is elsewhere. The people who understand the instructions best, the line-of-business teams who set the policy and the wording, don't work in the codebase, so every change waits on an engineer. And refining an instruction takes iteration and testing, which a codebase makes expensive: one version ships at a time, and every attempt means editing code and waiting for a deploy.</p>\n<p>So most teams stop iterating early. They ship a version that's good enough and then may leave it, and the instructions that shape every customer answer can stay well short of what they could be.</p>\n<h2><strong>Iterate fast, ship with control</strong></h2>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=v_LttjsevRg\">www.youtube.com</a></p>\n<p>While you're building, iterating on an instruction should be quick. In code, even a one-line change to a prompt can mean waiting on a CI run before you see how it behaves. Studio lets any AI builder, developer or not, edit a prompt or skill and test it right away, without a pipeline run for every attempt.</p>\n<p>Shipping to production is different, and it should be. A change bound for production goes through the tests and approvals your enterprise already requires. What changes is who can drive it. A domain expert or line-of-business owner can improve a production instruction the same way a developer would, and the promotion using simple labels still triggers your CI/CD, for example through the SDK in a GitHub Actions workflow. The people closest to the work improve the behaviour, inside the controls you already run.</p>\n<p>Because every asset is governed and discoverable, good work spreads instead of getting rebuilt. Anything in a workspace is available to that whole team today, so a prompt one person gets right is usable by their colleagues at once.</p>\n<h2><strong>A system of record for AI behavior.</strong></h2>\n<p>Studio treats every prompt and skill as a tracked, versioned asset with an owner, a full history, and a lineage.</p>\n<ul>\n<li>\n<p><strong>Immutable versions.</strong> Every version is recorded and fixed. A version that shipped can't be quietly changed after the fact, so the record always matches what ran.</p>\n</li>\n<li>\n<p><strong>Rollback.</strong> Compare any two versions, see exactly what changed, and revert to a known-good version in minutes.</p>\n</li>\n<li>\n<p><strong>Clear ownership.</strong> Every asset has a named owner, so there's always an audit trail to track changes.</p>\n</li>\n<li>\n<p><strong>Classification labels.</strong> Helps call or find the right prompts and skills by their labels easily (e.g. “Production” vs “Staging”).</p>\n</li>\n<li>\n<p><strong>Audit logs.</strong> Each change is logged with who made it and when. The trail an auditor will ask for exists by default.</p>\n</li>\n</ul>\n<h2><strong>The part a standalone catalog can't do.</strong></h2>\n<p>A separate prompt tool can list your assets. It can't tell you whether they work, because it sits outside the system that runs them.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/pasted-image_1jTeHE.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Because your prompts and skills live where your AI runs, Studio can connect them to how it actually behaves. Through Observability, lineage and telemetry trace a production output back to the version of the asset behind it, and back to the usage that prompted the last change. The skills your agents run are reachable as MCP servers straight from Studio, so what executes in production is the same governed asset you versioned, not a copy that drifted. You define behaviour, watch it run, and improve it, all against one source of truth. That closed loop is the difference between cataloging your AI and governing it.</p>\n<h2><strong>Control for the people who answer to auditors.</strong></h2>\n<p>Ungoverned prompts are a liability for the people who answer to auditors. They embed data-handling rules and policy decisions someone will eventually have to defend, and today they often live where no compliance team can see them.</p>\n<p>Studio changes the default. Every asset moves through a clear path to production, from a staging version to a tagged production version, so shipping a change is deliberate rather than accidental.</p>\n<p>An asset starts as visible only to its creator, then when appropriate can be promoted to the workspace and, in time, across the organisation, with control over who can use it at each step. Across every deployment mode, your data stays inside your perimeter.</p>\n<h2><strong>Available now in Studio.</strong></h2>\n<p>Prompts and skills are available to Mistral Studio customers today. If you run AI in production, Studio turns scattered prompts and skills into governed assets you can trust.</p>\n<p>Read documentation:</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/getting-started/quickstarts/studio/create-reusable-prompt\">Create reusable prompts in Studio</a></p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/getting-started/quickstarts/studio/create-skill\">Create reusable skills in Studio</a></p>\n<p>Or explore <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/prompts\">Prompts</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/skills\">Skills</a> in Studio.</p>\n",
      "date_modified": "2026-07-09T12:00:00+00:00",
      "date_published": "2026-07-09T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/manage-prompts-and-skills-in-studio/",
      "id": "urn:aggr:item:2d1f2b2bcd2c2fae03304388b6d9d9c1a25299ca",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Skillsandprompts.jpg",
      "summary": "Studio provides a system of record for AI prompts and skills—versioned, owned, and traceable. Iterate fast, ship with control, and ensure consistent AI behavior.",
      "tags": [
        "ai"
      ],
      "title": "Your Prompts and Skills need a system of record.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-07-09-your-prompts-and-skills-need-a-system-of-record/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Robostral Navigate is an 8B model that enables robots to autonomously navigate complex environments using only a single RGB camera, achieving 76.6% success on unseen R2R-CE benchmarks—outperforming multi-sensor approaches while being more efficient. Built entirely in-house with simulated data and token-efficient techniques, it generalizes across robot types and adapts to real-world obstacles unseen during training. The model combines pointing-based navigation with reinforcement learning for continuous improvement, paving the way for unified embodied AI in robotics.</p>\n<p>Today we're introducing Robostral Navigate, our first model built for embodied navigation. It's an 8B model that takes RGB images and a plain-language instruction and moves a robot through an environment:</p>\n<blockquote>\n<blockquote>\n<p>“Leave the lobby, walk through the corridor, enter the supply room, and stop to face the second shelf.”</p>\n</blockquote>\n</blockquote>\n<p>To perform such tasks, other models often employ depth sensors, LiDAR, or several cameras working together. Robostral Navigate uses only one ordinary RGB camera and no depth sensors, yet still achieves 76.6% on R2R-CE (Room-to-Room in Continuous Environments) validation unseen, the benchmark for following instructions in environments held out of training. Consequently, it beats the best single-camera approach by 9.7 points and the best system using depth or multiple cameras by 4.5 points, despite using neither.</p>\n<h2><strong>Navigation</strong></h2>\n<p>Our model is designed for robotic navigation, enabling robots to autonomously navigate complex environments, including offices, residential and commercial buildings, and outdoor settings.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=7dpLB9NoY1A\">www.youtube.com</a></p>\n<p><em>Robostral Navigate running fully autonomously in one long-horizon instruction route through a working office.</em></p>\n<p>This technology unlocks numerous applications across manufacturing, delivery, logistics, and hospitality, making it one of the most in-demand capabilities for our customers today. Give Robostral Navigate one instruction and it completes the entire task on its own, moving through a live space full of people and obstacles it was never shown, capable of adapting to any setting.</p>\n<h2><strong>Highlights</strong></h2>\n<ul>\n<li>\n<p>State-of-the-art performance on R2R-CE</p>\n</li>\n<li>\n<ul>\n<li>\n<p><strong>79.4% Success Rate</strong> on validation seen</p>\n</li>\n<li>\n<p><strong>76.6% Success Rate</strong> on validation unseen</p>\n</li>\n</ul>\n</li>\n<li>\n<p>Operates from a single RGB camera, with no LiDAR or depth sensors</p>\n</li>\n<li>\n<p>8B model, built in-house and trained entirely in simulation</p>\n</li>\n<li>\n<p>Runs on wheeled, legged, and flying robots, and generalizes across robot sizes</p>\n</li>\n<li>\n<p>Robust to differences in camera intrinsics</p>\n</li>\n<li>\n<p>Token-efficient training via prefix-caching</p>\n</li>\n</ul>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/cms-media/api/media/file/model-performance-comparison-(success-rate-%E2%86%91)%203-1.svg\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/cms-media/api/media/file/model-performance-comparison-(oracle-success-rate-%E2%86%91)%203-1.svg\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/cms-media/api/media/file/model-performance-comparison-(success-weighted-by-path-length-%E2%86%91)%203-1.svg\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/cms-media/api/media/file/model-performance-comparison-(navigation-error-%E2%86%93)%203-1.svg\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2><strong>Navigation via pointing</strong></h2>\n<p>Given a task and a history of observations, Robostral Navigate predicts where the robot should move next via <em>pointing</em>: it infers the image coordinates of the target location in the robot's current camera view, together with the desired orientation upon arrival. Unlike commands relying on metric displacements, pointing makes the policy naturally robust to changes in camera intrinsics and world scale.</p>\n<p>However, this method cannot handle cases where the target location lies outside the current field of view. When pointing does not apply, the model falls back to displacements in the robot's local coordinate frame, such as:</p>\n<blockquote>\n<blockquote>\n<p>&quot;Move 2 meters forward, 1.5 meters to the left, and turn 25 degrees left.&quot;</p>\n</blockquote>\n</blockquote>\n<h2><strong>Built from the ground up</strong></h2>\n<p>Robostral Navigate is built entirely in-house and does not rely on existing open-source VLMs.</p>\n<p>The model is initialized from our vision-language model specialized for grounding tasks such as pointing, counting, and object localization. Navigation emerges as a natural extension of these capabilities: once it understands where things are, it learns how to move.</p>\n<p>We built an efficient data generation pipeline entirely in simulation. This enabled rapid iteration on the data, resulting in a dataset of approximately <strong>2.4 million trajectories collected across 350k scenes</strong>.</p>\n<h2><strong>Efficient supervised training</strong></h2>\n<p>A key ingredient of Robostral Navigate is an efficient training algorithm based on prefix-caching. Using a tree-based attention-masking strategy, our method compresses an entire episode into a single sequence, enabling training on all time steps in a single forward pass while preventing information leakage between time steps.</p>\n<p>Compared to training with one sample per time step, our approach reduces the number of training tokens by <strong>22×</strong> while preserving all of the learning signals. In practice, this method <strong>transforms training runs that would take months into runs that complete in days.</strong></p>\n<p><strong>Online reinforcement learning</strong></p>\n<p>We leverage our knowledge of post-training LLMs at scale, using online reinforcement learning, to boost the performance of Robostral Navigate. After the supervised training stage, we further improve the model's performance using CISPO, an online reinforcement learning algorithm. This enables the model to learn from trial and error, recover from failures, and acquire exploratory behaviors, effectively mitigating the distribution shift issue of vanilla behavior cloning. This alone improved the success rate by 3.2%. We are not seeing any plateauing, so we are confident that more training and more experiments will continue to push this number up.</p>\n<h2><strong>What's Next</strong></h2>\n<p>Robostral Navigate is only the first step toward a unified embodied agent.</p>\n<p>We believe navigation is a foundational capability for general-purpose robotics. By combining large-scale simulation, efficient training, and strong grounding priors, Robostral Navigate demonstrates that state-of-the-art embodied navigation can be achieved with a compact model and a single RGB camera.</p>\n<p>Start your journey to embodied frontier AI, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">talk with our team</a>.</p>\n<h2>BTW, we're hiring!</h2>\n<p>The release of our navigation models marks a significant step forward, but our journey is far from over. Our ambition is to enable robots to autonomously navigate complex environments—offices, homes, commercial buildings, and outdoor spaces—and there's a lot more work to do. We are actively expanding our robotics team and looking for talented research scientists and engineers who share our ambition.</p>\n<p>If you're interested in joining us on our mission to bring seamless navigation to robots everywhere, we welcome your applications <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://jobs.ashbyhq.com/mistral.ai?departmentId=f96aa804-10b5-45e7-8132-560137936a6b\">to join our team!</a></p>\n<p><em>By Théo Cachet, Arjun Majumdar, Srijan Mishra, Thomas Chabal, Chris Bamford, Elliot Chane-Sane, Benjamin Tibi, Ludovic Ho Fuh, Olivier Duchenne - AI Science Robotics</em></p>\n",
      "date_modified": "2026-07-08T12:00:59+00:00",
      "date_published": "2026-07-08T12:00:59+00:00",
      "external_url": "https://mistral.ai/news/robostral-navigate/",
      "id": "urn:aggr:item:118cdd4c6709fe719bd6b3714a98462742dc5f85",
      "image": "https://mistral.ai/cms-media/api/media/file/Robostral-navigate.jpg",
      "summary": "Introducing Robostral Navigate: 8B model achieving 76.6% on R2R-CE with just a single RGB camera. No depth sensors, LiDAR, or multiple cameras needed.",
      "tags": [
        "ai"
      ],
      "title": "Introducing Robostral Navigate",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-07-08-introducing-robostral-navigate/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Leanstral 1.5, a free Apache-2.0 licensed model with 6B active parameters, delivers a major performance upgrade in formal verification, saturating miniF2F, solving 587/672 PutnamBench problems, and achieving state-of-the-art results on FATE-H (87%) and FATE-X (34%). Trained through mid-training, supervised fine-tuning, and reinforcement learning with CISPO, it excels in agentic proof engineering and real-world code verification, uncovering 5 previously unknown bugs across 57 repositories tested. Fully open-sourced and available via Hugging Face and a free API, Leanstral 1.5 is now accessible for practical proof engineering in Lean 4.</p>\n<p>Since its launch, Leanstral has offered an open, practical approach to proof engineering in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://leanprover.github.io/\">Lean 4</a>. Today, we are releasing <strong>Leanstral 1.5</strong>, a free Apache-2.0 licensed model with 119B total and only 6B active parameters, delivering a performance upgrade that makes formal verification more powerful and accessible than ever.</p>\n<p>Leanstral 1.5 <strong>saturates miniF2F</strong>, solves <strong>587/672 PutnamBench problems</strong>, and achieves a new state-of-the-art of <strong>%87 on FATE-H</strong> and <strong>34% on FATE-X</strong>. Beyond benchmarks, it verifies complex code properties and <strong>uncovers previously unknown bugs in open-source repositories</strong>—proving that rigorous formal methods can be both effective and practical for real-world use.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Leanstral-charts_Z1KXfze.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2><strong>Training Leanstral</strong></h2>\n<p>Leanstral 1.5 goes through a three-stage process: mid-training, supervised fine-tuning, and reinforcement learning with CISPO. Leanstral 1.5 leverages extensive training on two RL environments:</p>\n<p>In the <strong>multiturn environment</strong>, the model is given a theorem statement and must either prove or disprove it. The model submits a proof, receives Lean compiler feedback, and refines its approach with each attempt. If the proof compiles it succeeds; otherwise the loop continues until the model either solves the problem or exhausts its budget.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Multiturn%20Lean%20verifier%20flow_Z2kh6w9.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>In the <strong>code agent environment</strong>, Leanstral operates like a developer in a raw filesystem: it edits files, runs bash commands, and uses the Lean language server to inspect goals, errors, and type information in real time. This allows it to tackle long-horizon tasks like completing partial proofs in a repository, building auxiliary lemmas, and persisting through multiple rounds of context compaction. The model learns to navigate the full proof-engineering workflow and is finally verified by <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai/LeanstralSafeVerify\">our fork of SafeVerify</a> for correctness given a list of target theorems.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Agentic%20Prover%20Figure%20Recreation_19csvW.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2><strong>Evaluation</strong></h2>\n<p>We evaluate Leanstral on the following benchmarks:</p>\n<ul>\n<li>\n<p><strong>miniF2F</strong> is a cross-system benchmark for formal mathematics, ranging from elementary problems to IMO-level challenges, testing diverse proof abilities across algebra, combinatorics, and number theory.</p>\n</li>\n<li>\n<p><strong>PutnamBench</strong> consists of 672 problems from the Putnam Mathematical Competition, requiring deep reasoning and long proof chains to solve challenging mathematical problems.</p>\n</li>\n<li>\n<p><strong>FATE-H and FATE-X</strong> are abstract algebra benchmarks for graduate and PhD-level problems, respectively, testing advanced reasoning in areas like group theory, ring theory, and module theory.</p>\n</li>\n<li>\n<p><strong>FLTEval</strong> is based on real pull requests from the Fermat’s Last Theorem repository, testing practical proof engineering with real-world complexity.</p>\n</li>\n</ul>\n<p>We saturate miniF2F completely, reaching 100% on both the validation and test sets. On PutnamBench and FATE-H/X, we compare Leanstral 1.5 against Goedel-Architect without natural-language guidance, Seed-Prover 1.5 at its high setting, and AxProverBase. Leanstral reaches a new state-of-the-art on FATE-H/X, solving 87 and 34 problems respectively. On PutnamBench, it edges out Seed-Prover 1.5 high by 7 problems at far lower cost: about $4 per problem, against an estimated $300 or more for Seed-Prover, whose high setting runs with a budget of 10 H20-days per problem. The only provers ranked higher operate under different conditions—some receive natural-language proof guidance, others cost far more to run, like Aleph Prover at $54–68 per problem.</p>\n<p>Leanstral 1.5 shows the strongest test-time scaling we have seen from a formal-reasoning model. The figure below tracks Pass@8 on PutnamBench as we raise the token budget per attempt from 25k to 4M: performance climbs smoothly and monotonically the whole way, from 44 problems solved at 50k to 244 at 200k, 493 at 1M, and 587 at 4M. Rather than giving up when a proof runs long, Leanstral keeps reasoning, editing files, and revising across millions of tokens, turning that budget directly into solved problems—the same behavior behind the AVL-tree proof below, which ran for over 2.7 million tokens across 22 compactions.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/putnambench_test_time_scaling_NUlqb.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>With this release, we also fully open source <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai/FLTEval\">FLTEval</a>. Leanstral 1.5 lifts pass@1 on the benchmark from 21.9 to 28.9 and pass@8 from 31.9 to 43.2, surpassing Opus 4.6's 39.6 at one-seventh the cost. It also widens its lead over open-source models 3–10× larger, as shown in the figure below.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/chart-2_ZSNQjN.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2><strong>Code Verification Case Studies</strong></h2>\n<p>While being primarily trained for mathematics, Leanstral 1.5 exhibits strong abilities in code verification. We present 2 critical case studies to demonstrate its impact.</p>\n<h3><strong>AVL Trees: Proving Time Complexity</strong></h3>\n<p>AVL trees are self-balancing binary search trees that maintain O(log n) height through rebalancing during insertions and deletions. Leanstral 1.5 proved these time complexity guarantees for a real implementation—a task that required structural induction to mirror the tree’s recursive structure, careful handling of monadic time tracking, and exhaustive case analysis for rebalancing paths. Over 2.7 million tokens and 22 compactions, Leanstral systematically unfolded each layer of the TimeM monad, exposing the underlying computations despite their interleaving with control flow. It established an almost tight bound of 48 steps per height unit plus a constant for insertion, then connected height to tree size via a logarithmic relationship, delivering complete, verified proofs that insertion and deletion are indeed O(log n).</p>\n<h3><strong>Bug Discovery: Finding Hidden Flaws</strong></h3>\n<p>To test Leanstral’s bug-catching abilities, we built an automated pipeline: Aeneas translates Rust code to Lean, while Leanstral infers the user intent and generates correctness properties from the code. Leanstral then attempts to prove each property in four attempts. If they all fail, it tries to prove the negation instead, also with four attempts. Across 57 tested repositories, this process flagged 47 violated properties, with 11 pointing to genuine bugs—5 of them previously unreported on GitHub.</p>\n<p>One such bug was in the sign function for zigzag decoding of the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/datrs/varinteger\">datrs/varinteger</a> library. On input Std.U64.MAX, the expression (value + 1) overflowed, causing crashes in debug mode and silent corruption in release mode—an edge case that testing and fuzzing would typically miss. Leanstral’s pipeline caught it automatically, demonstrating that formal verification can already be applied to real-world codebases and find bugs that some traditional methods overlook.</p>\n<h2><strong>Get Started</strong></h2>\n<p>Leanstral 1.5 has a <strong>Apache-2.0</strong> license. The weights can be found <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/mistralai/Leanstral-1.5-119B-A6B\">on Huggingface</a>, while also being available now <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/model-cards/leanstral-1-5\">as a free API endpoint</a> as <code>leanstral-1-5</code>. We recommend using it in Mistral Vibe. To begin your journey, grab an API Key, and:</p>\n<p><strong>1. Set up Mistral Vibe</strong></p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">uv</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> tool install mistral-vibeuv tool update mistral-vibevibe<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>setup</span></span>\n</span></span></code></pre>\n<p><strong>2. Install Leanstral 1.5</strong></p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">/leanstallexit</span></span>\n</span></span></code></pre>\n<p><strong>3. Launch the agent</strong></p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">vibe</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>agent</span> lean</span>\n</span></span></code></pre>\n<p><strong>4. Install Lean LSP MCP (Optional)</strong></p>\n<p>It is highly recommended to install <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/oOo0oOo/lean-lsp-mcp\">Lean LSP MCP</a> by adding the following to your <code>~/.vibe/config.toml</code></p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-structure syntax-list syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-list syntax-begin syntax-python\">[</span><span class=\"syntax-meta syntax-structure syntax-list syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-list syntax-begin syntax-python\">[</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">mcp_servers</span></span><span class=\"syntax-punctuation syntax-section syntax-list syntax-end syntax-python\">]</span></span><span class=\"syntax-punctuation syntax-section syntax-list syntax-end syntax-python\">]</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">name</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">lean-lsp<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">transport</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">stdio<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">command</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">uvx<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">args</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-structure syntax-list syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-list syntax-begin syntax-python\">[</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">lean-lsp-mcp<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-section syntax-list syntax-end syntax-python\">]</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">tool_timeout_sec</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-constant syntax-numeric syntax-integer syntax-decimal syntax-python\">600</span>\n</span></span></code></pre>\n<p>If there are no existing MCP servers, you may have to remove <code>mcp_servers = []</code>.</p>\n<p><strong>5. Start proving</strong></p>\n<p>Ask Leanstral to tackle a theorem, debug a proof, or contribute to a repository. It’s that simple.</p>\n",
      "date_modified": "2026-07-02T13:55:54+00:00",
      "date_published": "2026-07-02T13:55:54+00:00",
      "external_url": "https://mistral.ai/news/leanstral-1-5/",
      "id": "urn:aggr:item:840d327f6768eef044a4aab83793f35eff9fa13a",
      "summary": "Thinking Summary Leanstral 1.5, a free Apache-2.0 licensed model with 6B active parameters, delivers a major performance upgrade in formal verification, saturating miniF2F, solving 587/672 PutnamBench problems, and achieving…",
      "tags": [
        "ai"
      ],
      "title": "Leanstral 1.5: Proof Abundance for All",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-07-02-leanstral-1-5-proof-abundance-for-all/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>New admin controls let you manage connector access per workspace or org, while API keys with scoped permissions and multi-account connectors enhance security for automated AI workloads. The Connectors Debugger provides detailed root cause analysis for broken connections, and integrations in Workflows and Vibe Code ensure seamless, governed access to enterprise tools. Over 60 pre-built connectors are available, with custom MCP options for additional platforms.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/cover-connector-1_Zx93lD.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Govern which tools run where, connect more than one account to a single connector, and trace any connection that breaks.</h2>\n<p>Today, we are introducing several new capabilities in Connectors for a more secure experience integrating to external enterprise platforms. Starting now, you can use:</p>\n<ul>\n<li>\n<p><strong>Enriched admin controls</strong> (GA) to set connector access per workspace and switch individual tools on or off across an org or workspace</p>\n</li>\n<li>\n<p><strong>API keys with connector scopes</strong> (GA) to prevent impersonation in automated AI workloads that integrate with 3rd-party systems</p>\n</li>\n<li>\n<p><strong>Multi-account connectors</strong> (GA) allowing users to authenticate to a single connector with multiple accounts</p>\n</li>\n<li>\n<p><strong>Connectors Debugger</strong> (Public Preview) for end-to-end root cause analysis for MCP connectors</p>\n</li>\n<li>\n<p><strong>Connectors in Vibe Code</strong> (GA) to reuse your connectors in developer interfaces</p>\n</li>\n<li>\n<p><strong>Connectors in Workflows</strong> (Public Preview) allow for uninterrupted long-running tasks powered by all the tools you need</p>\n</li>\n</ul>\n<p>Async agents are moving into everyday work. For an agent to be trustworthy and useful inside an organization, it needs real enterprise data: CRM records, repositories, inboxes, knowledge bases. Connecting an agent to that data in a demo is easy. Running it in production is where most setups stall.</p>\n<p>Production connectivity has a few non-negotiables. A connector should respect two sets of rules at once: the permissions already set in the source platform, and the controls your administrators set in Mistral Studio or Vibe. Automated work should run on behalf of a user or a service account, never impersonate the person who wrote it. When a connection breaks, you should be able to find out why. And an administrator should be able to decide, down to the individual tool, what is available in each part of the organization.</p>\n<h2>More control over what connectors can do</h2>\n<p><strong>Enriched admin controls</strong> work at two levels: across your teams, and inside each connector.</p>\n<ul>\n<li>\n<p><strong>Workspace and org controls</strong> let you give each team its own connector access. Your finance workspace can reach internal data sources with no open web access, while engineering gets developer tools and the internet. Same directory, different rules per team.</p>\n</li>\n<li>\n<p><strong>Tool-level controls</strong> go a step deeper. Inside any connector, turn individual tools on or off for a whole org or one workspace. Block anything that writes data, or one specific action like <code>delete_file</code> on a knowledge base. The connector stays connected; only the tools you approve can run.</p>\n</li>\n</ul>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/media-connectors_Z1KXkTd.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><strong>API keys with connector scope</strong> handle identity. When you create a key, you choose whether it reaches only a workspace's shared connectors or your private ones too, so an automated job runs with exactly the access it needs. Paired with service accounts, automated work runs as a defined identity, never as the person who wrote it.</p>\n<p><strong>Multi-account connectors</strong> let one connector hold more than one login. Connect a personal and a work account to the same connector, set a default, and switch between them per task. Each account is stored and refreshed on its own, so an agent acts in the right one without you standing up a second connector.</p>\n<h2>See why a connection fails</h2>\n<p><strong>Connectors Debugger</strong>  tells you exactly where a connection breaks. Point it at an MCP server URL, add OAuth credentials if the server needs them, and run the check. It walks the connection through 11 steps, from reaching the server to opening the MCP session, and logs each one. A failure that used to mean guesswork, like a broken OAuth token exchange, shows up at the exact step it happens.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=QjoTkonLub4\">www.youtube.com</a></p>\n<h2><strong>Connectors</strong> in Workflows and Vibe for Code</h2>\n<p><strong>Connectors in Workflows</strong> keep long and scheduled runs from breaking on auth. You declare the connectors a Workflow needs, and the accounts it should run with, right in the Workflow definition; Studio resolves those dependencies when you start a run. Personal credentials stay out of automated work, and a job won't fail halfway because a token expired. A nightly run can pull from a CRM, update a tracker, and read a knowledge base across the whole job without dropping a connection.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=hUPcLLti5x0\">www.youtube.com</a></p>\n<p><strong>Connectors in Vibe Code</strong> bring the same governed access to the coding agent. Type <code>/connectors</code> to pick from local MCP servers and the workspace connectors your admins approved, choose which tools to enable, and start a task. Async agents can reach Outlook, Jira, Notion, Linear, and Confluence under the same rules you set everywhere else.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=AR2IedLkEHo\">www.youtube.com</a></p>\n<p>We're adding connectors continuously. The directory now covers more than 60 integrations, and when the platform you need isn't listed, a custom MCP connector fills the gap.</p>\n<p>Knowledge, Data &amp; AI</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-atlassian-black_ZQzuqS.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Atlassian (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-atlassian-white_1ntKJl.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Atlassian (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Atlassian</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-bigquery-black_2izCJD.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-BigQuery (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-bigquery-white_ZwxeS4.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-BigQuery (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>BigQuery</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-box-black_1Q5I8m.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Box (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-box-white_ZY29ul.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Box (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Box</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-google-drive-black_Z1LVse6.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Google Drive (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-google-drive-white_s7MW8.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Google Drive (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Google Drive</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-notion-black_cuHVA.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Notion (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-notion-white_2ryY7O.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Notion (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Notion</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-sharepoint-black_Z16dYN9.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-SharePoint (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-sharepoint-white_18Pgn5.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-SharePoint (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>SharePoint</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-databricks-black_2rw3LO.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Databricks (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-databricks-white_ZnANPS.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Databricks (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Databricks</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-mdn-black_w25Yd.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-MDN (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-mdn-white_Z2j5LDu.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-MDN (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>MDN</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-microsoft-learn-black_Z19Pejo.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Microsoft Learn (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-microsoft-learn-white_15e1QP.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Microsoft Learn (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Microsoft Learn</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-needle-black_Z1KNjAV.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Needle (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-needle-white_tfVzi.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Needle (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Needle</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-prisma-postgres-black_Z2liqik.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Prisma Postgres (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-prisma-postgres-white_Z6ea76.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Prisma Postgres (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Prisma Postgres</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-snowflake-black_Z1I9g2B.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Snowflake (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-snowflake-white_vU08C.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Snowflake (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Snowflake</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-supabase-black_ZxwHI3.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Supabase (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-supabase-white_1Gwxsb.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Supabase (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Supabase</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-synapse-black_Wx9i8.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Synapse (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-synapse-white_Z1RzIkz.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Synapse (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Synapse</p>\n<p>Machine Learning</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-deepwiki-black_2Xoiq.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-DeepWiki (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-deepwiki-white_2i2EtE.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-DeepWiki (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>DeepWiki</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-hugging-face-black_GCvPo.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Hugging Face (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-hugging-face-white_Z28ulMj.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Hugging Face (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Hugging Face</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-jina-black_Z117SBJ.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Jina (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-jina-white_1dVmyu.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Jina (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Jina</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-pinecone-black_Z3c4Il.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Pinecone (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-pinecone-white_2bRbrS.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Pinecone (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Pinecone</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-tavily-black_ZoFsG7.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Tavily (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-tavily-white_1PnMu7.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Tavily (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Tavily</p>\n<p>Communication &amp; Scheduling</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-gmail-black_O6iwB.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Gmail (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-gmail-white_Z211z66.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Gmail (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Gmail</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-google-calendar-black_4it5T.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Google Calendar (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-google-calendar-white_2jmJh8.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Google Calendar (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Google Calendar</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-outlook-black_Z8sKnJ.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Outlook (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-outlook-white_26AuMu.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Outlook (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Outlook</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-outlook-calendar-black_ZdtHCW.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Outlook Calendar (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-outlook-calendar-white_21zxxh.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Outlook Calendar (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Outlook Calendar</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-slack-black_2nOfv4.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Slack (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-slack-white_ZriC7D.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Slack (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Slack</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-brevo-black_2oWJik.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Brevo (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-brevo-white_Zqa8kn.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Brevo (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Brevo</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-clockwise-black_oJATP.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Clockwise (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-clockwise-white_Z2qngHR.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Clockwise (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Clockwise</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-fireflies-black_2vbkYk.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Fireflies (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-fireflies-white_ZjVwDn.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Fireflies (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Fireflies</p>\n<p>Work &amp; Customer Operations</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-asana-black_Zh1enC.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Asana (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-asana-white_1X31MB.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Asana (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Asana</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-linear-black_11y4Kc.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Linear (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-linear-white_Z1NyMRv.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Linear (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Linear</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-monday-black_Jp8Na.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Monday (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-monday-white_Z25HIOx.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Monday (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Monday</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-close-black_ZgLhaV.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Close (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-close-white_1XhY0i.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Close (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Close</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-hubspot-black_vAhSS.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-HubSpot (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-hubspot-white_Z2jwzIO.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-HubSpot (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>HubSpot</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-intercom-black_1xAJnI.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Intercom (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-intercom-white_Z1hw8eY.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Intercom (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Intercom</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-salesforce-black_MUFXw.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Salesforce (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-salesforce-white_Z22cbEb.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Salesforce (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Salesforce</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-servicenow-black_Z1P6gME.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-ServiceNow (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-servicenow-white_oWYnz.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-ServiceNow (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>ServiceNow</p>\n<p>Payments &amp; Financial Data</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-stripe-black_Z1P1Rwo.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Stripe (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-stripe-white_p2nDP.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Stripe (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Stripe</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-paypal-black_1KQYDS.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-PayPal (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-paypal-white_Z14fRXO.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-PayPal (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>PayPal</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-square-black_1qfFax.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Square (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-square-white_Z1oRcsa.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Square (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Square</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-plaid-black_ZzEfLO.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Plaid (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-plaid-white_1Ep0op.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Plaid (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Plaid</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-morningstar-black_ZJ9TBD.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Morningstar (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-morningstar-white_1uTlyA.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Morningstar (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Morningstar</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-kensho-black_Z2wCGrM.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Kensho (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-kensho-white_Zhyqgy.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Kensho (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Kensho</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-pigment-black_ZtOjeP.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Pigment (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-pigment-white_1KeVVo.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Pigment (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Pigment</p>\n<p>Analytics &amp; Business Intelligence</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-amplitude-black_2im1Tu.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Amplitude (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-amplitude-white_ZwKPId.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Amplitude (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Amplitude</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-hex-black_Z1NtJ8.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Hex (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-hex-white_2dfLr6.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Hex (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Hex</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-vantage-black_1w4lFA.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Vantage (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-vantage-white_Z1j3vW7.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Vantage (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Vantage</p>\n<p>Developer Platforms &amp; Infrastructure</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-github-black_RaQS3.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-GitHub (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-github-white_Z1WW0JE.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-GitHub (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>GitHub</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-cloudflare-developer-platform-black_ZINN8X.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Cloudflare Developer Platform (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-cloudflare-developer-platform-white_1vfs2g.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Cloudflare Developer Platform (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Cloudflare Developer Platform</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-netlify-black_bmhAg.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Netlify (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-netlify-white_2qqxLu.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Netlify (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Netlify</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-sentry-black_Z1cGtv5.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Sentry (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-sentry-white_12mLF9.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Sentry (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Sentry</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-stytch-black_eu0mE.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Stytch (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-stytch-white_2tygxS.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Stytch (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Stytch</p>\n<p>Automation &amp; Integration</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-apify-black_ZFCNAm.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Apify (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-apify-white_1yqrzR.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Apify (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Apify</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-n8n-black_W8VGo.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-n8n (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-n8n-white_Z1RXUVj.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-n8n (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>n8n</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-workato-black_ZnkTEW.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Workato (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-workato-white_1QIlvh.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Workato (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Workato</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-zapier-black_ZpOtEW.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Zapier (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-zapier-white_1OeLvh.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Zapier (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Zapier</p>\n<p>Research, Scientific &amp; Public Data</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-biorender-black_Z2dMKnF.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-BioRender (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-biorender-white_1guMy.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-BioRender (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>BioRender</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-datagouv-black_ZsCqM.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Data.gouv (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-datagouv-white_2eACJr.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Data.gouv (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Data.gouv</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-pubmed-black_ZxQIVO.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-PubMed (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-pubmed-white_1Gcwep.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-PubMed (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>PubMed</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-scholar-gateway-black_Z1ScDUk.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Scholar Gateway (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-scholar-gateway-white_lQBfT.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Scholar Gateway (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Scholar Gateway</p>\n<p>Content &amp; Media Management</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-bria-black_Z1KnDVJ.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Bria (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-bria-white_tFBeu.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Bria (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Bria</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-bright-black_Zeykdo.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Bright (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-bright-white_20uUWP.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Bright (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Bright</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-cloudinary-black_EtdvC.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Cloudinary (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-cloudinary-white_Z2aDE75.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Cloudinary (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Cloudinary</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-mermaid-black_1JtPqa.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Mermaid (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-mermaid-white_Z15D2cx.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Mermaid (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Mermaid</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-trivago-black_L1dFV.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Trivago (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-trivago-white_Z246DVL.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Trivago (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Trivago</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-website-publisher-black_1a6RtE.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Website Publisher (black)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-website-publisher-white_Z1F1093.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"connector-Website Publisher (white)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Website Publisher</p>\n<h2>Start building</h2>\n<p>Enterprise controls, Connector Credentials, and Connectors in Vibe Code are generally available now. Connectors Playground and Connectors in Workflows are in public preview. All of it is live in Studio.</p>\n<ul>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio-api/connectors/\">Connectors documentation</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/vibe/code/cli/connectors\">Connectors in Vibe Code documentation</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio-api/workflows/building-workflows/connectors\">Connectors in Workflows documentation and cookbooks</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/connectors\">Open the Studio console</a></p>\n</li>\n</ul>\n",
      "date_modified": "2026-06-24T12:00:30+00:00",
      "date_published": "2026-06-24T12:00:30+00:00",
      "external_url": "https://mistral.ai/news/more-control-over-connectors/",
      "id": "urn:aggr:item:91db1afff1888b0a5b2e5620878ffe0d2bbf08e0",
      "summary": "Thinking Summary New admin controls let you manage connector access per workspace or org, while API keys with scoped permissions and multi-account connectors enhance security for automated AI workloads. The Connectors Debugger provides…",
      "tags": [
        "ai"
      ],
      "title": "Bringing more control over your connectors",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-06-24-bringing-more-control-over-your-connectors/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Mistral OCR 4 introduces breakthrough document parsing with bounding boxes, block classification, and inline confidence scores, supporting 170 languages and running in a single container for self-hosted deployments. It outperforms leading OCR systems in human evaluations and benchmarks while offering cost-efficient, high-throughput processing for enterprise search, RAG, and agentic workflows. Available via API or Document AI, it provides structured outputs for custom pipelines or no-code applications, with self-hosting options for data privacy.</p>\n<p>Today, we're releasing Mistral OCR 4, featuring bounding boxes, block classification, and inline confidence scores alongside extracted text. The model supports 170 languages across 10 language groups, runs in a single container for fully self-hosted deployments, and serves as an ingestion component for <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/search-toolkit/\">enterprise search, RAG, and domain-specific retrieval pipelines</a>. OCR 4 is a small, focused model, and this post covers what's new, how it performs on public and internal benchmarks, the known limitations of those benchmarks, and guidance on when to use the model API versus Document AI.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=bEt4wczgGR8\">www.youtube.com</a></p>\n<h2><strong>Highlights</strong></h2>\n<ul>\n<li>\n<p><strong>Breakthrough performance.</strong> Independent annotators prefer OCR 4 over every leading OCR and document-AI system tested, with win rates averaging 72%, alongside the top overall score on OlmOCRBench (85.20). See Benchmarks below for methodology and known scoring limitations.</p>\n</li>\n<li>\n<p><strong>Segmentation, not just text.</strong> Alongside the extracted text, OCR 4 returns bounding boxes, typed-block classification (titles, tables, equations, signatures, and more), and inline confidence scores. Bounding boxes, our most-requested capability, localize text for in-context highlighting and reliable data pipelines. At the same time, block types and confidence scores drive source-grounded citations, redactions, and human-in-the-loop verification.</p>\n</li>\n<li>\n<p><strong>Integrated with Mistral Search Toolkit (public preview).</strong> OCR 4 is an ingestion component of <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/search-toolkit/\">Search Toolkit</a>, Mistral's open-source, composable search framework, announced at the AI Now Summit. Its structured output supplies citation-ready inputs to the toolkit's ingestion, retrieval, and evaluation workflow for RAG and enterprise search.</p>\n</li>\n<li>\n<p><strong>Multilingual coverage.</strong> Support for 170 languages across 10 language groups, with measurable gains on specialized and low-resource languages where several competing systems degrade.</p>\n</li>\n<li>\n<p><strong>Run on your own infrastructure.</strong> OCR 4 is compact enough to deploy on a single container, keeping document data in your environment for residency, sovereignty, and compliance, while supporting cost-efficient, high-throughput batch processing. Self-managed deployment is available to enterprise customers.</p>\n</li>\n</ul>\n<h2><strong>Overview</strong></h2>\n<p>Mistral OCR 4 extracts and structures content from a wide range of documents. Where previous generations focused on converting a page into clean text and tables, OCR 4 returns a structured representation of the document. Each block is localized with a bounding box, classified by type, and inline confidence scores are generated per-page and per-word. Downstream systems, therefore, have access not only to <em>what</em> the document says but also to <em>where</em> each element sits, <em>what role</em> it plays, and <em>how confident</em> the model is in each region.</p>\n<p>This structure supports several downstream workloads:</p>\n<ul>\n<li>\n<p><strong>Semantic chunking for RAG</strong>: clean, classified blocks become better retrieval units.</p>\n</li>\n<li>\n<p><strong>Structural primitives for agents</strong>: agents move from reading documents to acting on them (form filling, invoice processing, compliance checks).</p>\n</li>\n<li>\n<p><strong>Structured content for connectors</strong>: consistent, typed output for ingestion and indexing pipelines.</p>\n</li>\n</ul>\n<p>OCR 4 accepts common enterprise formats, including PDF, DOC, PPT, and OpenDocument, and supports 170 languages across 10 language groups, including specialized and low-resource languages that many systems handle poorly. As a compact model deployable in a single container, it is suited to both cost-sensitive and high-volume deployments. It can run fully self-hosted, allowing organizations with data-sovereignty requirements to keep document data within their own infrastructure.</p>\n<p>Developers integrate the model via API, and teams can use <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/solutions/document-ai/\">Document AI</a> in Mistral Studio for an application-level, no-code path to the same engine. Mistral OCR 4 through the API is priced at $4 per 1,000 pages, with a 50% Batch-API discount, reducing the cost to $2 per 1,000 pages. Document AI is priced at $5 per 1,000 pages.</p>\n<h2><strong>Benchmarks</strong></h2>\n<blockquote>\n<blockquote>\n<p>“We benchmarked Mistral OCR 4 against the leading agentic document parsers across a chart and figure dense financial QA dataset and reached equivalent accuracy at roughly 8x lower cost and 17x lower latency. For production use cases at scale, that delta compounds fast.&quot;<br />\n<em>- Aidan Donohue, AI Engineer, Rogo</em></p>\n</blockquote>\n</blockquote>\n<p>To evaluate OCR 4, we compared it against leading AI-native OCR models, frontier general-purpose models, enterprise document services, and our own Mistral OCR 3.</p>\n<h3><strong>Human Preference Evaluations</strong></h3>\n<p>Automated benchmarks carry the scoring artifacts described above, so we complemented them with a head-to-head human evaluation on documents chosen to reflect real usage. We assembled 600+ documents across 12+ languages, sourced from third-party vendors to represent real industry use cases, and asked independent annotators to blindly rank each competitor's output against OCR 4's, document by document.</p>\n<p>Annotators preferred OCR 4 in the majority of documents across all systems tested. Because these are human judgments on realistic documents rather than string comparisons against fixed references, they sidestep much of the annotation and formatting noise that affects automated scores.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/model-comparison%20(1)_nInzA.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3><strong>Overall Performance</strong></h3>\n<blockquote>\n<blockquote>\n<p>“Mistral OCR is roughly 4x faster per page than our incumbent provider, an impressive result for the high-volume docketing workflows where speed is critical to managing our customers' IP timelines.” <br />\n<em>- Ivan Mihailov, AI engineer, Anaqua</em></p>\n</blockquote>\n</blockquote>\n<p>In addition to placing first in our human preferences, OCR 4 achieves the top overall score amongst the models we tested on the public <strong>OlmOCRBench (85.20)</strong> and leads our internal <strong>Crawl Multilingual evaluation (.98)</strong>, ahead of both AI-native and enterprise solutions.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/ocr-model-performance-comparison%20(1)_ZrJw6x.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>On <strong>OmniDocBench</strong>, OCR 4 achieves a score of <strong>93.07</strong>. We report this figure with a caveat: both <strong>OlmOCRBench</strong> and <strong>OmniDocBench</strong> have known limitations in how they score certain outputs, and a single aggregate number can both understate and overstate real-world performance.</p>\n<p>When we audited the mismatches behind our scores, most were not model errors but artifacts of how the benchmarks compare output. The recurring categories:</p>\n<ul>\n<li>\n<p><strong>Ground-truth errors.</strong> Some reference annotations are themselves incorrect: missing or extra text, transcriptions of redacted regions, or typos (for example, a cited author's name misspelled in the reference but read correctly by the model from the page). The output matches the source document, yet it is still marked wrong.</p>\n</li>\n<li>\n<p><strong>Equivalent math notation.</strong> Different LaTeX that renders identically is counted as a mismatch, The rendered equation is correct; the string comparison is not.</p>\n</li>\n<li>\n<p><strong>Equation segmentation.</strong> Whether an expression is emitted as a single equation or split into several inline fragments affects the match, even when the rendered content is identical, because the matcher cannot align the pieces.</p>\n</li>\n<li>\n<p><strong>Multi-column reading order.</strong> Words split across a column boundary (for example, &quot;certifi-cates&quot;) and column-ordering assumptions cause correct extractions to be scored as reading-order failures.</p>\n</li>\n<li>\n<p><strong>Block-type attribution.</strong> The benchmark does not expect headers/footers in the output. To resolve this we strip headers footers from our output before scoring. But the test then checks for a string that also happens to be the title of the page which should actually be present and flags it incorrectly.</p>\n</li>\n</ul>\n<p>These artifacts concentrate in mathematical, scientific, and multi-column documents, and they more often penalize correct output than reward incorrect output. We therefore treat the aggregate score as directional rather than definitive.</p>\n<p>These benchmarks are directional. All competitor scores reflect internal reproductions. We recommend evaluating on your own documents.</p>\n<h3><strong>Performance Details</strong></h3>\n<p><strong>Crawl Multilingual breakdown.</strong> On our internal multilingual evaluation, OCR 4 leads across all eight language groups — English, Western Europe, Eastern Europe, Middle Eastern, Chinese, East Asian, Southeast Asian, and specialized languages (Hindi, Japanese, Georgian, Bengali, Armenian, Hebrew, Greek, Gujarati, Tamil, Malayalam, Kannada, Telugu). The gap is widest for specialized and low-resource languages, where many competing systems degrade sharply, while OCR 4 maintains high accuracy.</p>\n<h2><strong>Recommended use cases</strong></h2>\n<p>OCR 4 supports both high-volume pipelines and interactive document workflows, including:</p>\n<ul>\n<li>\n<p><strong>Document parsing and extraction</strong>: complex, multilingual documents.</p>\n</li>\n<li>\n<p><strong>Retrieval-Augmented Generation (RAG):</strong> structured, classified, citation-ready content for semantic chunking and source-grounded answers. With <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/search-toolkit/\">Search Toolkit</a>, OCR 4 output can be fed directly into retrieval pipelines.</p>\n</li>\n<li>\n<p><strong>Agentic workflows:</strong> providing agents with the structural primitives to complete tasks such as form filling, invoice processing, and compliance checks, especially in legal, financial services, and healthcare.</p>\n</li>\n<li>\n<p><strong>Structured data pipelines using confidence scores to enable efficient use of human verifiers:</strong> form/invoice extraction, redactions, and compliance-driven processes.</p>\n</li>\n<li>\n<p><strong>Enterprise search and knowledge bases:</strong> OCR as a data-source component for custom ingestion and entity extraction.</p>\n</li>\n</ul>\n<p>Early users are applying OCR 4 to turn invoices into structured fields, digitize company archives, extract clean text from technical and scientific reports, and power enterprise search.</p>\n<p><strong>A note on out-of-scope use.</strong> OCR 4 is a document-understanding model, not a decision-maker. It is <strong>not</strong> intended for medical diagnosis, legal advice or judgment, high-stakes financial decisions, safety-critical systems, real-time/latency-sensitive processing, or non-document inputs (raw audio, video, etc.).</p>\n<h3><strong>OCR 4 API: Understanding Your Options</strong></h3>\n<p>Mistral's OCR 4 is available through a single API endpoint. Every request runs the same underlying OCR model and always returns extracted content, bounding boxes, block types, confidence scores, and markdown-structured text. What varies is how much you layer on top.</p>\n<p><strong>Use OCR 4 in pure extraction mode when you want to:</strong></p>\n<ul>\n<li>\n<p>Embed fast, accurate document extraction directly into your application, agent, or data pipeline.</p>\n</li>\n<li>\n<p>Work directly with the raw response, bounding boxes, block types, and confidence scores to drive custom downstream logic.</p>\n</li>\n<li>\n<p>Run high-volume or batch ingestion with full control over throughput and cost via the Batch API.</p>\n</li>\n<li>\n<p>Self-host for strict data-privacy, sovereignty, or compliance requirements.</p>\n</li>\n</ul>\n<p><strong>Activate Document AI capabilities (same endpoint, additional parameters) when you want to:</strong></p>\n<ul>\n<li>\n<p>Return structured JSON in a schema you define — pass a JSON schema alongside your document, and the OCR output is fed to <code>mistral-small-2603</code> to generate content shaped to your spec.</p>\n</li>\n<li>\n<p>Annotate detected images with structured JSON by passing an image annotation schema, triggering an additional vision-language model call per image.</p>\n</li>\n<li>\n<p>Use a custom prompt alongside a JSON schema to guide how the extracted content of the full document is interpreted or summarized.</p>\n</li>\n<li>\n<p>Enable business users, solutions teams, or pilots to produce structured results without writing downstream parsing logic.</p>\n</li>\n</ul>\n<p>The practical decision rule: if you need raw extracted content, use OCR 4 as-is. If you need the output reshaped into a structured format, annotated with domain-specific fields, or processed with a custom instruction, add the Document AI parameters to the same call. You always get the OCR result regardless; Document AI simply adds structured layers on top of it.</p>\n<h2><strong>Now available</strong></h2>\n<blockquote>\n<blockquote>\n<p>“The availability of Mistral Document AI with OCR 4 in Microsoft Foundry marks an important milestone in our partnership. Together, we’re enabling customers to bring advanced, structured document understanding directly into their AI workflows, combining Mistral’s innovation with Microsoft’s enterprise platform to deliver scalable, trusted solutions for real-world business needs.”<br />\n<em>-Kimmi Grewal, VP, AI Ecosystem Partnerships, Microsoft</em></p>\n</blockquote>\n</blockquote>\n<p>Both Mistral OCRv4 and Document AI (powered by OCRv4) are available <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/model-cards/ocr-4-0\">via API</a> through <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/\">Mistral Studio</a>, Amazon SageMaker, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://aka.ms/mistral-ocr4-tcblog\">Microsoft Foundry</a>, and coming soon Snowflake Parse Document. For organizations with stringent data-privacy requirements, OCR 4 also offers a self-hosting option so sensitive information stays within your own infrastructure. To explore self-deployment, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">let us know</a>.</p>\n<h3><strong>Get started</strong></h3>\n<p>We offer a few ways to get started and learn more quickly.</p>\n<ul>\n<li>\n<p>Try OCR 4. The new <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/resources/cookbooks?useCase=OCR\">Getting Started with OCR 4 Cookbook</a> walks through a first extraction, working with bounding boxes, and block classification.</p>\n</li>\n<li>\n<p>OCR 4 webinar. We'll cover what's new in OCR 4 with demos and Q&amp;A on July 7th at 6:00 PM CET. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://learn.mistral.ai/public/events/ocr4-webinar\">Register for the OCR4 in Production webinar</a>.</p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">Contact Sales</a> for more information.</p>\n</li>\n</ul>\n",
      "date_modified": "2026-06-23T12:00:48+00:00",
      "date_published": "2026-06-23T12:00:48+00:00",
      "external_url": "https://mistral.ai/news/ocr-4/",
      "id": "urn:aggr:item:1c1a884895f1e8acb87fc18981c2dd8f16a2a1a9",
      "image": "https://mistral.ai/cms-media/api/media/file/OCR-OG.png",
      "summary": "Mistral OCR 4 delivers enterprise document AI with 170-language support, bounding boxes, and self-hosted deployment.",
      "tags": [
        "ai"
      ],
      "title": "Introducing Mistral OCR 4",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-06-23-introducing-mistral-ocr-4/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Mistral unveiled a new AI stack for industrial engineering, partnering with Airbus, BMW, and ASML to optimize design, simulation, and production while ensuring data security. Their agentic AI tool, Vibe, now handles long-horizon tasks like coding and research, while a new 10 MW data center in France will enhance compute control and security by 2026. These advancements reinforce Mistral’s focus on secure, high-impact AI solutions for critical enterprise workflows.</p>\n<h2>Mistral for Industrial Engineering.</h2>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/manufacture_135EHd.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>An integrated AI stack combining advanced physics models, engineering expertise, and robotics to transform mission-critical industrial operations. The solution enables industrial engineers to accelerate design, eliminate simulation bottlenecks, and optimize asset performance; while maintaining full control over proprietary data, IP, and production environments.</p>\n<p>With <strong>Airbus</strong>, we are implementing advanced AI at the core of the company's operations and processes, from initial design to on-board capabilities. Our partnership will expand across Airbus' commercial aircraft, helicopter, defence, and space activities. It will support the next decade of innovation, contribute to improve flight safety, and maintain full control of critical data; all while adhering to strict security requirements.</p>\n<p>For <strong>BMW Group</strong>, we are a central partner for their “Large Industry Model” (LIM) initiative. The collaboration unifies engineering knowledge and AI expertise to build multimodal reasoning models on engineering data for complex development use cases such as crash simulation.</p>\n<p><strong>ASML</strong> has started working with us to tackle challenging engineering use cases, such as optimizing the design of high-performance parts, surrogate models and control loops, with the intent to demonstrate that AI grounded in deep domain expertise, system knowledge and real-world constraints can create real value in advanced semiconductor environments.</p>\n<p>On May 22, we <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/accelerate-ai-native-industry\">announced our acquisition of <strong>Emmi</strong></a>, bringing advanced scientific capabilities to enhance our offerings for industrial engineering companies. Physics AI will redefine how manufacturers in aerospace, automotive, and semiconductors innovate, enabling them to design, simulate, and produce at unprecedented speed.</p>\n<p>Read our blog on introducing physics AI at Mistral.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/industry/manufacturing\">Learn more about Mistral for manufacturing.</a></p>\n<h2>Vibe: a unified agent for long-horizon productivity</h2>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/image%20(6)_ZPXy4D.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Vibe is now one agent for long-running, multi-step work. It catches up across your inbox and calendar, runs deep research, drafts deliverables, and orchestrates the recurring processes that run your day-to-day.</p>\n<p>It also takes coding work from request to merged change, across the web app, your editor, and your terminal. The agent builds features, fixes bugs, refactors code, and ships reviewable pull requests.</p>\n<p>Vibe runs on flagship Mistral models optimized for reasoning, agentic tasks, tool calls, and coding.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://mistral.ai/news/vibe-agent\">Read more about the new Vibe in our blog post</a>.</p>\n<h2>Les Ulis data center</h2>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/infra_bhIOm.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>The Les Ulis site (Essonne) is a new 10 MW facility dedicated to inference operations. Scheduled to open in Q3 2026, the site will address compute supply chain risks by providing direct control over capacity, providing greater security and transparency as training and inference hardware converge.</p>\n<h2>Let’s keep building together</h2>\n<p>Today’s announcements at the AI Now Summit are important milestones in our mission to build full-stack AI solutions for enterprises and governments. Across industrial engineering, agentic productivity, and secure infrastructure, we are focused on helping organizations deploy AI where it matters most: critical workflows, with measurable impact, and with full control over their data and operations.</p>\n",
      "date_modified": "2026-05-28T12:00:20+00:00",
      "date_published": "2026-05-28T12:00:20+00:00",
      "external_url": "https://mistral.ai/news/ai-now-summit-2026/",
      "id": "urn:aggr:item:2634062d4e67fb7e45fcdb9dc83e545e5e179b31",
      "image": "https://mistral.ai/cms-media/api/media/file/Cover-Mistral-Wallpaper01.jpg",
      "summary": "Innovations for global enterprises solving the world’s hardest problems.",
      "tags": [
        "ai"
      ],
      "title": "AI Now Summit 2026",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-05-28-ai-now-summit-2026/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Vibe is Mistral’s unified AI agent for both work and coding, capable of handling long-running tasks like inbox management, research, and document drafting, as well as coding workflows from feature development to pull requests. It offers Work Mode for multi-step tasks across enterprise tools and Code Mode for remote coding sessions, with integrations like VS Code and CLI for seamless collaboration. Available in free, Pro, Team, and Enterprise plans, Vibe streamlines workflows with visible reasoning, reusable skills, and secure, scalable deployments.</p>\n<p>Vibe is now one agent for long-running, multi-step work. It catches up across your inbox and calendar, runs deep research, drafts deliverables, and orchestrates the recurring processes that run your day-to-day.</p>\n<p>It also takes coding work from request to merged change, across the web app, your editor, and your terminal. The agent builds features, fixes bugs, refactors code, and ships reviewable pull requests.</p>\n<p>Vibe runs on flagship Mistral models optimized for reasoning, agentic tasks, tool calls, and coding.</p>\n<h2>Highlights.</h2>\n<ol>\n<li>\n<p>Le Chat is now Vibe—one agent and one licence across work and code, with every conversation, setting, and plan carried over.</p>\n</li>\n<li>\n<p>Work Mode, available on web and mobile, is a powerful agent for long-range tasks that picks the right tools, streams progress, and completes complex work to finish.</p>\n</li>\n<li>\n<p>Code Mode launches remote coding agents from a dedicated web surface.</p>\n</li>\n<li>\n<p>A new Mistral Vibe extension for VS Code; the coding agent working across your whole project, inside your IDE.</p>\n</li>\n</ol>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=y4TuBNXxRq0\">www.youtube.com</a></p>\n<h2>Vibe for work.</h2>\n<p>In Work Mode, Vibe is your AI agent for complex, multi-stage tasks, fluent in your knowledge, apps, and tools. It maps out a plan and gets your sign-off before it starts, then works across your connectors to carry the task through.</p>\n<p>For one person, this turns a morning of admin into a single prompt—catch up on what you missed, pull the numbers, draft the update, and have it ready to send on. Whereas, for the organisation, the same agent runs the processes that keep a business moving, grounded in the documents, mailboxes, and systems your teams already use, and governed by the permissions you set at the admin-level.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=YpK3-1h-Ync\">www.youtube.com</a></p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=3D8T5vDDLYM\">www.youtube.com</a></p>\n<h3>Here is what Vibe’s Work Mode does today.</h3>\n<ul>\n<li>\n<p>Enterprise knowledge search: Vibe deeply grounds its work in your context, reaching across Google Workspace, Outlook, SharePoint, Slack, GitHub, and any custom connectors or libraries.</p>\n</li>\n<li>\n<p>Structured data analysis: connect a database or upload a spreadsheet, and Vibe surfaces the patterns, anomalies, and signals you asked about, rendering charts and dashboards inside the conversation.</p>\n</li>\n<li>\n<p>Document and report synthesis: Vibe drafts the deliverable using the Canvas tool, from a one-page brief to a report, an RFP response, or a board deck, ready for you to edit and push to Notion, SharePoint, or your inbox.</p>\n</li>\n<li>\n<p>Multi-step task scheduling: set a prompt to run once or on a daily, weekly, or monthly cadence, and a notification lands when a run finishes.</p>\n</li>\n<li>\n<p>Reusable skills: extend Vibe with preset or custom skills via open standards to automate your repeatable workflows with consistency and sequential precision.</p>\n</li>\n</ul>\n<p>Every step is visible as it happens, and each tool call and reasoning chain is expandable to its inputs and outputs.</p>\n<h2>Vibe for code.</h2>\n<p>Code Mode is the new coding surface in the Vibe web app, where you can connect to GitHub, manage your projects, start sessions, and see them through to a pull request. Inside a session, the agent runs in an isolated sandbox, and you manage sensitive actions and inspect diffs as it’s writing code.</p>\n<p>Sessions can run in parallel, can persist while your machine is off, and can be triggered from third-party apps, such as Slack (coming in June)—in addition to your code editor or the Vibe CLI.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=AWXwY_ig4Uc\">www.youtube.com</a></p>\n<h3>The new Mistral Vibe extension for VS Code.</h3>\n<p>We’re also releasing a new plugin that brings the Vibe coding agent into VS Code. Vibe works across your whole project in a side panel that reads, edits, and executes commands beside your files. Open files attach automatically, selections can be line-ranged and @ mentions will pull in more context from other directories or files.</p>\n<p>The extension runs on the same harness as the CLI, and features are replicated across both surfaces:</p>\n<ul>\n<li>\n<p>write unit and integration tests that match your existing patterns, and document what it ships, from the README down to inline comments;</p>\n</li>\n<li>\n<p>refactor and translate, moving a module to a new pattern, or a legacy file to a more modern language, with behaviour preserved and tests completed;</p>\n</li>\n<li>\n<p>connect to your entire stack, pulling context from GitHub, GitLab, Jira, or Linear, so a change arrives with the issue it resolves and the conventions your team follows.</p>\n</li>\n</ul>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=KQz62nh4XwU\">www.youtube.com</a></p>\n<h2>Updates to Vibe CLI.</h2>\n<p>The Vibe CLI is getting several important updates, including more session controls.</p>\n<ul>\n<li>\n<p>Skills turn repeatable workflows into / commands.</p>\n</li>\n<li>\n<p>Custom modes and subagents route specialised work within a session.</p>\n</li>\n<li>\n<p>The agent's plan is editable before it runs, and it can ask multiple choice questions mid-run.</p>\n</li>\n<li>\n<p>Permissions are session-scoped (always, never, or ask), including overrides for files, commands, and directories.</p>\n</li>\n<li>\n<p><code>/teleport</code> moves a live session between your terminal and the cloud, keeping history and approvals intact.</p>\n</li>\n</ul>\n<h2>Get started with Vibe.</h2>\n<p>Vibe is live at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://chat.mistral.ai\">chat.mistral.ai</a>. Download the mobile app from the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://apps.apple.com/app/id6740410176\">App Store</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://play.google.com/store/apps/details?id=ai.mistral.chat\">Google Play</a>. If you were on Le Chat, your plan, history, and settings are already there within the Chat mode. *</p>\n<ul>\n<li>\n<p>Free: quick answers and simple everyday tasks.</p>\n</li>\n<li>\n<p>Pro, $14.99/month: complex tasks, deeper reasoning, and all-day coding.</p>\n</li>\n<li>\n<p>Team, $24.99/user/month: a shared workspace with admin controls and more storage.</p>\n</li>\n<li>\n<p>Enterprise: custom deployments, model training, and dedicated solutioning.</p>\n</li>\n</ul>\n<p>See <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/pricing\">Vibe’s plans</a> to learn more.</p>\n<p>For code, Vibe is on the web at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chat.mistral.ai/code\">chat.mistral.ai/code</a>, in VS Code through the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://marketplace.visualstudio.com/items?itemName=mistralai.mistral-vibe-code\">new extension</a>, and in your terminal with the CLI:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">curl</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>LsSf</span> https://mistral.ai/vibe/install.sh</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">bash</span></span>\n</span></span></code></pre>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">uv</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> tool install mistral-vibe</span>\n</span></span></code></pre>\n<p>You can also build through the API in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/codestral/cli\">Mistral Studio</a>, with the free Experiment plan for testing and prototyping.</p>\n<p><em>* We will soon sunset Chat mode; rest assured, all of your Le Chat history will continue to be preserved in the Work Mode.</em></p>\n",
      "date_modified": "2026-05-28T12:00:09+00:00",
      "date_published": "2026-05-28T12:00:09+00:00",
      "external_url": "https://mistral.ai/news/vibe-agent/",
      "id": "urn:aggr:item:87760c8abf65b3ddf630c9cb200e280d8337de02",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Solution-Vibe.jpg",
      "summary": "The unified agent for long-horizon productivity and coding, launching with Work and Code modes. Plus, a new Vibe VS Code extension.",
      "tags": [
        "ai"
      ],
      "title": "Vibe gets to work.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-05-28-vibe-gets-to-work/"
    },
    {
      "content_html": "<p>Today, we're releasing Search Toolkit in public preview. Search Toolkit is a composable framework for building production search pipelines for AI applications. We built it because teams building search infrastructure still spend too much engineering time on plumbing. Most stitch together separate tools for ingestion, retrieval, and evaluation, each with its own interface and its own assumptions about data. Search Toolkit brings all three into a single framework with a shared interface, so teams spend their time improving search quality instead of maintaining integrations. Search Toolkit is open source and runs wherever your infrastructure does. Cloud, on-premises, edge.</p>\n<h2><strong>Search infrastructure is still harder than it should be.</strong></h2>\n<p>Most teams building retrieval systems spend more time assembling infrastructure than improving search quality. Ingestion requires one set of tools. Retrieval requires another. Evaluation, if it happens at all, is bolted on with a separate framework and separate assumptions about data shape.</p>\n<p>Teams report weeks of integration work before they can run a single query against their own data. Measuring whether the retriever is returning the right results often requires yet another toolchain. For organisations building RAG workflows or internal knowledge systems, that overhead multiplies at every layer.</p>\n<h2><strong>Where it fits.</strong></h2>\n<p><strong>Enterprise search.</strong> Most organisations don't have a search problem. They have a dozen search problems. Internal wikis, support ticket systems, document repositories, file storage, codebases. Each source has different structure, different metadata, and needs different processing to index well. Teams typically end up building a separate ingestion pipeline for each one, with its own parsing logic, its own chunking strategy, and its own assumptions about what a &quot;document&quot; looks like. The result is a set of isolated indexes that can't be searched together, or a brittle custom layer that tries to unify them and becomes its own maintenance burden. Search Toolkit provides consistent processing and indexing patterns across source types within a single framework, so teams add new sources without rebuilding the pipeline each time.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/search-api-1_ZWCkTP.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><strong>RAG and retrieval quality.</strong> When a RAG system returns poor results, the first question is whether the problem is retrieval or generation. In practice, most teams have no clean way to answer that. They tweak prompts, adjust chunking strategies, and swap models without knowing whether the retriever is surfacing the right context in the first place. And even teams that do focus on retrieval often lack the tooling to compare strategies rigorously, on their own data, with their own relevance judgments. The alternative is writing custom evaluation scripts for each experiment. Search Toolkit includes built-in evaluation that measures retriever performance independently, so you can isolate retrieval quality from generation quality and compare configurations as your corpus evolves.</p>\n<p><strong>Domain-specific retrieval.</strong> Legal filings, medical records, codebases, financial disclosures. Off-the-shelf retrievers are trained on general-purpose text and tend to struggle with specialised terminology, document structures, and relevance criteria that differ from web search. Teams that need domain-tuned retrieval often end up building custom retrieval infrastructure from scratch, which is expensive to maintain and hard to evaluate.</p>\n<h2><strong>Search in an agentic world</strong></h2>\n<p>Agents working on enterprise tasks need access to enterprise context. They make retrieval decisions autonomously and at high volume, so the quality of the search infrastructure underneath them directly affects every downstream step. For searching across large document corpora, agents perform semantic search on an index, which gives them precise results at low latency.</p>\n<p>Agents also need live data. With <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio-api/knowledge-rag/connectors\">Connectors</a>, they pull directly from source systems like CRMs, code repositories, and productivity tools through MCP integrations. An agent can query an indexed corpus when it needs to search across a large body of content, and pull live data from a source system when it needs the latest state. Search Toolkit gives your agents a high-quality indexed search path to call on alongside live retrieval.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/search-icon-2_LFJpr.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2><strong>What's inside.</strong></h2>\n<p><strong>Ingestion.</strong> Index and process data from multiple sources with configurable pipelines. Search Toolkit handles document parsing, chunking, and embedding generation. Custom document formats and preprocessing steps plug in through a standard adapter interface.</p>\n<p><strong>Retrieval.</strong> Search Toolkit ships with BM25 sparse retrieval, dense embedding-based retrieval, and hybrid configurations that combine both. Each is configurable to your data and use case.</p>\n<p><strong>Evaluation.</strong> Measure search quality with built-in metrics: recall, precision, MRR, and NDCG. Run evaluations against your own test sets, compare retriever configurations side by side, and track quality across releases.</p>\n<p>All modules share a common configuration interface. Replace your indexer, swap your retriever, add an evaluator. The rest of the pipeline adapts.</p>\n<p>Search Toolkit has been designed for advanced use cases for the enterprise, and battle tested across financial services, manufacturing, public sector, and media &amp; entertainment verticals. CMA CGM uses Search Toolkit alongside Voxtral to help journalists detect fake news. The pipeline processes audio from three distinct data sources and returns alerts within 15 seconds end to end.</p>\n<p><strong>Watch the demo</strong></p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=Kj7Ewd64QTA\">www.youtube.com</a></p>\n<h2><strong>Get started.</strong></h2>\n<p>The fastest way to try Search Toolkit is with our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai/search-starter-app\"><strong>starter app template</strong></a>.</p>\n<p><strong>Prerequisites</strong></p>\n<p>Install</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.docker.com/get-docker/\">Docker</a></p>\n<p>. You also need</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.astral.sh/uv/\">uv</a></p>\n<p>in the generated project.</p>\n<p><strong>Scaffold a new project</strong></p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">uvx</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> copier copy gh:mistralai/search-starter-app my-search-projectcd my-search-project</span>\n</span></span></code></pre>\n<p><strong>Run it</strong></p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Start Vespa locally with Dockermake setup-vespa# Index sample datamake ingest path=sample_data/hello.txt# Run a querymake search query=&quot;hello world&quot;</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span></span></code></pre>\n<p>The template includes:</p>\n<ul>\n<li>\n<p>Pre-configured Vespa indexing</p>\n</li>\n<li>\n<p>Hybrid retrieval (BM25 + vector)</p>\n</li>\n<li>\n<p>Sample data and ingestion pipeline</p>\n</li>\n</ul>\n<p>For full details, see the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai/search-starter-app\">starter app README</a>.</p>\n<h2>What’s next</h2>\n<p>Once you’ve tried the starter app, dive deeper:</p>\n<ul>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio-api/knowledge-rag/search-toolkit/ingestion\"><strong>Tune your ingestion pipeline</strong></a> – Configure parsers, chunking strategies, embedding models, and extractors for specific file types to handle your data sources.</p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio-api/knowledge-rag/search-toolkit/vespa\"><strong>Manage Vespa schema &amp; relevance</strong></a> – Optimize indexing and ranking profiles for your use case.</p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio-api/knowledge-rag/search-toolkit/retrieval\"><strong>Build your dream retrieval</strong></a> – Leverage advanced features like LLM query rewriting, reranking, and hybrid retrieval.</p>\n</li>\n</ul>\n<p>For the full reference, see the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/studio-api/search-toolkit\">Search Toolkit documentation</a>.</p>\n",
      "date_modified": "2026-05-28T11:42:21+00:00",
      "date_published": "2026-05-28T11:42:21+00:00",
      "external_url": "https://mistral.ai/news/search-toolkit/",
      "id": "urn:aggr:item:7cafa5d817f56d4aac22ba5c16235d1716df76a0",
      "summary": "Search Toolkit is a composable framework for building production search pipelines for AI applications.",
      "tags": [
        "ai"
      ],
      "title": "Introducing Search Toolkit",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-05-28-introducing-search-toolkit/"
    },
    {
      "content_html": "<p>Engineering ambition has rarely been greater than it is today. Defense readiness, the energy transition, the push towards sustainable aviation, the need to scale AI data centers, and next-generation chips: every one of these developments depends on engineering teams shipping more capable hardware, faster—with thinner margins for error.</p>\n<p>And yet physics analysis remains stuck at the front of the product lifecycle, tied to solver methods that haven't fundamentally changed in decades. Engineers still evaluate a handful of variants when they should be exploring thousands. And once a product is in operation, engineers lose the physics insight they had at design time, because the solvers behind it are too slow to keep up with live data.</p>\n<p>We believe physics deserves its own frontier AI models. That's why we've brought Emmi AI into Mistral. In this post, we share what physics AI is, why it matters now, and what it makes possible for our partners like ASML, Airbus, Safran, and Siemens Energy.</p>\n<p>We are building out a new foundational capability inside Mistral's enterprise solutions for AI-native industrial engineering—alongside our existing <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/models\">models</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/vibe-remote-agents-mistral-medium-3-5\">our tools for building and operationalizing agentic workflows</a>, and the secure deployment and integration enterprises require.</p>\n<p>Together they form a single stack spanning the engineering lifecycle: deployed where the customer needs it, integrated with their environment, fully under their control. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/industry/manufacturing/\">Find out more about our AI for manufacturing offering.</a></p>\n<h2>The limits of traditional simulation: why engineering is inherently slow</h2>\n<p>When running these “numerical physics simulations,” engineers use computers to predict how physical systems behave by solving partial differential equations. They are the language of physics: they describe how fluids flow, how structures deform, how heat moves. Rather than building and testing every prototype in the real world, engineers solve the governing physics equations on a computer by dividing an object into millions of tiny pieces and calculating what happens at each one.</p>\n<p>A typical CFD or FEM workload looks much the same in 2026 as it did in 2006: prepare CAD geometry, discretize it into a mesh, configure boundary conditions, queue the run on an HPC cluster, wait. The result is a workflow that is <strong>slow</strong>, taking hours to weeks of compute time per design variant, and <strong>expensive</strong>: HPC capacity, solver licenses and specialist expertise gate the number of simulations that are being run. True design-space exploration is mathematically possible but economically impossible at this cost and tempo.</p>\n<p>The consequence is structural. Engineers iterate on a handful of designs when they should be exploring thousands. Many teams settle for &quot;good enough&quot; because &quot;optimal&quot; is unaffordable in compute and calendar time. Every downstream constraint—manufacturability, certification, cost—compounds in terms of time and cost.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/graphics-blog-physics-ai-models_Z18F8sr.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>What is physics AI?</h2>\n<p>Data-driven physics AI is a class of AI models that learn from physics solver outputs and predict physical behavior directly from geometry and boundary conditions, or even measurement data. It maps inputs to full physical fields in a single forward pass, on the order of seconds, on a single GPU.</p>\n<p>A few clarifications about what physics AI <strong>is not</strong>:</p>\n<ul>\n<li>\n<p><strong>It is not a replacement for first-principles solvers in every regime.</strong> It is a step-change in throughput for the vast majority of design-loop iterations, with traditional solvers reserved for verification and edge cases.</p>\n</li>\n<li>\n<p><strong>It is</strong> <strong>not an LLM trained on simulation data.</strong> The architectures, training objectives and evaluation regimes are fundamentally different.</p>\n</li>\n<li>\n<p><strong>It is</strong> <strong>not a regression on a single geometry.</strong> The point of physics AI is geometric and parametric generalization – one model serving an entire design family, not one model per part.</p>\n</li>\n</ul>\n<p>Now that model architectures allow for industrial scale (see e.g. AB-UPT) and GPUs have become powerful and accessible enough to train and serve physics workloads at production economics, it is the right point to double down from a research and solutions perspective.</p>\n<h2>What physics AI unlocks</h2>\n<p>Once inference moves from hours to seconds, both the engineering and operation of products reorganize around what's suddenly possible.</p>\n<h3>Accelerated product design</h3>\n<p>This is about the <em>hardware itself</em>—the car body, the wing, the chip package, the motor.</p>\n<p>What becomes possible:</p>\n<ul>\n<li>\n<p>Thousands of design variants explored in the time a single simulation used to take</p>\n</li>\n<li>\n<p>AI models that propose design candidates, not just evaluate them</p>\n</li>\n<li>\n<p>Simulation earlier in the process and usable beyond specialists</p>\n</li>\n</ul>\n<p>What it delivers:</p>\n<ul>\n<li>\n<p>Better-performing products at the same development cost</p>\n</li>\n<li>\n<p>Shorter time from concept to validated design</p>\n</li>\n<li>\n<p>Fewer expensive surprises late in development</p>\n</li>\n</ul>\n<h3>Accelerated tooling and process design</h3>\n<p>This is about <em>how the product is made</em>—the molds, dies, fixtures, and process settings that turn a design into a manufactured part. Tooling geometry, materials, and process parameters together determine quality, cost, and yield.</p>\n<p>What becomes possible:</p>\n<ul>\n<li>\n<p>Thousands of tooling variants explored in the time a single simulation used to take</p>\n</li>\n<li>\n<p>Tooling geometry and process parameters optimized together, not in sequence</p>\n</li>\n<li>\n<p>Manufacturing defects predicted before any tool is cut</p>\n</li>\n</ul>\n<p>What it delivers:</p>\n<ul>\n<li>\n<p>Faster tool development</p>\n</li>\n<li>\n<p>Higher yield and fewer scrapped parts</p>\n</li>\n<li>\n<p>Shorter ramp-up to stable production</p>\n</li>\n</ul>\n<h3>Real-time digital twins</h3>\n<p>A digital twin is a virtual model of a physical asset—a turbine, a power grid, a battery, a chemical reactor—that mirrors its behavior.</p>\n<p>What becomes possible:</p>\n<ul>\n<li>\n<p>Continuous physics predictions on live sensor data</p>\n</li>\n<li>\n<p>Models that update in real time as the asset operates</p>\n</li>\n<li>\n<p>What-if scenarios on running assets, without taking them offline</p>\n</li>\n</ul>\n<p>What it delivers:</p>\n<ul>\n<li>\n<p>Predictive maintenance before failures occur</p>\n</li>\n<li>\n<p>Higher operational efficiency across the asset’s lifetime</p>\n</li>\n<li>\n<p>Extended asset life and deferred capex on replacement</p>\n</li>\n</ul>\n<h2>Where physics AI applies</h2>\n<p>Physics AI is a horizontal capability with vertical impact. This is a non-exhaustive map of where it is creating immediate value:</p>\n<table>\n<thead>\n<tr>\n<th></th>\n<th></th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Aerospace</strong> external aerodynamics, structural analysis, thermal management, propulsion, aeroelasticity.</td>\n<td><strong>Automotive</strong> vehicle aerodynamics, crashworthiness, battery thermal management, motor design.</td>\n<td><strong>Electronics &amp; semiconductors</strong> chip and package thermal analysis, signal and power integrity, data-center and rack cooling, lithography optics.</td>\n</tr>\n<tr>\n<td><strong>Energy &amp; utilities</strong> wind and gas turbine design, grid-equipment optimizations, reactor thermal-hydraulics, subsurface flow and reservoir simulation.</td>\n<td><strong>Industrial equipment</strong> heat exchangers, pumps and compressors, electric motors, tooling design.</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n<p>The same model class, retrained or fine-tuned on the relevant physics, transfers across these domains.</p>\n<p><strong>Part of an enterprise platform for the AI-native industrial engineering lifecycle</strong></p>\n<p>We believe that physics AI is most valuable when it composes with the rest of an engineering organization's AI stack. That is why we ship it as one capability inside Mistral's enterprise platform, alongside:</p>\n<ul>\n<li>\n<p>Language and multimodal reasoning <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/models\">models</a></p>\n</li>\n<li>\n<p>Model training and customization <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/forge\">pipelines</a></p>\n</li>\n<li>\n<p>AI workflow design, orchestration and monitoring <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/studio\">tools</a></p>\n</li>\n<li>\n<p>Unified AI productivity and coding agent</p>\n</li>\n<li>\n<p>Private AI <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/compute\">infrastructure</a></p>\n</li>\n<li>\n<p>And expert <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/services\">services</a> to accelerate your AI-native transformation</p>\n</li>\n</ul>\n<p>We’re building the first fully integrated AI stack that rethinks traditional engineering workflows end-to-end: Engineers define the intent and verify outcomes - the stack executes in between. The result: manufacturers explore orders of magnitude more design candidates, build the next generation of products faster, and maintain continuous performance gains across operational assets at scale.</p>\n<h2>Get started</h2>\n<p>If you're building the next generation of aircraft, vehicles, energy systems or electronics—and you're tired of waiting on the solver—</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">we'd like to hear from you</a></p>\n<p>.</p>\n<p>We also opened new roles to build out our AI 4 Engineering team. Apply</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://jobs.ashbyhq.com/mistral.ai?departmentId=0e254708-ce04-4bd7-8fbe-c6b9a45e0f16\">here</a></p>\n<p>!</p>\n",
      "date_modified": "2026-05-27T12:00:55+00:00",
      "date_published": "2026-05-27T12:00:55+00:00",
      "external_url": "https://mistral.ai/news/introducing-physics-ai-at-mistral/",
      "id": "urn:aggr:item:129099a40bb0a1eef8d19b87d590f17ddbeddbce",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Solution-Factory.jpg",
      "summary": "A new class of AI models that predict the behavior of physical systems, powering the engineers and hardware products of tomorrow.",
      "tags": [
        "ai"
      ],
      "title": "Introducing physics AI at Mistral: the foundation for engineering acceleration.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-05-27-introducing-physics-ai-at-mistral-the-foundation-for/"
    },
    {
      "content_html": "<p>The acquisition of <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.emmi.ai/\">Emmi AI</a> has highlighted Mistral’s commitment towards pushing the state-of-the-art in AI research and enterprise solutions for industrial engineering.</p>\n<p>Emmi’s work, now part of Mistral, is dedicated to fundamentally enabling engineers to build the next generation of  products faster and secure continuous performance gains in operations at scale for their customers.</p>\n<p>We are doubling down on building foundational Physics AI for the industries that shape the physical world, such as aerospace, automotive, semiconductors, and energy.</p>\n<p>Below are some of the published breakthroughs that this work rests on.</p>\n<p>DEC 1, 2025</p>\n<h4>Going with the Speed of Sound: Pushing Neural Surrogates into Highly-turbulent Transonic Regimes</h4>\n<p>Existing aerospace datasets predominantly focus on 2D airfoils, neglecting these critical 3D phenomena. To address this gap, we present a new dataset of CFD simulations for 3D wings in the transonic regime. The dataset comprises volumetric and surface-level fields for around 30,000 samples with unique geometry and inflow conditions.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2511.21474\">arXiv</a></p>\n<p>NOV 25, 2025</p>\n<h4>Fluid Intelligence: A Forward Look on AI Foundation Models in Computational Fluid Dynamics</h4>\n<p>Driven by the advancement of GPUs and AI, the field of Computational Fluid Dynamics (CFD) is undergoing significant transformations. This paper bridges the gap between the machine learning and CFD communities by deconstructing industrial-scale CFD simulations into their core components.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2511.20455\">arXiv</a></p>\n<p>OCT 17, 2025</p>\n<h4>AB-UPT for Automotive and Aerospace Applications</h4>\n<p>In this technical report, we add two new datasets to the body of empirically evaluated use-cases of AB-UPT, combining high-quality data generation with state-of-the-art neural surrogates.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.arxiv.org/abs/2510.15808\">arXiv</a> | <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/ml-jku/UPT/\">Github</a></p>\n<p>OCT 8, 2025</p>\n<h4>GyroSwin: 5D Surrogates for Gyrokinetic Plasma Turbulence Simulations</h4>\n<p>Nuclear fusion plays a pivotal role in the quest for reliable and sustainable energy production. A major roadblock to viable fusion power is understanding plasma turbulence, which significantly impairs plasma confinement, and is vital for next-generation reactor design.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2510.07314\">arXiv</a> | <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/ml-jku/neural-gyrokinetics\">Github</a></p>\n<p>FEB 23, 2025</p>\n<h4>AB-UPT</h4>\n<p>Anchored-Branched Universal Physics Transformer (AB-UPT) for aerodynamics CFD. Handles raw geometry without remeshing at 9M surface and 140M volume cells on a single GPU.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2502.09692\">arXiv</a> | <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/Emmi-AI/anchored-branched-universal-physics-transformers\">Github</a></p>\n<p>NOV 14, 2024</p>\n<h4>NeuralDEM</h4>\n<p>First end-to-end deep learning surrogate for large-scale multi-physics processes. Enables real-time simulation of industrial processes like fluidised bed reactors.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2411.09678\">arXiv</a> | <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://emmi-ai.github.io/NeuralDEM/\">Github</a></p>\n<p>FEB 19, 2024</p>\n<h4>UPT: Universal Physics Transformer</h4>\n<p>A Framework For Efficiently Scaling Neural Operators across diverse spatio-temporal problems. Supports both grid and particle simulations.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2402.12365\">arXiv</a> | <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/ml-jku/UPT\">Github</a></p>\n",
      "date_modified": "2026-05-27T12:00:05+00:00",
      "date_published": "2026-05-27T12:00:05+00:00",
      "external_url": "https://mistral.ai/news/physics-ai-research/",
      "id": "urn:aggr:item:e7b88bbd39bd04890fe9f85c6f751f69b01909a5",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Manufacturing-Robotic%20Arm.jpg",
      "summary": "Published breakthroughs pushing the state of the art.",
      "tags": [
        "ai"
      ],
      "title": "Physics AI research that’s shaping the industry.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-05-27-physics-ai-research-that-s-shaping-the-industry/"
    },
    {
      "content_html": "<p><strong>This week, we’ve entered into a definitive agreement to acquire Physics AI pioneer Emmi AI to strengthen our position as the leading AI transformation partner for industrial enterprises.</strong></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/Thumbnail-EmmiAI_gL3YR.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Mistral AI is building leading AI systems to accelerate engineering and manufacturing globally. As part of this mission, the company is extending its models’ capabilities to understand and model physics; and is enabling AI agents to use existing engineering tools. With the acquisition of Emmi AI, Mistral significantly enriches its products and expertise in this domain, aiming to accelerate the work of engineering solution teams worldwide.</p>\n<p>The acquisition also accelerates our Science roadmap, advancing our understanding of fundamental physics and leveraging unique industrial data. With Emmi AI's models complementing our own, we are set to build the best-in-class agents for engineers.</p>\n<p>Founded in Austria, Emmi AI has quickly emerged as one of the world's most ambitious AI companies, leading a revolution at the intersection of artificial intelligence and industrial engineering. Its team has developed a unique expertise in Physics AI, providing state-of-the-art large engineering models. The company empowers industrial players to accelerate their engineering workflows and product design cycles, replace multi-day computations with real-time simulations, and build digital twins to optimize asset operations.</p>\n<p>Emmi’s co-founders and its team of more than 30 researchers and engineers, among the leading experts in Engineering AI globally, will join Mistral AI's Science and Applied AI teams in May.</p>\n<blockquote>\n<blockquote>\n<p>This strategic acquisition cements Mistral AI’s leadership in industrial AI and positions us as the partner of choice for manufacturers in high-stakes sectors like aerospace, automotive, or semiconductors. It empowers our customers with a fully integrated platform to solve complex challenges, transform core R&amp;D processes, and accelerate high-value innovation”, said <strong>Arthur Mensch</strong>, co-founder and CEO, Mistral AI.</p>\n</blockquote>\n</blockquote>\n<blockquote>\n<blockquote>\n<p>This acquisition marks a turning point for industrial innovation. By engineering the first comprehensive AI stack fueled by Physics AI, we are set to deliver real-time simulations and sophisticated digital twins. We aim to break through long-standing technical barriers that have slowed progress for decades, enabling our partners to solve the world’s most daunting engineering challenges”, added <strong>Guillaume Lample</strong>, co-founder and Chief Science Officer, Mistral AI.</p>\n</blockquote>\n</blockquote>\n<p><strong>Johannes Brandstetter</strong>, Emmi AI’s co-founder and Chief Science Officer:</p>\n<blockquote>\n<blockquote>\n<p>This is a pivotal moment for the future of industrial engineering and the broader AI4Science movement. At Emmi AI, we have dedicated ourselves to solving high-stakes physical challenges, ranging from the real-time stabilization of power grids to the intricate simulation of injection molding and automotive safety testing. By integrating our expertise into Mistral AI’s world-class AI ecosystem, we are positioned to revolutionize core R&amp;D. Together, we are providing the foundational intelligence required to design and build the next generation of aircraft, vehicles, and semiconductors.</p>\n</blockquote>\n</blockquote>\n",
      "date_modified": "2026-05-23T12:00:26+00:00",
      "date_published": "2026-05-23T12:00:26+00:00",
      "external_url": "https://mistral.ai/news/accelerate-ai-native-industry/",
      "id": "urn:aggr:item:54bb28faac1d246fad55bb3bd0c1e58add5ff023",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-EmmiAI.jpg",
      "summary": "This week, we’ve entered into a definitive agreement to acquire Physics AI pioneer Emmi AI to strengthen our position as the leading AI transformation partner for industrial enterprises. Mistral AI is building leading AI systems to…",
      "tags": [
        "ai"
      ],
      "title": "Emmi joins Mistral to accelerate the AI-native industry",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-05-23-emmi-joins-mistral-to-accelerate-the-ai-native-industry/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Mistral has moved coding agents to the cloud, enabling parallel, asynchronous task execution via Mistral Medium 3.5—a new 128B open-weight model optimized for long-horizon coding and productivity work. The update introduces remote agents in Mistral Vibe and Le Chat, along with a new Work mode for multi-step tasks like research and cross-tool workflows, all while maintaining human oversight for sensitive actions. Available today on Pro, Team, and Enterprise plans, Mistral Medium 3.5 is priced at $1.5 per million input tokens and $7.5 per million output tokens.</p>\n<p>Coding agents have mostly lived on your laptop. Today we're moving them to the cloud, where they run on their own, in parallel, and notify you when they're done. You can start them from the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/vibe\">Mistral Vibe CLI</a> or directly in Le Chat, offloading a coding task without leaving the conversation.</p>\n<p>Powering this is Mistral Medium 3.5 in public preview, our new default model in Mistral Vibe and Le Chat, built to run for long stretches on coding and productivity work. The new Work mode in Le Chat (Preview) extends this with a powerful agent for complex, multi-step tasks like research, analysis, and cross-tool actions.</p>\n<h2>Highlights.</h2>\n<ol>\n<li>\n<p>Mistral Medium 3.5, a new flagship model that merges instruction-following, reasoning, and coding into a single 128B dense model. Released as open weights, under a modified MIT license.</p>\n</li>\n<li>\n<p>Strong real-world performance at a size that runs self-hosted on as few as four GPUs.</p>\n</li>\n<li>\n<p>Mistral Vibe remote agents for async coding: sessions run in the cloud, can be spawned from the CLI or Le Chat, and a local CLI session can be teleported up to the cloud.</p>\n</li>\n<li>\n<p>Start Mistral Vibe coding tasks in Le Chat. Sessions run on the same remote runtime and keep going while you step away.</p>\n</li>\n<li>\n<p>Work mode in Le Chat runs on a new agent, powered by Mistral Medium 3.5, that works through multi-step tasks, calling tools in parallel until the job is done.</p>\n</li>\n</ol>\n<h2>Mistral Medium 3.5.</h2>\n<p>Mistral Medium 3.5 is our first flagship merged model, available in public preview. It is a dense 128B model with a 256k context window, handling instruction-following, reasoning, and coding in a single set of weights. It performs strongly in real-world use, with self-hosting possible on as few as four GPUs. Reasoning effort is now configurable per request, so the same model can answer a quick chat reply or work through a complex agentic run. We trained the vision encoder from scratch to handle variable image sizes and aspect ratios.</p>\n<p>Mistral Medium 3.5 scores 77.6% on SWE-Bench Verified, ahead of <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/devstral-2-vibe-cli\">Devstral 2</a> and models like Qwen3.5 397B A17B. It also has strong agentic capabilities and scores 91.4 on τ³-Telecom.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/9d0ff7f3-55ad-4ea9-83c0-b16e53bc4ea5_Z14ReNN.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/088938d7-ef28-45e5-bff2-52f9d78aca06_ZkLWsI.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/9af69a7b-6dd2-4c4c-82a1-9ccb96dc2824_Zw3yuq.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/c7212927-a6d9-4d2d-bf5f-e69fbe9fed8d_28Tqpm.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>The model was built for long-horizon tasks, calling multiple tools reliably, and producing structured output that downstream code can consume. It is the model that made async cloud agents in Vibe practical to ship.</p>\n<p>Mistral Medium 3.5 becomes the default model in Le Chat. It also replaces Devstral 2 in our coding agent, Vibe CLI.</p>\n<h2>Vibe remote agents.</h2>\n<p>From today, coding sessions can work through long tasks while you’re away. Many can run in parallel, and you stop being the bottleneck on every step the agent takes.</p>\n<p>You can start the cloud agents from the Mistral Vibe CLI or from Le Chat. While they run, you can inspect what the agent is doing, with file diffs, tool calls, progress states, and questions surfaced as you go. Ongoing local CLI sessions can be teleported up to the cloud when you want to leave them running, with session history, task state, and approvals carrying across.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/schema_2swAm0.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Vibe sits between the systems engineering teams already use, with humans in the loop wherever they're needed. It plugs into GitHub for code and pull requests, Linear and Jira for issues, Sentry for incidents, and apps like Slack or Teams for reporting.</p>\n<p>Each coding session runs in an isolated sandbox, including broad edits and installs. When the work is done, the agent can open a pull request on GitHub and notify you, so you review the result instead of every keystroke that produced it.</p>\n<p>It fits the high-volume, well-defined work that takes a developer's time without taking their judgment: module refactors, test generation, dependency upgrades, CI investigations, as well as bug fixes.</p>\n<p>We use <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/workflows\">Workflows</a> orchestrated in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/studio\">Mistral Studio</a> to bring Mistral Vibe into Le Chat. We originally built this for our own in-house coding environment, then for our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/customers\">enterprise customers</a>. Today the capability opens up to everyone, who can now launch coding tasks from the web. And without being tied to a local terminal, a developer can run several in parallel.</p>\n<p>You can start coding sessions directly in Le Chat, so a task described in chat runs on the same remote runtime as the CLI and the web, and comes back later as a finished branch or a draft PR.</p>\n<h2>New Work mode in Le Chat (Preview).</h2>\n<p>Work mode is a powerful new agentic mode for complex tasks in Le Chat, powered by a new harness and Mistral Medium 3.5. The agent becomes the execution backend for the assistant itself, so Le Chat can read and write, use several tools at once, and work through multi-step projects until it completes what you’ve asked.</p>\n<p>Here’s what Work mode enables you to do today.</p>\n<ol>\n<li>\n<p>Cross-tool workflows: catch up across email, messages, and calendar in a single run; prepare for a meeting with attendee context, latest news, and talking points pulled from your sources.</p>\n</li>\n<li>\n<p>Research and synthesis: dive into a topic across the web, internal docs, and connected tools, then produce a structured brief or report you can edit before exporting or sending.</p>\n</li>\n<li>\n<p>Triage your inbox and draft replies; create issues in Jira from your team and customer discussions; send a summary to your team on Slack.</p>\n</li>\n</ol>\n<p>Sessions persist longer than a typical chat reply, so an agent can keep going across many turns, through trial-and-error, and through to completion. In Work mode, connectors are on by default rather than chosen manually, which lets the agent reach into documents, mailboxes, calendars, and other systems for the rich context it needs to take correct action.</p>\n<p>Every action the agent takes is visible: you see each tool call and the thinking rationale. Le Chat will ask for explicit approval—based on your permissions—before proceeding with sensitive tasks like sending a message, writing a document, or modifying data.</p>\n<h2>Get started.</h2>\n<p>Mistral Medium 3.5 is available today in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/codestral/cli\">Mistral Vibe</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://chat.mistral.ai\">Le Chat</a>, and powers remote coding agents and Work mode in Le Chat on the Pro, Team, and Enterprise <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/pricing\">plans</a>.</p>\n<p>Through API, it’s priced at $1.5 per million input tokens and $7.5 per million output tokens. Open weights are on Hugging Face under a modified MIT license.</p>\n<p>It is also available for prototyping, hosted on NVIDIA GPU-accelerated endpoints on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://build.nvidia.com/mistralai/mistral-medium-3.5-128b\">build.nvidia.com</a> and as a scalable containerized inference microservice, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://catalog.ngc.nvidia.com/orgs/nim/teams/mistralai/containers/mistral-medium-3.5-128b\">NVIDIA NIM</a>.</p>\n<h2>Build the future of agentic systems with us.</h2>\n<p>We're hiring across research, engineering, and product to push agentic systems further. See our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\">open roles</a>.</p>\n",
      "date_modified": "2026-05-22T15:01:55+00:00",
      "date_published": "2026-05-22T15:01:55+00:00",
      "external_url": "https://mistral.ai/news/vibe-remote-agents-mistral-medium-3-5/",
      "id": "urn:aggr:item:6f8dce4cc26204d92a31ff04d890bf6a3ef5c3c3",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Model-Medium.jpg",
      "summary": "Introducing Mistral Medium 3.5, remote coding agents in Vibe, plus new Work mode in Le Chat for complex tasks.",
      "tags": [
        "ai"
      ],
      "title": "Remote agents in Vibe. Powered by Mistral Medium 3.5.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-05-22-remote-agents-in-vibe-powered-by-mistral-medium-3-5/"
    },
    {
      "content_html": "<p>Today we are releasing Connectors in Studio to unblock developers building highly customised AI applications grounded in enterprise data. All built-in connectors, as well as custom MCPs, are now available via API/SDK to be used with all model and agent calls.</p>\n<p>We are also introducing direct tool calling, giving developers precise control over how and when tools are invoked, without authentication barriers getting in the way of testing and iterating. In addition, you can now implement human-in-the-loop approval flows, allowing secure review and confirmation before tool execution, ensuring both flexibility and governance.</p>\n<ul>\n<li>\n<p>Programmatic access for creating, modifying, listing and deleting your connectors but also listing their tools and directly running them.</p>\n</li>\n<li>\n<p>All connectors are centrally registered making them available across Mistral apps: LeChat and AI Studio (with Vibe coming soon).</p>\n</li>\n<li>\n<p>Usage via Conversation API, Completions API, and Agent SDK can now facilitate complex workflows and integration with enterprise systems like CRMs, knowledgebases &amp; productivity tools.</p>\n</li>\n</ul>\n<h2>Integrations that live in the platform, not in your code</h2>\n<p>Building enterprise AI agents is getting easier. The harder part is everything around them: tracking down the right API docs, writing and maintaining tool functions, building integrations, setting up OAuth, handling token refresh, and debugging edge cases like broken pagination.</p>\n<p>Because of this, teams keep rebuilding the same integration layer. Even within the same company, similar integrations are often implemented multiple times in arbitrary code, leading to security risks, lack of traffic observability, and duplication of work.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-1_H3b2Y.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>A connector solves this by packaging an integration into a single, reusable entity using the MCP protocol.</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">my_connector</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">client</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">beta</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">connectors</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">create</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\">    <span class=\"syntax-variable syntax-parameter syntax-python\">name</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">salesforce-crm<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">description</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">Salesforce CRM — accounts, contacts, opportunities<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">server</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">https://your-mcp-server.internal/salesforce<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">visibility</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">shared_workspace<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">oauth_config</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-structure syntax-dictionary-or-set syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-dictionary-or-set syntax-begin syntax-python\">{</span>        <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">client_id<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-python\">:</span> <span class=\"syntax-meta syntax-item-access syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">os</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">environ</span></span></span><span class=\"syntax-meta syntax-item-access syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-begin syntax-python\">[</span></span><span class=\"syntax-meta syntax-item-access syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">SALESFORCE_CLIENT_ID<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-meta syntax-item-access syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-end syntax-python\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary-or-set syntax-python\">,</span>        <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">scopes<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-python\">:</span> <span class=\"syntax-meta syntax-structure syntax-list syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-list syntax-begin syntax-python\">[</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">read_accounts<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-list syntax-python\">,</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">read_contacts<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-section syntax-list syntax-end syntax-python\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary-or-set syntax-python\">,</span>        <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">redirect_uri<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-python\">:</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">https://your-app.internal/oauth/callback<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary-or-set syntax-python\">,</span>    <span class=\"syntax-punctuation syntax-section syntax-dictionary-or-set syntax-end syntax-python\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n</span></span></code></pre>\n<p>Once registered, the custom MCP connector is discoverable, governed &amp; monitored in Studio and becomes a native tool for any conversation, agent, or workflow without rewriting integration logic, without re-implementing auth, without duplicating it across teams. Set up once, run it all the time, everywhere. Attaching a connector to any conversation takes one line:</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">response</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">client</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">beta</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">conversations</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">start_async</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\">    <span class=\"syntax-variable syntax-parameter syntax-python\">model</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">mistral-medium-latest<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">inputs</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">Which enterprise accounts renewed last quarter?<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">tools</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-structure syntax-list syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-list syntax-begin syntax-python\">[</span><span class=\"syntax-meta syntax-structure syntax-dictionary-or-set syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-dictionary-or-set syntax-begin syntax-python\">{</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-python\">:</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">connector<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary-or-set syntax-python\">,</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">connector_id<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-python\">:</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">salesforce-crm<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-section syntax-dictionary-or-set syntax-end syntax-python\">}</span></span><span class=\"syntax-punctuation syntax-section syntax-list syntax-end syntax-python\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n</span></span></code></pre>\n<h2>A runnable golden path</h2>\n<p>Let’s build an agent for a multi-step workflow based on reasoning across sources given agent’s secure connectivity to GitHub, public repo content &amp; docs, and live data from the web. The agent can understand intent, analyse code, and propose changes alongside other common use cases like generating tests, refactoring, identifying inefficiencies, bugs or vulnerabilities.</p>\n<h3>Prerequisites</h3>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">pip</span></span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">install</span></span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">mistralaiexport</span></span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-other syntax-constant syntax-python\">MISTRAL_API_KEY</span></span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">your-api-key<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">client</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">Mistral</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-variable syntax-parameter syntax-python\">api_key</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-item-access syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">os</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">environ</span></span></span><span class=\"syntax-meta syntax-item-access syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-begin syntax-python\">[</span></span><span class=\"syntax-meta syntax-item-access syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">MISTRAL_API_KEY<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-meta syntax-item-access syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-end syntax-python\">]</span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n</span></span></code></pre>\n<h3>1 - Create a connector for a public remote MCP</h3>\n<p>To query and explore code bases, we will leverage the DeepWiki remote server which provides an MCP interface to API/tool endpoint. This way the agent can explore the content and documentation without scraping docs manually or loading whole repos.</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">my_custom_mcp</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">client</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">beta</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">connectors</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">create_async</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\">    <span class=\"syntax-variable syntax-parameter syntax-python\">name</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">my_deepwiki<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">description</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">DeepWiki MCP for code repository exploration<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">server</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">https://mcp.deepwiki.com/mcp<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">visibility</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">shared_workspace<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n</span></span></code></pre>\n<p>Registering the MCP server once allows users to reuse it across conversations, agents, or direct tool calls. This is the entry point for any custom MCP flow. For a comprehensive example of how to manage built-in and custom connectors see <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/cookbooks/mistral-connectors-01-connectors-management\">cookbook: Connectors Management</a>.</p>\n<h3>2 - Create agent</h3>\n<p>The agent should also be able to connect to GitHub and the web; users don’t need to create those connectors as they are already built into Mistral.</p>\n<p>Note that a connector can expose dozens of tools. If users want to exclude potentially damaging actions, <code>tool_configuration</code> controls the tool availability without modifying the connector itself. More details can be found in Cookbook: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/cookbooks/mistral-connectors-02-connectors-in-conversations-and-agents\">Using Connectors in Conversations</a>.</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">my_agent</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">client</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">beta</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">agents</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">create_async</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\">    <span class=\"syntax-variable syntax-parameter syntax-python\">name</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">deepwiki_agent<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">description</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">Agent for code repository exploration<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">model</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">mistral-small-latest<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">instructions</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-block syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;&quot;&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-block syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"></span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-block syntax-python\"><span class=\"syntax-invalid syntax-deprecated syntax-character syntax-escape syntax-python\">\\ </span>You are an Open-Source Software Auditor. \\\n</span></span></span></span></span></span></code></pre>\n<p>When asked to vet a library or repository, you MUST perform ALL of the following tasks:</p>\n<pre><code class=\"language-text\"><span class=\"code-snippet\">## Final verdictBased on all three analyses, give a clear recommendation:- **SAFE TO ADOPT** — no major concerns- **ADOPT WITH CAUTION** — some concerns to be aware of- **AVOID** — significant risks identified\nAlways be thorough and cite your sources.\\&quot;&quot;&quot;,    tools=[        {&quot;type&quot;: &quot;web_search&quot;},        {            &quot;type&quot;: &quot;connector&quot;,            &quot;connector_id&quot;: &quot;github&quot;,            &quot;tool_configuration&quot;: {&quot;exclude&quot;: [&quot;delete_file&quot;]},        },        {&quot;type&quot;: &quot;connector&quot;, &quot;connector_id&quot;: &quot;my_custom_mcp.name&quot;},    ],)\nresponse = await client.beta.conversations.start_async(    agent_id=my_agent.id,    inputs=[        {            &quot;role&quot;: &quot;user&quot;,            &quot;content&quot;: &quot;Please perform full audit on repo pallets/flask&quot;,        }    ],)\n</span></code></pre>\n<h2>Direct tool calling</h2>\n<p>Not every workflow needs the model to decide when and how tools are invoked. For a more deterministic experience, users can now call connectors directly.</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">result</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-keyword syntax-other syntax-await syntax-python\">await</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">client</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">beta</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">connectors</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">call_tool_async</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\">        <span class=\"syntax-variable syntax-parameter syntax-python\">connector_id</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">my_deepwiki<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>        <span class=\"syntax-variable syntax-parameter syntax-python\">tool_name</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">read_wiki_structure<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>        <span class=\"syntax-variable syntax-parameter syntax-python\">arguments</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-structure syntax-dictionary-or-set syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-dictionary-or-set syntax-begin syntax-python\">{</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">repoName<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-python\">:</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">sqlite/sqlite<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-section syntax-dictionary-or-set syntax-end syntax-python\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>    </span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-function syntax-builtin syntax-python\">print</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-storage syntax-type syntax-string syntax-python\">f</span><span class=\"syntax-meta syntax-string syntax-interpolated syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-interpolated syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">Tool output:<span class=\"syntax-constant syntax-character syntax-escape syntax-python\">\\n</span></span><span class=\"syntax-meta syntax-interpolation syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-interpolation syntax-begin syntax-python\">{</span><span class=\"syntax-source syntax-python syntax-embedded\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">result</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">content</span></span></span></span><span class=\"syntax-meta syntax-interpolation syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-interpolation syntax-end syntax-python\">}</span></span><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n</span></span></code></pre>\n<p>This is especially useful for debugging and pipeline-style automation which limits ambiguity. For the full pattern, see <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/cookbooks/mistral-connectors-03-connectors-tool-calling\">cookbook: Connector tool calling</a>.</p>\n<h2>When a human needs to be in the loop</h2>\n<p>Some actions should not execute without explicit approval. <code>requires_confirmation</code> pauses execution and hands control back to your application before the tool runs:</p>\n<pre><code class=\"language-json\"><span class=\"code-snippet\" data-language=\"JSON\"><span class=\"syntax-source syntax-json\"><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>   <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>connector<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>   <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>connector_id<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>gmail<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>   <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>tool_configuration<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>       <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>include<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>gmail_search<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>       <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>requires_confirmation<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>gmail_search<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span>   </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span></span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span></span></code></pre>\n<p>The model proposes, the user application decides whether to proceed. The boundary between AI judgment and human judgment is explicit and written in code.  For the full approval flow, including the pending tool call and resume step, see <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/cookbooks/mistral-connectors-04-human-in-the-loop-confirmation\">cookbook: Human-in-the-loop Confirmation</a>.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/connector-2_1Ia1va.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Start building</h2>\n<p>You can now use Connectors in Studio, in Public Preview. Start building today by visiting the Studio console: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/connectors\">https://console.mistral.ai/build/connectors</a></p>\n<ul>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/capabilities/connectors\">Documentation</a> on the release</p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/cookbooks/mistral-connectors-05-connectors-in-completions\">Cookbooks</a> on various common usage patterns</p>\n</li>\n</ul>\n",
      "date_modified": "2026-05-22T14:48:28+00:00",
      "date_published": "2026-05-22T14:48:28+00:00",
      "external_url": "https://mistral.ai/news/connectors/",
      "id": "urn:aggr:item:bdddfff48ac132d1a3fdaa7f8cac8b1aa7052efb",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Solution-Studio.jpg",
      "summary": "Connect enterprise data to your AI applications with reusable connectors, direct tool calling, and human-in-the-loop approval controls.",
      "tags": [
        "ai"
      ],
      "title": "Connect the dots: Build with built-in and custom MCPs in Studio",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-05-22-connect-the-dots-build-with-built-in-and-custom-mcps-in/"
    },
    {
      "content_html": "<p>Today, we're releasing Workflows in public preview. Workflows is the orchestration layer for enterprise AI. It brings the durability, observability, and fault tolerance required to move AI-powered processes from proof of concept to production reliably. Organizations like <strong>ASML, ABANCA, CMA-CGM, France Travail, La Banque Postale, Moeve</strong>, and many more are already running Workflows to automate critical processes.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/logo-workflows_ZQoBAO.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/logo-workflows-white_Z8WqGd.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Enterprise teams today have access to capable models. What they lack is a way to run them reliably in production. We see this across every industry we work with. The failure modes are consistent: pipelines that run in a notebook but fail silently in production with no trace, long-running processes that can't survive a network timeout, multi-step operations that need human approval mid-execution but have no mechanism to pause and resume, and systems that offer no way to verify they're still doing what they're supposed to after deployment.</p>\n<p>Building all of the capabilities to address these challenges is months of complex work for enterprises: the orchestration layer has to be stitched together from scratch, and the components it connects, inference, agents, connectors, observability, each come from different tools with their own interfaces and formats.</p>\n<p>Workflows is part of Studio, so the orchestration layer and the components it orchestrates are built to work together. Once a business process is identified, developers write the workflow in Python. Every workflow can then be published to Le Chat so anyone in the organisation can trigger it. Every step is tracked and auditable in Studio. By bringing all of this together, Workflows lets your organisation go from identifying a use case to running it in production in days.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=9tXQBnpvVsU\">www.youtube.com</a></p>\n<h2>Workflows deployed in the real world</h2>\n<p>As mentioned, Mistral AI customers are already using Workflows to automate business processes and run them in production. The examples below show how durability, observability, and human-in-the-loop approvals work in practice.</p>\n<p><strong>Cargo release automation.</strong></p>\n<p>Global shipping runs on paperwork. A single cargo release can involve customs declarations, dangerous goods classifications, safety inspections, and regulatory checks across multiple jurisdictions. A missed step can result in cargo delays at port and potential compliance breaches.</p>\n<p>The operational requirements for a use case like this are: the system must survive intermittent timeouts, pause mid-execution for human review, and produce a precise account of where and why when something fails.</p>\n<p>Using Workflows, a customer is able to automate this end to end. The workflow validates every incoming shipping document against customs rules, checks for anomalies, flags anything that needs human sign-off, waits for approval, then releases the cargo. With Workflows, the human approval step is a single line of code: wait_for_input(). The workflow pauses, waits for as long as it takes with no compute consumption, notifies the reviewer, and resumes exactly where it left off. Studio records the full execution history.</p>\n<p><strong>Document compliance checking.</strong></p>\n<p>KYC reviews are manual, repetitive, and time-consuming. A single customer onboarding can require extracting identity documents, verifying them against sanctions lists and PEP databases, cross-referencing regulatory requirements across jurisdictions, and producing a structured risk assessment with supporting evidence. Done manually, this takes hours of analyst time per case.</p>\n<p>The operational requirements here are speed and auditability. A system to automate a process like this should be fast and should document the steps and reasoning behind them for meeting regulatory requirements.</p>\n<p>With Workflows, the entire review process only takes minutes and Studio surfaces every step as a structured timeline you can drill into at any level of detail, down to specific traces with native support for OpenTelemetry.</p>\n<p><strong>Customer support triage.</strong></p>\n<p>Support teams deal with volume. Refund requests, technical issues, billing disputes, account escalations. Routing them to the right team quickly and consistently is what determines resolution time.</p>\n<p>The operational requirement here is correctability. Automated routing will get things wrong. When it does, the team needs to see why a ticket was routed the way it was, and fix it without retraining the model.</p>\n<p>With Workflows, incoming tickets are analysed, categorised by intent and urgency, and routed to the right downstream process automatically. Each routing decision is visible and traceable in Studio. When the categorisation is wrong, the team corrects it at the workflow level.</p>\n<h2>Why Workflows</h2>\n<ul>\n<li>\n<p><strong>Durable execution.</strong> Workflows track state at every step. If a process fails, it resumes where it left off. As a result, developers can focus more on writing business logic instead of recovery logic.</p>\n</li>\n<li>\n<p><strong>Observability.</strong> Every branch, retry, and state change is recorded in Studio. If a decision needs to be investigated months later, the full timeline is there to show how it was reached.</p>\n</li>\n<li>\n<p><strong>Human-in-the-loop.</strong> A single line of code pauses a workflow for approval. The reviewer responds from Le Chat, a webhook, or any connected surface, and the workflow picks up where it stopped.</p>\n</li>\n<li>\n<p><strong>Native to Studio</strong>. Workflows use the same agents and connectors as the rest of Studio. There's no separate integration work to wire them in.</p>\n</li>\n<li>\n<p><strong>Enterprise readiness.</strong> Workspaces within Studio keep teams and projects separated, and role-based access control (RBAC) makes sure those rules are enforced consistently.</p>\n</li>\n<li>\n<p><strong>Built for developers and business teams.</strong> Engineers write workflows as code. Business teams run them from Le Chat.</p>\n</li>\n<li>\n<p><strong>Deployment flexibility.</strong> The control plane runs on Mistral. Workers and data processing run in your environment, right where your critical services are hosted: cloud, on-prem, or hybrid.</p>\n</li>\n</ul>\n<h2>Under the hood</h2>\n<p>Workflows is built on Temporal's durable execution engine, the same infrastructure that powers orchestration at Netflix, Stripe, and Salesforce. We extended it for AI-specific workloads by adding streaming, payload handling, multi-tenancy, and observability that the core engine does not provide out of the box.</p>\n<p>The deployment model is split between Mistral and your environment, and separates the control plane from the data plane. Mistral hosts the orchestration infrastructure: Temporal cluster, the Workflows API, and Studio. You deploy workers on your own Kubernetes environment using a separate Helm chart, and they connect back to the central cluster via secure credentials. Your data and business logic stay within your perimeter.</p>\n<p>The Mistral SDK handles retry policies, tracing, timeouts, rate limiting, and human-in-the-loop through decorators and single-line configuration, so the only thing you write is the business logic itself.</p>\n<h2>Get started</h2>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=7TnJJ0D__kk\">www.youtube.com</a></p>\n<p>The Python SDK is how developers write and run workflows. v3.0 is now publicly available and installable with a single command:</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">uv</span></span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">add</span></span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">mistralai</span></span><span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-python\">-</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">workflows</span></span>\n</span></span></code></pre>\n",
      "date_modified": "2026-04-27T12:00:23+00:00",
      "date_published": "2026-04-27T12:00:23+00:00",
      "external_url": "https://mistral.ai/news/workflows/",
      "id": "urn:aggr:item:e07b647af6b48351a95c00ef3ad8096f94065dfc",
      "image": "https://mistral.ai/cms-media/api/media/file/workflow-thumbnail.png",
      "summary": "Workflows is now in public preview.",
      "tags": [
        "ai"
      ],
      "title": "Workflows for work that runs the business",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-04-27-workflows-for-work-that-runs-the-business/"
    },
    {
      "content_html": "<p>Most developer tools start the same way. You need to do a thing repeatedly, so you write a script. The script grows flags. The flags grow subcommands. Before you know it, you've got a CLI.</p>\n<p>We had this exact experience when building an internal platform tool to help our solutions team ship faster. It scaffolds projects, spins up dev environments, generates configs, and deploys to staging.</p>\n<p>As our CLI grew in scope, so did the number of our internal users. But then, something interesting happened: suddenly, we were no longer building just for human developers, but for coding agents too.</p>\n<h2>What Good DX Looks Like</h2>\n<p>Before we talk about agents, let's talk about what makes a CLI actually pleasant for human developers.</p>\n<p>Spaces is opinionated about the boring stuff. It picks sane directory structures so you don't have to. It generates the config files you'd otherwise copy from the last project. It wires services together so your API and your frontend can talk on day one, not after an hour of YAML editing or “vibing”.</p>\n<p>Here's what a typical session looks like:</p>\n<pre><code class=\"language-text\"><span class=\"code-snippet\">$ spaces init my-project$ cd my-project$ spaces dev\n</span></code></pre>\n<p>Three commands. You go from nothing to a running multi-service project with hot reload, a database, and generated Dockerfiles. That's the bar.</p>\n<p>The commands that matter tend to fall into three buckets:</p>\n<ul>\n<li>\n<p><strong>Scaffolding</strong> -- These create structure, ask questions, show options, let you explore.</p>\n</li>\n<li>\n<p><strong>Development</strong> -- These are your inner loop. They just “run”.</p>\n</li>\n<li>\n<p><strong>Operations</strong> -- These touch production. Careful, double-check before acting</p>\n</li>\n</ul>\n<p>This is all table stakes. But then our second user showed up and we discovered we needed something a little different, and a lot more interesting.</p>\n<h2>The Second User: The Agent</h2>\n<p>We built a TUI module picker for <code>init</code>. Fancy changes, commands, it looked super.</p>\n<p>Then an agent tried to use it.</p>\n<p>The agent saw raw ANSI escape codes. <code>\\\\\\\\x1b[36m?\\\\\\\\x1b[0m Select components</code>. It couldn't send arrow keys or toggle selections. It was locked out of the command entirely.</p>\n<p>The fix seems obvious in retrospect: add a <code>--components</code> flag. But the real insight was bigger than one flag.</p>\n<h2>Every prompt is a flag in disguise</h2>\n<p>Every time your CLI asks an interactive question, there's an implicit contract: &quot;I need this piece of information to proceed.&quot; To fulfill that contract, you can use an interactive prompt. Or you can use a flag or config file.</p>\n<p>The trick is to think about the <em>information</em> first and the <em>input method</em> second.</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-function syntax-python\"><span class=\"syntax-storage syntax-type syntax-function syntax-python\">def</span> <span class=\"syntax-entity syntax-name syntax-function syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">init_command</span></span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-begin syntax-python\">(</span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-python\">    <span class=\"syntax-variable syntax-parameter syntax-python\">components</span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-annotation syntax-python\"><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-parameter syntax-python\">:</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">str</span></span> <span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-python\">|</span> <span class=\"syntax-constant syntax-language syntax-python\">None</span> </span><span class=\"syntax-meta syntax-function syntax-parameters syntax-default-value syntax-python\"><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">Option</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-constant syntax-language syntax-python\">None</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-python\"><span class=\"syntax-punctuation syntax-separator syntax-parameters syntax-python\">,</span>    <span class=\"syntax-variable syntax-parameter syntax-python\">yes</span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-annotation syntax-python\"><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-parameter syntax-python\">:</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">bool</span></span> </span><span class=\"syntax-meta syntax-function syntax-parameters syntax-default-value syntax-python\"><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">Option</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-constant syntax-language syntax-python\">False</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">-y<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-python\"><span class=\"syntax-punctuation syntax-separator syntax-parameters syntax-python\">,</span><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-end syntax-python\">)</span></span><span class=\"syntax-meta syntax-function syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-function syntax-begin syntax-python\">:</span></span>    <span class=\"syntax-meta syntax-statement syntax-if syntax-python\"><span class=\"syntax-keyword syntax-control syntax-flow syntax-conditional syntax-python\">if</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">components</span></span><span class=\"syntax-punctuation syntax-section syntax-block syntax-conditional syntax-python\">:</span></span>        <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">selected</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">components</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">split</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">,<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>    <span class=\"syntax-meta syntax-statement syntax-conditional syntax-python\"><span class=\"syntax-keyword syntax-control syntax-flow syntax-conditional syntax-python\">elif</span></span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">yes</span></span><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-variable syntax-python\">:</span>        <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">selected</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">get_defaults</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>    <span class=\"syntax-meta syntax-statement syntax-conditional syntax-python\"><span class=\"syntax-keyword syntax-control syntax-flow syntax-conditional syntax-python\">else</span><span class=\"syntax-punctuation syntax-section syntax-block syntax-python\">:</span></span>        <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">selected</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">show_picker</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n    <span class=\"syntax-comment syntax-line syntax-number-sign syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-python\">#</span> Same logic from here    create_project(selected)\n</span></span></span></code></pre>\n<p>Three input paths, one execution path. The business logic doesn't know how the inputs arrived. This means you test it once, not three times.</p>\n<p>The <code>-y</code> flag deserves special attention. It's not just &quot;skip confirmations.&quot; It's a contract that says: <em>I'm providing everything you need programmatically, don't block on stdin.</em> When you run with <code>-y</code>, every prompt resolves to either a flag value or a smart default. If it can't, it fails loudly instead of hanging.</p>\n<p><strong>Example in practice: the interactive elements in this post.</strong></p>\n<p>The elements were built in a fresh repository. An agent was retroactively asked to wire the project into [spaces cli] for deployment. It started by running <code>--help</code> across the relevant commands to understand the interface. From that, it figured out which configuration files were needed, generated a <code>config.yaml</code>, and connected the Dockerfile and registry settings - no hand-holding required.</p>\n<p>In the same pass, it set up the GitHub Actions CI pipeline. From a single prompt to a live deployment took under 10 minutes (a cycle time we're actively working to bring down). After that, the repository was fully configured and the embeds were <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://spaces-blogs-staging-mistral-01d83c8e.koyeb.app/\">deployed</a> with <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.koyeb.com/\">Koyeb</a> — as a Space, scaffolded and deployed through Spaces itself. Yes, the interactive demos embedded in this blog post about Spaces are running as a Space. <em>Spaception</em>.</p>\n<p>Because every interactive input had a flag equivalent, the agent could operate autonomously end-to-end.</p>\n<h2>Structured Data as Interface</h2>\n<p>The CLI our team was building helped our applied AI engineers ship apps. But not every app looks the same. Some need a backend and a vector database. Others just need a relational database, a frontend, and some APIs. A few are worker-only services with no UI at all.</p>\n<p>We were not about to hardcode the module types. So we built a plugin system where each component is a plugin that declares its own properties:</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-class syntax-python\"><span class=\"syntax-storage syntax-type syntax-class syntax-python\">class</span> <span class=\"syntax-entity syntax-name syntax-class syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">ModulePlugin</span></span><span class=\"syntax-meta syntax-class syntax-inheritance syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-inheritance syntax-begin syntax-python\">(</span></span></span><span class=\"syntax-meta syntax-class syntax-inheritance syntax-python\"><span class=\"syntax-entity syntax-other syntax-inherited-class syntax-python\">BaseModel</span><span class=\"syntax-punctuation syntax-section syntax-inheritance syntax-end syntax-python\">)</span></span><span class=\"syntax-meta syntax-class syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-class syntax-begin syntax-python\">:</span></span>    <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">type_id</span></span><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-variable syntax-python\">:</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">str</span></span>    <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">category</span></span><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-variable syntax-python\">:</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">str</span></span>    <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">default_port</span></span><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-variable syntax-python\">:</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">int</span></span>\n<span class=\"syntax-meta syntax-function syntax-python\">    <span class=\"syntax-storage syntax-type syntax-function syntax-python\">def</span> <span class=\"syntax-entity syntax-name syntax-function syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">get_env_vars</span></span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-begin syntax-python\">(</span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-python\"><span class=\"syntax-variable syntax-parameter syntax-python\">self</span><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-end syntax-python\">)</span></span><span class=\"syntax-meta syntax-function syntax-python\"> </span><span class=\"syntax-meta syntax-function syntax-annotation syntax-return syntax-python\"><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-return syntax-python\">-&gt;</span> <span class=\"syntax-meta syntax-item-access syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">list</span></span></span><span class=\"syntax-meta syntax-item-access syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-begin syntax-python\">[</span></span><span class=\"syntax-meta syntax-item-access syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">EnvVarDef</span></span></span><span class=\"syntax-meta syntax-item-access syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-brackets syntax-end syntax-python\">]</span></span></span><span class=\"syntax-meta syntax-function syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-function syntax-begin syntax-python\">:</span></span> <span class=\"syntax-constant syntax-language syntax-python\">...</span>    <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-invalid syntax-illegal syntax-name syntax-python\">def</span></span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">get_dev_command</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-language syntax-python\">self</span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">port</span></span>: <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">int</span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span> <span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-python\">-</span><span class=\"syntax-keyword syntax-operator syntax-comparison syntax-python\">&gt;</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">str</span></span><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-variable syntax-python\">:</span> <span class=\"syntax-constant syntax-language syntax-python\">...</span>\n</span></span></code></pre>\n<p>Plugins are introspectable. You can list them, serialize them, diff them. A human browses a TUI picker. An agent queries the registry and gets JSON back. Same data, different rendering.</p>\n<p>This accidentally solved a problem we didn't know we had. Before, adding a new module type meant updating the picker, the Dockerfile generator, the env file writer, and the compose template. Now it means writing one plugin class. The registry is the single source of truth and everything reads from it.</p>\n<h2>Teaching Agents About Your Project</h2>\n<blockquote>\n<blockquote>\n<p>There's an old saying that content is king. With agents, context is.</p>\n</blockquote>\n</blockquote>\n<p>The most impactful thing we did for agent usability was generating two files on every <code>init</code>:</p>\n<p><code>context.json</code> -- a structured snapshot of the project: what modules exist, ports they use, commands to run, env vars they need.</p>\n<p><code>AGENTS.md</code> -- a set of rules written for LLMs and more imperative than your regular one. Not &quot;this project uses PostgreSQL&quot; but &quot;run <code>mycli dev --migrate</code> before testing database changes.&quot;</p>\n<p>An agent that reads these files before acting makes dramatically fewer mistakes. Basically, it won’t guess at port numbers, run the wrong test command, try to install dependencies that are already managed by the toolchain.</p>\n<p>The context file also acts as a cache-buster for stale agent assumptions. When you add a module or change a deploy target, the context file updates automatically on the next <code>dev</code> or <code>init</code>. The agent reads fresh state every time.</p>\n<h2>Implicit State is the Enemy</h2>\n<p>The subtlest problem we hit was implicit state. Our <code>add</code> command read <code>config.yaml</code> from the current working directory. A human <code>cd</code>s to the right folder without thinking. An agent running commands from a workspace root has no idea it needs to be in a subdirectory.</p>\n<p>The fix:</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-python\">#</span> Before: CWD dependencyconfig = load_config(Path.cwd() / &quot;config.yaml&quot;)\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-python\">#</span> After: explicit with fallbackconfig = load_config(    path or find_config_in_parents(Path.cwd()))\n</span></span></span></code></pre>\n<p>Every hidden assumption -- CWD, environment variables, dotfiles in <code>$HOME</code> -- is a place where an agent will trip. Explicit parameters with sensible fallbacks solve it for agents and make scripting easier for humans too.</p>\n<h2>The Checklist</h2>\n<p>Looking back, the changes were small individually. Just a set of principles applied consistently:</p>\n<ul>\n<li>\n<p>Every interactive input has a flag equivalent</p>\n</li>\n<li>\n<p>Every flag has a smart default for headless mode</p>\n</li>\n<li>\n<p>State is explicit. CWD, env vars, and config paths are inputs, not assumptions</p>\n</li>\n<li>\n<p>Plugins are data models, not just code. Introspectable by default</p>\n</li>\n<li>\n<p>Context files give agents (and CI, and scripts) a structured description of the project</p>\n</li>\n</ul>\n<h2>Building a Better Tool for Everyone</h2>\n<p>The funny part is that none of this made the CLI worse for humans. The TUI picker still works and looks fancy, progress spinners still spin, confirmation dialogs still confirm. We just added a second door.</p>\n<p>And that second door turned out to be the more important one. Not because agents matter more than humans, but because the constraints they impose are the same constraints that make a CLI composable, scriptable, and testable. Designing for agents forced us to build a better tool for everyone.</p>\n<p>If you're building developer tools right now, you don't need a separate agent API. You need to look at every <code>input()</code> call, every CWD assumption, every pretty-printed-only output, and ask: what if the user on the other end is a process, not a person?</p>\n<p>The answer to that question will improve your tool either way.</p>\n<p>Spaces CLI is built by Lorenzo Signoretti, Riwa Hoteit &amp; Sam Fenwick at Mistral AI. Special thanks to our Applied AI team, the earliest and most demanding users of the CLI, whose real-world usage shaped every pattern described here. We're excited to see the applications it will help them build with our Customers to solve painful use cases.</p>\n<p><strong>The tooling layer between humans and agents is still being figured out. If building developer tools at the intersection of AI and infrastructure sounds like your thing,</strong> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\"><strong>we’re hiring</strong></a><strong>.</strong></p>\n",
      "date_modified": "2026-03-31T12:00:00+00:00",
      "date_published": "2026-03-31T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/spaces/",
      "id": "urn:aggr:item:8930f8048a4ec3ce0dca73332cba17c0438480be",
      "image": "https://mistral.ai/cms-media/api/media/file/thumbnail-03.jpg",
      "summary": "Most developer tools start the same way. You need to do a thing repeatedly, so you write a script. The script grows flags. The flags grow subcommands. Before you know it, you've got a CLI. We had this exact experience when building an…",
      "tags": [
        "ai"
      ],
      "title": "Spaces: A CLI Built for Humans and Agents",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-03-31-spaces-a-cli-built-for-humans-and-agents/"
    },
    {
      "content_html": "<p>Thinking</p>\n<p>Summary</p>\n<p>Mistral has launched Voxtral TTS, a 4B-parameter text-to-speech model delivering state-of-the-art multilingual voice generation with realistic, emotionally expressive speech in 9 languages, low latency, and easy voice adaptation. The model excels in contextual understanding, speaker modeling, and zero-shot cross-lingual voice adaptation, making it ideal for enterprise voice workflows and scalable AI agents. Available via API and Mistral Studio, it offers cost-effective, high-quality voice generation starting at $0.016 per 1k characters.</p>\n<p>Today we’re releasing Voxtral TTS, our first text-to-speech model with state-of-the-art performance in multilingual voice generation. The model is lightweight at 4B parameters, making Voxtral-powered agents natural, reliable, and cost-effective at scale.</p>\n<h2>Highlights.</h2>\n<ol>\n<li>\n<p>Realistic, emotionally expressive speech in 9 popular languages with support for diverse dialects.</p>\n</li>\n<li>\n<p>Very low latency for time-to-first-audio.</p>\n</li>\n<li>\n<p>Easily adaptable to new voices.</p>\n</li>\n<li>\n<p>Available to test out in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/audio/text-to-speech\">Mistral Studio</a>.</p>\n</li>\n<li>\n<p>Enterprise-grade text-to-speech, powering critical voice agent workflows.</p>\n</li>\n</ol>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=SpLRS7Q3fIk\">www.youtube.com</a></p>\n<p>A natural voice generation hinges on the model’s ability to not only recite but interpret a text accurately. Contextual understanding - like neutral, happy, sarcastic, etc. - determines whether the listener considers the generation accurate or robotic. Our model excels at both contextual understanding and speaker modeling: capturing how a specific person naturally speaks. Our voice adaptation goes beyond traditional read-speech by capturing a speaker’s personality, including their natural pauses, rhythm, intonation, and emotional dexterity. With its compact size, low cost and latency, and easy adaptability, Voxtral TTS gives full control and customization for enterprises looking to own their voice AI stack.</p>\n<p>Audio is the new UX. Create new interactions for collaboration and understanding only found in speech. Begin now in AI Studio with our Mistral Voices in American, British, and French dialects.</p>\n<h2>Listen and decide: can you tell the difference?</h2>\n<p>Our team speaks dozens of languages in multiple dialects, we understand the importance of cultural nuance and built a model that is a reflection of us. Speech generation builds trust via natural-like rhythm, emotion, and even the use of humor. That’s why with voice emulation, we focused on authenticity and emotional expressiveness.</p>\n<h3>Voice emulation</h3>\n<h2>State-of-the-art performance.</h2>\n<p>Automated metrics such as word-error-rate and audio quality scores for multilingual text-to-speech systems are unable to measure naturalness of speech. What makes speech natural is extremely nuanced and requires a deep understanding of cultural differences and typical speaking patterns. Hence, comparative human evaluations performed by native speakers are crucial.</p>\n<p>For voice agents, latency and quality are in constant tension. Human evaluations show that Voxtral TTS achieves superior naturalness compared to ElevenLabs Flash v2.5 while maintaining similar Time-to-First-Audio (TTFA). Voxtral also performs at parity with the quality of ElevenLabs v3, successfully supporting emotion-steering for more lifelike interactions.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/16f25438-cacc-4786-8de7-7852ad0929d4_18F7kk.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Voxtral TTS Winrate (1)\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>We conducted a comparative human evaluation of Voxtral TTS and ElevenLabs v2.5 Flash in a zero-shot custom voice context. Using two recognizable voices in their native dialects for each of the 9 supported languages, 3 annotators performed a side-by-side preference test per pair on naturalness, accent adherence, and acoustic similarity to the original reference. Voxtral TTS widens the quality gap to v2.5 Flash in this zero-shot multilingual custom voice setting, highlighting the instant customizability of Voxtral TTS to any voice.</p>\n<h2>Spoken natively.</h2>\n<p>Trained on a large speech dataset, Voxtral TTS is built for global application. It supports state-of-the-art performance in 9 languages: English, French, German, Spanish, Dutch, Portuguese, Italian, Hindi, and Arabic.</p>\n<p>The model was trained to adapt to a custom voice with a reference as little as 3s and capture not just the voice but also nuances like subtle accent, inflections, intonations and even disfluencies similar to those expressed in the reference. We offer some preset voice options in the API but it is simple to extend to your in-house voice library customizing it to the use-case, localize it to the language and accent, keep it neutral or more emotive, casual or formal, more natural and conversational or robotic.</p>\n<p>The model also demonstrates zero-shot cross-lingual voice adaptation even though it’s not explicitly trained for it. For example, the model can generate English speech with a French voice prompt and English text. The resulting speech sounds natural while adopting the accent of the provided voice prompt (in this example, the generated speech has a natural French-accented English). This makes the model useful for building cascaded speech-to-speech translation systems.</p>\n<h3>Cascaded speech-to-speech translation</h3>\n<p>Click a speaker to run cascaded speech-to-speech translation.</p>\n<h2>Built for low-latency streaming.</h2>\n<p>Latency is critical for voice agent applications. Voxtral TTS achieves a model latency of 70ms for a typical input voice sample of 10 seconds and 500 characters, with a real-time factor (RTF) of ≈9.7x. The model natively generates up to two minutes of audio, and our API handles arbitrarily long generations with smart interleaving.</p>\n<h2>Voxtral TTS architecture.</h2>\n<p>The model is a transformer-based, autoregressive, flow-matching model, built on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/ministral-3-3b-25-12\">Ministral 3B</a>. It consists of the following components:</p>\n<ul>\n<li>\n<p>3.4B parameters transformer decoder backbone</p>\n</li>\n<li>\n<p>390M flow-matching acoustic transformer</p>\n</li>\n<li>\n<p>300M neural audio codec (symmetric encoder-decoder)</p>\n</li>\n</ul>\n<p>The model takes a voice prompt (5 to 25 seconds) and a text prompt in 9 supported languages. For each audio frame, the transformer backbone predicts a semantic token, then the flow-matching transformer runs 16 function evaluations (NFEs) to produce the acoustic latent.</p>\n<p>We developed an in-house codec, which processes audio causally using a semantic VQ (8192 vocabulary) and an acoustic FSQ (36 dim and 21 levels) latent and produces them at 12.5Hz frame rate.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/549bcfdd-e418-48ff-a7a1-45ddd79e32af_Z2mKEiF.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Audio Infographic\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Powering enterprise voice workflows.</h2>\n<p>Voxtral TTS closes the loop on audio intelligence, giving enterprise voice pipelines an output layer that passes the human test. It works alongside <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/voxtral-transcribe-2\">Voxtral Transcribe</a> for full speech-to-speech, or integrates into any existing speech-to-text and LLM stack, with cross-lingual support.</p>\n<h3>Workflows</h3>\n<h3>Customer Support</h3>\n<p>Voice agents that route and resolve queries across channels with natural, brand-appropriate speech. Place Voxtral TTS into existing contact support call systems for automated spoken responses, with output that integrates into existing workflows.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=SpLRS7Q3fIk\">www.youtube.com</a></p>\n<h2>Test-run the model in Mistral Studio.</h2>\n<p>Experiment with Voxtral TTS directly in the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/audio/text-to-speech\">Mistral Studio playground</a>. Select one of the Mistral voices or record your own.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=DffzOI3g8Yk\">www.youtube.com</a></p>\n<h2>Get started with Voxtral TTS.</h2>\n<p>Voxtral TTS is available now via API at $0.016 per 1k characters.</p>\n<p>Try it now in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/audio/text-to-speech\">Mistral Studio</a> or in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://chat.mistral.ai/\">Le Chat</a>.</p>\n<p>A model with several reference voices is available as open weights on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/mistralai/Voxtral-4B-TTS-2603\">Hugging Face</a> under CC BY NC 4.0 license.</p>\n<p>Explore the model’s <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/capabilities/audio/text_to_speech\">documentation</a> or read our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2603.25551\">research paper</a>.</p>\n<p>Sign up for our upcoming <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://learn.mistral.ai/home/events/building-conversation-ai-voxtral\">webinar</a> to learn more!</p>\n<h2>We’re hiring!</h2>\n<p>We are building the voice layer for AI, and If this is the kind of problem you want to work on, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\">we'd love to hear from you</a>.</p>\n",
      "date_modified": "2026-03-23T16:00:00+00:00",
      "date_published": "2026-03-23T16:00:00+00:00",
      "external_url": "https://mistral.ai/news/voxtral-tts/",
      "id": "urn:aggr:item:73bf53689da1adc799d8d5659ad4c1faa04273ac",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Model-Voxtral-1.jpg",
      "summary": "Voxtral TTS: A frontier, open-weights text-to-speech model that’s fast, instantly adaptable, and produces lifelike speech for voice agents.",
      "tags": [
        "ai"
      ],
      "title": "Speaking of Voxtral",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-03-23-speaking-of-voxtral/"
    },
    {
      "content_html": "<p>Today, we’re introducing <strong>Forge</strong>, a system for enterprises to <strong>build frontier-grade AI models grounded in their proprietary knowledge</strong>.</p>\n<p>Most AI models available today are trained primarily on publicly available data. They are designed to perform well across a broad range of tasks. But enterprises operate using internal knowledge: engineering standards, compliance policies, codebases, operational processes, and years of institutional decisions.</p>\n<p>Forge bridges the gap between generic AI and enterprise-specific needs. Instead of relying on broad, public data, organizations can train models that understand their internal context embedded within systems, workflows, and policies, aligning AI with their unique operations.</p>\n<p>Mistral AI has already partnered with world-leading organizations, like <strong>ASML</strong>, <strong>DSO National Laboratories Singapore</strong>, <strong>Ericsson</strong>, <strong>European Space Agency</strong>, <strong>Home Team Science and Technology Agency (HTX) Singapore</strong>, and <strong>Reply</strong> to train models on the proprietary data that powers their most complex systems and future-defining technologies.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/7641c304-ef39-4982-a4fc-62e3e307bd9d_Z1Vh37m.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Forge Users\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Training models on institutional knowledge.</h2>\n<p>Forge enables enterprises to build models that internalize their domain knowledge. Organizations can train models on large volumes of internal documentation, codebases, structured data, and operational records. During training, the model learns the vocabulary, reasoning patterns, and constraints that define that environment.</p>\n<p>This allows teams to develop models and agents that reason using internal terminology and understand enterprise workflows. Forge supports modern training approaches across several stages of the model lifecycle:</p>\n<ul>\n<li>\n<p>Pre-training allows organizations to build domain-aware models by learning from large internal datasets.</p>\n</li>\n<li>\n<p>Post-training methods allow teams to refine model behavior for specific tasks and environments.</p>\n</li>\n<li>\n<p>Reinforcement learning helps organizations align models and agents with internal policies, evaluation criteria, and operational objectives while improving agentic performance in real environments, like complex orchestration, tool use, and decision-making.</p>\n</li>\n</ul>\n<p>Together, these capabilities allow enterprises to move beyond generic AI behavior and develop models that reflect institutional intelligence.</p>\n<h2>Control and strategic autonomy.</h2>\n<p>For many organizations, AI adoption raises questions about control over models, data, and long-term intellectual property. Forge allows enterprises to build models that remain under their control. Models can be trained using proprietary datasets and governed using internal policies, evaluation standards, and operational requirements.</p>\n<p>This allows organizations to retain control over how their knowledge is encoded and used by AI systems. In regulated environments, this level of control is critical. Enterprises must ensure that models reflect compliance requirements, operational constraints, and internal governance frameworks.</p>\n<p>By allowing organizations to build models grounded in their own knowledge and operated within their own infrastructure environments, Forge enables a higher degree of strategic autonomy as AI becomes part of core enterprise systems.</p>\n<h2>Custom models make enterprise agents reliable.</h2>\n<p>Enterprise agents must do more than generate answers. They need to navigate internal systems, use tools correctly, and make decisions within the constraints of the organization.</p>\n<p>Custom models make this possible by providing agents with a deeper understanding of the environment in which they operate. Instead of relying on generic reasoning, agents powered by domain-trained models can interpret internal terminology, follow operational procedures, and understand how different systems and data sources relate to one another.</p>\n<p>This changes how agents behave in practice. Tool selection becomes more precise. Multi-step workflows become more reliable. Decisions can reflect internal policies and business logic rather than generic assumptions.</p>\n<p>The result is agents that move beyond simple assistance and begin to function as operational components of enterprise systems capable of executing tasks, coordinating across tools, and supporting complex processes with greater accuracy and speed.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/138e36ef-d015-4889-a7dd-cb78371d4b09_2rQkhR.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Marketecture Forge\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Support for multiple model architectures.</h2>\n<p>Forge offers flexibility with support for both dense and mixture-of-experts (MoE) architectures. This lets organizations optimize for performance, cost, and operational constraints. Dense models provide strong general capability across a wide range of enterprise tasks, while MoE enables very large models to run more efficiently; delivering comparable capability with lower latency and compute cost than a dense model of similar scale. Forge also supports multimodal inputs where required, allowing models to learn from text, images, and other data formats.</p>\n<h2>Agent-first by design</h2>\n<p>Code agents are becoming the primary users of developer tools, so we built Forge for them first, not as an afterthought. An autonomous agent like Mistral Vibe can use it to fine-tune models, find optimal hyperparameters, schedule jobs, and generate synthetic data to hill-climb evals. Throughout the process, Forge monitors metrics to make sure the model isn't regressing on the benchmarks you care about. Because Forge handles infrastructure and includes battle-tested recipes for data pipelines and Mistral AI's own training methods, anyone, including agents, can customize a model just by writing plain English.</p>\n<h2>Continuous improvement through reinforcement learning and evaluation.</h2>\n<p>Enterprise environments evolve constantly. Regulations change. Systems are updated. New data becomes available. Forge is designed for continuous adaptation rather than one-time training. Organizations can use reinforcement learning pipelines to refine model behavior using feedback derived from internal evaluations and operational workflows.</p>\n<p>This allows teams to improve models over time and align outputs with organizational objectives. Evaluation frameworks allow enterprises to test models against internal benchmarks, compliance rules, and domain-specific tasks before deploying them into production environments.</p>\n<p>The result is a model lifecycle that supports ongoing improvement rather than static deployment.</p>\n<h2>Examples of enterprise applications.</h2>\n<p>Organizations can apply Forge across many types of enterprise workflows.</p>\n<p><strong>Government agencies</strong> can build models trained for different languages and dialects, policy frameworks, regulatory texts, and administrative procedures. This allows AI agents to be reliable when working on policy analysis, public service delivery, and operational planning while reflecting institutional mandates and governance requirements.</p>\n<p><strong>Financial institutions</strong> can train models on compliance frameworks, risk procedures, and regulatory documentation. This allows AI systems to produce outputs consistent with internal governance policies.</p>\n<p><strong>Software teams</strong> can train models on proprietary codebases and development standards. The real value comes from shaping models to perform exceptionally well on the specific engineering tasks that drive productivity and quality inside the company. A model trained on proprietary repositories and development standards can better understand internal abstractions, patterns, and architectural choices. When post-trained for priority workflows like implementation, debugging, migration, review, or system design support, it can provide outputs that are more context-aware, more consistent with internal practices, and more useful across the software development lifecycle.</p>\n<p><strong>Manufacturers</strong> can train models on engineering specifications, operational data, and maintenance records. These models can support diagnostics, design analysis, and operational decision-making.</p>\n<p><strong>Large enterprises</strong> can deploy agents built on models trained on internal knowledge systems. These agents can use company documentation, operational records, and historical decisions to assist employees across complex workflows. Because the underlying custom models understand the organization’s terminology and knowledge structures, agents can retrieve information and execute tasks with greater accuracy and speed.</p>\n<p>In each case, the objective is the same: enabling models and the agents built on top of them to operate within the organization’s domain context.</p>\n<h2>Build your own frontier models with Forge.</h2>\n<p>AI models are becoming a foundational layer of enterprise infrastructure. As organizations integrate AI agents into core operations, the ability to encode institutional knowledge into model behavior will become increasingly important.</p>\n<p>Forge enables enterprises to build and continuously improve models trained on their own data and aligned with their operational context. These models can power AI systems and agents that operate using the organization’s terminology, processes, and constraints. Over time, this approach allows organizations to treat AI models not simply as external tools, but as strategic assets that evolve alongside their knowledge, processes, and expertise.</p>\n<p>If your organization is ready to explore what it means to build AI around its own knowledge, sign up to learn more about Forge.</p>\n",
      "date_modified": "2026-03-17T16:00:00+00:00",
      "date_published": "2026-03-17T16:00:00+00:00",
      "external_url": "https://mistral.ai/news/forge/",
      "id": "urn:aggr:item:318701b7cb29a83d8c20096a5d61eb58c0548a5c",
      "image": "https://mistral.ai/cms-media/api/media/file/voxtral-thumbnail.png",
      "summary": "Today, we’re introducing Forge, a system for enterprises to build frontier-grade AI models grounded in their proprietary knowledge.",
      "tags": [
        "ai"
      ],
      "title": "Introducing Forge",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-03-17-introducing-forge/"
    },
    {
      "content_html": "<p>Today, we are announcing Mistral Small 4. This model is the next major release in the Mistral Small family. Mistral Small 4 is the first Mistral model to unify the capabilities of our flagship models, Magistral for reasoning, Pixtral for multimodal, and Devstral for agentic coding, into a single, versatile model. With Small 4, users no longer need to choose between a fast instruct model, a powerful reasoning engine, or a multimodal assistant: one model now delivers all three, with configurable reasoning effort and best-in-class efficiency.</p>\n<p>Mistral Small 4 is released under the Apache 2.0 license, continuing our commitment to open, accessible, and customizable AI.</p>\n<h2>A new standard for multimodal, reasoning-optimized models</h2>\n<p>Mistral Small 4 is a hybrid model optimized for general chat, coding, agentic tasks, and complex reasoning. Its architecture supports both text and image inputs, making it versatile for a wide range of applications. With Mistral Small 4, we reaffirm our commitment to open-source models and are proud to join the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/mistral-ai-and-nvidia-partner-to-accelerate-open-frontier-models\">NVIDIA Nemotron Coalition</a> as a founding member, advancing collaboration and innovation in AI development.</p>\n<h3>Key architectural details</h3>\n<ul>\n<li>\n<p>Mixture of Experts (MoE): 128 experts, with 4 active per token, enabling efficient scaling and specialization.</p>\n</li>\n<li>\n<p>119B total parameters, with 6B active parameters per token (8B including embedding and output layers).</p>\n</li>\n<li>\n<p>256k context window, supporting long-form interactions and document analysis.</p>\n</li>\n<li>\n<p>Configurable reasoning effort: Toggle between fast, low-latency responses and deep, reasoning-intensive outputs.</p>\n</li>\n<li>\n<p>Native multimodality: Accepts both text and image inputs, unlocking use cases from document parsing to visual analysis.</p>\n</li>\n</ul>\n<h3>Performance highlights</h3>\n<ul>\n<li>\n<p>40% reduction in end-to-end completion time (latency-optimized setup).</p>\n</li>\n<li>\n<p>3x more requests per second (throughput-optimized setup) compared to Mistral Small 3.</p>\n</li>\n</ul>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/7d5b181d-776d-4406-aabc-b88414edf567_2hMWOH.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Performance Comparison Across Internal Models\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Why Mistral Small 4?</h2>\n<h3>Unified capabilities</h3>\n<p>Mistral Small 4 consolidates the strengths of Magistral (reasoning), Devstral (coding agents), and Mistral Small (instruct) into a single model. Whether you need a chat assistant, a research partner, or a coding agent, Small 4 adapts to your task, no need to switch between specialized models.</p>\n<h3>Reasoning on demand</h3>\n<p>With the new <code>reasoning_effort</code> parameter, users can dynamically adjust the model’s behavior:</p>\n<ul>\n<li>\n<p><code>reasoning_effort=&quot;none&quot;</code>: Fast, lightweight responses for everyday tasks, equivalent to the same chat style of Mistral Small 3.2.</p>\n</li>\n<li>\n<p><code>reasoning_effort=&quot;high&quot;</code><strong>:</strong> Deep, step-by-step reasoning for complex problems, with equivalent verbosity to previous Magistral models.</p>\n</li>\n</ul>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/f6b89244-752a-45ce-8eed-166a58680399_ey2Ao.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Performance Comparison Across Internal Models 2   Alt\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Enterprise-grade efficiency</h3>\n<ul>\n<li>\n<p>Minimum infrastructure: 4x <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.nvidia.com/en-us/data-center/h100/\">NVIDIA HGX H100</a>, 2x <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.nvidia.com/en-us/data-center/h200/\">NVIDIA HGX H200</a>, or 1x <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.nvidia.com/en-us/data-center/technologies/blackwell-architecture/\">NVIDIA DGX B200</a>.</p>\n</li>\n<li>\n<p>Recommended setup: 4x NVIDIA HGX H100, 4x NVIDIA HGX H200, or 2x NVIDIA DGX B200 for optimal performance.</p>\n</li>\n<li>\n<p>Mistral Small 4 is fully open source. Fine-tune it for specialized tasks or deploy it out of the box for general-purpose use. Thanks to collaboration with the community, it’s now available on vLLM, llama.cpp, SGLang, Transformers, and more.</p>\n</li>\n<li>\n<p>Delivering advanced open-source AI models requires broad optimization. Through close collaboration with NVIDIA, inference has been optimized for both open source vLLM and SGLang, ensuring efficient, high-throughput serving across deployment scenarios.</p>\n</li>\n</ul>\n<p><em>Figure: Score vs. Output Length across three benchmarks. Top: accuracy scores (higher is better). Bottom: average output length in thousands of characters (shorter is better).</em></p>\n<p>Mistral Small 4 with reasoning achieves competitive scores, matching or surpassing GPT-OSS 120B on all three benchmarks, while generating significantly shorter outputs. On AA LCR, Mistral Small 4 scores 0.72 with just 1.6K characters, whereas Qwen models need 3.5-4x more output (5.8-6.1K) for comparable performance. On LiveCodeBench, Mistral Small 4 outperforms GPT-OSS 120B while producing 20% less output. This efficiency gap matters in practice: shorter outputs mean lower latency, reduced inference costs, and a better user experience.</p>\n<h4>For enterprise buyers:</h4>\n<p>Efficiency per token directly impacts cost and scalability. Models that maintain or improve performance as responses grow longer reduce the need for manual intervention, lower operational costs, and ensure consistent quality, even for complex, high-stakes tasks like report generation, customer support, or decision-making workflows. Hybrid reasoning models deliver better value by maximizing accuracy without proportional increases in resource use, making them ideal for large-scale deployments where both performance and cost-efficiency are critical.</p>\n<h4>For technical teams and data scientists:</h4>\n<p>Performance per token is a key metric for model selection and optimization. Models that scale efficiently allow teams to deploy solutions for longer, more nuanced tasks (e.g., detailed analytics, multi-step reasoning) without sacrificing accuracy or inflating computational costs. This means fewer trade-offs between quality and resource allocation, enabling more innovative and reliable AI-driven applications. It also simplifies fine-tuning and integration, as the model’s robustness reduces the need for constant adjustments or fallback systems.</p>\n<h3>Intended use cases</h3>\n<p>Mistral Small 4 is designed for:</p>\n<ul>\n<li>\n<p>Developers: Coding automation, codebase exploration, and code agentic workflows.</p>\n</li>\n<li>\n<p>Enterprises: General chat assistants, document understanding, and multimodal analysis.</p>\n</li>\n<li>\n<p>Researchers: Math, research, and complex reasoning tasks.</p>\n</li>\n</ul>\n<p>Its open-source license and customizable architecture make it ideal for fine-tuning and specialization.</p>\n<h2>Availability</h2>\n<ul>\n<li>\n<p>Mistral API and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/studio\">AI Studio</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/collections/mistralai/mistral-small-4\">Hugging Face Repository</a></p>\n</li>\n<li>\n<p>Developers can prototype Mistral Small 4 for free on NVIDIA accelerated computing at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://build.nvidia.com/mistralai/mistral-small-4-119b-2603\">build.nvidia.com</a>, and for production deployment, Mistral Small 4 is available day-0 as an NVIDIA NIM, delivering optimized, containerized inference out of the box. It can also be customized with <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/NVIDIA-NeMo/Automodel/blob/main/examples/vlm_finetune/mistral4/mistral4_medpix.yaml\">NVIDIA NeMo</a> for domain-specific fine-tuning.</p>\n</li>\n<li>\n<p>Technical documentation for customers is available on our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://legal.mistral.ai/\">AI Governance Hub</a></p>\n</li>\n</ul>\n<p>For enterprise deployments, custom fine-tuning, or on-premises solutions,<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">contact our team</a>.</p>\n<h3>The future of AI is open</h3>\n<p><strong>By unifying instruct, reasoning, and multimodal capabilities, Mistral Small 4 simplifies AI integration and empowers users to tackle a wider range of tasks with a single, adaptable tool, bringing the benefits of open source AI to real-world use cases.</strong></p>\n",
      "date_modified": "2026-03-16T21:00:00+00:00",
      "date_published": "2026-03-16T21:00:00+00:00",
      "external_url": "https://mistral.ai/news/mistral-small-4/",
      "id": "urn:aggr:item:f1752a40e7446ad302b185868a59a80c4732ee32",
      "summary": "Today, we are announcing Mistral Small 4. This model is the next major release in the Mistral Small family. Mistral Small 4 is the first Mistral model to unify the capabilities of our flagship models, Magistral for reasoning, Pixtral for…",
      "tags": [
        "ai"
      ],
      "title": "Introducing Mistral Small 4",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-03-16-introducing-mistral-small-4/"
    },
    {
      "content_html": "<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/41e7df62-110d-4925-8315-b77a4c10e179_1nEsXz.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Nvidia Mistral Logos Dark\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>At Mistral AI, we believe the future of artificial intelligence is open, collaborative, and built for everyone. Today, we’re proud to announce our participation as a founding member in the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://nvidianews.nvidia.com/news/nvidia-launches-nemotron-coalition-of-leading-global-ai-labs-to-advance-open-frontier-models\">NVIDIA Nemotron Coalition</a>, a groundbreaking global initiative uniting leading AI labs to advance open, frontier-level foundation models. As part of this strategic partnership, Mistral AI and NVIDIA plan to co-develop frontier open-source AI models, combining Mistral AI’s specialized model architecture and full-stack AI platform with NVIDIA’s compute resources, model-development tools, and synthetic-data generation pipelines. As a founding member of the NVIDIA Nemotron Coalition, Mistral AI will contribute its proprietary training techniques, multimodal capabilities, and enterprise-grade fine-tuning tools—while leveraging NVIDIA’s compute, tools &amp; technologies to scale training and optimization. This builds off prior scientific collaborations together with NVIDIA, including the development of the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/mistral-nemo\">Mistral Nemo</a> model.</p>\n<h2>Why open collaboration matters</h2>\n<p>Open models are the cornerstone of democratized AI. As part of this commitment, today Mistral AI is releasing <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/mistral-small-4\">Mistral Small 4</a> to empower developers, researchers, and organizations worldwide to build, specialize, and innovate without barriers (read more <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/mistral-small-4\">here</a>).</p>\n<p>By joining the NVIDIA Nemotron Coalition, we’re taking another major step toward shaping a future where AI is transparent, accessible, and tailored to diverse needs.</p>\n<p>“Open frontier models are how AI becomes a true platform,” said Arthur Mensch, cofounder and CEO of Mistral AI. “Together with NVIDIA, we will take a leading role in training and advancing frontier models at scale. By shaping the capabilities of these systems from the ground up, we can help establish a global foundation for AI that empowers developers to build the next generation of applications.”</p>\n<h2>What this means for the AI community</h2>\n<p>The coalition’s first initiative is a base model, trained on NVIDIA DGX Cloud, which will underpin the upcoming NVIDIA Nemotron 4 family. These models will be open-sourced, providing a shared foundation for post-training and specialization. For Mistral AI, this aligns perfectly with our mission: to put AI in everyone’s hands.</p>\n<h3>Key benefits:</h3>\n<ul>\n<li>\n<p>Shared expertise: By pooling resources and knowledge, we reduce duplication and accelerate progress across the AI ecosystem.</p>\n</li>\n<li>\n<p>Customization: Organizations can fine-tune models for their unique domains, regions, and use cases.</p>\n</li>\n<li>\n<p>Control: Open models support local control and compliance, ensuring AI works for everyone, everywhere.</p>\n</li>\n</ul>\n<h2>Mistral AI’s role in the coalition</h2>\n<p>As a founding member, Mistral AI is contributing large-scale model development and multimodal capabilities, helping to define state of the art in the open model ecosystem.</p>\n<p>Mistral AI brings to the NVIDIA Nemotron Coalition cutting-edge model architectures, deep expertise in model customization through pre-training, post-training, and fine-tuning, and a proven track record in building specialized, high-efficiency models that enterprises already rely on. Together, with NVIDIA, we’re making training more efficient across the AI ecosystem and providing developers with a shared, open foundation to build upon—faster and at scale.</p>\n<p>Our collaboration with NVIDIA and other coalition members reflects a shared commitment to:</p>\n<ul>\n<li>\n<p>Transparency: Open-sourcing models, data, and frameworks for global access.</p>\n</li>\n<li>\n<p>Collaboration: Fostering a community where innovation is collective, not siloed.</p>\n</li>\n<li>\n<p>Impact: Enabling developers to build the next wave of AI applications on a robust, open foundation.</p>\n</li>\n</ul>\n<h2>The road ahead</h2>\n<p>The NVIDIA Nemotron Coalition is just the beginning. Together, we’re setting a new standard for how AI is developed and deployed, one that prioritizes openness, collaboration, and real-world impact. Stay tuned for updates.</p>\n",
      "date_modified": "2026-03-16T20:00:00+00:00",
      "date_published": "2026-03-16T20:00:00+00:00",
      "external_url": "https://mistral.ai/news/mistral-ai-and-nvidia-partner-to-accelerate-open-frontier-models/",
      "id": "urn:aggr:item:85a32a90b3db3c6b181dbde4c9e5e2c0de17807a",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Partner.jpg",
      "summary": "At Mistral AI, we believe the future of artificial intelligence is open, collaborative, and built for everyone. Today, we’re proud to announce our participation as a founding member in the NVIDIA Nemotron Coalition, a groundbreaking global…",
      "tags": [
        "ai"
      ],
      "title": "Mistral partners with NVIDIA to accelerate open frontier models",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-03-16-mistral-partners-with-nvidia-to-accelerate-open-frontier/"
    },
    {
      "content_html": "<p>AI agents have proven to be highly capable tools at code generation. Yet, as we push these models to high-stakes domains, ranging from frontier research mathematics to mission-critical software, we encounter a scaling bottleneck: the human review. The time and specialized expertise required to manually verify become the primary impedance of engineering velocity.</p>\n<p>We envision a more helpful generation of coding agents to both carry out their tasks and formally prove their implementations against strict specifications. Instead of debugging machine-generated logic, humans dictate what they want. Today, we are taking the first major step toward that vision.</p>\n<h2>Introducing Leanstral</h2>\n<p>We release Leanstral, the first open-source code agent designed for Lean 4. Lean4 is a proof assistant capable of expressing complex mathematical objects such as <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://xenaproject.wordpress.com/2020/12/05/liquid-tensor-experiment/\">perfectoid spaces</a> and software specifications like <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/AeneasVerif/aeneas\">properties of Rust fragments</a>. Unlike existing proving systems that act as wrappers around large generalist models or focus on single math problems, Leanstral is designed to be highly efficient (with 6B active parameters) and trained for operating in realistic formal repositories.</p>\n<ul>\n<li>\n<p>Open and accessible: We release Leanstral weights under an Apache 2.0 license, in an agent mode within Mistral vibe, and through a free API endpoint. We will also release a tech report detailing our training approach, and a new evaluation suite FLTEval, to move evaluations beyond their focus on competition math.</p>\n</li>\n<li>\n<p>Efficient and mighty: We use a highly sparse architecture for Leanstral, and optimise it for proof engineering tasks. Leveraging parallel inference with Lean as a perfect verifier, Leanstral is both performant and cost-efficient against existing closed-source competitors.</p>\n</li>\n<li>\n<p>Upgradable via MCP: Leanstral supports arbitrary MCPs through vibe, and was specifically trained to achieve maximal performance with the frequently used lean-lsp-mcp.</p>\n</li>\n</ul>\n<h2>Evaluation</h2>\n<p>To reflect usefulness in realistic proof engineering scenarios, we benchmark Leanstral for completing all formal proofs and correctly defining new mathematical concepts in each PR to the FLT project, instead of isolated mathematical problems. We compare Leanstral against leading coding agents (Claude Opus 4.6, Sonnet 4.6, Haiku 4.5) and open-source models (Qwen3.5 397B-A17B, Kimi-K2.5 1T-A32B, GLM5 744B-A40B).</p>\n<h3>Leanstral vs. OSS Models</h3>\n<p>Leanstral-120B-A6B demonstrates a significant efficiency advantage over its much larger open-source peers. While models like GLM5-744B-A40B and Kimi-K2.5-1T-32B struggle to scale, capping their FLTEval scores at approximately 16.6 and 20.1 respectively, Leanstral outperforms them both with just a single pass.</p>\n<p>Even Qwen3.5-397B-A17B, the strongest OSS competitor shown, requires 4 passes to reach a score of 25.4. In contrast, Leanstral achieves a superior score of 26.3 with half that investment (pass@2) and continues to scale linearly, reaching 29.3 at the same cost level.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/78aaa774-c717-4c60-b71b-1161487b28e5_JeFg4.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Leanstrall Normalized Model Cost Vs Flt Eval Score\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Leanstral vs. Claude Family</h3>\n<p>Leanstral serves as a high-value alternative to the Claude suite, offering competitive performance at a fraction of the price: Leanstral pass@2 reaches a score of 26.3, beating Sonnet by 2.6 points, while costing only $36 to run, compared to Sonnet’s $549. At pass@16, Leanstral reaches a score of 31.9, comfortably beating Sonnet by 8 points. While Claude Opus 4.6 remains the leader in quality, it carries a staggering cost of $1,650, 92 times higher than running Leanstral.</p>\n<p>In our benchmarking, we used Mistral Vibe as the scaffold with no modifications specifically for the evaluation.</p>\n<table>\n<thead>\n<tr>\n<th>Model</th>\n<th>Cost ($)</th>\n<th>Score</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Haiku</td>\n<td>184</td>\n<td>23.0</td>\n</tr>\n<tr>\n<td>Sonnet</td>\n<td>549</td>\n<td>23.7</td>\n</tr>\n<tr>\n<td>Opus</td>\n<td>1,650</td>\n<td>39.6</td>\n</tr>\n<tr>\n<td>Leanstral</td>\n<td>18</td>\n<td>21.9</td>\n</tr>\n<tr>\n<td>Leanstral pass@2</td>\n<td>36</td>\n<td>26.3</td>\n</tr>\n<tr>\n<td>Leanstral pass@4</td>\n<td>72</td>\n<td>29.3</td>\n</tr>\n<tr>\n<td>Leanstral pass@8</td>\n<td>145</td>\n<td>31.0</td>\n</tr>\n<tr>\n<td>Leanstral pass@16</td>\n<td>290</td>\n<td>31.9</td>\n</tr>\n</tbody>\n</table>\n<h2>Case studies</h2>\n<h3>Answering stackexchange posts about changes in newest Lean version</h3>\n<p>When breaking changes hit a new Lean release, migrating code can be a massive headache. We fed Leanstral <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://proofassistants.stackexchange.com/questions/6471/a-strange-issue-with-a-type-alias-in-lean4\">a real-world question from the Proof Assistants Stack Exchange</a> about a script that mysteriously stopped compiling in Lean 4.29.0-rc6 (which we did not train with due to its recency). The culprit was a rewrite (<code>rw</code>) tactic that suddenly failed to match patterns involving a simple type alias, initially written as <code>def T2 := List Bool</code>.</p>\n<p>Instead of taking a stab in the dark, Leanstral rolled up its sleeves. It successfully built test code to recreate the failing environment and diagnosed the underlying issue with definitional equality. The model correctly identified that because def creates a rigid definition requiring explicit unfolding, it was actively blocking the rw tactic from seeing the underlying structure it needed to match.</p>\n<p>The fix it proposed was simple: just swap <code>def</code> for <code>abbrev</code>. Because <code>abbrev</code> creates a transparent alias that is immediately definitionally equal to the original type, the <code>rw</code> tactic could once again perfectly match the pattern <code>(L2 n).length</code> in the proof. Leanstral completes the job and explains the rationale to the user perfectly.</p>\n<h3>Reasoning about programs</h3>\n<p>We copied over definitions in Rocq from <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.cs.princeton.edu/courses/archive/fall10/cos441/sf/Imp.html\">https://www.cs.princeton.edu/courses/archive/fall10/cos441/sf/Imp.html</a> and asked Leanstral to convert to Lean. It did so successfully, even implementing custom notation. Example snippet:</p>\n<pre><code class=\"language-text\"><span class=\"code-snippet\">inductive ceval : com → state → state → Prop where | E_Skip (st : state) : ceval .CSkip st st | E_Ass (st : state) (a1 : aexp) (n : Nat) (l : ident) (h : aeval a1 st = n) :     ceval (.CAss l a1) st (update st l n) | E_Seq (c1 c2 : com) (st st&#39; st&#39;&#39; : state) (h1 : ceval c1 st st&#39;) (h2 : ceval c2 st&#39; st&#39;&#39;) :     ceval (.CSeq c1 c2) st st&#39;&#39; | E_IfTrue (st st&#39; : state) (b1 : bexp) (c1 c2 : com) (h : beval b1 st = true) (h1 : ceval c1 st st&#39;) :     ceval (.CIf b1 c1 c2) st st&#39; | E_IfFalse (st st&#39; : state) (b1 : bexp) (c1 c2 : com) (h : beval b1 st = false) (h1 : ceval c2 st st&#39;) :     ceval (.CIf b1 c1 c2) st st&#39; | E_WhileEnd (b1 : bexp) (st : state) (c1 : com) (h : beval b1 st = false) :     ceval (.CWhile b1 c1) st st | E_WhileLoop (st st&#39; st&#39;&#39; : state) (b1 : bexp) (c1 : com) (h1 : beval b1 st = true) (h2 : ceval c1 st st&#39;) (h3 : ceval (.CWhile b1 c1) st&#39; st&#39;&#39;) :     ceval (.CWhile b1 c1) st st&#39;&#39;\n\n-- Notation for command evaluationnotation:50 c &quot; / &quot; st &quot; ⇒ &quot; st&#39; =&gt; ceval c st st&#39;\n</span></code></pre>\n<p>It could also translate to Lean and then prove some properties about programs in this language when just given the Rocq statement (without proof):</p>\n<pre><code class=\"language-text\"><span class=\"code-snippet\">-- Example command: adds 2 to variable Xdef plus2 : com := .CAss &quot;X&quot; (.APlus (.AId &quot;X&quot;) (.ANum 2))\n\n-- Theorem: The plus2 command correctly adds 2 to variable X-- Intuition: If X has value n in the initial state, after executing plus2,-- X will have value n+2 in the final state-- This specifies the behavior of the plus2 commandtheorem plus2_spec (st : state) (n : Nat) (st&#39; : state) (h1 : st &quot;X&quot; = n) (h2 : plus2 / st ⇒ st&#39;) : st&#39; &quot;X&quot; = n + 2 := by -- plus2 is defined as .CAss &quot;X&quot; (.APlus (.AId &quot;X&quot;) (.ANum 2)) -- Use equation compiler to unfold it change ceval (.CAss &quot;X&quot; (.APlus (.AId &quot;X&quot;) (.ANum 2))) st st&#39; at h2 cases h2 with | E_Ass _ _ n l h =&gt;   have : aeval (.APlus (.AId &quot;X&quot;) (.ANum 2)) st = n := h   simp only [aeval] at this   rw [update]   simp [← this, h1]\n</span></code></pre>\n<h2>Demand Proof. Try Leanstral Today.</h2>\n<p>Leanstral is available today for everyone to use.</p>\n<ul>\n<li>\n<p>Zero-Setup in Mistral Vibe: We’ve integrated Leanstral directly into Mistral Vibe for immediate, zero-setup vibe coding and proving. Use <code>/leanstall</code> to active.  Then to use Leanstral press <code>Shift+Tab</code> until the model displays as Leanstral,  Alternately, use <code>vibe --agent lean</code>.</p>\n</li>\n<li>\n<p>Labs API: Access the model via our free/near-free API endpoint <code>labs-leanstral-2603</code>. We are keeping this endpoint highly accessible for a limited period to gather realistic feedback and observability data to fuel the next generation of verified code models.</p>\n</li>\n<li>\n<p>Own the Weights: Download the Apache 2.0 licensed model and run it on your own metal.</p>\n</li>\n</ul>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/leanstral-26-03\">Documentation</a> - <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/codestral/cli\">Sign Up for Mistral Vibe</a></p>\n",
      "date_modified": "2026-03-16T16:00:00+00:00",
      "date_published": "2026-03-16T16:00:00+00:00",
      "external_url": "https://mistral.ai/news/leanstral/",
      "id": "urn:aggr:item:79c0aa7000a897fb25dc3e596853cc8190f9101c",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Model-Leanstral.jpg",
      "summary": "AI agents have proven to be highly capable tools at code generation. Yet, as we push these models to high-stakes domains, ranging from frontier research mathematics to mission-critical software, we encounter a scaling bottleneck: the human…",
      "tags": [
        "ai"
      ],
      "title": "Leanstral: Open-Source foundation for trustworthy vibe-coding",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-03-16-leanstral-open-source-foundation-for-trustworthy-vibe-coding/"
    },
    {
      "content_html": "<p>In most large Rails monoliths, organizations prioritize writing new features over writing tests for them. Over time, more and more code goes untested, forcing teams to spend more time debugging painful bugs.</p>\n<p>We built an autonomous agent that closes that gap. It reads Rails source files, generates or improves RSpec tests, validates them against style rules and coverage targets, and runs inside a CI/CD pipeline with no human intervention. To operate on codebases at this scale, it runs in parallel: multiple instances working on different files simultaneously.</p>\n<h2>RSpec through an agent's eyes</h2>\n<p>Ruby is dynamically typed: there is no compilation step, so errors surface at runtime. For our agent, this means the only way to verify test syntax is to execute it. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://rspec.info/\"><strong>RSpec</strong></a>, the standard Rails testing framework, makes tests expressive and readable, but its domain-specific language is easy to get wrong.</p>\n<p>When the agent reads a Ruby on Rails codebase, it reads five main file types (models, serializers, controllers, mailers, helpers), each structured differently (therefore tested in different ways). The agent needs distinct instructions for each type.</p>\n<p>One benefit: the mapping from source file to spec file is nearly 1:1. The general convention is:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/5825a803-d859-48f1-a3f8-ea095da3416a_1fscIv.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Standard Mapping\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>There are a few exceptions to that rule however, like that <code>app/controllers/</code> are sometimes mapped to <code>spec/requests/</code>, or that sometimes a single source file can have multiple spec files, in which case the convention is:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/6ba9925a-0be9-410e-ba7f-e23d961531c2_QUOiW.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Edge Cases\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>This straightforward mapping makes it easy to locate the tests for any given file, or to identify files that lack tests entirely.</p>\n<p>Where it gets harder for our agent is that to avoid duplicating code, RSpec relies heavily on shared context: factories, fixtures, database schemas...</p>\n<ul>\n<li>\n<p><strong>Factories:</strong> Reusable templates for creating test objects with predefined attributes, making it easy to generate consistent test data.</p>\n</li>\n<li>\n<p><strong>Fixtures:</strong> Static data files that preload test database records, providing a fixed baseline for tests.</p>\n</li>\n</ul>\n<p>If a factory file doesn’t exist, the agent creates it; if it does, the agent reuses it. Because factories are shared across many tests (unlike spec files), careless changes can easily break tests elsewhere, so updates to these files must be made with caution.</p>\n<h2>Building the agent with Vibe</h2>\n<p>We built the agent on top of <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/products/vibe\"><strong>Vibe</strong></a>, Mistral's open-source coding assistant. The default system prompt was sufficient for this project, so we focused on three levers: repository-level context, specialized skills, and custom tools.</p>\n<h3>Context engineering</h3>\n<p>Context engineering was central to our approach. Vibe supports a repository-level <code>AGENTS.md</code> file: when running on a repository with this file at its root, its contents are automatically appended to the system prompt.</p>\n<p>The <code>AGENTS.md</code> we used provided basic details about the target repositories, but mostly, it provided the agent with a <strong>step-by-step execution plan:</strong></p>\n<pre><code class=\"language-text\"><span class=\"code-snippet\">1. Read the source file2. Read the documentation (if it exists)3. Check if a spec already exists4. Choose and read exactly one skill based on the source file location5. Find existing patterns, factories, and helpers6. Execute the skill (Extract → Factory → Generate tests)7. Validate with Rubocop tool8. Validate with SimpleCov tool\n</span></code></pre>\n<p>Each step included details about what to do and what the success criteria are. We also included some best practices of RSpec on areas where we felt it was important to orient the agent. Example:</p>\n<pre><code class=\"language-text\"><span class=\"code-snippet\">- **NEVER** use `be_present`, `be_truthy`, `be_between`, or `include(:key)`These are vague. Use `eq(exact_value)` always\n</span></code></pre>\n<p>We found the agent would sometimes skip methods or leave edge cases untested: it would generate a spec that <em>looked</em> complete but quietly ignored a few public methods from the source file. To counter this, the <code>AGENTS.md</code> ends with a forced self-review: the agent must re-read the source file and explicitly ask itself &quot;Did I test every public method? Count them.&quot; before finishing. If anything is missing, it goes back.</p>\n<p>With this generic <code>AGENTS.md</code> file forcing the agent to follow strict planning, our quality score went from <strong>0.68 to 0.74</strong>, all from a single markdown file with framework-level instructions.</p>\n<h3>Using SKILLS files:</h3>\n<p>Recall step 4 of our <code>AGENTS.md</code>:</p>\n<p><code>4. Choose and read exactly one skill based on the source file location</code></p>\n<p>A single generic skill would produce mediocre results: the instructions precise enough for testing a model file are the wrong instructions for a controller file.</p>\n<p>What worked was creating a separate skills file for each category, plus one for plain Ruby files.</p>\n<p>Here is an example of a basic skills file for testing controllers:</p>\n<pre><code class=\"language-text\"><span class=\"code-snippet\">---name: &quot;Generate Request Spec&quot;description: &quot;Generate RSpec request tests for a Rails controller. Use when the source file is in app/controllers/.&quot;---\n# Generate Request Spec\n## File Scope\n- `spec/requests//_spec.rb` — drop `_controller` from the filename- `spec/factories/.rb` — create or update if needed\n## Example tests for Controllers\n# frozen_string_literal: truerequire &#39;rails_helper&#39;\ndescribe &#39;Admin::Users&#39;, type: :request do  let(:user) { create(:user, :admin) }  before { sign_in user }\n  # Unauthorized access — one test per action  describe &#39;#authorized?&#39; do    let(:user) { create(:user) }    it &#39;GET /admin/users redirects&#39; do      get &#39;/admin/users&#39;      expect(response).to have_http_status(:redirect)    end  end\n  # Each action: happy + sad paths  describe &#39;POST /admin/users&#39; do    let(:valid_params)   { { user: attributes_for(:user) } }    let(:invalid_params) { { user: { email: &#39;&#39; } } }\n    context &#39;with valid params&#39; do      it &#39;creates a record&#39; do        expect { post &#39;/admin/users&#39;, params: valid_params }.to change(User, :count).by(1)        expect(response).to have_http_status(:created)      end    end\n    context &#39;with invalid params&#39; do      it &#39;returns unprocessable entity with errors&#39; do        post &#39;/admin/users&#39;, params: invalid_params        expect(response).to have_http_status(:unprocessable_entity)        json = JSON.parse(response.body, symbolize_names: true)        expect(json[:errors]).to include(&quot;Email can&#39;t be blank&quot;)      end    end  endend\n## Critical Rules\n- **Assert content, not just status:** always parse JSON and verify exact values- **Test exact error messages:** `include(&quot;Email can&#39;t be blank&quot;)`, not `be_present`- **Verify state changes:** use `.by(1)` and check the created record&#39;s attributes- **Cover all actions:** index, show, create, update, destroy, and any custom actions- **Test auth on every action:** verify unauthorized users get the correct status code- Use `let` only, never `@instance_variables`; `sign_in user` again before `follow_redirect!`\n</span></code></pre>\n<h3>Adding custom tools</h3>\n<p>Vibe has built-in tools for reading and writing files, running bash commands, and editing code. But it also supports custom tools &amp; MCPs to expand its action space. For this project, custom tools were key.</p>\n<p>After some experimentation, we went for:</p>\n<ul>\n<li>\n<p>A <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://rubocop.org/\">RuboCop</a> linting tool that runs the <code>rubocop</code> command to detect style violations, so that the agent goes back to the code and fixes them.</p>\n</li>\n<li>\n<p>A <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/simplecov-ruby/simplecov\">SimpleCov</a> tool integrated with RSpec that checks both code coverage and test correctness. Placing this as the final step was key: it guarantees every test the agent writes actually runs.</p>\n</li>\n</ul>\n<p>Below is a stripped-down version of how we implemented the Rubocop linting tool:</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-keyword syntax-control syntax-import syntax-python\">import</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">asynciofrom</span></span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">pathlib</span></span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-invalid syntax-illegal syntax-name syntax-python\">import</span></span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">Path</span></span></span>\n<span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-keyword syntax-control syntax-import syntax-from syntax-python\">from</span></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-meta syntax-import-source syntax-python\"> <span class=\"syntax-meta syntax-import-path syntax-python\"><span class=\"syntax-meta syntax-import-name syntax-python\">pydantic</span></span> <span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-keyword syntax-control syntax-import syntax-python\">import</span></span></span></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"> <span class=\"syntax-meta syntax-generic-name syntax-python\">BaseModelfrom</span> <span class=\"syntax-meta syntax-generic-name syntax-python\">vibe</span><span class=\"syntax-invalid syntax-illegal syntax-name syntax-import syntax-python\">.core.tools.base</span> <span class=\"syntax-invalid syntax-illegal syntax-name syntax-python\">import</span> <span class=\"syntax-meta syntax-generic-name syntax-python\">BaseTool</span><span class=\"syntax-punctuation syntax-separator syntax-import-list syntax-python\">,</span> <span class=\"syntax-meta syntax-generic-name syntax-python\">ToolError</span></span>\n<span class=\"syntax-meta syntax-class syntax-python\"><span class=\"syntax-storage syntax-type syntax-class syntax-python\">class</span> <span class=\"syntax-entity syntax-name syntax-class syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">RubocopLintResult</span></span><span class=\"syntax-meta syntax-class syntax-inheritance syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-inheritance syntax-begin syntax-python\">(</span></span></span><span class=\"syntax-meta syntax-class syntax-inheritance syntax-python\"><span class=\"syntax-entity syntax-other syntax-inherited-class syntax-python\">BaseModel</span><span class=\"syntax-punctuation syntax-section syntax-inheritance syntax-end syntax-python\">)</span></span><span class=\"syntax-meta syntax-class syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-class syntax-begin syntax-python\">:</span></span>    <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">command</span></span><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-variable syntax-python\">:</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">str</span></span>    <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">output</span></span><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-variable syntax-python\">:</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">str</span></span>    <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">success</span></span><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-variable syntax-python\">:</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">bool</span></span>    <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">exit_code</span></span><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-variable syntax-python\">:</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">int</span></span> <span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-python\">|</span> <span class=\"syntax-constant syntax-language syntax-python\">None</span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-constant syntax-language syntax-python\">None</span>\n<span class=\"syntax-meta syntax-class syntax-python\"><span class=\"syntax-storage syntax-type syntax-class syntax-python\">class</span> <span class=\"syntax-entity syntax-name syntax-class syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">RubocopLint</span></span><span class=\"syntax-meta syntax-class syntax-inheritance syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-inheritance syntax-begin syntax-python\">(</span></span></span><span class=\"syntax-meta syntax-class syntax-inheritance syntax-python\"><span class=\"syntax-entity syntax-other syntax-inherited-class syntax-python\">BaseTool</span><span class=\"syntax-punctuation syntax-section syntax-inheritance syntax-end syntax-python\">)</span></span><span class=\"syntax-meta syntax-class syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-class syntax-begin syntax-python\">:</span></span>    <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">description</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">Lint spec files using Rubocop.<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span>\n<span class=\"syntax-meta syntax-function syntax-python\">    <span class=\"syntax-storage syntax-modifier syntax-async syntax-python\">async</span> <span class=\"syntax-storage syntax-type syntax-function syntax-python\">def</span> <span class=\"syntax-entity syntax-name syntax-function syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">run</span></span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-begin syntax-python\">(</span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-python\"><span class=\"syntax-variable syntax-parameter syntax-python\">self</span><span class=\"syntax-punctuation syntax-separator syntax-parameters syntax-python\">,</span> <span class=\"syntax-variable syntax-parameter syntax-python\">spec_path</span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-annotation syntax-python\"><span class=\"syntax-punctuation syntax-separator syntax-annotation syntax-parameter syntax-python\">:</span> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">str</span></span></span><span class=\"syntax-meta syntax-function syntax-parameters syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-parameters syntax-end syntax-python\">)</span></span><span class=\"syntax-meta syntax-function syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-function syntax-begin syntax-python\">:</span></span>        <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">spec_path</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">Path</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">spec_path</span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n        <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">cmd</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-structure syntax-list syntax-python\"><span class=\"syntax-punctuation syntax-section syntax-list syntax-begin syntax-python\">[</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">rubocop<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-list syntax-python\">,</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">--format<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-list syntax-python\">,</span> <span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">simple<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-list syntax-python\">,</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-support syntax-type syntax-python\">str</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">spec_path</span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span><span class=\"syntax-punctuation syntax-section syntax-list syntax-end syntax-python\">]</span></span>        <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">proc</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-keyword syntax-other syntax-await syntax-python\">await</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">asyncio</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">create_subprocess_exec</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\">            <span class=\"syntax-keyword syntax-operator syntax-arithmetic syntax-python\">*</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">cmd</span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span> <span class=\"syntax-variable syntax-parameter syntax-python\">stdout</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">asyncio</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">subprocess</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-variable syntax-other syntax-constant syntax-python\">PIPE</span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span> <span class=\"syntax-variable syntax-parameter syntax-python\">stderr</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">asyncio</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">subprocess</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-variable syntax-other syntax-constant syntax-python\">PIPE</span></span>        </span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n        <span class=\"syntax-meta syntax-statement syntax-try syntax-python\"><span class=\"syntax-keyword syntax-control syntax-flow syntax-try syntax-python\">try</span><span class=\"syntax-punctuation syntax-section syntax-block syntax-try syntax-python\">:</span></span>            <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">stdout</span></span>, <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">stderr</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-keyword syntax-other syntax-await syntax-python\">await</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">asyncio</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">wait_for</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">proc</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">communicate</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span> <span class=\"syntax-variable syntax-parameter syntax-python\">timeout</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-constant syntax-numeric syntax-integer syntax-decimal syntax-python\">60</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>        <span class=\"syntax-meta syntax-statement syntax-except syntax-python\"><span class=\"syntax-keyword syntax-control syntax-flow syntax-except syntax-python\">except</span> <span class=\"syntax-support syntax-type syntax-exception syntax-python\">TimeoutError</span><span class=\"syntax-punctuation syntax-section syntax-block syntax-except syntax-python\">:</span></span>            <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">proc</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">kill</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>            <span class=\"syntax-keyword syntax-other syntax-await syntax-python\">await</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">proc</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">wait</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>            <span class=\"syntax-meta syntax-statement syntax-raise syntax-python\"><span class=\"syntax-keyword syntax-control syntax-flow syntax-raise syntax-python\">raise</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">ToolError</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">Rubocop timed out after 60s<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span></span>\n        <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">output</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">stdout</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">decode</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">utf-8<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span> <span class=\"syntax-variable syntax-parameter syntax-python\">errors</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">ignore<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n        <span class=\"syntax-keyword syntax-control syntax-flow syntax-yield syntax-python\">yield</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">RubocopLintResult</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\">            <span class=\"syntax-variable syntax-parameter syntax-python\">command</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"> <span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">join</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">cmd</span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>            <span class=\"syntax-variable syntax-parameter syntax-python\">output</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">output</span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>            <span class=\"syntax-variable syntax-parameter syntax-python\">success</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">proc</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">returncode</span></span> <span class=\"syntax-keyword syntax-operator syntax-comparison syntax-python\">==</span> <span class=\"syntax-constant syntax-numeric syntax-integer syntax-decimal syntax-python\">0</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>            <span class=\"syntax-variable syntax-parameter syntax-python\">exit_code</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">proc</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span><span class=\"syntax-meta syntax-generic-name syntax-python\">returncode</span></span>        </span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n</span></span></code></pre>\n<p>The SimpleCov tool follows the same pattern but does more: it runs the spec file with RSpec, collects pass/fail results for each test, and reports the coverage percentage of the source file. The agent gets back which tests failed (with error messages), and which lines of the source file were never exercised. This gives it enough to self-correct when needed.</p>\n<p>When we first wired this tool in, only around a third of generated tests passed on first execution. The agent self-corrected all failures within a few iterations. Without this step, some of those tests would not have ran.</p>\n<h2>Measuring test quality</h2>\n<p>A good unit test follows the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://semaphore.io/blog/aaa-pattern-test-automation\"><strong>Arrange-Act-Assert</strong></a> pattern: set up state, execute one behavior, verify the outcome. It should use precise assertions, cover both happy and error paths, and produce failures that clearly identify what broke.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/32542f94-4778-4112-820f-203e96ef0735_Z1IC6ad.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Good Testing\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Tool-based metrics</h3>\n<p>Existing Ruby on Rails tools allow us to get several metrics easily:</p>\n<ul>\n<li>\n<p><strong>RSpec:</strong> the most popular testing framework for Ruby. Expressive syntax for writing readable, well-structured tests.</p>\n</li>\n<li>\n<p><strong>RuboCop:</strong> a static Ruby code analyzer and formatter, helping enforce style guidelines and keeping code consistent</p>\n</li>\n<li>\n<p><strong>SimpleCov:</strong> a code coverage tool for Ruby, measuring how much code is executed by the test suite.</p>\n</li>\n</ul>\n<p>From these tools, we can extract several useful quantitative metrics: the proportion of tests that pass, the number of RuboCop violations per file, the proportion of code covered by the unit test suite, and the speed of execution. These metrics provide a solid baseline for measuring the overall performance of a test suite.</p>\n<p>But these numbers alone cannot determine whether a test file is actually good. How should we compare two files that both have zero RuboCop violations, 100% coverage, and all tests passing? The quantitative metrics may look identical, yet qualitative differences in test quality can still exist.</p>\n<h3>LLM-as-a-judge</h3>\n<p>The idea behind LLM-as-a-judge is to ask an LLM: “Are all error conditions tested?” or “Is this a good test?” and get back a score from 0 to 1 based on clear criteria.</p>\n<p>Example prompt:</p>\n<pre><code class=\"language-text\"><span class=\"code-snippet\">## Good Tests\nPrecise values: `eq(100)`, not `be_present` or `be_a(Float)`.State changes: `change { User.count }.by(1)`.Error paths: `raise_error(ArgumentError, &quot;message&quot;)`.Boundary cases: Test exact values at thresholds (e.g., `page(0)`).Public interface: No `.send(:private_method)`.\n## Bad Tests\nVague assertions: `be_truthy`, `be_an(Array)`.&quot;Doesn&#39;t crash&quot; tests: `not_to raise_error`.Testing private methods.Over-mocking (tests mocks, not behavior).No assertions on return values.\n## Scoring Rules\n- 1.0: Precise assertions on return values/state + all key paths covered (happy, error, boundaries).- 0.8: Precise assertions on all tested paths, but 1-2 edge cases missing entirely.- 0.6: All key paths covered, but 1-2 tests use vague assertions (e.g., `be_truthy` instead of `eq(expected)`) or minor over-mocking.- 0.4: Some tests have precise assertions; others are vague, over-mocked, or skip return value checks.- 0.2: Most tests lack meaningful assertions: vague matchers, stubbed-out logic, no verification of actual output.- 0.0: Tests are structurally broken: testing private methods, no real assertions, or verifying mocks instead of behavior.\n</span></code></pre>\n<p>The &quot;Scoring Rules&quot; section here is especially important as it enforces the score to be more consistent across runs. Without it, the agent would lack clear definition of how strict or how lax the scoring is.</p>\n<p>Such a score is less authoritative than a tool's output or a thorough developer review. But it is a good indication of how well the current version of our agent is doing, especially when run at scale across every file in a repository.</p>\n<h4>Limitations of LLM-as-a-judge evaluation:</h4>\n<p>Anything that can be put into text can be scored with LLM-as-a-judge, which makes it versatile. But the score output is not deterministic. Even with <em>temperature=0</em>, there will be variance due to the order of kernel operations. In practice the outputs for the same evaluation are always close, but this lack of determinism can be an issue for some use cases.</p>\n<p>For our use case, since we score not a single test but usually tens to hundreds at a time, this was an acceptable limitation. The aggregated score stayed consistent.</p>\n<h3>The missing parenthesis problem</h3>\n<p>There was another core problem with LLM-as-a-judge: a test can be of great quality but not run, or have the logic behind it be wrong altogether.</p>\n<p>Example:</p>\n<pre><code class=\"language-text\"><span class=\"code-snippet\">RSpec.describe User, &quot;#full_name&quot; do  it &quot;combines first and last name with a space&quot; do    user = User.new(first_name: &quot;Ada&quot;, last_name: &quot;Lovelace&quot;\n    expect(user.full_name).to eq(&quot;Ada Lovelace&quot;)  endend\n</span></code></pre>\n<p>This test looks great. It tests one behavior, has a clear description that reads as documentation, follows <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://semaphore.io/blog/aaa-pattern-test-automation\"><strong>Arrange-Act-Assert</strong></a>:, and would fail with a useful message if broken.</p>\n<p>We ran this test through multiple models using the scoring prompt defined earlier. The average score given was 0.75. A developer taking a quick look would likely agree.</p>\n<p>But this test has one core flaw: <strong>it will not run.</strong> All because of a missing closing parenthesis <code>)</code> on the <code>User.new()</code>. This is a critical flaw that makes this test definitely not suitable.</p>\n<p>This example is easy to mitigate. But there are a lot other possibilities that can lead to syntax error:</p>\n<ul>\n<li>\n<p><strong>Versioning errors:</strong> Using methods or syntax from an incompatible Ruby or Rails version</p>\n</li>\n<li>\n<p><strong>Non-existent methods:</strong> some methods might have been removed, renamed, or never existed.</p>\n</li>\n<li>\n<p><strong>Factory/fixture errors:</strong> Referencing missing factories, incorrect attributes, or missing associations</p>\n</li>\n<li>\n<p><strong>Missing dependencies:</strong> Using gems or modules not included in the test environment</p>\n</li>\n</ul>\n<h2>The experiment</h2>\n<p>We ran an experiment to check the agent could hold up against a real codebase. The target repository contained 275 source files. Half of them already had test coverage. The other half had none.</p>\n<p>We pointed the agent at every file, whether it already had tests or not. For uncovered files, it generated specs from scratch successfully. For files that already had tests, it rewrote and improved them.</p>\n<p>We scored every spec file before and after with LLM-as-a-judge. The aggregate score for tested files went from 0.49 to 0.74, and coverage reached 100%. There's still room for improvement, but the results validated the approach.</p>\n<table>\n<thead>\n<tr>\n<th>Metric</th>\n<th>Result</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Files processed</td>\n<td>275</td>\n</tr>\n<tr>\n<td>Tests passing</td>\n<td>100%</td>\n</tr>\n<tr>\n<td>Average line coverage (SimpleCov)</td>\n<td>100%</td>\n</tr>\n<tr>\n<td>RuboCop violations after self-correction</td>\n<td>0</td>\n</tr>\n<tr>\n<td>LLM-as-a-judge score</td>\n<td>0.74</td>\n</tr>\n</tbody>\n</table>\n<h3>By file type</h3>\n<p>Not all file types were easy to test. Models scored highest: their business logic is self-contained and the test patterns are predictable. Controllers were harder, HTTP request handling introduced more room for error.</p>\n<table>\n<thead>\n<tr>\n<th>File type</th>\n<th>LLM-as-a-judge</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Models</td>\n<td>0.81</td>\n</tr>\n<tr>\n<td>Controllers</td>\n<td>0.67</td>\n</tr>\n<tr>\n<td>Serializers</td>\n<td>0.80</td>\n</tr>\n</tbody>\n</table>\n<h3>Does it run?</h3>\n<p>Bundling SimpleCov with RSpec execution as the final step, forcing the agent to run every test it wrote, was the single most impactful decision. Only a third of tests passed on first execution. The agent self-corrected all failures within a few iterations.</p>\n<p>Without this step, LLM-as-a-judge would have rated these non-running tests as high quality: the missing parenthesis problem at scale.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai/mistral-vibe\"><strong>Vibe is open source</strong></a>. The agent, tools, and skills described here all run on top of it. Try it now.</p>\n",
      "date_modified": "2026-03-11T12:00:00+00:00",
      "date_published": "2026-03-11T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/rails-testing-on-autopilot-building-an-agent-that-writes-what-developers-wont/",
      "id": "urn:aggr:item:2b0d0bc6a60e0d57e2cb79c19af4f63da35708e8",
      "summary": "In most large Rails monoliths, organizations prioritize writing new features over writing tests for them. Over time, more and more code goes untested, forcing teams to spend more time debugging painful bugs. We built an autonomous agent…",
      "tags": [
        "ai"
      ],
      "title": "Rails testing on autopilot: Building an agent that writes what developers won't",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-03-11-rails-testing-on-autopilot-building-an-agent-that-writes/"
    },
    {
      "content_html": "<p>Today, we're releasing Voxtral Transcribe 2, two next-generation speech-to-text models with state-of-the-art transcription quality, diarization, and ultra-low latency. The family includes Voxtral Mini Transcribe V2 for batch transcription and Voxtral Realtime for live applications. Voxtral Realtime is open-weights under the Apache 2.0 license.</p>\n<p>We're also launching an <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/audio/speech-to-text\">audio playground in Mistral Studio</a> to test transcription instantly, powered by Voxtral Transcribe 2, with diarization and timestamps.</p>\n<h2>Highlights.</h2>\n<ul>\n<li>\n<p>Voxtral Mini Transcribe V2: State-of-the-art transcription with speaker diarization, context biasing, and word-level timestamps in 13 languages.</p>\n</li>\n<li>\n<p>Voxtral Realtime: Purpose-built for live transcription with latency configurable down to sub-200ms, enabling voice agents and real-time applications.</p>\n</li>\n<li>\n<p>Best-in-class efficiency: Industry-leading accuracy at a fraction of the cost, with Voxtral Mini Transcribe V2 achieving the lowest word error rate, at the lowest price point.</p>\n</li>\n<li>\n<p>Open weights: Voxtral Realtime ships under Apache 2.0, deployable on edge for privacy-first applications.</p>\n</li>\n</ul>\n<h2>Voxtral Realtime.</h2>\n<p>Voxtral Realtime is purpose-built for applications where latency matters. Unlike approaches that adapt offline models by processing audio in chunks, Realtime uses a novel streaming architecture that transcribes audio as it arrives. The model delivers transcriptions with delay configurable down to sub-200ms, unlocking a new class of voice-first applications.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/a21cafea-208d-4290-b65e-36c0514dc179_PoxbS.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Fleur Voxtral 2\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>Word error rate (lower is better) across languages in the FLEURS transcription benchmark.</em></p>\n<p>At 2.4 seconds delay, ideal for subtitling, Realtime matches Voxtral Mini Transcribe V2, our latest batch model. At 480ms delay, it stays within 1-2% word error rate, enabling voice agents with near-offline accuracy.</p>\n<p>The model is natively multilingual, achieving strong transcription performance in 13 languages, including English, Chinese, Hindi, Spanish, Arabic, French, Portuguese, Russian, German, Japanese, Korean, Italian, and Dutch. With a 4B parameter footprint, it runs efficiently on edge devices, ensuring privacy and security for sensitive deployments.</p>\n<p>We’re releasing the model weights under Apache 2.0 on the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/mistralai/Voxtral-Mini-4B-Realtime-2602\">Hugging Face Hub.</a></p>\n<h2>Voxtral Mini Transcribe V2.</h2>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/6b8d07b0-1526-4e94-ac66-a861f092aa41_Z1CuQUW.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Voxtral 2.0   Avg Diarization Error Rate   Priceper Min\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>Average diarization error rate (lower is better) across five English benchmarks (Switchboard, CallHome, AMI-IHM, AMI-SDM, SBCSAE) and the TalkBank multilingual benchmark (German, Spanish, English, Chinese, Japanese).</em></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/58664549-fe38-420a-86fd-5c7003476689_cu0re.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Voxtral 2.0   Transcription Performance Fleurs   Priceper Min\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>Average word error rate (lower is better) across the top-10 languages in the FLEURS transcription benchmark.</em></p>\n<p>Voxtral Mini Transcribe V2 delivers significant improvements in transcription and diarization quality across languages and domains. At approximately 4% word error rate on FLEURS and $0.003/min, Voxtral offers the best price-performance of any transcription API. It outperforms GPT-4o mini Transcribe, Gemini 2.5 Flash, Assembly Universal, and Deepgram Nova on accuracy, and processes audio approximately 3x faster than ElevenLabs’ Scribe v2 while matching on quality at one-fifth the cost.</p>\n<h3>Model features.</h3>\n<p>Voxtral Mini Transcribe 2 introduces key capabilities.</p>\n<h4>Speaker diarization.</h4>\n<p>Generate transcriptions with speaker labels and precise start/end times. Ideal for meeting transcription, interview analysis, and multi-party call processing. Note: with overlapping speech, the model typically transcribes one speaker.</p>\n<h4>Context biasing.</h4>\n<p>Provide up to 100 words or phrases to guide the model toward correct spellings of names, technical terms, or domain-specific vocabulary. Particularly useful for proper nouns or industry terminology that standard models often miss. Context biasing is optimized for English; support for other languages is experimental.</p>\n<h4>Word-level timestamps.</h4>\n<p>Generate precise start and end timestamps for each word, enabling applications like subtitle generation, audio search, and content alignment.</p>\n<h4>Expanded language support.</h4>\n<p>Like Realtime, this model now supports 13 languages: English, Chinese, Hindi, Spanish, Arabic, French, Portuguese, Russian, German, Japanese, Korean, Italian, and Dutch. Non-English performance significantly outpaces competitors.</p>\n<h4>Noise robustness.</h4>\n<p>Maintains transcription accuracy in challenging acoustic environments, such as factory floors, busy call centers, and field recordings.</p>\n<h4>Longer audio support.</h4>\n<p>Process recordings up to 3 hours in a single request.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/97f4a4ee-7448-4a2f-889e-17409821e503_Z1PpeEA.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"FlEURS\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>Word error rate (lower is better) across languages in the FLEURS transcription benchmark.</em></p>\n<h2>Audio playground.</h2>\n<p>Test Voxtral Transcribe 2 directly in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/audio/speech-to-text\">Mistral Studio</a>. Upload up to 10 audio files, toggle diarization, choose timestamp granularity, and add context bias terms for domain-specific vocabulary. Supports .mp3, .wav, .m4a, .flac, .ogg up to 1GB each.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=93ZAhW3bk8g\">YouTube video player</a></p>\n<h2>Transforming voice applications.</h2>\n<p>Voxtral powers voice workflows in diverse applications and industries.</p>\n<ul>\n<li>\n<h3>Meeting intelligence.</h3>\n<p>Transcribe multilingual recordings with speaker diarization that clearly attributes who said what and when. At Voxtral's price point, annotate large volumes of meeting content at industry-leading cost efficiency.</p>\n</li>\n<li>\n<h3>Voice agents and virtual assistants.</h3>\n<p>Build conversational AI with sub-200ms transcription latency. Connect Voxtral Realtime to your LLM and TTS pipeline for responsive voice interfaces that feel natural.</p>\n</li>\n<li>\n<h3>Contact center automation.</h3>\n<p>Transcribe calls in real time, enabling AI systems to analyze sentiment, suggest responses, and populate CRM fields while conversations are still happening. Speaker diarization ensures clear attribution between agents and customers.</p>\n</li>\n<li>\n<h3>Media and broadcast.</h3>\n<p>Generate live multilingual subtitles with minimal latency. Context biasing handles proper nouns and technical terminology that trip up generic transcription services.</p>\n</li>\n<li>\n<h3>Compliance and documentation.</h3>\n<p>Monitor and transcribe interactions for regulatory compliance, with diarization providing clear speaker attribution and timestamps enabling precise audit trails.</p>\n</li>\n</ul>\n<p>Both models support GDPR and HIPAA-compliant deployments through secure on-premise or private cloud setups.</p>\n<h2>Get started.</h2>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/voxtral-mini-transcribe-26-02\">Voxtral Mini Transcribe V2</a> is available now via API at $0.003 per minute. Try it now in the new Mistral Studio <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/audio/speech-to-text\">audio playground</a> or in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://chat.mistral.ai\">Le Chat</a>.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/voxtral-mini-transcribe-realtime-26-02\">Voxtral Realtime</a> is available via API at $0.006 per minute and as open weights on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/mistralai/Voxtral-Mini-3B-Realtime-2602\">Hugging Face</a>.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/capabilities/audio_transcription\">Explore documentation</a> on Mistral’s audio and transcription capabilities.</p>\n<h2>We’re hiring.</h2>\n<p>If you're excited about building world-class speech AI and putting frontier models into the hands of developers everywhere, we'd love to hear from you. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\">Apply to join our team</a>.</p>\n",
      "date_modified": "2026-02-04T16:00:00+00:00",
      "date_published": "2026-02-04T16:00:00+00:00",
      "external_url": "https://mistral.ai/news/voxtral-transcribe-2/",
      "id": "urn:aggr:item:675ebc697c4709b9bf879ae61ab1bd42b919f759",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Model-Voxtral.jpg",
      "summary": "Today, we're releasing Voxtral Transcribe 2, two next-generation speech-to-text models with state-of-the-art transcription quality, diarization, and ultra-low latency. The family includes Voxtral Mini Transcribe V2 for batch transcription…",
      "tags": [
        "ai"
      ],
      "title": "Voxtral transcribes at the speed of sound.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-02-04-voxtral-transcribes-at-the-speed-of-sound/"
    },
    {
      "content_html": "<p>Today, we're releasing Mistral Vibe 2.0—a major upgrade to our terminal-native coding agent, powered by the state-of-the-art Devstral 2 model family. Build custom subagents, clarify before you execute, load skills with slash commands, and configure your own workflows to match how you work.</p>\n<p>Vibe powers you and your team to build, maintain, and ship code faster.</p>\n<p>Mistral Vibe is now available on the Le Chat Pro and Team plans—with pay-as-you-go credits for power use, or bring your own API key.</p>\n<h2>Highlights.</h2>\n<ul>\n<li>\n<p>Mistral Vibe 2.0: Custom subagents, multi-choice clarifications, slash-command skills, unified agent modes, and automatic updates.</p>\n</li>\n<li>\n<p>Available today on Le Chat Pro and Team plans with PAYG for extra usage, or BYOK.</p>\n</li>\n<li>\n<p>Devstral 2 moves to paid API access: Free on the Experiment plan in Mistral Studio.</p>\n</li>\n<li>\n<p>Enterprise services: fine-tuning, reinforcement learning, and code modernization.</p>\n</li>\n</ul>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=vgwe2jNPmEo\">YouTube video player</a></p>\n<h2>What's new in Vibe.</h2>\n<p>Mistral Vibe already gives you terminal-native code automation with natural language commands, multi-file orchestration, smart references, and full codebase context. With 2.0, we're adding the controls to make it yours.</p>\n<p>Custom subagents: Build specialized agents for targeted tasks—deploy scripts, PR reviews, test generation—and invoke them on demand.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=Nf2y_guxIJM\">YouTube video player</a></p>\n<p>Multi-choice clarifications: Vibe asks before it acts. When intent is ambiguous, it prompts with options instead of guessing.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=GE0k2rd0jco\">YouTube video player</a></p>\n<p>Slash-command skills: Load skills with / —preconfigured workflows for common tasks like deploying, linting, or generating docs.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=QnX80VASw48\">YouTube video player</a></p>\n<p>Unified agent modes: Configure custom modes that combine tools, permissions, and behaviors. Switch contexts without switching tools.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=-0kJLh9du4c\">YouTube video player</a></p>\n<p>Bug fixes and improvements in the Vibe CLI now ship continuously. No manual updates required.</p>\n<h2>Plans and pricing.</h2>\n<p>Mistral Vibe is available on Le Chat Pro and Team plans with generous usage for full-time development. Subscribers can continue beyond limits with pay-as-you-go at API rates until usage resets. Devstral 2 now moves to paid API access.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chat.mistral.ai/upgrade/plans\">Full access to Mistral Vibe CLI and Devstral 2. Students get 50% off. Ideal for sustained, daily dev work.</a></p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chat.mistral.ai/upgrade/plans\">Everything in Pro, plus unified billing, management, and priority support.</a></p>\n<p>Build with Devstral directly via <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/home\">Mistral Studio</a>.</p>\n<table>\n<thead>\n<tr>\n<th></th>\n<th></th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td></td>\n<td>Input</td>\n<td>Output</td>\n</tr>\n<tr>\n<td>Devstral 2</td>\n<td>$0.40/M tokens</td>\n<td>$2.00/M tokens</td>\n</tr>\n<tr>\n<td>Devstral 2 Small</td>\n<td>$0.10/M tokens</td>\n<td>$0.30/M tokens</td>\n</tr>\n</tbody>\n</table>\n<p>Free API usage remains available on the Experiment plan — ideal for testing and prototyping.</p>\n<h2>Enterprise add-ons.</h2>\n<p>For teams with advanced needs, we offer fine-tuning on internal languages and DSLs, reinforcement learning with your own environment, and end-to-end code modernization—migrate entire codebases to modern stacks without losing business logic or breaking behavior. We already deliver these solutions for some of the world's largest organizations in finance, defense, and infrastructure.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">Contact us</a> to learn more.</p>\n<h2>Get started.</h2>\n<p>1. Install the Vibe CLI in your terminal:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">curl</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>LsSf</span> https://mistral.ai/vibe/install.sh</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">bash</span></span>\n</span></span></code></pre>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">uv</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> tool install mistral-vibe</span>\n</span></span></code></pre>\n<p>2. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/codestral/cli\">Sign up to get started</a> to unlock full access.</p>\n<p>3. Start building: run vibe in your terminal.</p>\n<p>4. Explore the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/mistral-vibe/introduction\">documentation</a> or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/Mistralvibe\">join us on X</a> for updates.</p>\n<h2>We’re hiring.</h2>\n<p>If you want to build world-class AI products with us, we'd love to hear from you. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\">Apply to join our team</a>.</p>\n",
      "date_modified": "2026-01-27T16:00:00+00:00",
      "date_published": "2026-01-27T16:00:00+00:00",
      "external_url": "https://mistral.ai/news/mistral-vibe-2-0/",
      "id": "urn:aggr:item:be9aa3bd480b12f9264ee84d35bb0f10d2fa6c0d",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Solution-Vibe%20for%20code.jpg",
      "summary": "Today, we're releasing Mistral Vibe 2.0—a major upgrade to our terminal-native coding agent, powered by the state-of-the-art Devstral 2 model family. Build custom subagents, clarify before you execute, load skills with slash commands, and…",
      "tags": [
        "ai"
      ],
      "title": "Terminally online Mistral Vibe.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-01-27-terminally-online-mistral-vibe/"
    },
    {
      "content_html": "<p>A few months ago, our team investigated a suspected memory leak in vLLM. At first, we thought the issue would be easy to spot, something confined to the upper layers of the codebase. But the deeper we looked, the more complex it became. This article kicks off our new Engineering Deep Dive series, where we’ll share how we tackle technical investigations and build solutions at Mistral AI.</p>\n<p>The issue first appeared during pre-production testing of disaggregated serving with one of our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/getting-started/models\">frontier models</a>. Memory usage was climbing steadily, but only under specific conditions: with vLLM, with our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/mistral-medium-3-1-25-08\">model Mistral Medium 3.1</a>, and graph compilation enabled. There were no crashes or errors, just a slow linear increase in system memory of 400 MB per minute on production-like traffic.  After a few hours, that would lead to an &quot;out of memory&quot; state.</p>\n<p>What followed was a methodical hunt, starting from high-level Python tools and descending into kernel-level tracing, until we finally uncovered the true source. Here’s how we tracked it down, and what it revealed about the hidden risks of dependencies layers in today’s software.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/eb4eb0d5-1cfd-45e4-8824-39c223e770b4_Z1p9pAI.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"E2f0fa05 5d77 4acc Ac9b 43e10db5769c Copie\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>Not the kind of trending upwards graph we like to see on Grafana</em></p>\n<h2><strong>A leak that played hide and seek</strong>.</h2>\n<p>Initially, our approach followed a standard troubleshooting path: we aimed to isolate the source of the leak by replicating the issue on a smaller model, with fewer production optimizations activated. But after trying different settings and models we couldn’t reproduce that on another setup. The error was only present on a Prefill/Decode disaggregated setup with NIXL.</p>\n<p>Given the central role Prefill/Decode (P/D) disaggregation plays in our story, let us walk you through the high-level mechanisms of how this inference setup works. P/D Disaggregated splits the processing of a query into two phases, processed by different instances:</p>\n<ol>\n<li>\n<p>First the router sends a “prefill request” (by setting <code>max_tokens=1</code> and by setting an empty set of KV Transfer metadata) to a prefill vLLM instance to compute the KVCache of the request.</p>\n</li>\n<li>\n<p>On completion, the router transfers KVCache metadata alongside a “decode request” to a decode vLLM instance.</p>\n</li>\n<li>\n<p>KVCache transfer is initiated through NIXL and token generation happens on the decode vLLM instance by using and extending the transferred KVCache.</p>\n</li>\n</ol>\n<p>The leak was only observed on the decode side of this disaggregated setup, strongly suggesting that KV Cache transfer through NIXL was the root cause of the leak. In our setup <strong>NIXL</strong> relies on <strong>UCX</strong> (Unified Communication X), a high-performance communication library designed for data exchange in distributed systems. UCX enables optimized data transfer over a large set of technologies, including <strong>Infiniband</strong>, a low-latency, high-throughput interconnect technology commonly used in HPC and data centers.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/schema-heap_Z1PH96t.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>Overview of a P/D Disaggregated serving deployment.</em></p>\n<p>For the remainder of our investigation, we worked in this setup and started with Python memory profiling tools to pinpoint the source of the leak.</p>\n<p>We tried Memray and Guppy 3, but neither showed a leak and everything they allowed us to observe was normal. Attempting to use GDB made the entire process crash. Our vLLM setup was also too heavy for tools like Valgrind, making it impractically slow or even impossible to use.</p>\n<p>It was clear that a more powerful tool was required to track the leak. But before investing more time, we decided to be sure that this leak was reproducible by others. We reached out to the vLLM team by opening an <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/vllm-project/vllm/issues/24264\">issue on their GitHub repository</a>, which helped confirm we weren't the only ones seeing this issue and a deeper investigation was warranted.</p>\n<h2><strong>Counting mallocs and frees with Heaptrack.</strong></h2>\n<p>In order to better track what was happening, we turned to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/KDE/heaptrack\">Heaptrack</a>: a memory profiler that overrides memory operations like <code>malloc</code> or <code>free</code> and records these events alongside stack traces.</p>\n<p>Millian Wolf, the creator of Heaptrack, has written an excellent introductory <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://milianw.de/blog/heaptrack-a-heap-memory-profiler-for-linux.html\">blog post</a> to get you started with the tool. It’s a two-step process: first run the program with tracing, then interpret the data dumps.</p>\n<p>In order to track the allocations confined in the worker process of vLLM, we set <code>LD_PRELOAD</code> to <code>libheaptrack_preload.so</code> through vLLM to ensure this library is loaded before any other and overrides the behaviours of memory allocating functions, providing us with the data dump.</p>\n<p>We were then able to visualize this data through <code>heaptrack_interpret</code>:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">$</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> git clone https://github.com/KDE/heaptrack.git$ cd heaptrack</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-and syntax-shell\">&amp;&amp;</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">mkdir</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> build</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-and syntax-shell\">&amp;&amp;</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-support syntax-function syntax-cd syntax-shell\">cd</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> build</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-and syntax-shell\">&amp;&amp;</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">cmake</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> ..</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-and syntax-shell\">&amp;&amp;</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">sudo</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> make install</span>\n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Setting LD_PRELOAD=/path/to/libheaptrack_preload.so creates a temporary file named heaptrack.&lt;pid&gt;, here the pid is 2028233</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">$</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> /usr/local/lib/heaptrack/libexec/heaptrack_interpret <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&lt;</span> heaptrack.2028233</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">gzip</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&gt;</span> heaptrack.vllm.2028233.gz</span>\n</span></span></code></pre>\n<p>Heaptrack provides a detailed, interactive graph of all heap allocations, down to the function level. We can track every <code>malloc</code> and <code>free</code>, with a clear breakdown of the memory usage.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/12f9e32e-784a-4b11-ac8a-74b7b6c5ae75_sLtPA.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"72a017c9 7ffc 44dd A311 534ea3fefe1d Copie\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>The memory usage shown with Heaptrack of our vLLM worker</em></p>\n<p>At this point, one might question: where is the memory leak? Indeed, the only visible memory increase was due to a lazy NIXL initialization.</p>\n<p>To validate that the leak was indeed happening in this set-up, we ran a vLLM benchmark and created two Heaptrack snapshots using <code>heaptrack_interpret</code>: one at the beginning and one near the end. Although the heap memory itself remained stable, the <strong>peak resident memory (RSS)</strong>, which we will cover in the next section, differed between the two snapshots. This discrepancy was visible in Heaptrack’s summary tab.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/962a4486-01ac-470e-a4b4-5c1da093b772_2QAGE.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Image5\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>Peak RSS discrepancy in Heaptrack: Before (1) and after (2) benchmark</em></p>\n<p>This meant the leak was happening outside the heap, and so not part of the memory that Heaptrack analyzes. We needed to change tools to track allocations outside of the heap.</p>\n<h2><strong>Beyond the heap: understanding resident memory and system allocations.</strong></h2>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cms.globalaegis.net/api/media/file/1d04b034-422e-4b3d-8453-f7f7495b4bca.svg\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>To understand why Heaptrack couldn’t detect the leak, we first need to clarify what the <strong>Resident Set Size (RSS)</strong> actually includes. RSS represents the portion of a process’s memory held in RAM, and it contains more than just the heap. Specifically, it includes:</p>\n<ul>\n<li>\n<p><strong>The heap</strong> is traditionally managed using the legacy <code>sbrk</code> and <code>brk</code> system calls, which adjust or set the program’s break address, the pointer marking the end of the heap segment.</p>\n</li>\n<li>\n<p><strong>The stack</strong>, which stores local variables and function call frames.</p>\n</li>\n<li>\n<p><strong>Anonymous memory mappings</strong>, which are regions of memory allocated directly via the <code>mmap</code> system call without a file backing. These are often used by custom allocators or by <code>malloc</code> for larger blocks of memory. The addresses of anonymous mappings usually reside <strong>between the heap address space and the stack address space</strong>, in a region known as the <strong>memory mapping segment</strong>.</p>\n</li>\n</ul>\n<p>While <code>malloc</code> can use <code>sbrk</code> for small allocations, modern implementations typically prefer using <code>mmap</code> with anonymous mappings since it’s more flexible and lets you allocate huge pages (memory pages of 2MB or 1GB depending on your setup).</p>\n<p>Heaptrack only hooks into glibc's <code>malloc</code> and <code>free</code> functions. This means it can track all traditional heap and anonymous mapping allocated by <code>malloc</code> directly, but it misses memory allocated through direct <code>mmap</code> calls or other system-level mechanisms outside of glibc's control.</p>\n<p>Fortunately, all isn’t lost when it comes to tracking what was happening. The <code>/proc</code> filesystem is a special folder in Linux that serves as a <strong>kernel API</strong>, exposing a virtual interface to interact with running processes, and provides real-time access to process details, such as:</p>\n<ul>\n<li>\n<p><code>/proc/&lt;pid&gt;/fd</code>, which lists all open file descriptors for a process.</p>\n</li>\n<li>\n<p><code>/proc/&lt;pid&gt;/maps</code>, which shows a detailed map of the process’s memory regions, including heap, stack, shared libraries, and anonymous mappings.</p>\n</li>\n<li>\n<p>And many more (a simple <code>ls</code> in <code>/proc/&lt;pid&gt;/</code> lists what is available).</p>\n</li>\n</ul>\n<p>To continue our investigation, we used the <code>pmap</code> command, which reads <code>/proc/&lt;pid&gt;/maps</code> and presents memory usage in a human-readable format. Our goal was to track changes in memory regions over time, so we ran:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">$</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> watch<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>n</span> 1 <span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>pmap -X <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">pid</span></span> | (head -n 2 &amp;&amp; tail -n +3 | sort -k7 -nr)<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span></span>\n</span></span></code></pre>\n<p>This command runs <code>pmap</code> every second to display extended memory information for a specified PID, skips the header, and sorts the output by memory size, allowing us to focus on the largest memory regions.</p>\n<p>With this command, we observed an interesting pattern: only some anonymous memory mappings were growing over time, and their start addresses were changing. The size of these allocations became huge over time while most others were simply not moving.</p>\n<p><em>The memory pages listed by our</em> <code>pmap</code> <em>command, sorted by RSS size, made it easy to spot suspicious allocations. The orange dot highlights an example.</em></p>\n<p>This behavior is characteristic of <code>mremap</code>, a system call used to <strong>resize or relocate existing memory regions</strong> without freeing them. Unlike <code>realloc</code>, which operates within the heap and relies on glibc's memory management, <code>mremap</code> works at a lower level and is often used by custom allocators, libraries, or even manual memory management code to dynamically adjust memory layouts.</p>\n<p>This pattern could also result from repeated cycles of <code>munmap</code> followed by <code>mmap</code>, where memory is freed and reallocated but the total usage continues to grow, either due to <strong>fragmentation, leaks in custom allocators, or improper resizing logic</strong>. In our case, the changing addresses and growing size strongly suggested that memory was being reallocated but never properly released.</p>\n<p>This was our first concrete indication that the leak wasn’t in the heap but in anonymous <strong>memory regions being resized without proper release.</strong></p>\n<h2><strong>Tracing the leak with BPFtrace.</strong></h2>\n<p>Our investigation had narrowed the leak down to raw <code>mmap</code> or <code>mremap</code> calls, but we needed to confirm which one was responsible. Our first attempt was to use <code>LD_PRELOAD</code> with a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://gist.github.com/hasB4K/5211529e2a1741c478f253b82c110d69\">custom small C library</a> that logged every <code>mmap</code> and <code>mremap</code> call, since Heaptrack wasn’t doing it, hoping to intercept the ones we cared about. However, this approach had limitations: <strong>not all</strong> <code>mmap/mremap</code> <strong>go through glibc</strong>. Our custom hooks saw some allocations but they didn't match the addresses leaking in our <code>pmap</code> output. The leaking regions were still growing, untracked by our <code>LD_PRELOAD</code> hook. This suggested that those allocations were made by manually doing a syscall or that another hooking mechanism was in place.</p>\n<p>To get a full picture, we turned to <strong>BPFtrace</strong>, a tool for real-time tracing of system calls and kernel events. It relies on the Linux kernel’s <strong>eBPF virtual machine</strong>, which executes lightweight, pre-validated bytecode attached to tracepoints or probes, enabling safe and low-overhead analysis. BPFtrace is also used by some Kubernetes tools to detect anomalous or dangerous behaviors in clusters, such as unauthorized access or resource abuse, all without risking kernel stability.</p>\n<p>We also considered using <code>strace</code>, but its reliance on <code>PTRACE</code> made it too slow to effectively analyze the issue at this stage. Instead, we wrote a BPFtrace script to log <strong>every</strong> <code>mmap</code> <strong>and</strong> <code>mremap</code> <strong>call</strong> with their arguments and stack traces, including calls that don't go through glibc. Here’s is the script we wrote with <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chat.mistral.ai/\">Le Chat</a>’s help:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">tracepoint:syscalls:sys_enter_mmap</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> /pid == (uint64</span><span class=\"syntax-meta syntax-function-call syntax-shell\"></span><span class=\"syntax-meta syntax-post-cmd syntax-shell\">)</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\"><span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">1</span></span>/</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-meta syntax-group syntax-expansion syntax-brace syntax-shell\"><span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-begin syntax-shell\">{</span>    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>Stack trace:\\n%s\\n<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> ustack(perf));    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>PID/TID: %d %d | <span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> pid<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> tid);    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>ENTER mmap(addr=%p, len=%d, prot=%d, flags=%d, fd=%d, off=%d)\\n<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span>           args-&gt;addr<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;len<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;prot<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;flags<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;fd<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;off);<span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-end syntax-shell\">}</span></span>tracepoint:syscalls:sys_exit_mmap /pid == (uint64</span><span class=\"syntax-meta syntax-function-call syntax-shell\"></span><span class=\"syntax-meta syntax-post-cmd syntax-shell\">)</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\"><span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">1</span></span>/</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-meta syntax-group syntax-expansion syntax-brace syntax-shell\"><span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-begin syntax-shell\">{</span>    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>PID/TID: %d %d | <span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> pid<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> tid);    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>EXIT mmap: ret=%p\\n<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;ret);\n<span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-end syntax-shell\">}</span></span>tracepoint:syscalls:sys_enter_munmap /pid == (uint64</span><span class=\"syntax-meta syntax-function-call syntax-shell\"></span><span class=\"syntax-meta syntax-post-cmd syntax-shell\">)</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\"><span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">1</span></span>/</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-meta syntax-group syntax-expansion syntax-brace syntax-shell\"><span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-begin syntax-shell\">{</span>    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>PID/TID: %d %d | <span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> pid<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> tid);    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>ENTER munmap(addr=%p, len=%d)\\n<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;addr<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;len);<span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-end syntax-shell\">}</span></span>tracepoint:syscalls:sys_exit_munmap /pid == (uint64</span><span class=\"syntax-meta syntax-function-call syntax-shell\"></span><span class=\"syntax-meta syntax-post-cmd syntax-shell\">)</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\"><span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">1</span></span>/</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-meta syntax-group syntax-expansion syntax-brace syntax-shell\"><span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-begin syntax-shell\">{</span>    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>PID/TID: %d %d | <span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> pid<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> tid);    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>EXIT munmap: ret=%d\\n<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;ret);<span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-end syntax-shell\">}</span></span>tracepoint:syscalls:sys_enter_mremap /pid == (uint64</span><span class=\"syntax-meta syntax-function-call syntax-shell\"></span><span class=\"syntax-meta syntax-post-cmd syntax-shell\">)</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\"><span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">1</span></span>/</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-meta syntax-group syntax-expansion syntax-brace syntax-shell\"><span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-begin syntax-shell\">{</span>    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>PID/TID: %d %d | mremap<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> pid<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> tid);    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>old_addr=%p, old_len=%d, new_len=%d, flags=%d, new_addr=%p)\\n<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span>           args-&gt;addr<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;old_len<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;new_len<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;flags<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;new_addr);<span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-end syntax-shell\">}</span></span>tracepoint:syscalls:sys_exit_mremap /pid == (uint64</span><span class=\"syntax-meta syntax-function-call syntax-shell\"></span><span class=\"syntax-meta syntax-post-cmd syntax-shell\">)</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\"><span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">1</span></span>/</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-meta syntax-group syntax-expansion syntax-brace syntax-shell\"><span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-begin syntax-shell\">{</span>    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>PID/TID: %d %d | <span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> pid<span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> tid);    printf(<span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>EXIT mremap: ret=%p\\n<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-shell\">,</span> args-&gt;ret);<span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-end syntax-shell\">}</span></span></span>\n</span></span></code></pre>\n<p>We ran the script as root with this command by replacing <code>$pid</code> with the PID of the vLLM worker process that was leaking according to <code>pmap</code>:</p>\n<pre><code class=\"language-text\"><span class=\"code-snippet\">bpftrace /host/script_bpftrace.txt $pid &gt; out_$pid.txt\n</span></code></pre>\n<p>Basically, this script:</p>\n<ul>\n<li>\n<p>Traces <code>mmap</code>, <code>munmap</code> and <code>mremap</code> system calls as they enter the kernel.</p>\n</li>\n<li>\n<p>Prints the thread ID, call type, requested address, and length.</p>\n</li>\n<li>\n<p>Prints the <strong>user-space stack trace (</strong><code>ustack</code> <strong>in BPFtrace)</strong> to identify where the call originated.</p>\n</li>\n</ul>\n<p>Here is an example output of this script:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">Stack</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> trace:  7ffff7d6b88d syscall+29 (/usr/lib/x86_64-linux-gnu/libc.so.6</span><span class=\"syntax-meta syntax-function-call syntax-shell\"></span><span class=\"syntax-meta syntax-post-cmd syntax-shell\">)</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">PID/TID:</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> 441359 441359</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">ENTER</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> mmap(addr=(nil</span><span class=\"syntax-meta syntax-function-call syntax-shell\"></span><span class=\"syntax-meta syntax-post-cmd syntax-shell\">)</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">,</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> len=151552, prot=3, flags=34, fd=-1, off=0</span><span class=\"syntax-meta syntax-function-call syntax-shell\"></span><span class=\"syntax-meta syntax-post-cmd syntax-shell\">)</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">PID/TID:</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> 441359 441359</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">EXIT</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> mmap: ret=0x7fd8a78ee000</span>\n</span></span></code></pre>\n<p><em>Snippet of the output of the BPFtrace script. The</em> <code>syscall+29</code> <em>is important.</em></p>\n<p>At this stage, let’s synthesize the information we’ve collected:</p>\n<ul>\n<li>\n<p><code>pmap</code> showed us the suspiciously-growing allocations and their base addresses.</p>\n</li>\n<li>\n<p>BPFtrace allowed us to understand that these addresses were obtained with <code>mmap</code> calls, not <code>mremap</code>. This was surprising to us, as <code>mremap</code> sounded like the ideal suspect for a memory allocation that kept on growing.</p>\n</li>\n<li>\n<p>Even more intriguing, the calls originated from <code>syscall+29</code> aka <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86_64/syscall.S;hb=5d1cb431aa#l37\">glibc's raw syscall wrapper</a>, that lets users perform a raw syscall through an API like: <code>syscall(SYS_mmap, ...)</code></p>\n</li>\n</ul>\n<p>This represented significant progress, but further investigation was required. While BPFtrace showed us the user stack trace of the system call itself (<code>ustack</code> in their documentation), it only gave us the first element of the user call stack, not the full user-space context leading to the allocation. We could see where the <code>mmap</code> was called, but not the previous callers. That information would have been essential to us, so we tried to understand why we could not get it, and initially thought it was linked to <strong>frame pointers being disabled</strong> in our setup, and decided to investigate in that direction.</p>\n<p>For context, frame pointer is a feature that stores the return address of function calls in a register or memory location, enabling tools to reconstruct the full call stack. Frame pointers were historically disabled as an optimization for most libraries, as they added minor overhead, but modern distributions have begun re-enabling them since the performance gains are now negligible compared to the debugging benefits.</p>\n<p>Sadly, switching from Ubuntu 22.04 LTS to Ubuntu 24.04 LTS (which has frame pointers enabled for native libraries) wasn’t enough. This suggested that an already optimized Python dependency, that disabled frame pointers, was the culprit.</p>\n<p>We pondered the situation for a while: which Python package could be doing such direct syscalls, by-passing the usual standard library calls? At this stage, we had two potential culprits:</p>\n<ol>\n<li>\n<p><strong>UCX (Unified Communication X)</strong>, a high-performance communication library used for accelerated networking and RDMA (Remote Direct Memory Access). UCX is a dependency of NIXL, which vLLM uses for disaggregated serving. UCX is known for its low-level memory optimizations, including custom memory allocators.</p>\n</li>\n<li>\n<p><strong>PyTorch</strong>, which performs its own memory management and optimizations, often bypassing standard allocators for performance. PyTorch’s custom allocations and JIT compilation could also be responsible for the leak.</p>\n</li>\n</ol>\n<p>With both suspects on the table, we needed a way to dig deeper. At this stage we turned to GDB automation instead.</p>\n<h2><strong>GDB automation to the rescue.</strong></h2>\n<p>Using GDB earlier in the investigation wasn’t feasible for a simple reason: GDB attaches to an entire process. With vLLM, attaching GDB to the main process would halt all workers, making it impossible to observe the leak in real time. Since the leak didn’t cause a crash, and memory dumps were impractical due to the sheer size of the process. We were stuck.</p>\n<p>However, from our BPFtrace logs, we noticed that every leaking <code>mmap</code> call originated from the same address. Like we said in the previous section, this address didn’t point to <code>mmap</code> directly, but it was inside glibc’s the <code>syscall</code> thin-wrapper. This function bypasses glibc’s usual <code>mmap</code> wrapper, which explains why our <code>LD_PRELOAD</code> hooks missed it earlier. We tried to use <code>LD_PRELOAD</code> to intercept the glibc’s <code>syscall</code>, but strangely it wasn’t working either… leaving us with almost no way to trace these calls dynamically.</p>\n<p>Since the leaking calls always came from the same <code>syscall</code> instruction, we could automate GDB to break only when that specific address was hit. Here’s how we did it:</p>\n<ol>\n<li>\n<p>We set a <strong>conditional breakpoint</strong> on the <code>syscall</code> address, triggering only if the system call number matched <code>SYS_mmap</code>.</p>\n</li>\n<li>\n<p>We temporarily broke at the exit of the <code>mmap</code> system call to inspect the return value, which is the allocated address, and printed the full stack trace.</p>\n</li>\n<li>\n<p>We dumped all available context in one go: the return address, the call stack, and any other relevant registers or memory.</p>\n</li>\n<li>\n<p>We ran this conditional script <strong>for a few seconds during the benchmark</strong> and compared the captured return addresses with our <code>pmap</code> monitoring to confirm whether they matched the known leaking regions.</p>\n</li>\n</ol>\n<p>Here is the script, which can be run through <code>gdb -x gdb_script.txt</code>:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Attach to the processattach 2199304</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Open a log file for outputset logging file syscall_output.txtset logging on</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Set a conditional breakpoint on syscall for rdi == 9 (mmap)break syscall if $rdi == 9</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Commands for the syscall breakpointcommands  silent  # Set a temporary breakpoint at the return point  tbreak *0x00007ffff7d9525d  # Commands for the temporary breakpoint  commands $bpnum + 1    silent    set $ret_val = $rax    bt    printf &quot;Syscall returned: rax = 0x%012lx\\n&quot;, $ret_val    continue  end  continueend</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Run the processcontinue</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span></span></code></pre>\n<p>This approach gave us two major benefits:</p>\n<ul>\n<li>\n<p>We captured the full user-space stack trace at the moment of allocation, something BPFtrace couldn’t reliably provide.</p>\n</li>\n<li>\n<p>We could also cross-reference the returned addresses with our <code>pmap</code> output to confirm whether they matched the leaking regions.</p>\n</li>\n</ul>\n<p>In short, we turned GDB into a targeted, non-intrusive observer, breaking only when the leak occurred, printing everything we needed, and letting the process continue. This finally allowed us to connect the dots between the <code>mmap</code> calls and the growing anonymous regions we’d seen in <code>pmap</code>.</p>\n<p>The first stack trace showed Python (line <code>#5</code>) invoking <code>mmap</code> through UCX (line <code>#4</code>), which was unexpected since Python, in normal circumstances, should call the glibc’s <code>mmap</code> directly.</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:29#1  0x00007ffc61759ac2 in ucm_orig_mmap_syscall () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucm-e091ff91.so.0.0.0#2  0x00007ffc61753bd1 in ?? () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucm-e091ff91.so.0.0.0#3  0x00007ffc61753e3b in ucm_event_dispatch () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucm-e091ff91.so.0.0.0#4  0x00007ffc61754009 in ucm_mmap () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucm-e091ff91.so.0.0.0#5  0x0000000000674ac0 in _PyMem_ArenaAlloc (_unused_ctx=&lt;optimized out&gt;, size=&lt;optimized out&gt;) at ../Objects/obmalloc.c:138...</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span></span></code></pre>\n<p>Even more confusing was the second stack trace, where Python (line <code>#8</code>) was calling <code>munmap</code> through UCX (line <code>#7</code>), yet somehow triggering an <code>mmap</code> allocation (line <code>#1</code>) in the process:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38#1  0x00007ffc60f58ac2 in ucm_orig_mmap_syscall () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucm-e091ff91.so.0.0.0#2  0x00007ffc60fae47c in ?? () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucs-311e600f.so.0.0.0#3  0x00007ffc60f9b9c4 in ucs_mpool_grow () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucs-311e600f.so.0.0.0#4  0x00007ffc60f9bbf5 in ucs_mpool_get_grow () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucs-311e600f.so.0.0.0#5  0x00007ffc60fafe2c in ?? () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucs-311e600f.so.0.0.0#6  0x00007ffc60f52e3b in ucm_event_dispatch () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucm-e091ff91.so.0.0.0#7  0x00007ffc60f5313b in ucm_munmap () from /.venv/lib/python3.12/site-packages/.nixl.mesonpy.libs/plugins/../../nixl.libs/libucm-e091ff91.so.0.0.0#8  0x0000000000607d15 in _PyThreadState_PopFrame (tstate=0xba6ac8 &lt;_PyRuntime+459656&gt;, frame=&lt;optimized out&gt;) at ../Python/pystate.c:2992...</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span></span></code></pre>\n<p>This was unexpected, as <code>munmap</code> is intended to free memory, not allocate it. Seeing an <code>mmap</code> call during a <code>munmap</code> operation within UCM (the memory management module of UCX) suggested something was going wrong in UCX's memory pool management.</p>\n<h2><strong>Identifying the role of UCX’s memory hooks.</strong></h2>\n<p>We shared these findings with the vLLM team, who helped validate and refine our understanding of the issue. Together, we discovered that UCX uses a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/openucx/ucx/blob/179a0e728d7ff0109f916f139e9efd4aa3f207e8/src/ucm/mmap/install.c#L354\">mmap hooking mechanism</a> to optimize memory operations for InfiniBand, including pre-caching data for transfers (a feature called Registration Cache, or RCache). Memory management for InfiniBand is often expensive due to the need for hardware-level memory registration.</p>\n<p>However, this mechanism intercepts <strong>all</strong> <code>mmap</code> <strong>calls by default</strong>, not just those related to UCX or InfiniBand operations. This broad interception explains why our earlier attempts to trace allocations using our <code>LD_PRELOAD</code> based <code>mmap</code> hook failed: UCX <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/openucx/ucx/blob/efd5356e0aac6a9d1e7f3b9ab4dfa8e4d90b64fc/src/ucm/util/reloc.c#L742\">dynamically patches</a> the <strong>Global Offset Table (GOT) entries</strong> used by applications to call functions like <code>mmap</code> and <code>munmap</code>. That's why it was bypassing our earlier hooks entirely. We also found that this hooking mechanism <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/openucx/ucx/blob/179a0e728d7ff0109f916f139e9efd4aa3f207e8/src/ucm/malloc/malloc_hook.c#L845\">is automatically disabled</a> when Valgrind is detected, which would have prevented us from using Valgrind for deeper analysis.</p>\n<p>The GOT is a data structure used by the dynamic linker to resolve function calls in dynamically linked libraries. When a program starts, the dynamic linker populates the GOT with the actual addresses of functions, such as <code>mmap</code>, from shared libraries.</p>\n<p>Modifying the GOT at runtime is generally considered bad practice because it can introduce instability, make debugging harder, and break assumptions other parts of the program or libraries rely on. But UCX does this for a good reason. Indeed, UCX does this to manage its Registration Cache, which tracks &quot;registered&quot; (or &quot;pinned&quot;) memory. This is memory that has been pinned in place, ensuring its virtual-to-physical address mapping remains fixed. This allows network adapters to transfer data directly between the network fabric and RAM without CPU involvement, which is critical for performance but requires careful handling, as registered memory is a limited resource.</p>\n<h2><strong>Solving the issue.</strong></h2>\n<p>Now that we knew that the <code>mmap</code> hooking mechanism was in play, we realized that it was actually good news since we could disable it entirely by setting this environment variable <code>UCX_MEM_MMAP_HOOK_MODE=none</code>. It successfully disabled this behavior, <strong>which resolved the memory leak without impacting performance.</strong> ;The <code>mmap</code> hooks are useful when sending various memory chunks over RDMA, but in vLLM use case, we only need to handle <strong>one large, contiguous memory region</strong>: the entire vLLM KVCache Manager memory. NIXL only needed to register the memory once for its transfers. Therefore, in the vLLM use case, disabling the hooking mechanism was safe and had no negative impact on disaggregated serving performance.</p>\n<p>After discussing this with the UCX team, we learned that UCX does not immediately free memory when <code>munmap</code> is called. Instead, it moves the region to an invalidation queue for later cleanup. This queue is managed by UCX’s memory pool, which dynamically expands to accommodate more entries as needed. As a result, memory regions accumulated without being released, and the growing queue required additional allocations, explaining why <code>mmap</code> was called during <code>munmap</code> operations. As an alternative solution to the memory leak setting the environment variable <code>UCX_RCACHE_MAX_UNRELEASED=1024</code> (the default value is <code>inf</code>) limits the number of unreleased memory regions in the queue, forcing UCX to initiate cleanup once the threshold is reached.</p>\n<p>The thing is, this should not have happened in the first place. NIXL and vLLM were indeed <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/ai-dynamo/nixl/blob/f41fc127a8ed993908a6cac799728637a7e1f26a/src/plugins/ucx/ucx_backend.cpp#L394\">calling</a> the <code>ucp_worker_progress()</code> function that should have triggered the memory pool cleanup. Why it was not triggered in this specific edge case is still not clear. But it showed that setting a default value of <code>UCX_RCACHE_MAX_UNRELEASED</code> to infinity was not correct. The UCX and NIXL team decided to change this behavior <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/ai-dynamo/nixl/pull/1210\">for a future NIXL release</a>. In the meantime, we merged a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/vllm-project/vllm/pull/32181\">fix</a> in the vLLM repository to help the community avoid running into the same leak.</p>\n<h2><strong>A summary of the investigation.</strong></h2>\n<p>The investigation in brief:</p>\n<ol>\n<li>\n<p>We noticed a <strong>rapidly-growing memory leak in our production setting</strong> when deploying one of our frontier models with disaggregated serving.</p>\n</li>\n<li>\n<p>We attempted to trim down the environment and get a minimal reproducer. Unfortunately, <strong>the bug only reproduced on a complex setup, with a large model, and disaggregation enabled.</strong></p>\n</li>\n<li>\n<p>We turned into Memray, Guppy 3, and Heaptrack to analyze the leak. <strong>Nothing obvious came of these tools.</strong> However, we noticed something peculiar in Heaptrack’s metrics. <strong>The resident memory was unusually large</strong>, so we decided to dig in that direction.</p>\n</li>\n<li>\n<p>Leveraging <code>pmap</code>, we were able to see <strong>RSS allocations that kept on growing, with their associated base pointers.</strong></p>\n</li>\n<li>\n<p>We wanted to get more clues about who was doing those calls. With a bit of scripting and the use of BPFtrace, <strong>we found that the leaks originated from</strong> <code>mmap</code> <strong>calls.</strong> Even with our best efforts, we were not able to collect full stack traces (that would have allowed us to pin-point the culprit call site), but <strong>that led us to believe that the syscalls were made by a heavily optimized package.</strong></p>\n</li>\n<li>\n<p>Thanks to the gathered information, we were able to <strong>set up very specific GDB breakpoints that would only be triggered by the offending calls.</strong></p>\n</li>\n<li>\n<p>We found that <strong>UCX was performing those calls.</strong> While the purpose of the calls is legitimate: improve performance for InfiniBand transfers, it created ever-growing allocations in the RSS and <strong>prevented us from deploying disaggregated serving for days.</strong></p>\n</li>\n<li>\n<p>Knowing the source of the leak, the work-around was easy to find: <strong>setting</strong> <code>UCX_MEM_MMAP_HOOK_MODE=none</code> <strong>fixed our issue</strong>. We discussed that <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/vllm-project/vllm/issues/24264\">investigation in the vLLM repository</a> and merged <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/vllm-project/vllm/pull/32181\">a patch for the community</a>.</p>\n</li>\n</ol>\n<h2><strong>What we learned.</strong></h2>\n<p>Modern software stacks are built on top of layers of dependencies, each adding complexity and potential points of failure. While these abstractions greatly enhance programmers’ productivity, it doesn’t fully insulate them from underlying issues in the stack. That’s why it’s essential to be prepared to dig deep when debugging. However, doing so in these environments is rarely straightforward, especially when performance optimizations introduce subtle edge cases. UCX is a great example of this. Its design prioritizes performance, but the way it intercepts <code>mmap</code> calls can create hard-to-trace risks. This experience demonstrated once more how challenging it can be to diagnose issues in deeply interconnected systems.</p>\n<p>This investigation also shows the importance of transparency and collaboration when navigating performance-critical dependencies. We’re grateful for the collaboration with the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://vllm.ai/\">vLLM</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/ai-dynamo/nixl\">NIXL</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://openucx.org/\">UCX</a> teams in confirming and addressing this behavior. Their expertise was critical in reaching a resolution, and we look forward to continuing our work together.</p>\n<p>We extend our gratitude to the following individuals for their assistance and collaboration in resolving this issue:</p>\n<ul>\n<li>\n<p><strong>Robert Shaw</strong> (Red Hat, vLLM and llm-d Maintainer)</p>\n</li>\n<li>\n<p><strong>Will Eaton</strong> (Red Hat, vLLM and llm-d Maintainer)</p>\n</li>\n<li>\n<p><strong>Nicolò Lucchesi</strong> (Red Hat, vLLM and llm-d Maintainer)</p>\n</li>\n<li>\n<p><strong>Mikhail Brinskii</strong> (NVIDIA, NIXL Maintainer)</p>\n</li>\n<li>\n<p><strong>Leonid Genkin</strong> (NVIDIA, UCX Maintainer)</p>\n</li>\n<li>\n<p><strong>Nathan Bellalou</strong> (NVIDIA, UCX and NIXL Maintainer)</p>\n</li>\n</ul>\n<h3>We Are Hiring</h3>\n<p>Interested in tackling challenges like these? Join us at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\">Mistral AI</a> and help shape the future of AI infrastructure. We’re always looking for talented engineers and researchers to collaborate on cutting-edge projects.</p>\n",
      "date_modified": "2026-01-21T16:00:00+00:00",
      "date_published": "2026-01-21T16:00:00+00:00",
      "external_url": "https://mistral.ai/news/debugging-memory-leak-in-vllm/",
      "id": "urn:aggr:item:0e6321f13e137a997fe2337881da56ec68ae210f",
      "summary": "A few months ago, our team investigated a suspected memory leak in vLLM. At first, we thought the issue would be easy to spot, something confined to the upper layers of the codebase. But the deeper we looked, the more complex it became.…",
      "tags": [
        "ai"
      ],
      "title": "Heaps do lie: debugging a memory leak in vLLM.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2026-01-21-heaps-do-lie-debugging-a-memory-leak-in-vllm/"
    },
    {
      "content_html": "<h3>Highlights</h3>\n<ul>\n<li>\n<p>Breakthrough performance: 74% overall win rate over Mistral OCR 2 on forms, scanned documents, complex tables, and handwriting.</p>\n</li>\n<li>\n<p>State-of-the-art accuracy, outperforming both enterprise document processing solutions as well as AI-native OCR solutions</p>\n</li>\n<li>\n<p>Now powers Document AI Playground in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/document-ai/ocr-playground\">Mistral AI Studio</a>, a simple drag-and-drop interface for parsing PDFs/images into clean text or structured JSON</p>\n</li>\n<li>\n<p>Major upgrade over Mistral OCR 2 in forms, handwritten content, low-quality scans, and tables</p>\n</li>\n</ul>\n<h3>Overview</h3>\n<p>Mistral OCR 3 is designed to extract text and embedded images from a wide range of documents with exceptional fidelity. It supports markdown output enriched with HTML-based table reconstruction, enabling downstream systems to understand not just document content, but also structure. As a much smaller model than most competitive solutions, it is available at an industry-leading price of $2 per 1,000 pages, with a 50% Batch-API discount, reducing the cost to $1 per 1,000 pages.</p>\n<p>Developers can integrate the model (mistral-ocr-2512) via API, and users can leverage Document AI, a UI that parses documents into text or structured JSON instantly.</p>\n<h3>Benchmarks</h3>\n<p>To raise the bar, we introduced more challenging internal benchmarks based on real business use-case examples from customers. We then evaluated several models across the domains highlighted below, comparing their outputs to ground truth using fuzzy-match metric for accuracy.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/71a86b4e-b67e-49c0-b2a2-57ffdb42717f_x6QSn.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Ocr Multilangual\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/00408f9b-0cb7-447c-b4f8-bdefc4a3f3dc_Z1de4qo.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Ocr 3\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Upgrades over previous generations of OCR models</h3>\n<p>Whereas most OCR solutions today specialize in specific document types, Mistral OCR 3 is designed to excel at processing the vast majority of document types in organizations and everyday settings.</p>\n<ul>\n<li>\n<p>Handwriting: Mistral OCR accurately interprets cursive, mixed-content annotations, and handwritten text layered over printed forms.</p>\n</li>\n<li>\n<p>Forms: Improved detection of boxes, labels, handwritten entries, and dense layouts. Works well on invoices, receipts, compliance forms, government documents, and such.</p>\n</li>\n<li>\n<p>Scanned &amp; complex documents: Significantly more robust to compression artifacts, skew, distortion, low DPI, and background noise.</p>\n</li>\n<li>\n<p>Complex tables: Reconstructs table structures with headers, merged cells, multi-row blocks, and column hierarchies. Outputs HTML table tags with colspan/rowspan to fully preserve layout.</p>\n</li>\n</ul>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=Xwv_elQQJFc\">www.youtube.com</a></p>\n<p>Mistral OCR 3 is a significant upgrade across all languages and document form factors compared to Mistral OCR 2.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/1682ebdd-99f1-46d4-9d26-36a716c6f2fb_1s4nW7.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Win Rates   Mistral Ocr 3 Vs Ocr 2\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Recommend use cases and applications</h3>\n<p>Mistral OCR 3 is ideal for both high-volume enterprise pipelines and interactive document workflows. Developers can use it for:</p>\n<ul>\n<li>\n<p>Extracting text and images into markdown for downstream agents and knowledge systems</p>\n</li>\n<li>\n<p>Automated parsing of forms, invoices, and operational documents</p>\n</li>\n<li>\n<p>End-to-end document understanding pipelines</p>\n</li>\n<li>\n<p>Digitization of handwritten or historical documents</p>\n</li>\n<li>\n<p>Any other document → knowledge transformation applications.</p>\n</li>\n</ul>\n<p>Our early customers are using Mistral OCR 3 to process invoices into structured fields, digitize company archives, extract clean text from technical and scientific reports, and improve enterprise search.</p>\n<p>“OCR remains foundational for enabling generative AI and agentic AI,” said Tim Law, IDC Director of Research for AI and Automation. “Those organizations that can efficiently and cost-effectively extract text and embedded images with high fidelity will unlock value and will gain a competitive advantage from their data by providing richer context.”</p>\n<h3>Available today</h3>\n<p>Access the model either through the API or via the new Document AI Playground interface, both in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/document-ai/ocr-playground\">Mistral AI Studio</a>. Mistral OCR 3 is fully backward compatible with Mistral OCR 2. For more details, head over to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/capabilities/document_ai/basic_ocr\">mistral.ai/docs</a>.</p>\n<p>For organizations with stringent data privacy requirements, Mistral OCR offers a self-hosting option. This ensures that sensitive or classified information remains secure within your own infrastructure, providing compliance with regulatory and security standards. If you would like to explore self-deployment with us, please <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">let us know</a>.</p>\n",
      "date_modified": "2025-12-17T15:00:00+00:00",
      "date_published": "2025-12-17T15:00:00+00:00",
      "external_url": "https://mistral.ai/news/mistral-ocr-3/",
      "id": "urn:aggr:item:d036dbdb5488b79c568360bf5d5b39a220b2364c",
      "image": "https://mistral.ai/cms-media/api/media/file/thumbnail-ocr.jpg",
      "summary": "Highlights Breakthrough performance: 74% overall win rate over Mistral OCR 2 on forms, scanned documents, complex tables, and handwriting. State-of-the-art accuracy, outperforming both enterprise document processing solutions as well as…",
      "tags": [
        "ai"
      ],
      "title": "Introducing Mistral OCR 3",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-12-17-introducing-mistral-ocr-3/"
    },
    {
      "content_html": "<p>Today, we're releasing Devstral 2—our next-generation coding model family available in two sizes: Devstral 2 (123B) and Devstral Small 2 (24B). Devstral 2 ships under a modified MIT license, while Devstral Small 2 uses Apache 2.0. Both are open-source and permissively licensed to accelerate distributed intelligence.</p>\n<p>Devstral 2 is currently free to use via <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/\">our API</a>.</p>\n<p>We are also introducing Mistral Vibe, a native CLI built for Devstral that enables end-to-end code automation.</p>\n<h2>Highlights.</h2>\n<ol>\n<li>\n<p>Devstral 2: SOTA open model for code agents with a fraction of the parameters of its competitors and achieving 72.2% on SWE-bench Verified.</p>\n</li>\n<li>\n<p>Up to 7x more cost-efficient than Claude Sonnet at real-world tasks.</p>\n</li>\n<li>\n<p>Mistral Vibe CLI: Native, open-source agent in your terminal solving software engineering tasks autonomously.</p>\n</li>\n<li>\n<p>Devstral Small 2: 24B parameter model available via API or deployable locally on consumer hardware.</p>\n</li>\n<li>\n<p>Compatible with on-prem deployment and custom fine-tuning.</p>\n</li>\n</ol>\n<h2>Devstral: the next generation of SOTA coding.</h2>\n<p>Devstral 2 is a 123B-parameter dense transformer supporting a 256K context window. It reaches 72.2% on SWE-bench Verified—establishing it as one of the best open-weight models while remaining highly cost efficient. Released under a modified MIT license, Devstral sets the open state-of-the-art for code agents.</p>\n<p>Devstral Small 2 scores 68.0% on SWE-bench Verified, and places firmly among models up to five times its size while being capable of running locally on consumer hardware.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/9c36eef1-2b4c-4fb8-8ef0-d531116ec53a_1P2Y1J.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Devstral   Swe Bench Verified  Open Weights Vs Proprietary Models (light) (1)\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Devstral 2 (123B) and Devstral Small 2 (24B) are 5x and 28x smaller than DeepSeek V3.2, and 8x and 41x smaller than Kimi K2—proving that compact models can match or exceed the performance of much larger competitors. Their reduced size makes deployment practical on limited hardware, lowering barriers for developers, small businesses, and hobbyists.hardware.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/49e0d71c-436c-4334-9fff-fa68c9f60380_1S4vKf.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Devstral   Swe Bench Verified Regular Performance X Modelsize (light)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Built for production-grade workflows.</h3>\n<p>Devstral 2 supports exploring codebases and orchestrating changes across multiple files while maintaining architecture-level context. It tracks framework dependencies, detects failures, and retries with corrections—solving challenges like bug fixing and modernizing legacy systems.</p>\n<p>The model can be fine-tuned to prioritize specific languages or optimize for large enterprise codebases.</p>\n<p>We evaluated Devstral 2 against DeepSeek V3.2 and Claude Sonnet 4.5 using human evaluations conducted by an independent annotation provider, with tasks scaffolded through Cline. Devstral 2 shows a clear advantage over DeepSeek V3.2, with a 42.8% win rate versus 28.6% loss rate. However, Claude Sonnet 4.5 remains significantly preferred, indicating a gap with closed-source models persists.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/48b2b0fc-f8d8-44da-a3a2-4961aad2f10e_1htA3b.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Devstral   Model Performance Comparison (light) (1)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>“Devstral 2 is at the frontier of open-source coding models. In Cline, it delivers a tool-calling success rate on par with the best closed models; it's a remarkably smooth driver. This is a massive contribution to the open-source ecosystem.” — Cline.</p>\n<p>“Devstral 2 was one of our most successful stealth launches yet, surpassing 17B tokens in the first 24 hours. Mistral AI is moving at Kilo Speed with a cost-efficient model that truly works at scale.” — Kilo Code.</p>\n<p>Devstral Small 2, a 24B-parameter model with the same 256K context window and released under Apache 2.0, brings these capabilities to a compact, locally deployable form. Its size enables fast inference, tight feedback loops, and easy customization—with fully private, on-device runtime. It also supports image inputs, and can power multimodal agents.</p>\n<h2>Mistral Vibe CLI.</h2>\n<p>Mistral Vibe CLI is an open-source command-line coding assistant powered by Devstral. It explores, modifies, and executes changes across your codebase using natural language—in your terminal or integrated into your preferred IDE via the Agent Communication Protocol. It is released under the Apache 2.0 license.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=XN-27H4AdCc\">YouTube video player</a></p>\n<p>Vibe CLI provides an interactive chat interface with tools for file manipulation, code searching, version control, and command execution. Key features:</p>\n<ul>\n<li>\n<p>Project-aware context: Automatically scans your file structure and Git status to provide relevant context</p>\n</li>\n<li>\n<p>Smart references: Reference files with @ autocomplete, execute shell commands with !, and use slash commands for configuration changes</p>\n</li>\n<li>\n<p>Multi-file orchestration: Understands your entire codebase—not just the file you're editing—enabling architecture-level reasoning that can halve your PR cycle time</p>\n</li>\n<li>\n<p>Persistent history, autocompletion, and customizable themes.</p>\n</li>\n</ul>\n<p>You can run Vibe CLI programmatically for scripting, toggle auto-approval for tool execution, configure local models and providers through a simple config.toml, and control tool permissions to match your workflow.</p>\n<h2>Get started.</h2>\n<p>Devstral 2 is currently offered free via <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://console.mistral.ai\">our API</a>. After the free period, the API pricing will be $0.40/$2.00 per million tokens (input/output) for Devstral 2 and $0.10/$0.30 for Devstral Small 2.</p>\n<p>We’ve partnered with leading, open agent tools <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://kilo.ai/\">Kilo Code</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://cline.bot/\">Cline</a> to bring Devstral 2 to where you already build.</p>\n<p>Mistral Vibe CLI is available as an extension in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://zed.dev/extensions\">Zed</a>, so you can use it directly inside your IDE.</p>\n<h3>Recommended deployment for Devstral.</h3>\n<p>Devstral 2 is optimized for data center GPUs and requires a minimum of 4 H100-class GPUs for deployment. You can try it today on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://build.nvidia.com\">build.nvidia.com</a>. Devstral Small 2 is built for single-GPU operation and runs across a broad range of NVIDIA systems, including DGX Spark and GeForce RTX. NVIDIA NIM support will be available soon.</p>\n<p>Devstral Small runs on consumer-grade GPUs as well as CPU-only configurations with no dedicated GPU required.</p>\n<p>For optimal performance, we recommend a temperature of 0.2 and following the best practices defined for <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai/mistral-vibe/blob/main/README.md\">Mistral Vibe CLI</a>.</p>\n<h2>Contact us.</h2>\n<p>We’re excited to see what you will build with Devstral 2, Devstral Small 2, and Vibe CLI!</p>\n<p>Share your projects, questions, or discoveries with us on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/mistralai\">X/Twitter</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://discord.com/invite/mistralai\">Discord</a>, or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai\">GitHub</a>.</p>\n<h2>We’re hiring!</h2>\n<p>If you’re interested in shaping open-source research and building world-class interfaces that bring truly open, frontier AI to users, we welcome you to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\">apply to join our team</a>.</p>\n",
      "date_modified": "2025-12-09T12:00:00+00:00",
      "date_published": "2025-12-09T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/devstral-2-vibe-cli/",
      "id": "urn:aggr:item:52912f009a40abb0d4bb7bd728943e4a0c7cc09c",
      "summary": "Today, we're releasing Devstral 2—our next-generation coding model family available in two sizes: Devstral 2 (123B) and Devstral Small 2 (24B). Devstral 2 ships under a modified MIT license, while Devstral Small 2 uses Apache 2.0. Both are…",
      "tags": [
        "ai"
      ],
      "title": "Introducing: Devstral 2 and Mistral Vibe CLI.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-12-09-introducing-devstral-2-and-mistral-vibe-cli/"
    },
    {
      "content_html": "<p>Today, we announce Mistral 3, the next generation of Mistral models. Mistral 3 includes three state-of-the-art small, dense models (14B, 8B, and 3B) and Mistral Large 3 – our most capable model to date – a sparse mixture-of-experts trained with 41B active and 675B total parameters. All models are released under the Apache 2.0 license. Open-sourcing our models in a variety of compressed formats empowers the developer community and puts AI in people’s hands through distributed intelligence.</p>\n<p>The Ministral models represent the best performance-to-cost ratio in their category. At the same time, Mistral Large 3 joins the ranks of frontier instruction-fine-tuned open-source models.</p>\n<h2>Mistral Large 3: A state-of-the-art open model</h2>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/98aeee04-e1c3-43b7-b90e-c51da84d5e56_1QzOEG.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Chart Base Models (1)\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/bdf27a12-76fd-4e62-be9b-938f14288a9a_FMdgy.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"3 Model Performance Comparison (instruct)\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Mistral Large 3 is one of the best permissive open weight models in the world, trained from scratch on 3000 of NVIDIA’s H200 GPUs. Mistral Large 3 is Mistral’s first mixture-of-experts model since the seminal Mixtral series, and represents a substantial step forward in pretraining at Mistral. After post-training, the model achieves parity with the best instruction-tuned open-weight models on the market on general prompts, while also demonstrating image understanding and best-in-class performance on multilingual conversations (i.e., non-English/Chinese).</p>\n<p>Mistral Large 3 debuts at #2 in the OSS non-reasoning models category (#6 amongst OSS models overall) on the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://lmarena.ai/leaderboard/text\">LMArena leaderboard</a>.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/4626af3d-7554-4d50-9c0e-041fe7111ece_DraCq.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Lm Arena Chart Ml3\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>We release both the base and instruction fine-tuned versions of Mistral Large 3 under the Apache 2.0 license, providing a strong foundation for further customization across the enterprise and developer communities. A reasoning version is coming soon!</p>\n<h3>Mistral, NVIDIA, vLLM &amp; Red Hat join forces to deliver faster, more accessible Mistral 3</h3>\n<p>Working in conjunction with vLLM and Red Hat, Mistral Large 3 is very accessible to the open-source community. We’re releasing a checkpoint in NVFP4 format, built with <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/vllm-project/llm-compressor\">llm-compressor</a>. This optimized checkpoint lets you run Mistral Large 3 efficiently on Blackwell NVL72 systems and on a single 8×A100 or 8×H100 node using <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/vllm-project/vllm\">vLLM</a>.</p>\n<p>Delivering advanced open-source AI models requires broad optimization, achieved through a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://blogs.nvidia.com/blog/mistral-frontier-open-models/\">partnership with NVIDIA</a>. All our new Mistral 3 models, from Large 3 to Ministral 3, were trained on NVIDIA Hopper GPUs to tap high-bandwidth HBM3e memory for frontier-scale workloads. NVIDIA’s extreme co-design approach brings hardware, software, and models together. NVIDIA engineers enabled efficient inference support for <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/NVIDIA/TensorRT-LLM\">TensorRT-LLM</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/sgl-project/sglang\">SGLang</a> for the complete Mistral 3 family, for efficient low-precision execution.</p>\n<p>For Large 3’s sparse MoE architecture, NVIDIA integrated state-of-the-art Blackwell attention and MoE kernels, added support for prefill/decode disaggregated serving, and collaborated with Mistral on speculative decoding, enabling developers to efficiently serve long-context, high-throughput workloads on GB200 NVL72 and beyond. On the edge, delivers optimized deployments of the Ministral models on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://nvidia.com/en-us/products/workstations/dgx-spark/\">DGX Spark</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.nvidia.com/en-us/ai-on-rtx/\">RTX PCs and laptops</a>, and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-orin/\">Jetson devices</a>, giving developers a consistent, high-performance path to run these open models from data center to robot.</p>\n<p>We are very thankful for the collaboration and want to thank vLLM, Red Hat, and NVIDIA in particular.</p>\n<h2>Ministral 3: State-of-the-art intelligence at the edge</h2>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/ea1fcc83-5bad-400e-b63a-35c8a8c0bf9c_Z2tYriJ.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"4 Gpqa Diamond Accuracy\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>For edge and local use cases, we release the Ministral 3 series, available in three model sizes: 3B, 8B, and 14B parameters. Furthermore, for each model size, we release base, instruct, and reasoning variants to the community, each with image understanding capabilities, all under the Apache 2.0 license. When married with the models’ native multimodal and multilingual capabilities, the Ministral 3 family offers a model for all enterprise or developer needs.</p>\n<p>Furthermore, Ministral 3 achieves the best cost-to-performance ratio of any OSS model. In real-world use cases, both the number of generated tokens and model size matter equally. The Ministral instruct models match or exceed the performance of comparable models while often producing an order of magnitude fewer tokens.</p>\n<p>For settings where accuracy is the only concern, the Ministral reasoning variants can think longer to produce state-of-the-art accuracy amongst their weight class - for instance 85% on AIME ‘25 with our 14B variant.</p>\n<h2>Available Today</h2>\n<p>Mistral 3 is available today on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/home\">Mistral AI Studio</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://aws.amazon.com/about-aws/whats-new/2025/12/mistral-large-3-ministral-3-family-available-amazon-bedrock/\">Amazon Bedrock</a>, Azure Foundry, Hugging Face (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/collections/mistralai/mistral-large-3\">Large 3</a> &amp; <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/collections/mistralai/ministral-3\">Ministral</a>), <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://modal.com/docs/examples/ministral3_inference\">Modal</a>, IBM WatsonX, OpenRouter, Fireworks, Unsloth AI,and Together AI. In addition, coming soon on NVIDIA NIM and AWS SageMaker.</p>\n<h3>One more thing… customization with Mistral AI</h3>\n<p>For organizations seeking tailored AI solutions, Mistral AI offers <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/solutions/custom-model-training\">custom model training services</a> to fine-tune or fully adapt our models to your specific needs. Whether optimizing for domain-specific tasks, enhancing performance on proprietary datasets, or deploying models in unique environments, our team collaborates with you to build AI systems that align with your goals. For enterprise-grade deployments, custom training ensures your AI solution delivers maximum impact securely, efficiently, and at scale.</p>\n<h3>Get started with Mistral 3</h3>\n<p>The future of AI is open. Mistral 3 redefines what’s possible with a family of models built for frontier intelligence, multimodal flexibility, and unmatched customization. Whether you’re deploying edge-optimized solutions with Ministral 3 or pushing the boundaries of reasoning with Mistral Large 3, this release puts state-of-the-art AI directly into your hands.</p>\n<h3>Why Mistral 3?</h3>\n<ul>\n<li>\n<p>Frontier performance, open access: Achieve closed-source-level results with the transparency and control of open-source models.</p>\n</li>\n<li>\n<p>Multimodal and multilingual: Build applications that understand text, images, and complex logic across 40+ native languages.</p>\n</li>\n<li>\n<p>Scalable efficiency: From 3B to 675B parameters, choose the model that fits your needs, from edge devices to enterprise workflows.</p>\n</li>\n<li>\n<p>Agentic and adaptable: Deploy for coding, creative collaboration, document analysis, or tool-use workflows with precision.</p>\n</li>\n</ul>\n<h3>Next Steps</h3>\n<ol>\n<li>\n<p>Explore the model documentation:</p>\n</li>\n<li>\n<ul>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/ministral-3-3b-25-12\">Ministral 3 3B-25-12</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/ministral-3-8b-25-12\">Ministral 3 8B-25-12</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/ministral-3-14b-25-12\">Ministral 3 14B-25-12</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/models/mistral-large-3-25-12\">Mistral Large 3</a></p>\n</li>\n</ul>\n</li>\n<li>\n<p>Technical documentation for customers is available on our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://legal.mistral.ai/\">AI Governance Hub</a></p>\n</li>\n<li>\n<p>Start building: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/collections/mistralai/ministral-3\">Ministral 3</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/collections/mistralai/mistral-large-3\">Large 3</a> on Hugging Face, or deploy via <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/home\">Mistral AI’s platform</a> for instant API access and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/pricing#api-pricing\">API pricing</a></p>\n</li>\n<li>\n<p>Customize for your needs: Need a tailored solution? <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">Contact our team</a> to explore fine-tuning or enterprise-grade training.</p>\n</li>\n<li>\n<p>Share your projects, questions, or breakthroughs with us: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/MistralAI\">Twitter/X</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://discord.com/invite/mistralai\">Discord</a>, or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai\">GitHub</a>.</p>\n</li>\n</ol>\n<p>Alongside this launch, you can explore the full details of the Ministral 3 series architecture in our latest research paper <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2601.08584\">here</a>.</p>\n<p>We believe that the future of AI should be built on transparency, accessibility, and collective progress. With this release, we invite the world to explore, build, and innovate with us, unlocking new possibilities in reasoning, efficiency, and real-world applications.</p>\n<p><strong>Together, let’s turn understanding into action.</strong></p>\n",
      "date_modified": "2025-12-02T16:00:00+00:00",
      "date_published": "2025-12-02T16:00:00+00:00",
      "external_url": "https://mistral.ai/news/mistral-3/",
      "id": "urn:aggr:item:ab9bf5b3d61a1f282057ab72217598e599919061",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Mistral%203.jpg",
      "summary": "Today, we announce Mistral 3, the next generation of Mistral models. Mistral 3 includes three state-of-the-art small, dense models (14B, 8B, and 3B) and Mistral Large 3 – our most capable model to date – a sparse mixture-of-experts trained…",
      "tags": [
        "ai"
      ],
      "title": "Introducing Mistral 3",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-12-02-introducing-mistral-3/"
    },
    {
      "content_html": "<p>At Mistral AI, we’ve believed from the very beginning in building frontier AI that Europe could own, giving people and organizations the ability to shape and determine the role of AI in their future.</p>\n<p>As we are expanding our presence, we are proud to expand our commitment to German citizens through several long-term strategic commitments with German enterprises and institutions.</p>\n<p>We are building a multiyear partnership with SAP to deliver a fully sovereign AI stack for Germany and Europe, integrating our models into SAP’s AI Foundation, and co-developing industry-specific solutions for Europe’s most complex industries and administrations.</p>\n<p>With Helsing, we are accelerating the development of vision-language-action models for real-world defense and security applications. This will support Europe’s strategic autonomy and strengthen its technological independence in critical sectors.</p>\n<p>As Europe accelerates in its search for more digital autonomy, we have reaffirmed our founding principles to European leaders: at Mistral AI, we want to put AI into everyone’s hands so that our customers can own their AI journey. In Germany, this means benefiting from the best AI solutions and talents, without sacrificing strategic autonomy or sending critical data abroad.</p>\n<p>To do so, we are expanding our presence in German, significantly increasing our local team and opening in the coming months an office in Germany.</p>\n<p>Our work in Germany demonstrates our shared ambitions and Germany’s pivotal role in securing Europe’s AI autonomy. Today marks an important step forward.</p>\n<p>Read the German version of this blogpost <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/de/news/ki-fur-deutschland\">here</a>.</p>\n",
      "date_modified": "2025-11-19T12:00:00+00:00",
      "date_published": "2025-11-19T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/ki-fur-deutschland/",
      "id": "urn:aggr:item:b109cf2b5ce80f69a423f10b0ced355d155da853",
      "image": "https://mistral.ai/cms-media/api/media/file/thumbnail-12.jpg",
      "summary": "At Mistral AI, we’ve believed from the very beginning in building frontier AI that Europe could own, giving people and organizations the ability to shape and determine the role of AI in their future. As we are expanding our presence, we…",
      "tags": [
        "ai"
      ],
      "title": "Mistral - KI für Deutschland",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-11-19-mistral-ki-fur-deutschland/"
    },
    {
      "content_html": "<h3>Many prototypes. Few systems in production.</h3>\n<p>Enterprise AI teams have built dozens of prototypes—copilots, chat interfaces, summarization tools, internal Q&amp;A. The models are capable, the use cases are clear, and the business appetite is there.</p>\n<p>What’s missing is a reliable path to production and a robust system to support much of it. Teams are blocked not by model performance, but by the inability to:</p>\n<ul>\n<li>\n<p>Track how outputs change across model or prompt versions</p>\n</li>\n<li>\n<p>Reproduce results or explain regressions</p>\n</li>\n<li>\n<p>Monitor real usage and collect structured feedback</p>\n</li>\n<li>\n<p>Run evaluations tied to their own domain-specific benchmarks</p>\n</li>\n<li>\n<p>Fine-tune models using proprietary data, privately and incrementally</p>\n</li>\n<li>\n<p>Deploy governed workflows that satisfy security, compliance, and privacy constraints</p>\n</li>\n</ul>\n<p>As a result, most AI adoption stalls at the prototype stage. Models get hardcoded into apps without evaluation harnesses. Prompts get tuned manually in Notion docs. Deployments run as one-off scripts. And it’s difficult to tell if accuracy improved or got worse. There’s a gap between the pace of experimentation and the maturity of production primitives.</p>\n<p>In talking to hundreds of enterprise customers, we have discovered that the real bottleneck is the lack of a system to turn AI into a reliable, observable, and governed capability.</p>\n<h2>How to close the loop from prompts to production.</h2>\n<p>Operationalizing AI, therefore, requires infrastructure that supports continuous improvement, safety, and control—at the speed AI workflows demand.</p>\n<p>The core requirements we consistently hear from enterprise AI teams include:</p>\n<ul>\n<li>\n<p>Built-in evaluation: Internal benchmarks that reflect business-specific success criteria (not generic leaderboard metrics).</p>\n</li>\n<li>\n<p>Traceable feedback loops: A way to collect real usage data, label it, and turn it into datasets that drive the next iteration.</p>\n</li>\n<li>\n<p>Provenance and versioning: Across prompts, models, datasets, and judges, with the ability to compare iterations, track regressions, and revert safely.</p>\n</li>\n<li>\n<p>Governance: Built-in audit trails, access controls, and environment boundaries that meet enterprise security and compliance standards.</p>\n</li>\n<li>\n<p>Flexible deployment: The ability to run AI workflows close to their systems, across hybrid, VPC, or on-prem infrastructure, and migrate between them without re-architecting.</p>\n</li>\n</ul>\n<p>Today, most teams build this piecemeal. They repurpose tools meant for DevOps, MLOps, or experimentation. But the LLM stack has new abstractions. Prompts ship daily. Models change weekly. Evaluation is real-time and use case-specific.</p>\n<p>Closing that loop from prompts to production is what separates teams that experiment with AI from those that run it as a dependable system.</p>\n<h2>Introducing Mistral AI Studio: The Production AI Platform</h2>\n<p>Mistral AI Studio brings the same infrastructure, observability, and operational discipline that power Mistral’s own large-scale systems—now packaged for enterprise teams that need to build, evaluate, and run AI in production.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/59272ab1-8e3c-45ea-bf60-781df15af5e9_Llvpu.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Marketecture AI Studio\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>At Mistral AI, we operate AI systems that serve millions of users across complex workloads. Building and maintaining those systems required us to solve the hard problems: how to instrument feedback loops at scale, measure quality reliably, retrain and deploy safely, and maintain governance across distributed environments.</p>\n<p>AI Studio productizes those solutions. It captures the primitives that make production AI systems sustainable and repeatable—the ability to observe, to execute durably, and to govern. Those primitives form the three pillars of the platform: Observability, Agent Runtime, and AI Registry.</p>\n<h3>Observability</h3>\n<p>Observability in AI Studio provides full visibility into what’s happening, why, and how to improve it. The Explorer lets teams filter and inspect traffic, build datasets, and identify regressions. Judges, which can be built and tested in their own Judge Playground, define evaluation logic and score outputs at scale. Campaigns and Datasets automatically convert production interactions into curated evaluation sets. Experiments, Iterations, and Dashboards make improvement measurable, not anecdotal.</p>\n<p>With these capabilities, AI builder teams can trace outcomes back to prompts, prompts back to versions, and versions back to real usage—closing the feedback loop with data, not intuition.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/4a877207-6fbc-46d8-85d4-549a4225e76a_Z1vjJ8y.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Observability\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Agent Runtime</h3>\n<p>The Agent Runtime is the execution backbone of AI Studio. It runs every agent, from simple single-step tasks to complex multi-step business flows, with durability, transparency, and reproducibility.</p>\n<p>Each agent operates inside a stateful, fault-tolerant runtime built on Temporal, which guarantees consistent behavior across retries, long-running tasks, and chained calls. The runtime manages large payloads, offloads documents to object storage, and generates static graphs that make execution paths auditable and easy to share.</p>\n<p>Every execution emits telemetry and evaluation data that flow directly into Observability for measurement and governance. AI Studio supports hybrid, dedicated, and self-hosted deployments so enterprises can run agents wherever their infrastructure requires while maintaining the same durability, traceability, and control.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/9493d519-7c5c-48df-97e9-371e8313117e_2tMK6z.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Agent Workflow\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>AI Registry</h3>\n<p>The AI Registry is the system of record for every asset across the AI lifecycle—agents, models, datasets, judges, tools, and workflows.<br />\nIt tracks lineage, ownership, and versioning end to end. The Registry enforces access controls, moderation policies, and promotion gates before deployment. It integrates directly with Observability (for metrics and evaluations) and with the Agent Runtime (for orchestration and deployment).<br />\nThis unified view enables true governance and reuse: every asset is discoverable, auditable, and portable across environments.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/546449b9-c5d4-404f-914a-b07b82fb82f3_ZkdWSE.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Agents\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Together, these pillars form the production fabric for enterprise AI.<br />\nAI Studio connects creation, observation, and governance into a single operational loop—the same system discipline that lets Mistral run AI at scale, now in the hands of enterprise teams.</p>\n<h2>Go from experimentation to production, on your terms.</h2>\n<p>Enterprises are entering a new phase of AI adoption. The challenge is no longer access to capable-enough models—it’s the ability to operate them reliably, safely, and at scale.That shift demands production infrastructure built for observability, durability, and governance from day one.</p>\n<p>Mistral AI Studio represents that next step: a platform born from real operational experience, designed for teams that want to move past pilots and run AI as a core system.<br />\nIt unifies the three production pillars—Observability, Agent Runtime, and AI Registry—into one closed loop where every improvement is measurable and every deployment accountable.</p>\n<p>With AI Studio, enterprises gain the same production discipline that powers Mistral’s own large-scale systems:</p>\n<ul>\n<li>\n<p>Transparent feedback loops and continuous evaluation</p>\n</li>\n<li>\n<p>Durable, reproducible workflows across environments</p>\n</li>\n<li>\n<p>Unified governance and asset traceability</p>\n</li>\n<li>\n<p>Hybrid and self-hosted deployment with full data ownership</p>\n</li>\n</ul>\n<p>This is how AI moves from experimentation to dependable operations—secure, observable, and under your control.</p>\n<p>If your organization is ready to operationalize AI with the same rigor as software systems, sign up for the private beta of AI Studio.</p>\n",
      "date_modified": "2025-10-24T12:00:00+00:00",
      "date_published": "2025-10-24T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/ai-studio/",
      "id": "urn:aggr:item:900f873ecb0e82da12d74fa78f9be9c62600b507",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Solution-Studio.jpg",
      "summary": "Many prototypes. Few systems in production. Enterprise AI teams have built dozens of prototypes—copilots, chat interfaces, summarization tools, internal Q&A. The models are capable, the use cases are clear, and the business appetite is…",
      "tags": [
        "ai"
      ],
      "title": "Introducing Mistral Studio.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-10-24-introducing-mistral-studio/"
    },
    {
      "content_html": "<p>We are announcing a Series C funding round of 1.7B€ at a 11.7B€ post-money valuation. This investment fuels our scientific research to keep pushing the frontier of AI to tackle the most critical and sophisticated technological challenges faced by strategic industries.</p>\n<p>The Series C funding round is led by leading semiconductor equipment manufacturer, ASML Holding NV (ASML).</p>\n<blockquote>\n<blockquote>\n<p>“ASML is proud to enter a strategic partnership with Mistral AI, and to be lead investor in this funding round. The collaboration between Mistral AI and ASML aims to generate clear benefits for ASML customers through innovative products and solutions enabled by AI, and will offer potential for joint research to address future opportunities.” said ASML CEO Christophe Fouquet.</p>\n</blockquote>\n</blockquote>\n<p>It includes participation from existing investors: DST Global, Andreessen Horowitz, Bpifrance, General Catalyst, Index Ventures, Lightspeed and NVIDIA.</p>\n<p>For the last two years, we have advanced AI through cutting-edge research and strategic partnerships with corporate and industrial champions. We will continue to develop custom decentralized frontier AI solutions that solve the most complex engineering and industrial problems. It empowers enterprises, public sectors, and industries a competitive edge through state-of-the-art models, tailored solutions, and high-performance compute infrastructure. This funding round reaffirms the company’s independence.</p>\n<blockquote>\n<blockquote>\n<p>“This investment brings together two technology leaders operating in the same value chain. We have the ambition to help ASML and its numerous partners solve current and future engineering challenges through AI, and ultimately to advance the full semiconductor and AI value chain”, said Mistral AI CEO Arthur Mensch.</p>\n</blockquote>\n</blockquote>\n",
      "date_modified": "2025-09-09T07:00:00+00:00",
      "date_published": "2025-09-09T07:00:00+00:00",
      "external_url": "https://mistral.ai/news/mistral-ai-raises-1-7-b-to-accelerate-technological-progress-with-ai/",
      "id": "urn:aggr:item:354d8051bb9b0c2ed306a138aa631d9f7146499c",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Logo.jpg",
      "summary": "We are announcing a Series C funding round of 1.7B€ at a 11.7B€ post-money valuation. This investment fuels our scientific research to keep pushing the frontier of AI to tackle the most critical and sophisticated technological challenges…",
      "tags": [
        "ai"
      ],
      "title": "Mistral raises 1.7B€ to accelerate technological progress with AI",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-09-09-mistral-raises-1-7beur-to-accelerate-technological-progress/"
    },
    {
      "content_html": "<p>As conversational AIs get more capable, our expectations grow with them. We don’t just want faster answers, we want tools that remember, adapt, and fit the way we work. That’s where <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chat.mistral.ai/memories\">Memories (beta)</a> come in. And with it, new questions: What should an AI remember? How should it recall? And what does it take for you to trust it?</p>\n<h2>What users told us.</h2>\n<p>When we talked to users across personal and professional settings, three consistent needs stood out: transparency, control, and focus. People want the ability to ask, “What do you know about me?” and get a clear answer. They also want memory to stay on-task. As one Le Chat user put it: “I need a hammer, not a friend.”</p>\n<p>For some, that means citations: show me exactly which conversation or file a response is pulling from. For others, it means scoped recall, project-specific details, not casual asides from months ago. Whatever the preference, one thing is clear: memory should stay visible, editable, and under your control.</p>\n<h2>A memory system built for users.</h2>\n<p>Many AI tools today store information automatically. Some resurface it without warning; others only recall when you explicitly ask.</p>\n<p>Le Chat takes a hybrid approach. It saves useful information automatically, like jotting down a note while you talk. But recall is designed to be smart, timely, and visible. You’ll always see what memory is in play, with links to the source.</p>\n<p>That design comes from a simple philosophy: An AI assistant should help you think better, not guess what it’s doing. Here’s how we put that into practice.</p>\n<h2>Three principles behind Le Chat’s memory.</h2>\n<h3>Transparency.</h3>\n<p>You’ll always know when memory is being used. Le Chat clearly shows when it’s recalling something, where it came from, and why it’s relevant. Think of it like clickable receipts.</p>\n<h3>Agency.</h3>\n<p>Memory is something you manage—not something that manages you.<br />\nYou can:</p>\n<ul>\n<li>\n<p>Turn Memories off anytime</p>\n</li>\n<li>\n<p>Start an incognito chat that doesn’t use memory</p>\n</li>\n<li>\n<p>Edit or delete individual memories from your log</p>\n</li>\n</ul>\n<h3>Sovereignty.</h3>\n<p>You own your memories. Export them. Import from elsewhere. Memories in Le Chat are portable and interoperable by design, because control shouldn’t stop at the interface.</p>\n<h2>What it helps you do.</h2>\n<p>Memory makes your assistant more useful over time, without getting in the way. That can look like:</p>\n<ul>\n<li>\n<p>Recalling how you solved a similar problem last quarter</p>\n</li>\n<li>\n<p>Surfacing a past insight you’d forgotten</p>\n</li>\n<li>\n<p>Connecting your current query to something you said in another thread</p>\n</li>\n</ul>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=mNfre6VhHj8\">www.youtube.com</a></p>\n<p>One user asked a follow-up about a legal policy weeks after uploading a PDF. Le Chat instantly found the right section in the document, without needing to re-upload or re-explain. That kind of connective recall saves time and unlocks flow. No retraining. No do-overs.</p>\n<h2>Try it now: Memory Insights.</h2>\n<p>We introduced <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chat.mistral.ai/memories\">Memory Insights</a>, lightweight prompts that help you explore what Le Chat remembers and how it can help. They surface trends, suggest summaries, and point out moments worth revisiting, all based on your own data, and all editable. It’s a simple way to turn memory from passive storage into active signal. Download Le Chat on the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://apps.apple.com/fr/app/le-chat-by-mistral-ai/id6740410176\">App Store</a> or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://play.google.com/store/apps/details?id=ai.mistral.chat&amp;hl=fr\">Google Play</a> to try memory on mobile.</p>\n<h2>What’s next?</h2>\n<p>We’re continuing to improve how memory works: Trimming noise, speeding up recall, and making it easier to organize long-term. You’ll see updates soon that let you sort memories into categories, instantly forget something, and get clearer visibility into what memory was used and when.</p>\n<p>Under the hood, we’ve built a graph-based architecture that balances performance with context-awareness, so memory doesn’t just get longer, it gets smarter. AI is still early. Models will change, and fast. Memories are what keep your assistant anchored in your context, even as everything else shifts. Not a feature. Not a friend. A system you can trust and one that grows with you.</p>\n",
      "date_modified": "2025-09-02T12:00:00+00:00",
      "date_published": "2025-09-02T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/memory/",
      "id": "urn:aggr:item:06394878f959fea371075411bd7b7b19a7d45ecd",
      "summary": "As conversational AIs get more capable, our expectations grow with them. We don’t just want faster answers, we want tools that remember, adapt, and fit the way we work. That’s where Memories (beta) come in. And with it, new questions: What…",
      "tags": [
        "ai"
      ],
      "title": "Make Memory work for you.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-09-02-make-memory-work-for-you/"
    },
    {
      "content_html": "<h2>Today, we’re giving you more reasons to switch to Le Chat.</h2>\n<ol>\n<li>\n<p><strong>The widest enterprise-ready</strong> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chat.mistral.ai/connections\"><strong>connector directory (beta)</strong></a><strong>, with custom extensibility, making it easy to bring workflows into your AI assistant.</strong></p>\n</li>\n<li>\n<ul>\n<li>\n<p>Directory of 20+ secure connectors—spanning data, productivity, development, automation, commerce, and custom integrations. Search, summarize, and act in tools like Databricks, Snowflake, GitHub, Atlassian, Asana, Outlook, Box, Stripe, Zapier, and more.</p>\n</li>\n<li>\n<p>Custom extensibility: Add your own MCP connectors to broaden coverage and drive more precise actions and insights.</p>\n</li>\n<li>\n<p>Flexible deployment: run on mobile, in your browser, or deploy on-premises or in your cloud.</p>\n</li>\n</ul>\n</li>\n<li>\n<p><strong>Context that carries: introducing</strong> <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chat.mistral.ai/memories\"><strong>Memories (beta).</strong></a></p>\n</li>\n<li>\n<ul>\n<li>\n<p>Highly-personalized responses based on your preferences and facts.</p>\n</li>\n<li>\n<p>Careful and reliable memory handling: saves what matters, slips sensitive or fleeting info.</p>\n</li>\n<li>\n<p>Complete control over what to store, edit, or delete.</p>\n</li>\n<li>\n<p>And… fast import of your memories from ChatGPT.</p>\n</li>\n</ul>\n</li>\n<li>\n<p><strong>Everything available on the Free plan.</strong></p>\n</li>\n</ol>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=tKUnOrl-OTw\">YouTube video player</a></p>\n<h2>Plug it right in.</h2>\n<p>Today, we’re releasing 20+ secure, MCP-powered connectors in Le Chat, enabling you to search, summarize, and take actions with your business-critical tools. Le Chat’s connector directory spans essential categories, simplifying how you integrate your workflows in chats.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/92e9c189-28ba-4d83-b8c9-058850e1ad30_Z1WvyYy.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Logo Cloud 1 1\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>The new-look <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chat.mistral.ai/connections\">Connectors directory</a> opens direct pipelines into enterprise tools, turning Le Chat into a single surface for data, documents, and actions.</p>\n<ul>\n<li>\n<p><strong>Data</strong>: Search and analyze datasets in Databricks (coming soon), Snowflake (coming soon), Pinecone, Prisma Postgres, and DeepWiki.</p>\n</li>\n<li>\n<p><strong>Productivity</strong>: Collaborate on team docs in Box and Notion, spin up project boards in Asana or Monday.com, and triage across Atlassian tools like Jira and Confluence.</p>\n</li>\n<li>\n<p><strong>Development</strong>: Manage issues, pull requests, repositories, and code analysis in GitHub; create tasks in Linear, monitor errors in Sentry, and integrate with Cloudflare Development Platform.</p>\n</li>\n<li>\n<p><strong>Automation</strong>: Extend workflows through Zapier and campaigns in Brevo.</p>\n</li>\n<li>\n<p><strong>Commerce</strong>: Access and act on merchant and payment data from PayPal, Plaid, Square, and Stripe.</p>\n</li>\n<li>\n<p><strong>Custom</strong>: Add your own MCP connectors to extend coverage, so you can query, get summaries, and act on the systems and workflows unique to your business.</p>\n</li>\n<li>\n<p><strong>Deployment</strong>: Run on-prem, in your cloud, or on Mistral Cloud, giving you full control over where your data and workflows live.</p>\n</li>\n</ul>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=2Xd3-ZX8Bsk\">YouTube video player</a></p>\n<h3>Connectors in action.</h3>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cms.globalaegis.net/api/legacy-media/file/91cf7ae4-1e23-4557-ba81-11a9f1153f45.svg\" alt=\"Databrick Asana\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h4>Databricks and Asana</h4>\n<p>Summarizing customer reviews in Databricks, then raising a ticket in Asana to address the top issues.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=NAAwv-D-4cA\">YouTube video player</a></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cms.globalaegis.net/api/legacy-media/file/231fb518-99d4-4f85-84bd-0fba406c78f9.svg\" alt=\"GitHub Notion\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h4>GitHub and Notion</h4>\n<p>Reviewing open pull requests in GitHub, then creating Jira issues for follow-up and documenting the changes in Notion.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=vAEqEYIp23s\">YouTube video player</a></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cms.globalaegis.net/api/legacy-media/file/4a059f07-6386-4859-9cc1-7f7dcc9788d5.svg\" alt=\"Box\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h4>Box</h4>\n<p>Comparing financial obligations across legal documents in Box, then uploading a concise summary back into Box.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=MIM6Uk7A1sw\">YouTube video player</a></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cms.globalaegis.net/api/legacy-media/file/a61455d1-664c-4ef8-9e89-9552df4191b2.svg\" alt=\"Atlassian\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h4>Confluence and Jira</h4>\n<p>Summarizing active issues from Jira, then drafting a Confluence sprint overview page for team planning.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=6M-t0OiujnM\">YouTube video player</a></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cms.globalaegis.net/api/legacy-media/file/03bc7129-9871-432a-9bed-02209a47af32.svg\" alt=\"Stripe Linear\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h4>Stripe and Linear</h4>\n<p>Retrieving business payment insights from Stripe, then logging anomalies as a development project and task in Linear.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=qJ381CswnKw\">YouTube video player</a></p>\n<p>Learn more about Connectors in our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://help.mistral.ai/en/collections/911943-connectors\">Help Center</a>.</p>\n<h3>Connect any MCP server.</h3>\n<p>For everything else, you can now <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://help.mistral.ai/en/articles/393572-configuring-a-custom-connector\">connect to any remote MCP server</a> of choice—even if it’s not listed in the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chat.mistral.ai/connections\">Connectors directory</a>—to query, cross-reference, and perform actions on any tool in your stack.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=bZR2ctE2LyQ\">YouTube video player</a></p>\n<h3>Your rules. Your control.</h3>\n<p>Admin users can confidently control which connectors are available to whom in their organization, with on-behalf authentication, ensuring users only access data they’re permitted to.</p>\n<p>Deploy Le Chat your way—self-hosted, in your private or public cloud, or as a fully managed service in the Mistral Cloud. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">Talk to our team</a> about enterprise deployments.</p>\n<h2>Hold that thought.</h2>\n<p>Memories in Le Chat carry your context across conversations, retrieving insights, decisions, and references from the past when needed. They power more relevant responses, adaptive recommendations tailored for you, and richer answers infused with the specifics of your work—delivering a faster, more relevant, and fully personalized experience.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=mNfre6VhHj8\">YouTube video player</a></p>\n<p>Memories score high in our evaluations for accuracy and reliability: saving what’s important, avoiding forbidden or sensitive inferences, ignoring ephemeral content, and retrieving the right information without hallucinations.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/a0e581b9-125b-4ec7-b03a-9fea8eacbd63_1fjBGs.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Grid Lechat\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Most importantly, you stay in full control—add, edit, update, or remove any entry at any time, with <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://help.mistral.ai/en/articles/396497-how-do-you-handle-my-data-when-using-the-memories-feature\">clear privacy settings</a> and selective memory handling you can trust.</p>\n<h2>Get started in Le Chat.</h2>\n<p>Both Connectors and Memories are available to all Le Chat users.</p>\n<p>Try out the new features at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://chat.mistral.ai\">chat.mistral.ai</a>, or by downloading the Le Chat mobile by Mistral AI app from the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://apps.apple.com/fr/app/le-chat-by-mistral-ai/id6740410176\">App Store</a> or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://play.google.com/store/apps/details?id=ai.mistral.chat&amp;hl=fr\">Google Play Store</a>, for free; no credit card needed.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">Reach out to us</a> to learn how Le Chat Enterprise can transform your mission-critical work.</p>\n<h2>See you at our MCP webinar and hackathon?</h2>\n<p>Webinar</p>\n<h3>Getting Started with MCP in Le Chat, September 9, Online.</h3>\n<p>Join our webinar on September 9 to dive into Le Chat’s new MCP capabilities with the Mistral team. Learn key insights, ask your questions, and prepare to build cutting-edge projects—all before the hackathon begins.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.linkedin.com/events/7368644665111158785/\">Sign up now.</a></p>\n<p>Hackathon</p>\n<h3>Mistral AI MCP Hackathon, September 13-14, Paris.</h3>\n<p>Gather with the best AI engineers for a 2-day overnight hackathon (Sep. 13-14) and turn ideas into reality using your custom MCPs in Le Chat. Network with peers, get hands-on guidance from Mistral experts, and push the boundaries of what’s possible.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://cerebralvalley.ai/e/mistral-mcp-hackathon\">Join us.</a></p>\n<h2>We’re hiring!</h2>\n<p>If you’re interested in joining us on our mission to build world-class AI products, we welcome your application to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\">join our team</a>!</p>\n",
      "date_modified": "2025-09-02T04:00:00+00:00",
      "date_published": "2025-09-02T04:00:00+00:00",
      "external_url": "https://mistral.ai/news/le-chat-mcp-connectors-memories/",
      "id": "urn:aggr:item:6d289abb01b4fe7991769e74ae558f383535c821",
      "image": "https://mistral.ai/cms-media/api/media/file/thumbnail-09.jpg",
      "summary": "Today, we’re giving you more reasons to switch to Le Chat. The widest enterprise-ready connector directory (beta), with custom extensibility, making it easy to bring workflows into your AI assistant. Directory of 20+ secure…",
      "tags": [
        "ai"
      ],
      "title": "Le Chat. Custom MCP connectors. Memories.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-09-02-le-chat-custom-mcp-connectors-memories/"
    },
    {
      "content_html": "<p>Fine-tuning foundation models is transforming how we apply AI to real-world problems. By adapting pre-trained models to specific domains, we can unlock dramatically better performance on specialized tasks. Today, we’re excited to share how fine-tuning Pixtral-12B on satellite imagery leads to significant improvements over the base model, showcasing the power of domain-specific adaptation.</p>\n<h2>LoRA Fine-Tuning can efficiently adapt model weights to specific tasks</h2>\n<p>Fine-tuning large language models can be resource-intensive, but techniques like Low-Rank Adaptation (LoRA) make it far more efficient. LoRA works by injecting small, trainable rank-decomposition matrices into the model's weights, allowing targeted adaptation without modifying the full model. It enables developers to adapt models to specific tasks, whether it's learning domain-specific vocabulary, adopting a particular tone, or embedding specialized knowledge, without retraining the entire model.</p>\n<p>This method shines when prompt engineering or few-shot examples fall short. Complex prompts can become intricate and hard to maintain, often producing inconsistent results. With LoRA-based fine-tuning, a handful of curated examples can steer the model more reliably, achieving better performance with less overhead.</p>\n<h2>The importance of specialized models to satellite imagery</h2>\n<p>Satellite imagery is a highly specialized visual domain with critical applications across the global economy. From tracking deforestation and monitoring environmental change to detecting emerging threats, these images power high-stakes decision-making in government, agriculture, defense, and climate science. To extract reliable insights, models must be finely specialized to the unique patterns and semantics of satellite data. This is where fine-tuning Pixtral-12B comes in, bridging the gap between general-purpose vision models and domain-specific expertise.</p>\n<h2>Case study: classifying satellite images from the Aerial Image Dataset</h2>\n<p>To demonstrate the impact of fine-tuning, we used the Aerial Image Dataset (AID) introduced by Xia et al under a Public Domain license. This benchmark involves classifying satellite images into detailed scene categories. Many of these classes (such as dense residential vs. medium residential; or ambiguous terms like center) are difficult for general vision-language models to handle without domain-specific context. Fine-tuning provides the model with that context, enabling more accurate and nuanced classification.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/db21e46d-22c1-4144-9171-f142cd628cfb_Z22PAuq.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"1 Pixal 12b\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><em>Note that smaller, specialized vision models could potentially achieve comparable performance levels. This article aims to guide you through the process of effectively fine-tuning Mistral’s Vision Language Model (VLM) using a straightforward example, and to demonstrate its impact on basic classification metrics. More advanced applications of fine-tuning could include interactions like &quot;speak with an image&quot; or generating image captions.</em></p>\n<h3>Pixtral-12B with no finetuning achieves decent results, but falls short on ambiguous classes</h3>\n<p>We began with a traditional classification setup, splitting the dataset into 8,000 training samples and 2,000 test samples. Using a system prompt that listed all target classes and enforced a structured output format, we achieved reasonable baseline results. However, performance varied significantly across classes, especially those with subtle visual distinctions. Additionally, because the language model isn't explicitly constrained to the label set, it occasionally hallucinated non-existent or invalid class names, highlighting the limitations of purely prompt-based approaches.</p>\n<p>Classification system prompt</p>\n<p>Classify the following image into the category it belongs to.</p>\n<p>- These category labels are Desert; BareLand; RailwayStation; Mountain; Parking; River; Church; MediumResidential; Commercial; Forest; Airport; Bridge; Park; Farmland; SparseResidential; BaseballField; School; Playground; Square; Stadium; Meadow; Beach; Resort; DenseResidential; Port; StorageTanks; Pond; Viaduct; Industrial; Center.</p>\n<p>- Output your result using exclusively the following schema: {'image_description': FieldInfo(annotation=str, required=True), 'label': FieldInfo(annotation=str, required=True)}</p>\n<p>- Put your results between a json tag</p>\n<p>```json ```</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/124bda95-d39f-47cc-bad2-7d3e824e0f94_Bax4S.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Confusion Matric\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Some classes can be quite challenging to differentiate without prior knowledge or specific criteria. For example, consider the images below showing a &quot;Playground&quot; on the left and a &quot;Stadium&quot; on the right. The base Pixtral model classifies both as &quot;Stadium.&quot; Upon closer inspection, the main difference is the presence of seats surrounding the sports field. We anticipate that fine-tuning will help capture these nuances.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/4ec94226-782b-4ccf-a1b2-b125f00ca2d2_1p0ojy.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Stade Pixtral\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Finetuning Mistral model is easy as ABC with our API &amp; LaPlateforme UI</h3>\n<p>To improve these results, we fine-tuned Pixtral-12B using Mistral’s <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/capabilities/finetuning/text_vision_finetuning/\">fine-tuning API</a>. The fine-tuning strategy consisted in providing the &quot;assistant response&quot; with the right label for a system prompt and input image. No extensive hyperparameter tuning was needed here, making the process efficient and cost-effective.</p>\n<p>Another option is to launch fine-tuning jobs via <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/build/finetuned-models\">LaPlateforme UI</a></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/295623e0-3b22-455d-8708-2d1bc35138ac_ZyC5fr.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"3\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Selecting Hyperparameters</p>\n<p>Choosing the right hyperparameters is crucial for successful fine-tuning. Here are some tips:</p>\n<ul>\n<li>\n<p>Learning rate: Start with a small learning rate to avoid overshooting the optimal weights.</p>\n</li>\n<li>\n<p>Batch size: Use a batch size that fits within your computational resources while providing stable gradients.</p>\n</li>\n<li>\n<p>Epochs: Begin with a single epoch and monitor performance. Additional epochs can be added if necessary but we recommend to keep a close eye on overfitting risk.</p>\n</li>\n</ul>\n<p>Note: Direct API calls with Mistral fine-tuning API give you more control on the hyperparameters. On LaPlateforme you just need to provide the desired learning rate and number of epochs, the finetuning engine will then compute the optimal batch size based on your dataset size and internal benchmarks of optimal number of tokens per batch.</p>\n<h3>Finetuning help boost model performance by x1.6</h3>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/fc28729a-e565-425c-b36c-b5bb3b744be7_Zm7i73.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"4\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>After fine-tuning, we observed a quantum leap in classification metrics for all classes (e.g. overall accuracy increased from 0.56 to 0.91). The model's performance became more consistent across classes, and hallucinations were significantly reduced (from 5% to 0.1%). While the results are not 100% perfect, the improvement was substantial, especially considering the limited budget (≤10$) and the relatively small number of samples (8,000 distributed over 30 classes).</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/65b67020-43c0-45fe-9116-d2961d757287_Z2raWWn.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"5\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Conclusion</h2>\n<p>Fine-tuning Pixtral-12B on satellite imagery demonstrates the effectiveness of techniques like LoRA to achieve remarkable improvements in model performance. This approach is not only cost-effective but also scalable, making it ideal for a wide range of applications. Typical examples include highly specialized data, often proprietary, that are underrepresented in traditional VLMs training sets. These can include: medical image captioning, detailed reports from surveillance images, transcription of ancient manuscripts, etc.</p>\n<p>For more details on the implementation, have a look at our cookbook: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/mistralai/cookbook/blob/main/mistral/fine_tune/pixtral_finetune_on_satellite_data.ipynb\">https://github.com/mistralai/cookbook/blob/main/mistral/fine_tune/pixtral_finetune_on_satellite_data.ipynb</a></p>\n<h2>Contact Us</h2>\n<p>Interested in more custom work with the Mistral AI team? Contact us for solution support and discover how we can help you achieve your AI goals.</p>\n",
      "date_modified": "2025-08-01T12:00:00+00:00",
      "date_published": "2025-08-01T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/unlocking-potential-vision-language-models-satellite-imagery-fine-tuning/",
      "id": "urn:aggr:item:346b1e0ebb688ad11b042d0ab81a25d4b1976936",
      "summary": "Fine-tuning foundation models is transforming how we apply AI to real-world problems. By adapting pre-trained models to specific domains, we can unlock dramatically better performance on specialized tasks. Today, we’re excited to share how…",
      "tags": [
        "ai"
      ],
      "title": "Unlocking the potential of vision language models on satellite imagery through fine-tuning",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-08-01-unlocking-the-potential-of-vision-language-models-on/"
    },
    {
      "content_html": "<p>How the world’s leading enterprises are using integrated coding solutions from Mistral AI to cut development, review, and testing time by 50%—and why the playbook now fits every company that wants AI-native software development.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/973b0f2f-1139-4630-be69-7c8de535c775_Z10zy78.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Codestral Main\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>AI-powered coding is taking off, but enterprise adoption still lags due to critical limitations</h2>\n<p>Over the past year, AI coding assistants have introduced powerful capabilities, such as multi-file reasoning, contextual suggestions, and natural-language agents, all directly within the IDE. Despite these improvements, however, adoption inside enterprise environments has been slow. The reasons have less to do with model performance or the interface, and more with how these tools are built, deployed, and governed.</p>\n<p>Key limitations holding back enterprise teams include:</p>\n<ul>\n<li>\n<p>Deployment constraints: Most AI coding tools are SaaS-only, with no options for VPC, on-prem, or air-gapped environments. This is a hard blocker for organizations in finance, defense, healthcare, and other regulated industries.</p>\n</li>\n<li>\n<p>Limited customization: Enterprises often need to adapt models to their own codebases and development conventions. Without access to model weights, pos-training workflows, or extensibility, teams are locked out of leveraging the best of their codebases.</p>\n</li>\n<li>\n<p>Fragmented architecture: Agents, embeddings, completions, and plugins are frequently decoupled across vendors—leading to integration drift, inconsistent context handling, and operational overhead. Moreover, coding copilots are not well-integrated into full enterprise platforms, such as product development tools, CRMs, and customer issue trackers.</p>\n</li>\n<li>\n<p>No unified observability or control: Teams lack visibility into how AI is being used across the development lifecycle. Without telemetry, audit trails, and centralized controls, it’s difficult to scale AI usage responsibly or measure real ROI.</p>\n</li>\n<li>\n<p>Incompatibility with internal toolchains: Many assistants operate in closed environments, making it hard to connect with internal CI/CD pipelines, knowledge bases, or static analysis frameworks.</p>\n</li>\n</ul>\n<p>For enterprises, these limitations aren’t edge cases—they’re baseline requirements. Solving them is what separates a good developer tool from an AI-native software development platform.</p>\n<h2>A Full-Stack Approach Built for AI-Native Software Development</h2>\n<p>Our approach to enterprise coding isn’t a bundle of isolated tools. It’s an integrated system designed to support enterprise-grade software development across every stage—from code suggestion to autonomous pull requests.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/da3fc2a0-146a-4394-90f7-3997a58230af_2mXKQE.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Marketecture Code Alt\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>It starts with fast, reliable completion—and scales up to full codebase understanding and multi-file automation.</p>\n<h3>1. Fast, High-Fidelity Code Completion</h3>\n<p>At the foundation of the stack is Codestral, Mistral’s family of code generation models built specifically for high-precision fill-in-the-middle (FIM) completion. These models are optimized for production engineering environments: latency-sensitive, context-aware, and self-deployable.</p>\n<p>Today, we announce its latest update. Codestral 25.08 delivers measurable upgrades over prior versions:</p>\n<ul>\n<li>\n<p>+30% increase in accepted completions</p>\n</li>\n<li>\n<p>+10% more retained code after suggestion</p>\n</li>\n<li>\n<p>50% fewer runaway generations, improving confidence in longer edits</p>\n</li>\n<li>\n<p>Improved performance on academic benchmarks for short and long-context FIM completion</p>\n</li>\n</ul>\n<p>These improvements were validated in live IDE usage across production codebases. The model supports a wide range of languages and tasks, and is deployable across cloud, VPC, or on-prem environments—with no architectural changes required.</p>\n<p>Codestral-2508 also brings improvements to chat mode:</p>\n<ul>\n<li>\n<p>Instruction following: +5% on IF eval v8</p>\n</li>\n<li>\n<p>Code abilities: +5% in average MultiplE</p>\n</li>\n</ul>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/a11e458a-15f4-40c0-aa98-5af69ff961e1_Z2vAb1u.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Offline V2\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/397701a8-1849-4cdd-aff1-a672388640a5_Z1cMhKT.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Chat V2\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/9dd41059-f1ac-478a-b9ae-3c78926f72f2_Z98rg0.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Offline 2\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>2. Codebase-Scale Search and Semantic Retrieval</h3>\n<p>Autocomplete accelerates, but only if the model understands your codebase. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/capabilities/embeddings/code_embeddings/\">Codestral Embed</a> sets a new standard in this domain. Designed specifically for code rather than general text, it outperforms leading embedding models from OpenAI and Cohere in real-world code retrieval benchmarks.</p>\n<p>Key advantages include:</p>\n<ul>\n<li>\n<p>High-recall, low-latency search across massive monorepos and poly-repos. Developers can find internal logic, validation routines, or domain-specific utilities using natural language.</p>\n</li>\n<li>\n<p>Flexible embedding outputs, with configurable dimensions (e.g., 256-dim, INT8) that balance retrieval quality with storage efficiency—while outperforming alternatives even at lower dimensionality</p>\n</li>\n<li>\n<p>Private deployment for maximum control, ensuring no data leakage via third-party APIs. All embedding inference and index storage can run within enterprise infrastructure</p>\n</li>\n</ul>\n<p>This embedding layer serves as both the context foundation for agentic workflows and the retrieval engine powering in‑IDE code search features—without sacrificing privacy, performance, or precision.</p>\n<h3>3. Autonomous Multi-Step Development with Agentic Workflows</h3>\n<p>With relevant context surfaced, AI can take meaningful action. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/devstral\">Devstral</a>, powered by the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/All-Hands-AI/OpenHands\">OpenHands</a> agent scaffold, enables enterprise-ready agentic coding workflows. It’s built specifically for engineering tasks—cross-file refactors, test generation, and PR authoring—using structured, context-rich reasoning.</p>\n<p>Standout capabilities include:</p>\n<ul>\n<li>\n<p>Top open‑model performance on SWE‑Bench Verified: Devstral Small 1.1 scores 53.6%, and Devstral Medium reaches 61.6%, outperforming Claude 3.5, GPT‑4.1‑mini, and other open models by wide margins</p>\n</li>\n<li>\n<p>Flexible architecture for any environment: Devstral is available in multiple sizes. The open-weight Devstral Small (24B, Apache-2.0) runs efficiently on a single Nvidia RTX 4090 or Mac with 32 GB RAM—ideal for self-hosted, air-gapped, or experimental workflows. The larger Devstral Medium is available through enterprise partnerships and our API for more advanced code understanding and planning capabilities.</p>\n</li>\n<li>\n<p>Open model for extensibility: Teams can fine-tune Devstral Small on proprietary code, build custom agents, or embed it directly into CI/CD workflows—without licensing lock-in. For production environments requiring higher model performance, Devstral Medium is available with enterprise-grade support, including the ability for companies to post-train and fine-tune.</p>\n</li>\n</ul>\n<p>Delivering agentic automation within private infrastructure lets engineering organizations reduce friction, ensure compliance, and speed up delivery with repeatable, auditable AI workflows.</p>\n<h3>4. IDE Integration and Operational Control</h3>\n<p>All capabilities in the Mistral stack—completion, semantic search, and agentic workflows—are surfaced through Mistral Code, a native plugin for JetBrains and VS Code.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/f5361c96-bf6c-4876-8a1c-c9fd6e80a612_ZyAs1f.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Code Ide\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>It provides:</p>\n<ul>\n<li>\n<p>Inline completions using Codestral 25.08, optimized for FIM and multi-line editing</p>\n</li>\n<li>\n<p>One-click task automations like “Write commit message”, “Fix function”, or “Add docstring”, powered by Devstral</p>\n</li>\n<li>\n<p>Context awareness from Git diffs, terminal history, and static analysis tools</p>\n</li>\n<li>\n<p>Integrated semantic search, backed by Codestral Embed</p>\n</li>\n</ul>\n<p>Mistral Code is built to support enterprise deployment requirements:</p>\n<ul>\n<li>\n<p>Deploy in any environment: cloud, self-managed VPC, or fully on-prem (GA in Q3)</p>\n</li>\n<li>\n<p>No mandatory telemetry, and no external API calls for inference or search</p>\n</li>\n<li>\n<p>SSO, audit logging, and usage controls for secure, policy-compliant adoption</p>\n</li>\n<li>\n<p>Usage observability via the Mistral Console, including metrics on AI-generated code, suggestion acceptance, and agent usage</p>\n</li>\n</ul>\n<p>These features give engineering, platform, and security teams the ability to roll out AI tooling safely, incrementally, and with full visibility.</p>\n<h2>How It All Fits Together: From Developer Actions to Organizational Impact</h2>\n<p>The Mistral coding stack integrates autocomplete, semantic retrieval, and agentic workflows directly into the IDE—while giving platform teams control over deployment, observability, and security. In a typical development task:</p>\n<p>Say a developer is working on a payments service written in Python. A recent update to a third-party billing API means they need to update the integration logic and add proper error handling.</p>\n<ol>\n<li>\n<p>They start by navigating to the billing handler. As they modify the function signature, Codestral fills in the expected parameters and suggests a first-pass implementation, reducing the need to copy patterns from other services.</p>\n</li>\n<li>\n<p>Before changing the retry logic, they need to understand how similar failures are handled elsewhere. Instead of switching to Slack or searching GitHub manually, they enter a query directly in the IDE: “How do we handle Stripe timeouts in the checkout flow?” The embedding index, running locally, returns a helper module from another service that wraps retry logic with exponential backoff.</p>\n</li>\n<li>\n<p>They copy the pattern into their own handler—but realize three other services are using outdated retry code. They invoke a Devstral-powered agent from within the IDE: “Replace all uses of retry_with_sleep in the billing and checkout services with the new retry_exponential helper, and update the docs.” Devstral scans the codebase using the same embeddings, makes the required edits across files, and generates a draft PR. The agent also writes a changelog and updates the README section on error handling.</p>\n</li>\n</ol>\n<p>The developer reviews the PR, confirms the logic, and merges it. A cross-service update that previously would have required search, coordination, and hand-written boilerplate now completes in one editing session—with traceable, reviewable output.</p>\n<p>At the organization level, this same workflow unlocks broader advantages:</p>\n<ul>\n<li>\n<p>Every component in the stack can be self-hosted or run on-prem, giving teams control over data, latency, and deployment architecture.</p>\n</li>\n<li>\n<p>Observability is built in. The Mistral Console tracks usage patterns, model acceptance rates, and agent adoption, providing the data needed to tune rollout and measure ROI.</p>\n</li>\n<li>\n<p>Security and compliance controls—including SSO, audit logging, and telemetry configuration—make it easy to integrate with internal policies and infrastructure.</p>\n</li>\n<li>\n<p>No stitching required. Because completion, search, and agents share architecture, context handling, and support boundaries, teams avoid the drift, overhead, and security gaps of piecing together third-party tools.</p>\n</li>\n</ul>\n<p>The result is a development workflow that’s both faster and easier to govern—designed for individual productivity and organizational scale.</p>\n<h2>Adopted by Leading Enterprises Across Diverse Environments</h2>\n<p>The Mistral coding stack is already being used in production by organizations across consulting, finance, transportation, and industry—each with different requirements, but shared constraints around data control, deployment flexibility, and internal code complexity.</p>\n<ul>\n<li>\n<p>Capgemini has rolled out the stack across global delivery teams to accelerate development while maintaining code ownership and compliance across clients in defense, telecom, and energy.</p>\n</li>\n<li>\n<p>Abanca, a leading bank in Spain operating under European banking regulations, uses Mistral’s models in a fully self-hosted deployment to meet data residency and network isolation requirements—without sacrificing usability.</p>\n</li>\n<li>\n<p>SNCF, the French national railway company, uses agentic workflows to modernize legacy Java systems safely and incrementally, with human oversight built into the loop.</p>\n</li>\n</ul>\n<blockquote>\n<blockquote>\n<p>“Leveraging Mistral’s Codestral has been a game changer in the adoption of private coding assistant for our client projects in regulated industries. We have evolved from basic support for some development activities to systematic value for our development teams“.</p>\n<p>Alban Alev, VP head of Solutioning at Capgemini France.</p>\n</blockquote>\n</blockquote>\n<p>In addition, several tier-1 global banks and industrial manufacturers are actively piloting or scaling adoption across their engineering teams—driven by requirements that hosted copilots and fragmented tooling can’t support.</p>\n<p>These use cases reflect a growing shift: organizations are no longer looking for isolated assistants—they’re adopting integrated AI systems that match the complexity, security posture, and velocity of modern enterprise software development.</p>\n<h2>Get Started</h2>\n<p>The full Mistral coding stack—Codestral 25.08, Devstral, Codestral Embed, and the Mistral Code IDE extension—is available today for enterprise deployment.</p>\n<p>Teams can start with autocomplete and semantic search, then expand to agentic workflows and private deployments at their own pace.</p>\n<p>To begin:</p>\n<ul>\n<li>\n<p>Install Mistral Code from the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://plugins.jetbrains.com/plugin/27493-mistral-code-enterprise\">JetBrains</a> or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://marketplace.visualstudio.com/items?itemName=mistralai.mistral-code\">VS Code</a> marketplace</p>\n</li>\n<li>\n<p>Connect to your preferred deployment modality (cloud, VPC, or on-prem)</p>\n</li>\n</ul>\n<p>If you would like to use the models for your own copilot, get your keys at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://console.mistral.ai\">console.mistral.ai</a>. For more information on Mistral’s coding solutions, please visit our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/solutions/coding\">website</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/\">documentation</a>.</p>\n<p>To evaluate on-prem options, enterprise-scale deployments, or schedule a hands-on pilot, fill out the demand form on this page. A member of the Mistral team will follow up to help tailor the rollout to your environment.</p>\n",
      "date_modified": "2025-07-30T12:00:00+00:00",
      "date_published": "2025-07-30T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/codestral-25-08/",
      "id": "urn:aggr:item:62f5a981f02510311ec974bd3332c373792e93ac",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Model-Codestral.jpg",
      "summary": "How the world’s leading enterprises are using integrated coding solutions from Mistral AI to cut development, review, and testing time by 50%—and why the playbook now fits every company that wants AI-native software development. AI-powered…",
      "tags": [
        "ai"
      ],
      "title": "Announcing Codestral 25.08 and the Complete Mistral Coding Stack for Enterprise",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-07-30-announcing-codestral-25-08-and-the-complete-mistral-coding/"
    },
    {
      "content_html": "<p>At Mistral AI, our mission is to bring artificial intelligence in everyone’s hands. For this purpose, we have consistently advocated for openness in AI, with a unique focus on empowering organizations that want to own their AI future.</p>\n<p>Today, as AI becomes increasingly integrated into every layer of our economy, it is crucial for developers, policymakers, enterprises, governments and citizens to better understand the environmental footprint of this transformative technology. At Mistral AI, we believe that we share a collective responsibility with each actor of the value chain to address and mitigate the environmental impacts of our innovations.</p>\n<p>Even though some recent initiatives have been taken, such as the Coalition for Sustainable AI, launched during the Paris AI Action Summit in February 2025, the work to achieve here remains important. Without more transparency, it will be impossible for public institutions, enterprises and even users to compare models, take informed purchasing decisions, fill enterprises' extra-financial obligations or reduce the impacts associated with their use of AI.</p>\n<p>In this context, we have conducted a first-of-its-kind comprehensive study to quantify the environmental impacts of our LLMs. This report aims to provide a clear analysis of the environmental footprint of AI, contributing to set a new standard for our industry.</p>\n<h2>The first comprehensive lifecycle analysis of an AI models</h2>\n<p>After less than 18 months of existence, we have initiated the first comprehensive lifecycle analysis (LCA) of an AI model, in collaboration with Carbone 4, a leading consultancy in CSR and sustainability, and the French ecological transition agency (ADEME). To ensure robustness, this study was also peer-reviewed by Resilio and Hubblo, two consultancies specializing in environmental audits in the digital industry.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/ee83637f-9f22-4e54-b63f-86277bea2a69_Z10dKQr.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Mistral AI   Infographie Acv   V6(1)\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>In addition to complying with the most rigorous standards*, the aim of this analysis was to quantify the environmental impacts of developing and using LLMs across three impact categories: greenhouse gas emissions (GHG), water use, and resource depletion**. Today, we are disclosing two important metrics for our industry in the long term:</p>\n<ul>\n<li>\n<p>the environmental footprint of training Mistral Large 2: as of January 2025, and after 18 months of usage, Large 2 generated the following impacts:</p>\n</li>\n<li>\n<ul>\n<li>\n<p>20,4 ktCO₂e,</p>\n</li>\n<li>\n<p>281 000 m3 of water consumed,</p>\n</li>\n<li>\n<p>and 660 kg Sb eq (standard unit for resource depletion).</p>\n</li>\n</ul>\n</li>\n<li>\n<p>the marginal impacts of inference, more precisely the use of our AI assistant Le Chat for a 400-token response - excluding users’ terminals:</p>\n</li>\n<li>\n<ul>\n<li>\n<p>1.14 gCO₂e,</p>\n</li>\n<li>\n<p>45 mL of water,</p>\n</li>\n<li>\n<p>and 0.16 mg of Sb eq.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/4605d8e3-b58f-4077-ba14-be1838696497_Mwy2d.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Mistral AI   Infographie Equivalences   V4\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>These figures reflect the scale of computation involved in Gen AI, requiring numerous GPUs, often in regions with carbon-intensive electricity and sometimes water stress. They also include “upstream emissions” – impacts from manufacturing servers for instance, and not just energy use.</p>\n<h2>Learnings and limits of this study</h2>\n<p>Given the results of our study, we are convinced that the following three indicators are of great importance for users, AI developers and policy makers to fully understand and manage the environmental impacts of LLMs:</p>\n<ol>\n<li>\n<p>the absolute impacts of training a model,</p>\n</li>\n<li>\n<p>the marginal impacts of inference,</p>\n</li>\n<li>\n<p>and the ratio of total inference to total life-cycle impacts.</p>\n</li>\n</ol>\n<p>Indicators 1 and 2 could be mandatory figures to report in order to inform the public on impacts, while indicator 3 can act as an internal indicator with optional disclosure. The latter indicator is key to grasp a complete vision of lifecycle impacts, and to ensure that models’ training phases are amortized, and not wasted.</p>\n<p>Our study also shows a strong correlation between a model’s size and its footprint. Benchmarks have shown impacts are roughly proportional to model size: a model 10 times bigger will generate impacts one order of magnitude larger than a smaller model for the same amount of generated tokens. This highlights the importance of choosing the right model for the right use case.</p>\n<p>It is worth noting that this study is a first approximation, with the difficulty to make precise calculations in such an exercise when no standards exist for LLM environment accountability, and the absence of publicly available impact factors. For instance, a reliable life-cycle inventory of GPUs is yet to be made, as their embodied impacts had to be approximated but account for a significant portion of total impacts.</p>\n<p>To comply with the GHG Protocol Product Standard, future audits made in the industry may follow this study’s principles of using location-based approach for electricity emissions and including all significant upstream impacts— i.e., not only those from GPU electricity use, but also all other electricity consumptions (CPUs, cooling devices, etc.) and manufacturing of hardware.</p>\n<h2>A path toward a global environmental standard for AI</h2>\n<p>These results point to two levers to reduce the environmental impact of LLMs.</p>\n<ul>\n<li>\n<p>First, to improve transparency and comparability, AI companies ought to publish the environmental impacts of their models using standardized, internationally recognized frameworks. Where needed, specific standards for the AI sector could be developed to ensure consistency. This could enable the creation of a scoring system, helping buyers and users identify the least carbon-, water- and material-intensive models.</p>\n</li>\n<li>\n<p>Second, from the user side, encouraging the research for efficiency practices can make a significant difference:</p>\n</li>\n<li>\n<ul>\n<li>\n<p>developing AI literacy to help people use GenAI in the most optimal way,</p>\n</li>\n<li>\n<p>choosing the model size that is best adapted to users’ needs,</p>\n</li>\n<li>\n<p>grouping queries to limit unnecessary computing,</p>\n</li>\n</ul>\n</li>\n</ul>\n<p>For public institutions in particular, integrating model size and efficiency into procurement criteria could send a strong signal to the market.</p>\n<h2>Conclusion</h2>\n<p>Moving forward, we are committed to updating our environmental impact reports in the future and participating in discussions around the development of international industry standards. We will advocate for greater transparency across the entire AI value chain and work to help AI adopters make informed decisions about the solutions that best suit their needs. The results will later be available via ADEME’s Base Empreinte database, setting a new standard for future reference for transparency in the AI sector.</p>\n<p>By encouraging sufficiency and efficiency practices and publishing standardized environmental impact reports, we can collectively work towards aligning the AI sector with global climate goals. This study is a humble contribution towards a more accessible and sustainable future for AI.</p>\n<p>—<br />\n<em>* This study was carried out following the Frugal AI methodology developed by AFNOR and is compliant with international standards, including the Green House Gas (GHG) Protocol Product Standard and ISO 14040/44.</em></p>\n<p>** The environmental impacts were assessed using standard indicators common in Lifecycle Analyses (LCAs): greenhouse gas emissions measured by Global Warming Potential over 100 years (GWP100), water consumption measured by Water Consumption Potential (WCP), and material consumption measured by Abiotic Resource Depletion (ADP).</p>\n<p><em>ADP quantifies the depletion of non-renewable resources (such as metals and minerals) by considering both the current extraction rates and the estimated reserves of each material. These values are standardized relative to Antimony’s ADP, providing a uniform unit since Antimony is a scarce resource.</em></p>\n<p><em>For example, extracting 1 kg of gold corresponds to an ADP of 2.35 kg Sb eq, whereas extracting 1 kg of copper corresponds to 0.000000161 kg Sb eq.</em></p>\n",
      "date_modified": "2025-07-22T16:00:00+00:00",
      "date_published": "2025-07-22T16:00:00+00:00",
      "external_url": "https://mistral.ai/news/our-contribution-to-a-global-environmental-standard-for-ai/",
      "id": "urn:aggr:item:c1b2c7c396c449b864575384be46e181d13ad1e4",
      "image": "https://mistral.ai/cms-media/api/media/file/thumbnail-07.jpg",
      "summary": "At Mistral AI, our mission is to bring artificial intelligence in everyone’s hands. For this purpose, we have consistently advocated for openness in AI, with a unique focus on empowering organizations that want to own their AI future.…",
      "tags": [
        "ai"
      ],
      "title": "Our contribution to a global environmental standard for AI",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-07-22-our-contribution-to-a-global-environmental-standard-for-ai/"
    },
    {
      "content_html": "<p>AI assistants are at their best when they let you go deeper in your thinking, keep your conversation flowing, and maintain contextual continuity. Today, we’re making Le Chat even more capable, more intuitive — and more fun — with a collection of powerful new features to help you research more thoroughly, express yourself more naturally, and keep your interactions — text, voice, and images — organized in context.</p>\n<h2>What’s new in Le Chat.</h2>\n<ol>\n<li>\n<p>Deep Research (Preview) mode: Lightning fast, structured research reports on even the most complex topics.</p>\n</li>\n<li>\n<p>Voice mode: Talk to Le Chat instead of typing with our new Voxtral model.</p>\n</li>\n<li>\n<p>Natively multilingual reasoning: Tap into thoughtful answers, powered by our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/news/magistral\">reasoning model</a> — Magistral.</p>\n</li>\n<li>\n<p>Projects: Organize your conversations into context-rich folders.</p>\n</li>\n<li>\n<p>Advanced image editing directly in Le Chat, in partnership with Black Forest Labs.</p>\n</li>\n</ol>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=biEQbkqqAhs\">www.youtube.com</a></p>\n<h3>Dive deeper with Deep Research.</h3>\n<p>Research mode turns Le Chat into a coordinated research assistant that can plan, clarify your needs, search, and synthesize. Ask a meaty question, and it will break it down, gather credible sources, and build a structured, reference-backed report that’s easy to follow.</p>\n<p>It’s powered by our tool-augmented Deep Research agent (in preview), but designed to feel simple, transparent, and genuinely helpful, as though you’re collaborating with a well-organized research partner.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=xlKrAKKmO5Q\">www.youtube.com</a></p>\n<h3>Le Chat is all ears.</h3>\n<p>Vocal mode lets you talk to Le Chat just like you’d talk to a person — no typing needed. You can brainstorm ideas while walking, get quick answers while running errands, or transcribe a meeting. It’s powered by our new voice-in model, Voxtral, and built for natural, low-latency speech recognition, that keeps up at your pace.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=CEP-xIIfuhs\">www.youtube.com</a></p>\n<h3>Thinking it through, in your language.</h3>\n<p>Think mode helps you reason through complex questions with clear, thoughtful answers, powered by our reasoning model — Magistral. Great for drafting a proposal in Spanish, clarifying a legal concept in Japanese, or just thinking things through in whatever language you’re most comfortable with. Le Chat can also code switch between languages mid-sentence.</p>\n<h3>Where Projects take shape.</h3>\n<p>Projects help you stay organized by grouping related chats into focused, context-rich spaces. Each project has its own default Library and remembers which tools and settings you’ve enabled, so things stay the way you left them. You can upload files directly into a project, pull in content from your Libraries, and keep everything — conversations, documents, and ideas — in one place. Perfect for planning a move, designing a new product feature, or keeping long-running workstreams on track.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/6e528d1e-dcf8-42ef-94ec-81eedf407278_Z2vrgRQ.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Projects\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Picture it — then edit it.</h3>\n<p>Unlike with typical text-to-image tools, you can create and then edit your images with simple prompts like “remove the object” or “place me in another city” and the model transforms the scene while preserving characters and detail. It’s ideal for making consistent edits across a series, keeping people, objects, and design elements recognizable from one image to the next.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/a552d04b-f239-4151-b35a-034446ba6fc1_8ypks.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Cat Demo\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Try the new features in Le Chat today.</h2>\n<p>You can try out all of these new features in Le Chat at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://chat.mistral.ai\">chat.mistral.ai</a>, or by downloading the mobile app from the App Store or Play Store. No credit card needed.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">Reach out to us</a> to discover how Le Chat Enterprise can transform your organization.</p>\n<h2>We’re hiring!</h2>\n<p>If you’re interested in joining us on our mission to build world-class AI products, we welcome your application to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\">join our team</a>!</p>\n",
      "date_modified": "2025-07-17T12:00:00+00:00",
      "date_published": "2025-07-17T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/le-chat-dives-deep/",
      "id": "urn:aggr:item:8858712860963ad8998fa2ceb76a529cbc13766b",
      "image": "https://mistral.ai/cms-media/api/media/file/thumbnail-03.jpg",
      "summary": "AI assistants are at their best when they let you go deeper in your thinking, keep your conversation flowing, and maintain contextual continuity. Today, we’re making Le Chat even more capable, more intuitive — and more fun — with a…",
      "tags": [
        "ai"
      ],
      "title": "Le Chat dives deep.",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-07-17-le-chat-dives-deep/"
    },
    {
      "content_html": "<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/ec026954-d85f-4b11-94fd-d26fc8e13ae2_2e4KeQ.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"Triangle Voxtral Blog\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3>Voice: the original UI.</h3>\n<p>Voice was humanity’s first interface—long before writing or typing, it let us share ideas, coordinate work, and build relationships. As digital systems become more capable, voice is returning as our most natural form of human-computer interaction.</p>\n<p>Yet today’s systems remain limited—unreliable, proprietary, and too brittle for real-world use. Closing this gap demands tools with exceptional transcription, deep understanding, multilingual fluency, and open, flexible deployment.</p>\n<p>We release the Voxtral models to accelerate this future. These state‑of‑the‑art speech understanding models are  available in two sizes—a 24B variant for production-scale applications and a 3B variant for local and edge deployments. Both versions are released under the Apache 2.0 license, and are also available on our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/capabilities/audio/#transcription\">API</a>. The API routes transcription queries to a transcribe-optimized version of Voxtral Mini (Voxtral Mini Transcribe) that delivers unparalleled cost and latency-efficiency. For a comprehensive understanding of the research and development behind Voxtral, please refer to our detailed research paper, available for download <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2507.13264\">here</a>.</p>\n<h3>Open, affordable, and production-ready speech understanding for everyone.</h3>\n<p>Until recently, gaining truly usable speech intelligence in production meant choosing between two trade-offs:</p>\n<ol>\n<li>\n<p>Open-source ASR systems with high word error rates and limited semantic understanding</p>\n</li>\n<li>\n<p>Closed, proprietary APIs that combine strong transcription with language understanding, but at significantly higher cost and with less control over deployment</p>\n</li>\n</ol>\n<p>Voxtral bridges this gap. It offers state-of-the-art accuracy and native semantic understanding in the open, at less than half the price of comparable APIs. This makes high-quality speech intelligence accessible and controllable at scale.</p>\n<p>Both Voxtral models go beyond simple transcription with capabilities that include:</p>\n<ul>\n<li>\n<p><em>Long-form context:</em> with a 32k token context length, Voxtral handles audios up to 30 minutes for transcription, or 40 minutes for understanding</p>\n</li>\n<li>\n<p><em>Built-in Q&amp;A and summarization:</em> Supports asking questions directly about the audio content or generating structured summaries, without the need to chain separate ASR and language models</p>\n</li>\n<li>\n<p><em>Natively multilingual:</em> Automatic language detection and state-of-the-art performance in the world’s most widely used languages (English, Spanish, French, Portuguese, Hindi, German, Dutch, Italian, to name a few), helping teams serve global audiences with a single system</p>\n</li>\n<li>\n<p><em>Function-calling straight from voice:</em> Enables direct triggering of backend functions, workflows, or API calls based on spoken user intents, turning voice interactions into actionable system commands without intermediate parsing steps.</p>\n</li>\n<li>\n<p><em>Highly capable at text:</em> Retains the text understanding capabilities of its language model backbone, Mistral Small 3.1</p>\n</li>\n</ul>\n<p>These capabilities make the Voxtral models ideal for real-world interactions and downstream actions, such as summaries, answers, analysis, and insights. For cost-sensitive use-cases, Voxtral Mini Transcribe outperforms OpenAI Whisper for less than half the price. For premium use cases, Voxtral Small matches the performance of ElevenLabs Scribe, also for less than half the price.</p>\n<h2>Benchmarks</h2>\n<h3>Speech Transcription</h3>\n<p>To assess Voxtral’s transcription capabilities, we evaluate it on a range of English and multilingual benchmarks. For each task, we report the macro-average word error rate (lower is better) across languages. For English, we report a short-form (&lt;30-seconds) and long-form (&gt;30-seconds) average.</p>\n<p>Voxtral comprehensively outperforms Whisper large-v3, the current leading open-source Speech Transcription model. It beats GPT-4o mini Transcribe and Gemini 2.5 Flash across all tasks, and achieves state-of-the-art results on English short-form and Mozilla Common Voice, surpassing ElevenLabs Scribe and demonstrating its strong multilingual capabilities.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/3f77f74c-f1a9-4a42-af04-3c72c78fd295_Z2ihY1I.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"V Plot 1\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>When evaluated across languages in FLEURS, Voxtral Small outperforms Whisper on every task, achieving state-of-the-art performance in a number of European languages.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/6a3aaf3e-7041-41c6-9cd0-14cde11e3cba_Z1WPhkF.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"V Plot 2\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Macro-average details:</p>\n<ul>\n<li>\n<p>En short-form: LibriSpeech Clean, LibriSpeech Other, GigaSpeech, VoxPopuli, Switchboard, CHiME-4, SPGISpeech</p>\n</li>\n<li>\n<p>En long-form: Earnings-21 10-m, Earnings-22 10-m</p>\n</li>\n<li>\n<p>Mozilla Common Voice 15.1: English, French, German, Spanish, Italian, Portuguese, Dutch, Hindi</p>\n</li>\n<li>\n<p>FLEURS: English, French, German, Spanish, Italian, Portuguese, Dutch, Hindi, Arabic</p>\n</li>\n</ul>\n<h3>Audio Understanding</h3>\n<p>Voxtral Small and Mini are capable of answering questions directly from speech, or by providing an audio and a text-based prompt. To evaluate Audio Understanding capabilities, we create speech-synthesized versions of three common Text Understanding tasks. We also evaluate the models on an in-house Audio Understanding (AU) Benchmark, where the model is tasked with answering challenging questions on 40 long-form audio examples. Finally, we assess Speech Translation capabilities on the FLEURS-Translation benchmark.</p>\n<p>Voxtral Small is competitive with GPT-4o-mini and Gemini 2.5 Flash across all tasks, achieving state-of-the-art performance in Speech Translation.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/d77c4d21-84a9-437f-b9c9-3b27725261ff_JrQS4.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"V Plot 3\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h3><strong>Text</strong></h3>\n<p>Voxtral retains the text capabilities of its Language-Model backbone, enabling it to be used as a drop-in replacement for Ministral and Mistral Small 3.1 respectively.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://mistral.ai/_astro/977d9b1c-a999-4e6a-9b84-87654cee6ec5_Z2wU84e.webp?dpl=6ad1d7b6946342e26a4d2b4f\" alt=\"V Plot 4\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>Try it for free</h2>\n<p>Whether you’re prototyping on a laptop, running private workloads on-premises, or scaling to production in the cloud, getting started is straightforward.</p>\n<ul>\n<li>\n<p>Download and run locally: Both Voxtral (24B) and Voxtral Mini (3B) are available to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/mistralai/\">download</a> on Hugging Face</p>\n</li>\n<li>\n<p>Try the API: Integrate frontier speech intelligence into your application with a single <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://console.mistral.ai/\">API call</a>. Pricing starts at $0.001 per minute, making high-quality transcription and understanding affordable at scale. Check out our documentation <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.mistral.ai/capabilities/audio/\">here</a>.</p>\n</li>\n<li>\n<p>Try it on Le Chat: Try Voxtral in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://chat.mistral.ai\">Le Chat</a>’s voice mode (rolling out to all users in the next couple of weeks)—on web or mobile. Record or upload audio, get transcriptions, ask questions, or generate summaries.</p>\n</li>\n</ul>\n<h3>Advanced enterprise features.</h3>\n<p>We also offer capabilities for Voxtral designed for enterprises with higher security, scale, or domain-specific requirements. Please <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/contact\">reach out to us</a> if you are considering:</p>\n<ul>\n<li>\n<p>Private deployment at production-scale: Our solutions team can help you set up Voxtral for production-scale inference entirely within your own infrastructure. This is ideal for use cases in regulated industries with strict data privacy requirements. This includes guidance and tooling for deploying Voxtral across multiple GPUs or nodes, with quantized builds optimized for production throughput and cost efficiency.</p>\n</li>\n<li>\n<p>Domain-specific fine-tuning: Work with our <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/services\">applied AI</a> team to adapt Voxtral to specialized contexts—such as legal, medical, customer support, or internal knowledge bases—improving accuracy for your use case.</p>\n</li>\n<li>\n<p>Advanced context: We’re inviting design partners to build support for speaker identification, emotion detection, advanced diarization, and even longer context windows to meet a wider variety of needs out of the box.</p>\n</li>\n<li>\n<p>Dedicated integration support: Priority access to engineering resources and consulting to help integrate Voxtral cleanly into your existing workflows, products, or data pipelines.</p>\n</li>\n</ul>\n<h3>Coming up.</h3>\n<p>We will be hosting a live webinar with our friends at Inworld (check out their cool speech-to-speech <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://inworld-mistral-demo.inworld.ai/\">demo</a> with Voxtral and Inworld TTS!) to showcase how you can build end-to-end voice-powered agents on Wednesday, Aug 6. If you’re interested, please register <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://lu.ma/zzgc68zw\">here</a>.</p>\n<p>We’re working on making our audio capabilities more feature-rich in the forthcoming months. In addition to speech understanding, will we soon support:</p>\n<ul>\n<li>\n<p>Speaker segmentation</p>\n</li>\n<li>\n<p>Audio markups such as age and emotion</p>\n</li>\n<li>\n<p>Word-level timestamps</p>\n</li>\n<li>\n<p>Non-speech audio recognition</p>\n</li>\n<li>\n<p>And more!</p>\n</li>\n</ul>\n<p>We’re excited to see what you will build with Voxtral.</p>\n<h2>BTW, we’re hiring!</h2>\n<p>The release of our Voxtral models marks a significant step forward, but our journey is far from over. Our ambition is to build the most natural, delightful near-human-like voice interfaces and there's lot more work to do. We are actively expanding our nascent audio team and looking for talented research scientists and engineers who share our ambition.</p>\n<p>If you’re interested in joining us on our mission to democratize artificial intelligenceI, we welcome your applications to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://mistral.ai/careers\">join our team</a>!</p>\n",
      "date_modified": "2025-07-15T12:00:00+00:00",
      "date_published": "2025-07-15T12:00:00+00:00",
      "external_url": "https://mistral.ai/news/voxtral/",
      "id": "urn:aggr:item:7d46d2a88d6b02075635b296ed636cd92d3de53d",
      "image": "https://mistral.ai/cms-media/api/media/file/Thumbnail-Model-Voxtral.jpg",
      "summary": "Voice: the original UI. Voice was humanity’s first interface—long before writing or typing, it let us share ideas, coordinate work, and build relationships. As digital systems become more capable, voice is returning as our most natural…",
      "tags": [
        "ai"
      ],
      "title": "Voxtral",
      "url": "https://aggr.aymericbeaumet.com/items/mistral-ai/2025-07-15-voxtral/"
    }
  ],
  "language": "en",
  "title": "Mistral Blog",
  "version": "https://jsonfeed.org/version/1.1"
}