[nonimo]
EN
Download the app

Nonimo Gateway, self-hosted

Say yes to AI without letting a single piece of PII leave your network.

Nonimo Gateway strips PII out of every AI request on your own servers and puts it back in the response. It runs as a container in front of the OpenAI API, so your services need no code changes: you only change the base_url.

  • Runs on your own servers
  • Your content doesn’t touch Nonimo
  • SSNs, passports, payment cards and foreign national IDs
POST /v1/chat/completions
  1. Sent by your internal chatbot

    Summarize the claim for Jessica Turner and email her at jessica.turner@example.com.

  2. Received by the provider redacted on your network

    Summarize the claim for [PERSON_1] and email her at [EMAIL_1].

  3. The provider responds

    Hi [PERSON_1], we’ve reviewed your claim and it’s complete.

  4. Returned to your service real values

    Hi Jessica Turner, we’ve reviewed your claim and it’s complete.

Fictional data. Anything that calls AI over the API goes through the Gateway; ChatGPT in a browser doesn’t (for that, see Nonimo for organizations).

Setup

PII redaction in three steps, with no changes to your services’ code

Your services’ code stays as it is: one container on your server and a new base_url.

  1. A container, on-prem or in your cloud.

    Technical details

    It installs on your servers or in your cloud account, right next to your services, and you can run multiple instances side by side.

  2. Your code keeps speaking the OpenAI API. Only the endpoint changes.

    Technical details

    The Gateway speaks the OpenAI API. Point your services at it and they keep calling /v1/chat/completions or /v1/responses, with function calling. Upstream, it can talk to OpenAI or any compatible API.

  3. PII leaves as placeholders and comes back as real values in the response.

    Technical details

    Each request is scanned in full before it goes to your provider: PII is replaced with placeholders and, in the response, every placeholder gets its original value back. Your services’ AI traffic passes through it before it leaves your network.

The official OpenAI SDK works as is; just point the client at the Gateway:

Python
from openai import OpenAI

# Same client, same API key: only base_url changes
client = OpenAI(base_url="http://your-server:8080/v1")
resp = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Summarize the claim for Jessica Turner."}],
)
Node
import OpenAI from "openai";

// Same client, same API key: only baseURL changes
const client = new OpenAI({ baseURL: "http://your-server:8080/v1" });
const resp = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Summarize the claim for Jessica Turner." }],
});
curl
# The same request you send today, pointed at your server
curl http://your-server:8080/v1/chat/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "Summarize the claim for Jessica Turner."}]
  }'

Restoration

PII redaction that puts the real values back

Your provider only ever sees placeholders; your service gets a response with the real values, each one back where it belongs.

helpdesk.example.com

Internal chatbot

Summarize the ticket Kevin Brooks[PERSON_1] opened from kevin.brooks@example.com[EMAIL_1].

Response

The ticket from Kevin Brooks[PERSON_1] is about VPN login failures since Monday. I’m sending kevin.brooks@example.com[EMAIL_1] the steps to reconnect.

Placeholders restored: 2 of 2 PII sent: 0

Customer support

Write an email to Michael Reyes[PERSON_1] (michael.reyes@example.com[EMAIL_1]) confirming we received his paperwork.

Response

Hi Michael Reyes[PERSON_1], just confirming that we’ve received your paperwork. We’ll email michael.reyes@example.com[EMAIL_1] as soon as everything is ready.

Placeholders restored: 2 of 2 PII sent: 0

Agent with tools

Look up the claim status for Ashley Rivera[PERSON_1], SSN 987-65-4320[SSN_1].

The model calls a function

lookup_claim({ "member": "Ashley Rivera[PERSON_1]", "ssn": "987-65-4320[SSN_1]" })

Your tool receives the real value; the provider only ever saw the placeholder.

Placeholders restored: 2 of 2 PII sent: 0

HR

Draft the offer letter for Tyler Bennett[PERSON_1]; direct deposit goes to account 000000000000[BANK_ACCOUNT_US_1].

Response

Hi Tyler Bennett[PERSON_1], welcome aboard. Your paycheck will be deposited directly into account 000000000000[BANK_ACCOUNT_US_1].

Placeholders restored: 2 of 2 PII sent: 0
  • Every value, its own placeholderIt doesn’t rewrite or summarize anything, and each value keeps the same placeholder for the whole conversation.
  • Detection runs on your networkYour data stays on your network while it’s scanned.
  • Function callingYour tools get the JSON arguments with the real values.

For your privacy or compliance officer: this is pseudonymization, not HIPAA de-identification, and the mapping back to the real values stays in your infrastructure. HIPAA, the CCPA and state privacy laws are covered in the FAQ.

Anonymization, de-identification and masking aren’t the same thing; we break it down in data anonymization before AI.

Technical details

Detection runs on your network, so your data stays there while it’s scanned. It doesn’t rewrite or summarize, it only flags what counts as PII, and within a conversation each value keeps its placeholder from start to finish. In tool calls, the provider sees placeholders and your tool gets the real values.

What’s sent to OpenAI

Write an email to [PERSON_1] ([EMAIL_1]) confirming we received his paperwork.

What your service receives

Hi Michael Reyes, just confirming that we’ve received your paperwork. We’ll email michael.reyes@example.com as soon as everything is ready.

ID numbers by country

PII redaction for Social Security numbers and the national IDs of other countries you work with

Every document, in its own format. Pick a country and see what the AI actually gets.

United States: also detected

  • NameMegan Collins[PERSON_1]
  • Phone(312) 555-0147[PHONE_1]
  • Bank account000000000000[BANK_ACCOUNT_US_1]
  • Address100 Example Ave, Springfield, IL 62701[ADDRESS_1]
  • Emailmegan@example.com[EMAIL_1]

And for every country

  • API keys[API_KEY_1]
  • Credit cards[CARD_1]
  • Passports (MRZ)[PASSPORT_1]
your service → Gateway → api.openai.com
  • SSN[SSN_1]
  • ITIN[ITIN_1]
  • EIN[EIN_1]
  • Medicare MBI[MBI_1]

Your service sends

Pull up the benefits application for Robert Garcia, SSN 987-65-4320.

The AI gets

Pull up the benefits application for [PERSON_1], SSN [SSN_1].

Fictional data and sample numbers that aren’t valid.

See the full list of ID documents by country

The Gateway picks up the usual PII (names, email addresses, phone numbers, street addresses, API keys) plus each country’s ID numbers in their native format. In the US that means Social Security numbers, ITINs, EINs and Medicare Beneficiary Identifiers. It also covers IBANs, credit cards and passports (the machine-readable zone).

CountryID documents
United StatesSocial Security number (SSN), ITIN, EIN, Medicare Beneficiary Identifier (MBI)
United KingdomNational Insurance number, NHS number
GermanySteuer-ID, Sozialversicherungsnummer
FranceNIR (French social security number), SIREN, SIRET
SpainDNI, NIE, NIF, Social Security number
Italycodice fiscale, partita IVA, carta d’identità elettronica (CIE), tessera sanitaria
PortugalNIF, NISS
BrazilCPF, CNPJ, CNH (driver’s license)
IrelandPPS number
AustraliaTFN, Medicare
All countriesIBAN, passports (machine-readable zone), credit cards

Presidio comparison

Evaluating Presidio? Nonimo Gateway works out of the box

Presidio finds PII in text. The OpenAI-compatible proxy that puts it in front of the API is something your team builds; Nonimo Gateway ships with it.

On your team: 6 of 8 tasks On your team: point base_url at the Gateway
What each option includes, and what your team has to build
Task DIY with Presidio With Nonimo Gateway
Detect PII in text Presidio handles it Included
OpenAI-compatible proxy You build it Ready to go
Put it in front of your AI provider You integrate it Swap base_url
Restore real values in the response You build it Ready to go
National ID numbers by country Some built in (incl. SSN, ITIN); you choose and tune the rest Everything in the table above
Spanish and other languages You configure it Ready to go
Keep it current Your team We ship every new version
Where it runs On your infrastructure A container on your server

Side-by-side comparison, row by row: Microsoft Presidio alternative →

Technical details

Presidio detects PII in text, but it doesn’t include an OpenAI-compatible proxy: to put it in front of the API, your team has to build that layer, integrate it and maintain it.

Nonimo Gateway ships with that layer: a container on your own server, an OpenAI-compatible API, real values restored in the response and the national ID numbers listed in the table above.

Self-hosted

Under your control, on your own network

You stay with your AI provider, and the Gateway is just one more piece of your perimeter.

LiteLLM

Running LiteLLM? Turn on Nonimo as a guardrail

If your platform already routes calls through LiteLLM, there are two ways to plug Nonimo in. Pick the one that fits.

LiteLLM guardrail

  1. Your services
  2. LiteLLM
  3. Nonimo
  4. The model

Out Summarize the claim for [PERSON_1]

In The response comes back with placeholders: [PERSON_1]

  • PII is redacted before it reaches the model
  • Enabled in your LiteLLM config
  • Real values aren’t restored in the response
Need them back? Use proxy mode →

Gateway as a proxy

  1. Your services
  2. Nonimo Gateway
  3. Your AI provider

Out Summarize the claim for [PERSON_1]

In The response comes back with the real values: Jessica Turner

  • PII is redacted before it reaches the model
  • The response comes back with the real values
Technical details

Already running LiteLLM? Turn on Nonimo as a guardrail, or as a proxy in front of your provider if you want the real values back in the response.

Plans

Self-hosted PII redaction plans for every team size

Every plan starts with a 30-day trial, and if you go over your monthly limit, the Gateway lets you know and the service keeps running.

600 people

Your match Nonimo Gateway Business, $539/month

Practice

Best place to start

For a practice or team putting AI into production on one server

Nonimo Gateway Practice $319/month Nonimo Gateway Practice or $3,190 a year

Up to 25 million words a month Teams of up to about 200 people
  • 1 instance
  • Email support
Request access

Business

For companies running AI across several services or sites

Nonimo Gateway Business $539/month Nonimo Gateway Business or $5,390 a year

Up to 150 million words a month Teams of up to about 1,000 people
  • Up to 3 instances
  • Offline mode on request
  • Priority support
Request access

Enterprise

For organizations with their own requirements and contract terms

Custom pricing

  • No usage cap
  • Unlimited instances
  • Offline mode on request
  • Your own contract and terms
Get in touch
How many people does each plan cover?

By our estimate, the Practice plan includes 25 million words a month, enough for teams of up to about 200 people; the Business plan includes 150 million, for teams of up to about 1,000; and the Enterprise plan has no cap, built for more than 1,000 people or multiple locations. If you ever go over, we’ll let you know and the service keeps running.

Access

Request access to Nonimo Gateway

Tell us what your stack looks like today, and we’ll reach out to set you up with a trial on your own server.

Which AI tools does your team use today? (check all that apply)

We only use this information to follow up about Nonimo Gateway. Read our privacy policy.

FAQ

Frequently asked questions

What IT, security and compliance teams ask before deploying the Gateway.

What it does and what it covers

What does the AI provider see?

Your prompt with placeholders such as [PERSON_1] or [SSN_1] where PII was found, and the same in tool-call arguments. If a policy is set to block, the request doesn’t reach the provider.

Does detection rely on an outside service?

No. Detection runs locally, on your network.

Which APIs and features are supported?

The OpenAI API and any API that mirrors it: Chat Completions and Responses, with function calling.

How many people does each plan cover?

By our estimate, the Practice plan includes 25 million words a month, enough for teams of up to about 200 people; the Business plan includes 150 million, for teams of up to about 1,000; and the Enterprise plan has no cap, built for more than 1,000 people or multiple locations. If you ever go over, we’ll let you know and the service keeps running.

Security, privacy and compliance

What exactly leaves our network?

The redacted request to your AI provider, and the license and usage figures to Nonimo, not your content. If your network can’t reach Nonimo, offline mode is available on request on the Business and Enterprise plans.

What happens if the Gateway or the provider fails?

By default, the request isn’t sent and your application gets a clear error.

Does the Gateway connect to Nonimo?

Only for the license and usage figures, not your content. If your network can’t reach Nonimo, offline mode is available on request on the Business and Enterprise plans. Email us at hello@nonimo.ai and we’ll agree on the terms.

Does the Gateway help with HIPAA, the CCPA and other state privacy laws?

It helps. Names and Social Security numbers are replaced before the request reaches your AI provider, so less PHI, and less of what the CCPA and other state privacy laws call sensitive personal information, leaves your network. It’s pseudonymization, not de-identification under HIPAA, and HHS doesn’t certify any software as HIPAA compliant, so the Gateway works alongside your business associate agreement with the provider, not in place of one. Our guide to US state privacy and AI laws covers the detail state by state.

Deployment and licensing

What do we need to deploy it?

A server or a cluster that runs containers, on-prem or in your cloud. It installs right next to your services, and you can run multiple instances.

How is it licensed?

A signed license per server or instance, renewed automatically when the Gateway runs in online mode. If you go over your plan’s usage, the Gateway warns you and the service keeps running.

How are updates handled?

The Gateway doesn’t update itself. It lets you know when a new version is available, and your IT team applies it on its own schedule.

Guides

Further reading for your IT and security team

Guides on AI gateways, privacy proxies and keeping personal data out of your LLM API calls.

Get started

Try PII redaction on your own hardware

Request access, install the container right next to your services and confirm with your own traffic that PII reaches the AI as placeholders. For the AI tools your staff use in the browser, see Nonimo for organizations.

Tools

Remove personal information from a file or text before AI reads it. Or cover the details on a copy of your ID and add a watermark before you send it.

All tools →