Microsoft Presidio alternative: Nonimo Gateway for LLM calls
· Written and maintained by Nonimo
Presidio gives you the parts to find and replace personal data in text. If what you need is to stop names and ID numbers leaving in calls to the OpenAI API, and to get the real values back in the answer, you still have to build the proxy around it. Nonimo Gateway is that proxy, already built.
Nonimo Gateway runs on your own servers. See plans and get in touch.
This guide covers what “Microsoft Presidio” is today, what the Presidio Analyzer and Anonymizer do, where the gaps are for LLM API calls, and how Nonimo Gateway fills them.
Microsoft Presidio, now under Data Privacy Stack
People still search for “Microsoft Presidio”. The project was built at Microsoft and is now transitioning to “an independent, community-governed open source project” under a GitHub organisation called Data Privacy Stack. The old repository at github.com/microsoft/presidio redirects there, the docs have moved to presidio.dataprivacystack.org, and the project says the legacy images at mcr.microsoft.com/presidio-* “are no longer updated”, so check your pull paths. The licence stays MIT.
It is a modular, free detection toolkit with 80 predefined entity types, including recognisers for Spain (NIF, NIE and passport), Italy and Germany, built for cleaning datasets, documents or images in a Python or Spark pipeline.
Where Presidio stops for LLM API calls
Presidio is a library and a pair of REST services. Protecting live calls to an LLM is a different job, and on the pages we checked Presidio does not document it.
No proxy. Presidio does not document an OpenAI-compatible endpoint, streaming or tool calls. You write the layer that intercepts each request, sends the text to the analyzer, anonymises it and forwards it.
Only one reversible operator. The anonymizer offers replace, redact, mask, hash, encrypt and others. The only built-in deanonymizer is decrypt, so only encrypt is reversible out of the box. If you replace a client’s name with a placeholder, Presidio itself does not track it and put the name back into the model’s answer.
English by default. In the project’s words, “In its default configuration, it contains recognizers and models for English.” Other languages mean choosing, installing and testing models for each one.
Gaps in national IDs. The country list covers 18 countries. France, Portugal, Brazil and Mexico have no national ID recognisers on it.
Sizing by trial. The analyzer and anonymizer run as separate containers, and hardware requirements are not published.
Why streamed answers are the hard part
Most chat interfaces stream: the answer arrives a few characters at a time. If your layer replaced a name with <PERSON_1>, the stream can split that placeholder across two or three chunks, and code that swaps chunk by chunk will miss it. The layer has to hold back just enough text to recognise a placeholder, swap in the real value and release the rest, without waiting for the whole answer. It is solvable, and it is where home-built layers tend to break quietly.
If you already run LiteLLM, its Presidio guardrail adds masking and an option to restore replaced values. We cover that set-up, and the Nonimo plugin for LiteLLM, in LiteLLM PII guardrails.
Presidio compared with Nonimo Gateway
| Presidio | Nonimo Gateway | |
|---|---|---|
| What it is | Open-source library and REST services | Private proxy for LLM API calls |
| How it runs | Separate analyzer and anonymizer containers, which you connect | On your own servers |
| OpenAI-compatible endpoint | Not documented | Yes, you change base_url |
| Restores real values in the response | Only for the encrypt operator, via decrypt | Yes, real values back in the answer |
| Languages | English by default; others by adding models | National documents and numbers of each country it serves |
| National IDs | 59 entities across 18 countries; none for France, Portugal, Brazil or Mexico | Includes Spanish DNI/NIE/NIF, German Steuer-ID, French NIR, Italian codice fiscale, Brazilian CPF, Mexican RFC and CURP |
| Licence | MIT, open source | Plans on the Nonimo Gateway page |
How Nonimo Gateway does it
Nonimo Gateway runs on your own servers. Your application keeps its code and changes one setting:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://llm-gateway.your-company.internal/v1", # your Nonimo Gateway
api_key=os.environ["OPENAI_API_KEY"], # your own OpenAI key
)
On the way out, it replaces personal data with placeholders before the request reaches OpenAI. On the way back, it restores the real values in the response. It recognises the national documents and numbers of each country we serve. You use your own OpenAI key, and if you already run LiteLLM there is a plugin for it.
Replacing identifiers this way is pseudonymisation, which is not the same as anonymisation and still needs the rest of your process around it. For what happens when personal data does reach a provider, see is putting client data in ChatGPT a data breach. For a written rule your staff can follow, start from our AI policy template. And if you are weighing other open-source options, our LLM Guard alternative guide covers a toolkit built on top of the Presidio Analyzer.
Skip the glue code
If you would rather not own an analyzer, an anonymizer and a placeholder map, Nonimo Gateway gives you the whole path on your own server. See Nonimo Gateway’s plans and get in touch.
Sources
Checked 20 October 2026.
- Presidio, project transition. Move to community governance under Data Privacy Stack, MIT licence.
- Presidio, GitHub repository. Project description, redirect from the Microsoft repository.
- Presidio, documentation home. Python, Spark, Docker and Kubernetes use, image redaction.
- Presidio, installation. Separate Docker images on ghcr.io, legacy images no longer updated, no hardware requirements published.
- Presidio, anonymizer. Operators and the decrypt deanonymizer.
- Presidio, supported entities. The entity catalogue by country.
- Presidio, languages. English by default, adaptable NLP engine.
- LiteLLM, PII masking with Presidio. Mask or block per entity, restoring replaced values.
This page is for information. Product details of other vendors were checked on their official pages on 20 October 2026 and can change.
Nonimo is the software that does this on your own computer: it redacts client names and IDs before your text reaches ChatGPT. No account needed, and the app does it without your files leaving your machine.
Common questions
Is Microsoft Presidio still a Microsoft project?
Not any more. Presidio was created at Microsoft and is now transitioning to an independent, community-governed open source project under a GitHub organisation called Data Privacy Stack. The old Microsoft repository redirects there, the licence stays MIT, and Microsoft says it supports the transition.
What is the difference between the Presidio Analyzer and the Presidio Anonymizer?
The analyzer finds personal data in text and returns what it found and where. The anonymizer takes those results and applies an operator to each one, such as replace, redact, mask, hash or encrypt. They ship as separate Docker images and you run and connect them yourself.
Can Presidio put the original values back into an LLM response?
Only for one operator. Presidio documents a single built-in deanonymizer, decrypt, which reverses its encrypt operator with the key. Replace, redact, mask and hash are not reversed by Presidio itself. LiteLLM, which wraps Presidio as a guardrail, documents its own option to restore values replaced by Presidio.
Does Presidio detect Spanish, Italian or German ID numbers?
Yes, for some. Its published entity list includes recognisers for Spain (NIF, NIE and passport), five Italian entities and nine German ones, among 18 countries. French, Portuguese, Brazilian and Mexican national IDs are not on that list.
Is Presidio an OpenAI-compatible proxy?
No. Presidio is a detection and anonymisation library with REST services. Sitting between your application and an LLM API, swapping values out and back, and handling streamed responses is work you build around it. Nonimo Gateway is that proxy layer, already built.
Is Presidio free?
Yes. It is open source under the MIT licence and has no paid tier. The cost is the engineering time to deploy, tune and connect it.