privacy gateway for llm traffic

Personal data stays with you. The question goes to the model.

OBVELO sits between your application and your model provider: it replaces every personal value with a token, passes the request on, and puts the real values back into the answer. You change one field — the API address.

Start free See how it works no card, free plan
from openai import OpenAI

client = OpenAI(
    base_url="https://api.obvelo.com/v1",
    api_key=os.environ["OPENAI_API_KEY"],
    default_headers={"x-api-key": os.environ["OBVELO_KEY"]},
)

client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user",
        "content": "Summarise the claim by Anna Kowalska."}],
)

one address changed · your provider key passes through · the model sees a token, never the name

drops into OpenAI/ Anthropic/ Gemini/ Mistral/ LangChain/ MCP/ OpenAI-compatible gateways

475

detection rules, 18 categories

4

API surfaces, one result

0

request content stored

EU

hosting and sub-processors

See the substitution

text only · runs left today: 3

your application sends
0/2000 characters

This preview runs in your browser. Edit the invented example, or paste your own made-up text.

the model receives

The claim was filed by [Person 1] (PESEL [PESEL 1]) on behalf of [Company 1].

3 values replaced · one person, one token

your application gets back

The claim was filed by Anna Kowalska (PESEL 44051401359) on behalf of Acme Ltd.

Restored from the mapping you keep — pseudonymisation, not redaction.

A browser preview of the substitution, built from a handful of patterns — nothing leaves this page. The product itself runs 475 detection rules, a name model and your own lists. Please use invented data.

why teams switch

Use any model. Expose no one.

01

One field to deploy

Change the API address. Your SDK, your provider and your prompts stay exactly as they are.

02

The model never meets your customers

Names, IDs, emails and account numbers leave as tokens and come back as themselves — the answer reads naturally.

03

Your data stays in the EU

Hosting and every sub-processor in the EU or EEA. Nothing from request content is ever stored.

how it works

One request, three states

OBVELO swaps every personal value for a token on the way out and puts it back on the way in. The mapping travels with the request and stays with you — there is no vault on our side to leak from.

your app sends The contract was signed by Anna Kowalska, PESEL 44051401359. the model sees The contract was signed by [Person 1], PESEL [PESEL 1]. your app gets back The contract was signed by Anna Kowalska, PESEL 44051401359.

beyond chat

Agents, files and your own data — covered

agents

Tool calls, protected both ways

Arguments leave masked and are put back before they reach your systems. The MCP bridge applies your tool allowlist before any call goes out.

attachments

Files come back masked — and still open

docx, xlsx, pptx, csv and txt, including authors, comments, chart labels and hidden metadata.

your lists

Names from your CRM, recognised

Send up to 20 000 people, companies or words never to mask with a request. Used for that request, stored nowhere.

profiles

A rule profile for every system

Each key carries its own jurisdictions and selection of rules — support bot and legal team, each set up right.

measured on every engine change

A single leaked value fails the build.

54/54

personal values in files masked

31/31

structural values kept

0

files destroyed

200/0

random files / corrupted

attachment corpus · 21 file containers · rule layer · the floor for every figure is the one shown

integration

Works with the API you already call

OpenAI chat and responses, Anthropic messages, Gemini contents — Mistral and compatibility gateways speak the chat shape. SDKs for TypeScript and Python, streaming included.

/v1/chat/completions/v1/messages/v1/responses/v1beta/…:generateContent

security

Private by design

Isolated detection

The name model runs in a container that holds no network permission — not “does not use the network”, but cannot. A test checks it on every change.

Nothing from content stored

The data plane stores nothing from request content; the control plane stores the account, the plan and usage in numbers, and never sees content. Your provider stays on your own credentials.

An audit trail without the data

Which account, which key, which tool, allowed or refused — never the content itself. It answers who sent this; it does not answer who caused a leak.

Pricing

EUR, net, per month · billed per character

free

0EUR / mo

1 M characters · 60 req/min · 1 key · unlimited users · traffic stops at the cap · no card

Start free

paid plans

starter

49EUR / mo

characters10 M
overage 1M5.90
req / min300
keys3
usersunlimited
own formatsyes
own providerno
Choose starter

standard

119EUR / mo

characters50 M
overage 1M2.90
req / min600
keys3
usersunlimited
own formatsyes
own providerno
Choose standard

pro

349EUR / mo

characters200 M
overage 1M2.20
req / min3 000
keysunlimited
usersunlimited
own formatsyes
own provideryes
Choose pro

enterprise

By contract.

Contact us

No user limit on any plan. A plan limits the number of keys — systems — and the volume of characters, never the number of people.

The hard cap is on by default. Traffic stops rather than producing an invoice you did not expect; you switch overage on deliberately.

Detection quality is identical on every plan. A cheaper plan is less volume, never weaker protection. The free plan needs no card.

Enterprise

tailored to your organisation

Volume, rule profiles and paperwork, agreed in writing. The same engine as every plan — the contract changes the scale, never the protection.

Self-hosting

Run the whole gateway inside your own perimeter.

Your provider, your credentials

Choose your own model provider and keep billing on your contract. Switch vendors without touching OBVELO.

A profile per system

Unlimited keys, each with its own jurisdictions and rules.

Paperwork in the contract

The data processing agreement and our EU/EEA sub-processor register are part of the contract, agreed before you go live.

what is agreed

priceby contract
characters1 B
overage 1M1.80 EUR
req / min12 000
keysunlimited
usersunlimited
own formatsyes
own provideryes
self-hostingon request

Questions engineers ask first

Do you train on our data?

No. Nothing from request content is stored, and transcripts are never written.

Where does the traffic go?

To your own model provider, on your own credentials. We do not call a model on our contract.

Where are you hosted?

In the EU. Every sub-processor is in the EU or EEA and is entered in our register of processing activities before it is used.

Is this anonymisation?

No — pseudonymisation. You keep the mapping, so the answer can be turned back into the document you sent.

Does the model still understand the question?

That is the point of a token rather than a black box: the sentence keeps its shape, so the model still reads who did what to whom — it just does not learn the name.

What happens to a file we attach?

A docx, xlsx, pptx, csv or txt is masked and rebuilt, and still opens. A pdf, a scan, or a file your provider fetched by id is not masked — and the answer says so, with the reason.

Can two of our systems have different rules?

Yes. A key is a system, not a person: each key carries its own rule profile — its own jurisdictions and its own selection of rules. The profile belongs to the credential, not to a header.

How many people can we put on an account?

As many as you like. No plan limits users; we charge for characters.

What does the audit journal record?

Which account, which key, which tool, allowed or refused — with no content at all. It answers who sent this and who approved this. It does not answer who caused a leak.

What if you are down?

The gateway serves from its last snapshot, so existing customers keep working; only new registrations wait.

Can we self-host?

Talk to us — that is an enterprise conversation, not a plan you buy in a browser.

Does OBVELO make us compliant?

It lowers risk and gives you a control point with an audit trail — but compliance depends on your whole processing, not on one component. See the sentence at the foot of this page.

Is there anything OBVELO cannot mask?

PDFs, scanned images and files your provider fetches by id. Each response tells you when that happens, and you choose the policy: refuse the request, warn, pass, or mask.

Change one field. Keep the people.

Enterprise, self-hosting or a question first: office@obvelo.com