Nonimo Gateway for Australian teams
Nonimo Gateway masks personal information on your own servers before every AI call and hands it back in the response. It runs in a container in front of the OpenAI API, and your services keep their code as is: the only change is the base_url.
Summarise the claim file for Olivia Nguyen and email her at olivia.nguyen@example.com.
Summarise the claim file for [PERSON_1] and email her at [EMAIL_1].
Hi [PERSON_1], we’ve been through your claim and it’s all complete.
Hi Olivia Nguyen, we’ve been through your claim and it’s all complete.
Getting set up
No changes to your services’ code: a container on your server and a new base_url.
A container, on premises or in your cloud tenancy.
It installs on your servers or in your cloud tenancy (an Australian region, if that’s your policy), next to your services, and you can run several instances at once.
Your code keeps using the OpenAI API. Only the address changes.
The Gateway speaks the OpenAI API. Point your services at it and they keep calling /v1/chat/completions or /v1/responses, function calling included. Behind it can sit OpenAI or any compatible API.
Personal information goes out as placeholders and comes back as the real details.
Each request is checked in full before it heads to your provider: personal information is swapped for placeholders and, in the response, every placeholder gets its real value back. Your services’ AI requests pass through it before they leave your network.
The official OpenAI SDK works without any changes; just point the client at the Gateway:
from openai import OpenAI
# Same client, same 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": "Summarise the claim file for Olivia Nguyen."}],
) import OpenAI from "openai";
// Same client, same 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: "Summarise the claim file for Olivia Nguyen." }],
}); # Your usual request, sent to your own server instead
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": "Summarise the claim file for Olivia Nguyen."}]
}' Details restored
Your provider only sees placeholders; your service gets the response with the real details, each one back in its place.
Staff chatbot
Summarise the ticket Liam O’Brien[PERSON_1] logged from liam.obrien@example.com[EMAIL_1].
The ticket from Liam O’Brien[PERSON_1] is a VPN login problem since Monday. I’m emailing liam.obrien@example.com[EMAIL_1] the steps to get back on.
Customer service
Draft a reply to Isabella Martin[PERSON_1] (isabella.martin@example.com[EMAIL_1]) confirming we’ve received her paperwork.
Hi Isabella Martin[PERSON_1], thanks for sending your paperwork through, we’ve received it. We’ll be in touch at isabella.martin@example.com[EMAIL_1] once everything’s ready.
Agent with tools
Check the claim status for Mia Thompson[PERSON_1], Medicare number 2123 45671 1[MEDICARE_1].
check_claim({ "patient": "Mia Thompson[PERSON_1]", "medicare": "2123 45671 1[MEDICARE_1]" })
Your tool gets the real value; the provider only ever saw the placeholder.
HR
Prepare the onboarding letter for Noah Williams[PERSON_1], TFN 123 456 789[TFN_1].
Hi Noah Williams[PERSON_1], welcome to the team. We’ll use your TFN, 123 456 789[TFN_1], to set up your pay.
For your privacy officer: the information is pseudonymised, not de-identified, and the link back to the real details stays in your infrastructure. How it fits with the Privacy Act and the APPs, in the questions below.
We explain the difference between de-identified and pseudonymised information in de-identified vs pseudonymised.
Detection runs inside your network: your information doesn’t leave it to be checked. It doesn’t rewrite or summarise, it just marks what is personal information, and within a conversation each detail keeps its placeholder from start to finish. In tool calls, the provider sees placeholders and your tool gets the real values.
What goes out to OpenAI
Draft a reply to [PERSON_1] ([EMAIL_1]) confirming we’ve received her paperwork. What your service receives
Hi Isabella Martin, thanks for sending your paperwork through, we’ve received it. We’ll be in touch at isabella.martin@example.com once everything’s ready. ID numbers by country
Every document, in its own format. Choose a country and see what reaches the AI.
Australia: also covered
[PERSON_1][PHONE_1][BSB_1][BANK_ACCOUNT_AU_1][EMAIL_1]United Kingdom: also covered
[PERSON_1][PHONE_1][BANK_ACCOUNT_GB_1][POSTCODE_1][EMAIL_1]United States: also covered
[PERSON_1][PHONE_1][BANK_ACCOUNT_US_1][ADDRESS_1][EMAIL_1]Ireland: also covered
[PERSON_1][PHONE_1][IBAN_1][EIRCODE_1][EMAIL_1]Germany: also covered
[PERSON_1][PHONE_1][IBAN_1][ADDRESS_1][EMAIL_1]France: also covered
[PERSON_1][PHONE_1][IBAN_1][ADDRESS_1][EMAIL_1]Spain: also covered
[PERSON_1][PHONE_1][IBAN_1][ADDRESS_1][EMAIL_1]Italy: also covered
[PERSON_1][PHONE_1][IBAN_1][ADDRESS_1][EMAIL_1]Portugal: also covered
[PERSON_1][PHONE_1][IBAN_1][POSTCODE_PT_1][EMAIL_1]Brazil: also covered
[PERSON_1][PHONE_1][ADDRESS_1][EMAIL_1]And in every country
[API_KEY_1][CARD_1][PASSPORT_1][TFN_1][MEDICARE_1][ABN_1][DRIVER_LICENCE_AU_1]Your service sends
Process the pay run for Jack Wilson, TFN 123 456 789.
The AI receives
Process the pay run for [PERSON_1], TFN [TFN_1].
[NINO_1][NHS_NUMBER_1]Your service sends
Update the staff record for Oliver Smith, National Insurance QQ 12 34 56 C.
The AI receives
Update the staff record for [PERSON_1], National Insurance [NINO_1].
[SSN_1]Your service sends
Look over the application from John Miller, SSN 987-65-4321.
The AI receives
Look over the application from [PERSON_1], SSN [SSN_1].
[PPS_NUMBER_1]Your service sends
Send the summary through to Aoife Murphy, PPS 1234567A.
The AI receives
Send the summary through to [PERSON_1], PPS [PPS_NUMBER_1].
[TAX_ID_DE_1][SOCIAL_SECURITY_DE_1]Your service sends
Prepare the letter for Jonas Weber, Steuer-ID 12345678901.
The AI receives
Prepare the letter for [PERSON_1], Steuer-ID [TAX_ID_DE_1].
[NIR_1][SIREN_1][SIRET_1]Your service sends
Check the file for Camille Martin, NIR 1 85 05 78 006 084 00.
The AI receives
Check the file for [PERSON_1], NIR [NIR_1].
[DNI_1][NIE_1][NIF_1][NUSS_1]Your service sends
Summarise the file for María López, DNI 12345678A.
The AI receives
Summarise the file for [PERSON_1], DNI [DNI_1].
[TAX_CODE_IT_1][VAT_NUMBER_IT_1][ID_CARD_IT_1][HEALTH_CARD_IT_1]Your service sends
Get back to Mario Rossi, codice fiscale RSSMRA80A01H501X.
The AI receives
Get back to [PERSON_1], codice fiscale [TAX_CODE_IT_1].
[NIF_PT_1][NISS_1]Your service sends
Confirm the registration for João Silva, NIF 123456780.
The AI receives
Confirm the registration for [PERSON_1], NIF [NIF_PT_1].
[CPF_1][CNPJ_1][DRIVING_LICENCE_BR_1]Your service sends
Write to Ana Souza about her order, CPF 123.456.789-00.
The AI receives
Write to [PERSON_1] about her order, CPF [CPF_1].
Made-up details and sample numbers that aren’t valid.
The Gateway recognises the everyday personal information (names, email addresses, phone numbers, addresses, API keys) and, on top of that, each country’s ID numbers in their own format. Here that means TFNs, Medicare numbers, ABNs and driver licence numbers. It also covers IBANs, credit cards and passports (their machine-readable zone).
| Country | ID numbers |
|---|---|
| Australia | TFN, Medicare number, ABN, driver licence number |
| United Kingdom | National Insurance number, NHS number |
| United States | Social Security number |
| Ireland | PPS number |
| Germany | Steuer-ID, Sozialversicherungsnummer |
| France | NIR (numéro de sécurité sociale), SIREN, SIRET |
| Spain | DNI, NIE, NIF, Social Security number |
| Italy | codice fiscale, partita IVA, carta d’identità elettronica (CIE), tessera sanitaria |
| Portugal | NIF, NISS |
| Brazil | CPF, CNPJ, CNH (driver licence) |
| Every country | IBAN, passports (machine-readable zone), credit cards |
Versus Presidio
Presidio detects personal information in text. The OpenAI-compatible proxy that puts it in front of the API is a build job for your team; Nonimo Gateway comes with it done.
| Task | Building on Presidio | With Nonimo Gateway |
|---|---|---|
| Detect personal information in text | Presidio covers it | Included |
| OpenAI-compatible proxy | You build it | Done for you |
| Put it in front of your AI provider | You hook it up | Update base_url |
| Put the real details back in the response | You build it | Done for you |
| ID numbers for each country | Some built in (incl. TFN, Medicare, ABN); you pick and tune the rest | The ones in the table above |
| Text in languages other than English | You set it up | Done for you |
| Keep it up to date | Your team | We ship each new version |
| Where it runs | On your infrastructure | A container on your server |
The full comparison, row by row: Microsoft Presidio alternative →
Presidio detects personal information 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 proxy, hook it up and keep it running.
Nonimo Gateway gives you that piece already built: a container on your own server, an OpenAI-compatible API, the real details restored in the response and the ID numbers for each country in the table above.
Your infrastructure
You stay with your AI provider, and the Gateway is one more component inside your perimeter.
It installs on your servers or in your cloud, next to your services.
Only the licence and usage figures. Your content doesn’t pass through Nonimo.
Your API key isn’t stored in the Gateway.
LiteLLM
If your platform already routes calls through LiteLLM, Nonimo fits in one of two ways. Pick whichever suits.
Out Summarise the claim file for [PERSON_1]
Back The response comes back with placeholders: [PERSON_1]
Out Summarise the claim file for [PERSON_1]
Back The response comes back with the real details: Olivia Nguyen
Already on LiteLLM? Nonimo switches on as a guardrail, or as a proxy in front of your provider if you want the real details back in the response.
Plans
Try any plan for 30 days before you commit. If you use more words in a month than your plan includes, the Gateway gives you a heads-up and nothing gets switched off.
Suits you Nonimo Gateway Business, A$829/month
Ideal for professional firms and small to mid-sized teams
Nonimo Gateway Practice A$489/month Nonimo Gateway Practice or A$4,890 a year
Built for organisations rolling out AI over several systems
Nonimo Gateway Business A$829/month Nonimo Gateway Business or A$8,290 a year
For large or heavily regulated organisations
Custom pricing
By our estimate, the Practice plan gives you 25 million words each month, enough for a team of up to about 200 people. Business gives you 150 million, enough for up to about 1,000. Enterprise has no word limit and is built for organisations of over 1,000 people or working across multiple sites. If you go over, the Gateway lets you know and everything keeps working.
Access
Let us know what you run today and we’ll be in touch to set up a trial on your server.
Questions
What IT managers, security teams and privacy officers ask before rolling out the Gateway.
The prompt with each detected item replaced by a placeholder such as [PERSON_1] or [TFN_1]. Categories you set to block don’t go out: the request stops at the Gateway and your service gets an error naming the category.
No. Detection runs locally, inside your network.
OpenAI and any API compatible with it: Chat Completions and Responses, with function calling.
By our estimate, the Practice plan gives you 25 million words each month, enough for a team of up to about 200 people. Business gives you 150 million, enough for up to about 1,000. Enterprise has no word limit and is built for organisations of over 1,000 people or working across multiple sites. If you go over, the Gateway lets you know and everything keeps working.
The masked request, to your AI provider, and the licence and usage figures, to Nonimo, not your content. If your network can’t reach Nonimo, the Business and Enterprise plans have an offline mode, available on request.
By default, the request isn’t sent and your application gets a clear error.
Only for the licence and usage figures, not your content. If your network can’t reach Nonimo, the Business and Enterprise plans have an offline mode, available on request. Email us at hello@nonimo.ai and we’ll agree the terms.
It supports what the OAIC recommends: limiting the personal information you put into AI products. The OAIC’s guidance on commercially available AI products treats putting personal information into an AI system as a use or disclosure under APP 6, and sending it to a provider overseas can bring APP 8 (cross-border disclosure) into play. Because names and identifiers such as TFNs are swapped for placeholders before the request leaves your network, less personal information goes out. Pseudonymised information can still be personal information, so your obligations under the APPs stay with your organisation; the Gateway helps you meet them.
A server or a cluster that runs containers, on premises or in your cloud. It installs next to your services, and you can run several instances side by side.
With a signed licence per server or instance, which renews itself on the connected plans. If you go over your plan’s usage, the Gateway warns you and keeps working.
The Gateway doesn’t update itself. It just lets you know when a new version is available, and your IT team applies it whenever they like.
Guides
Guides on AI gateways, privacy proxies and keeping personal data out of your LLM API calls.
Get started
Request access and connect your services to OpenAI with personal information masked from day one. For the AI tools your staff use in a browser, see Nonimo for organisations.
Remove personal details from a file or text before AI reads it. Or hide your licence card number and add a watermark before you send a copy.