In production
Sovereign generative AI, in production at the Calvados département
The Calvados département runs a sovereign generative AI in production across the whole département: an open weight model served by the platform itself, sourced answers drawn from the documents, and a GPU server rented in the European Union, Monday to Friday and during the day only.
At a glance
A sovereign AI at county scale
- Local authority
- Calvados département (Département du Calvados)
- Status
- in production for more than 6 months
- Scale
- a county of around 700,000 residents
- Access
- assistant connected to the county SSO
- Model
- Mistral Small 3.2 (24B), open weight, served by vLLM
- Model compute
- one GPU rented in the EU, Monday to Friday, during the day
- Usage
- 73 active users, 12,940 messages processed, 1 single GPU (figures provided by PixelRaise)
The principle
The principle: an open stack, controlled end to end
The Calvados département, home to around 700,000 residents, has put into production an AI assistant connected to the county SSO, with European hosting and open source models.
This case study does not describe how the Département uses it: those uses belong to the Département and are not detailed here. It shows what carries over from one deployment to the next, that is, the architecture, the software building blocks and the way they are operated.
What the stack includes
- the Mistral Small 3.2 (24B) language model, served by the vLLM inference engine;
- the RAG pipeline: document extraction, semantic search, BGE re-ranking and sourced answers;
- the Open WebUI portal, for working with documents and knowledge bases;
- a GPU server for the model, rented in the European Union, Monday to Friday during the day, deleted every evening and rebuilt from scratch every morning;
- a WireGuard encrypted tunnel and Prometheus monitoring.
What is specific to each authority (authentication, knowledge bases, usage figures) is not covered here.
The technical stack
The technical stack: open building blocks, operated end to end
An open weight model, served by the platform
Mistral Small 3.2 24B Instruct (version 2506), released by Mistral AI under the Apache 2.0 licence, runs in a vLLM container on the GPU server and is queried through an OpenAI-compatible API. The language model and the embedding model share a single GPU: an NVIDIA A100 80 GB by default, with automatic fallback to an H100 or an H200 when it is unavailable.
Sourced answers
Extracted text is split into chunks, embedded by an embedding model also served by vLLM on the same GPU, then searched semantically. The BAAI bge-reranker-v2-m3 reranker, also served by vLLM, re-orders the retrieved chunks before they are passed to the model, for sourced answers.
Multi-format extraction
PDF (native text, tables converted to Markdown, GPU OCR of images with orientation detection using docTR), recent Word, PowerPoint and Excel documents (.docx, .pptx, .xlsx) and HTML pages using Docling, and text files (txt, csv, md, json, xml, source code). The extraction engine writes each document to a temporary file, deletes it after processing and sends the extracted text back to the portal.
A collaborative portal
The interface is Open WebUI: chat, documents and knowledge bases. The portal is configured through its API to use the platform's own extraction engine and reranker.
Daytime compute, in the EU
From Monday to Friday, a scheduled task creates and configures the model's GPU server in the morning, then shuts it down and deletes it in the evening: it is rebuilt from scratch each morning and is not created at weekends. This server is only rented in data centres located in the European Union.
An encrypted tunnel, monitored operations
At every start, the model's GPU server joins a WireGuard encrypted tunnel that links it to the portal. Each internal service (model, embeddings, reranker, extraction) requires an access token. Prometheus monitors the GPUs and the inference engine, and an email report is sent at every start and every shutdown, with an alert if anything fails.
Lessons
What this demonstrates
- A reproducible model. The stack first deployed in a conurbation is in production in a département, with the same model and the same architecture: a local authority does not have to start from a blank page.
- Sovereignty built into the architecture. The language model, embeddings, re-ranking and extraction are served by the platform itself, rather than called from an AI provider. The model's server is rented in the European Union and linked to the portal by an encrypted tunnel.
- Costs contained by design. The model's GPU server is only rented Monday to Friday during the day, the model and the embeddings share a single GPU, and before each start a check verifies that the compute credit covers the day. The actual cost depends on the hosting provider's offer and on the other services, which may stay on.
- Automated operations. Starting, configuring and shutting down the model's GPU server, as well as the reports, need no manual intervention; monitoring covers the GPUs and the inference engine.
Scope
What we can share
The figures on this page (73 active users, 12,940 messages processed, 1 single GPU, in production for more than 6 months) are provided by PixelRaise. They have not been published by the Département.
Proof of scalability. From 90,000 to 700,000 residents: same architecture, same fixed cost, same sovereignty.
It describes the technical stack as configured in the platform's code. Uses, the teams using it and the hosting of the portal are specific to the Département and are not detailed here.
Further reading
Further reading
Sources
- Mistral AI: Hugging Face model card for Mistral-Small-3.2-24B-Instruct-2506 ↗ (new window)
- vLLM: official documentation ↗ (new window)
- BAAI: Hugging Face model card for bge-reranker-v2-m3 ↗ (new window)
- Open WebUI: features documentation ↗ (new window)
- Docling: official documentation ↗ (new window)
- docTR (Mindee): official repository ↗ (new window)
- WireGuard: official website ↗ (new window)
- Prometheus: official overview ↗ (new window)
Pilot
The same stack for your organisation?
A demonstration on your own documents, then a pilot scoped in writing, with exit criteria agreed in advance.