Before you hit send,
Veil already knows.
Veil sits in your browser and watches every text field on ChatGPT, Claude, and Gemini. The moment it spots something sensitive — a name, an email, a social security number — it flags it right where you typed it. The AI that does the detecting runs entirely on your own machine.
Under the hood
Three things happen
when you type
Every keystroke triggers a lightweight detection pipeline that runs entirely on your machine. No round trips, no waiting on a cloud API, no logs.
01
Regex pre-scan
Patterns with a predictable format — emails, SSNs, API keys, phone numbers — are caught instantly by built-in regex rules. No model needed, zero latency.
02
GLiNER2 NER model
For context-dependent PII — names, organisations, addresses — Veil calls a local Python server running GLiNER2. The model sits on your CPU or GPU. Nothing reaches the internet.
03
Merge & highlight
Results from both passes are merged, overlapping spans are resolved, and the detections are rendered as inline highlights right inside the input field — no popups, no dialogs.
What you get
Built for the way people
actually use AI
Veil handles the weird edge cases — rich-text editors, content-editable divs, fast typers, slow models — because that's where real usage happens.
Runs 100% locally
The GLiNER2 model lives on your machine. Your text never touches a third-party server for detection — not even Veil's.
Regex fallback
Even if the local server isn't running, Veil catches emails, phone numbers, API keys, SSNs, and more via fast built-in patterns.
Inline redaction
Click a highlight to replace it with a safe label like
[PERSON]
or [SSN].
No modal windows. No friction.
Content-editable aware
Works inside Gemini's fancy text box, Notion, and any
contenteditable
element — not just plain textareas.
Health monitoring
The extension watches the local server and lets you know if it goes down. No silent failures — you always know whether detection is active.
Cross-platform autostart
The local server can start automatically on login on Linux, macOS, and Windows. You set it once and forget about it.
What gets detected
Nine PII types out of the box,
plus custom patterns
GLiNER2 handles the context-dependent stuff. Regex handles the structured stuff. Together they cover the data you really don't want leaking into a model's training corpus.
model
regex
regex
model
regex
regex
model
model
model
regex
Privacy guarantees
The things we'll never do
No cloud calls for detection
Detection runs on GLiNER2, which lives on your machine at
127.0.0.1:8765. That address is loopback-only —
physically unreachable from outside your device.
No telemetry, ever
Veil has no analytics, no crash reporting, no usage metrics. We don't know how many people are using it, let alone what they're typing. That's by design.
Keys stay on your device
Any API keys you configure are stored in
chrome.storage.local — not synced across devices,
not accessible to other extensions, not sent anywhere.
Get started in minutes
Two commands and a
Chrome extension load.
Clone the repo, run the setup script, load the extension in developer mode. That's the whole process.