A local privacy proxy
PrivateRoute runs on this machine, between your programs and the AI API. Names, organisations, phone numbers and bank details are replaced before a request leaves the computer — and restored in the answer.
Nothing leaves this machine to read this page.
The model works with stand-ins from beginning to end. You see your real values throughout. Which stand-in belongs to whom never leaves this computer.
One command on the machine that already holds the data. Nothing is uploaded, nothing is registered anywhere.
python -m privateroute
PrivateRoute speaks the same interface as the real API, so an existing client needs one changed address.
base_url = "http://127.0.0.1:8787"
Everything behaves as it did. Under each message you can open what was actually transmitted, and check it.
no other change required
Which stand-in belongs to which person exists only in this machine’s memory, for the length of one request. It is never stored, never transmitted.
Each message carries a record of exactly what the API received. Open it on any turn, including old ones, and read the request that went out.
Before anything is sent, the outgoing request is scanned again for your original values. If one survived, the request is refused rather than forwarded.
An append-only record of which categories were replaced and how many — never the values themselves, and never the stand-ins.
A surrogate bank account passes its own checksum, a phone number keeps its punctuation, a first name keeps its gender where recognised. The model can still reason about the text.
Data pasted into someone else’s web interface alongside it is not protected. The proxy has to be in the path.
It will not catch every name with certainty. That is why the interface shows what was transmitted on every message — check it.
Under the GDPR these are different things. This does not replace a data processing agreement with your API provider.
Stand-ins keep the shape of what they replace, so the text stays coherent: titles, legal forms and descriptors pass through unchanged, and the answer does not come back about the wrong person.
Nowhere on a server. They live in your browser session and disappear when the tab closes. The database on this machine holds accounts and sign-in sessions, nothing else.
Yes. Pseudonymised data is still personal data under the GDPR, and context alone can re-identify someone. Treat this as data minimisation and defence in depth, not as a substitute for the paperwork.
It speaks the Anthropic Messages API, including streaming and tool calls, and forwards anything it does not need to touch untouched. Point the upstream address elsewhere and it forwards there instead.
The first account you create administers this instance. Everything runs locally; nothing is signed up for anywhere.