The PII never
leaves the device.
local-pii redacts names, emails, phones and more on device — only placeholders reach your LLM, and the reply is rehydrated locally. The mapping never leaves.
Ontem encontrei João Silva. Tel +49 151 12345678.
Ontem encontrei [GIVEN_NAME_1] [SURNAME_1]. Tel [PHONE_1].
On-device model
A 14.7 MB Rampart model runs in your app or the browser — names, addresses and IDs, fully offline.
Tool calls, solved
Placeholders survive JSON and tool-call arguments. Your tools run with real values; the provider never sees them.
Any LLM
Drop-in adapters for the Vercel AI SDK and OpenAI / Grok. Anonymize, call, rehydrate — you barely change your code.
Zero-dep core
The detection + placeholder core has no runtime dependencies and runs in React Native, the browser and Node.
note ─▶ rules (email · phone · card · IBAN · SSN · IP)
─▶ your dictionary
─▶ Rampart NER (names · addresses · IDs)
─▶ placeholders ─▶ LLM
│
reply ─▶ rehydrate(reply) ─▶ restored textSee it redact, live.
Type a note and watch PII turn to placeholders in your browser — the model runs on device.