Veil is a privacy-first super app: end-to-end encrypted messaging, private voice and video calls, and everyday services — with zero data harvesting and no advertising trackers. Not as a setting. As the foundation.
No phone number. No email address. Your Veil ID is anonymous by design.
Living network
Every packet tells a story of privacy. Hover the field to see the network respond.
The app
Every feature carries its real status — the same three grades we hold ourselves to in development. Green is proven. Blue is in testing. Gold is on its way.
End-to-end encrypted text and reactions, proven on real devices — including across app restarts. The server only ever sees ciphertext.
Private calls over encrypted WebRTC, connected peer-to-peer wherever the network allows. Your call history stays on your device.
Photos, video, and voice notes — fully end-to-end encrypted, verified on real devices.
Connect by exchanging anonymous IDs — no phone number, no email required. We don't build a social graph from your address book.
Real turn-by-turn walking, cycling, and driving directions — live GPS, verified on real devices including a full real-world network test.
Live crypto, forex, and commodities pricing and trends — real data, verified on real devices.
Built-in tracker blocking and automatic cookie-consent rejection — verified on real devices, including over a live cellular network.
Secure notes, passwords, and documents — locked behind Face ID, stored only on your device. Verified on real devices.
Real flight search, including genuine connecting itineraries — verified live in the app. Booking hands off to Google Flights; Veil never sees your itinerary.
Search YouTube without your query ever reaching Google directly — proxied through Veil. Playback uses YouTube's own standard player, the same as watching YouTube anywhere else.
A real, working marketplace with live Stripe payments — verified end-to-end. Orders are used only to fulfil that specific purchase, never built into a profile.
Ride booking and a built-in wallet — included in the app in preview, designed so convenience never costs you your data.
Chat with a real AI assistant — no profile built on you, and the third party generating responses never sees your Veil ID. Remembers context across sessions; wipe anytime.
Radical transparency
No mystique — here is the honest journey, stated plainly. Tap any step to see exactly what happens there, what data exists at that point, and what Veil never sees.
What happens: Your message is sealed on-device using the Matrix protocol's Olm/Megolm encryption before it's ever transmitted.
What data exists: Plaintext — briefly, only on this device.
What Veil never sees: The message content, at any point after this.
What happens: The encrypted packet is routed toward the recipient's device.
What data exists: Ciphertext, plus the routing information any relay needs — which accounts are in the conversation, and when a message was sent.
What Veil never sees: The message content. Honest caveat: routing metadata is real and disclosed, not hidden — see the metadata section below.
What happens: The recipient's own device keys decrypt the message locally.
What data exists: Plaintext again — only on their device.
What Veil never sees: The decrypted message, at any point in transit.
We couldn't read your messages if we wanted to. That's the point.
What happens: Your device and theirs negotiate a direct connection (WebRTC).
What data exists: Only connection-setup information (offer/answer/network candidates), authenticated by a shared app secret.
What Veil never sees: Audio or video content — it doesn't exist yet at this step.
What happens: Audio and video travel encrypted end-to-end (DTLS-SRTP), direct between devices wherever possible.
What data exists: If a direct connection isn't possible, our relay forwards encrypted packets it cannot open.
What Veil never sees: The audio or video content, ever — the relay only ever sees opaque encrypted packets.
What happens: The call ends; nothing about it is recorded server-side.
What data exists: Your own call history, stored only on your device.
What Veil never sees: A record of the call — there's no server-side call log to see it in.
No recordings, no server-side call log — your history is yours alone.
What this means: No identifier exists that could link your activity across apps or the web.
How it's enforced: No advertising SDK exists anywhere in the shipped app — a dependency-level fact, not a setting you could turn off.
What Veil never sees: An advertising identifier — there isn't one to see.
What this means: Analytics and advertising trackers are blocked before they load, inside Veil Browser.
How it's enforced: Requests to known tracker and analytics domains are intercepted and blocked automatically.
What Veil never sees: Your browsing activity — there's no tracking pipeline collecting it in the first place.
What this means: Veil Technologies Ltd's business doesn't depend on your data.
How it's enforced: No analytics trackers, no ad SDKs, no data-broker relationships exist to sell through.
What Veil never sees: A profile built on your activity to sell — none exists.
Our business model is your support — not your data.
The evidence bar
Most apps tell you everything works. We hold a stricter rule: a claim ships only when the technology behind it is proven. This board is the honest state of Veil — including what isn't finished yet.
This board is updated as our testing progresses. If a capability isn't marked proven here, we don't advertise it anywhere else either.
The full architecture
These are the same 14 areas we hold ourselves accountable for internally. Each entry starts with the simple truth about what Veil does today — including any limitation or trade-off that matters — followed by technical detail for anyone who wants to understand how it works.
Vault — your notes, passwords, and documents — is stored only on your device, protected by your Veil PIN (with biometrics or a recovery key as alternates). It is never uploaded or transmitted anywhere. Messaging and calls both have real end-to-end encryption, verified on real devices: content is unreadable to Veil's own infrastructure, not just to outside observers.
Vault uses your device's own secure storage and makes no network request to store or retrieve its contents. Messaging uses genuine end-to-end encryption via the Matrix protocol's Olm/Megolm implementation (a real FFI binding to matrix-rust-sdk, not a stub) — verified on physical devices for text, reactions, images, video, and voice notes. Calls use WebRTC's own DTLS-SRTP encryption directly between devices.
When you message someone on Veil, your messages — text, reactions, photos, videos, and voice notes — are end-to-end encrypted: content is unreadable to Veil's own infrastructure, not just to outside observers. This was built, broken, rebuilt, and verified across real testing on physical devices before we were willing to say so here.
Messaging runs on the Matrix protocol. Conversations use genuine end-to-end encryption (Olm for key exchange, Megolm for message content) via matrix-rust-sdk, verified via three consecutive clean passes on simulator and confirmed on physical devices for every content type this app sends.
Voice and video calls use WebRTC with DTLS-SRTP encryption between the devices in the call. If a direct connection cannot be made, a relay forwards the encrypted traffic without having the key needed to read the audio or video.
There is an important distinction between call encryption and call identity. Messaging is tied to registered device cryptographic keys. Call signalling currently uses a shared Veil application secret rather than a cryptographic identity belonging specifically to your device. That means the content of a call is strongly encrypted, but the identity assurance around the call is currently weaker than it is for messaging.
Veil also does not yet provide manual device verification for calls. When a relay is needed, our relay provider retains ordinary connection metadata such as relaying IP, transport type, session timing and data volume. It does not retain or inspect call content.
WebRTC peer connections negotiate DTLS-SRTP automatically; media never transits in plaintext at any point between devices. The TURN relay only ever sees encrypted RTP packets when a direct peer connection isn't possible. Call signalling (offer/answer/ICE candidates) is authenticated via a shared Worker secret, not per-device Matrix keys — a different, weaker identity guarantee than messaging's Olm/Megolm device trust.
End-to-end encryption protects what you say. It doesn't hide the fact that your Veil ID and another Veil ID share a conversation — Veil's relay necessarily processes that much to route encrypted messages to the right people, the same way any messaging service has to know where to deliver a message. That's routing metadata, not knowledge of who you are: a Veil ID isn't inherently linked to your real-world identity, and the room-membership fact alone doesn't tell us that.
The Cloudflare Worker that handles calls and contacts contains no code that writes IP addresses, timestamps, or message content to persistent storage. The Synapse homeserver's access logger is set to a level that does not record source IP address, account identifier, request path, or timing for API calls — verified directly by making a live request and confirming no log line was produced for it. Message content, access tokens, and room-membership state are not logged at either level. The server's log driver is separately hard-capped and auto-rotating (roughly 50MB total), not unbounded. Room membership itself remains visible to the homeserver by protocol design — genuine metadata-hidden messaging would require replacing that delivery model entirely.
Vault — your secure notes, passwords, and documents — never leaves your device. There is no upload and no server-side copy — nothing for Veil to store, read, or lose. Once you set up a Veil PIN, everything in Vault is encrypted with a real Data Encryption Key (DEK) that only your PIN or your recovery key can unlock — not just gated behind a lock screen, genuinely unreadable without one of those two. Biometrics are an optional, faster way to unlock the same key, never a requirement. If you haven't set up a Veil PIN yet, Vault falls back to your device's own Face ID/passcode gate.
Vault items are persisted using your device's native secure storage (Keychain for notes and passwords; sandboxed app storage for documents, each file individually encrypted at rest). Once a Veil PIN is set up, a real DEK (generated on-device, wrapped independently under an Argon2id-derived PIN key and a separate recovery-key-derived key) encrypts every item before it touches storage — this is real content encryption, not just an access-control gate in front of already-readable data. Verified end-to-end in testing: real PIN setup, real DEK, a real imported document confirmed unreadable at the raw file level and correctly decrypting after a full app relaunch. Not yet confirmed on a physical device — testing so far has used a full device simulator, and physical-device confirmation is still in progress. No network request is made to store or retrieve Vault contents.
Sending, receiving, and viewing transaction history in Veil Wallet all use real interface code. What isn't real yet: live payment infrastructure. Balances and the VLT token itself are simulated while we finalise partnerships with payment providers. No real money moves through Wallet today.
Wallet's UI and local state management are fully implemented. No connection exists yet to any payment processor, blockchain, or financial institution — VLT balances are stored and updated locally, not backed by real value or a real ledger.
Veil Browser blocks requests to a known list of tracker and analytics domains before they load, and automatically rejects cookie-consent banners from major providers. Third-party cookies and on-device storage are disabled for every page you visit. No browsing history is saved — not on your device, not on our servers. Fingerprinting resistance now covers canvas, WebGL, AudioContext, font-enumeration, installed plugins, and browser language — the deliberate exception is screen resolution, left alone since spoofing it risks breaking real responsive layouts for limited privacy benefit on a mobile device.
Tracker blocking intercepts fetch and XMLHttpRequest calls, removing matching script/image/iframe tags for a maintained list of tracker and analytics domains. Fingerprinting resistance: canvas reads get per-session pixel noise, WebGL's getParameter returns a generic vendor/renderer, AudioContext channel data gets small per-sample noise, installed plugins are hidden and browser language is normalised. There is no custom Veil-operated DNS resolver — DNS resolution uses your device's normal network configuration.
When you use the AI Assistant, your message and limited relevant context are sent through a Veil-run proxy to Anthropic's Claude. That context can include upcoming Tasks and Calendar events and coarse weather information where you have already allowed location access. Anthropic is not sent your Veil ID.
Separately, Veil stores the conversation transcript against your Veil ID so the assistant can preserve context. Conversation history is limited to the most recent 60 messages and expires after 90 days. Starting a New Session deletes the stored conversation.
The assistant can propose creating a Task, Calendar event or Note, but nothing new is saved until you confirm it.
A dedicated Cloudflare Worker proxy forwards chat requests verbatim to Anthropic's API using a server-side key, never including the Veil ID or any user identifier. The conversation transcript is persisted in Cloudflare Worker KV, keyed to the Veil ID, capped at the most recent 60 messages, with a 90-day expiry. Deleting all messages deletes the underlying key outright. A small separate store holds durable memory facts (e.g. your name), same 90-day expiry, viewable and deletable individually in the app.
Notes use an on-device-only privacy model. They can be linked to Tasks or Calendar events, but the Note itself and those local relationships remain on the device.
The trade-off is straightforward: because Notes are not uploaded, they do not currently follow you to another device.
Notes are stored via on-device storage only, with no network call made to save or load them. Relationships between Notes/Tasks/Calendar events are a small, shared, type-agnostic graph, also stored only on-device.
When you ask Discover about a place, Veil sends the place information needed for that request through its AI proxy to Claude. For Nearby, this can include an approximate town or neighbourhood-level location. Your Veil ID is not included.
Discover content is generated rather than taken from a checked historical database, so specific historical claims should not be treated as guaranteed facts.
When a suitable real-world photograph is available through Wikimedia Commons, the app can retrieve it directly from Wikimedia and display the photographer and licence information.
Discover content is generated fresh each time and never saved. Location resolution for Nearby is restricted to a coarse, neighbourhood-level layer — never more precise than a town or neighbourhood name reaches Claude. Neither the Veil ID nor any other user identifier is included in the request.
Veil VPN encrypts traffic between your device and your selected region using WireGuard. London, Amsterdam, Frankfurt and New York are four logical regions, each backed by a primary and a same-region backup server. We have physically verified real handshakes, the expected exit IP and location, DNS travelling through the protected path, region switching, and transitions between Wi-Fi and mobile data.
If the server you're connected to becomes unreachable, your traffic is not exposed to the open internet — it stays blocked, and Veil automatically reconnects you through a healthy backup server in the same region, typically within seconds. This is physically proven end-to-end, including with the device locked and Veil running in the background the whole time. Veil never silently moves you to a different region: if every server in your chosen region is unreachable, your traffic stays blocked until a server in that region recovers.
Two things remain important enough to state plainly.
First, this protects you specifically while Veil's VPN connection is running. It doesn't yet cover every failure mode: if the VPN connection itself is stopped or crashes outright, the device can currently fall back to your normal internet connection rather than staying blocked. A stricter setting that closes this gap too has been built and tested separately, but it is not the default protection shipped today.
Second, we have not yet completed the same independent audit of connection-level logging on Veil's own VPN infrastructure that we have carried out for some other parts of the service. Until that work is complete, we treat the server-side logging posture as unverified rather than assuming it is clean.
WireGuard's standard protocol suite (Curve25519 key exchange, ChaCha20-Poly1305 encryption, BLAKE2s hashing) via a native iOS Network Extension. Four logical regions (London, Amsterdam, Frankfurt, New York), each served by a primary node with a same-region secondary. Verified end-to-end on a physical device, locked and backgrounded throughout: the active server's connection was deliberately broken, ordinary traffic remained blocked rather than falling back to the open internet, the Network Extension itself detected the failure, resolved a healthy same-region backup, and re-established a genuine WireGuard handshake automatically — restoring protection with no user action taken. The same server-side fallback logic was independently verified across all four regions; the full physical device test (including background/locked execution) was run on London. No cross-region fallback exists anywhere in this path: if every server in a region fails, the client stays blocked rather than being moved elsewhere. Exit IP/geolocation correct in every region, DNS-leak testing over real cellular data showed zero non-Cloudflare resolvers, and Wi-Fi/cellular handover confirmed maintaining protection with no manual reconnect. This same-region recovery is independent of the tunnel's own `includeAllNetworks` kill-switch setting, which still defaults to `false` for every shipped session today — a deliberate 2026-07-29 decision after an earlier fail-closed configuration made server-switching unreliable — and which only governs the separate case of the VPN connection itself being fully stopped. A strict kill-switch mode closing that separate case has been built and proven in an experimental dev lane, not yet the shipped default. Server-side connection-logging posture has not yet been audited the way the messaging server's has — treat it as unverified until it is.
When you get a Veil notification, it says someone sent you a message — never what the message contains. The actual content stays encrypted on your device and is never included in what we send to Apple's notification service.
Verified on a real physical device via a genuine EAS build, not a simulator result. The notification body is a fixed, generic string ("[name] sent you a message"); the real message text is never passed to the push-sending code path.
Blocking someone stops them at the server level — Veil's messaging server is told to ignore them for your account, the same mechanism the underlying protocol provides for this, not something we bolted on client-side that a modified app could ignore. Reporting a user works the way privacy-respecting messaging apps have to: since we can't read your messages, a report only ever includes what you explicitly choose to attach — you see exactly what would be sent before you send it, every time.
Block sets the account's m.ignored_user_list on the Matrix homeserver (server-enforced filtering, not a client-side list) and leaves the shared conversation. Report evidence, when included, is the already-decrypted plaintext as displayed on the reporting device — the encrypted content itself is never touched or decrypted by anything server-side. Reports are stored for 90 days for review.
Veil Mail follows the same zero-access model ProtonMail itself uses, verified against our real production server, not just designed. Mail between two Veil users is encrypted on your device before it's ever sent — our server never holds a readable copy, not even momentarily, the same guarantee messaging has. Mail arriving from outside Veil (Gmail, iCloud, Proton, anyone) is encrypted the instant it reaches our server, before it's written to storage — our server holds it in plaintext only for the fraction of a second the delivery itself takes, never at rest. Mail you send to someone outside Veil is protected in transit only (TLS), readable at their own provider the same way it would be anywhere else — a physical property of how ordinary email works, not a gap in our effort, and the same limitation ProtonMail states plainly for its own outbound mail.
Self-hosted Stalwart mail server, real JMAP backend. Client-side keypair (X25519, via libsodium's crypto_box_seal) generated and stored on-device at first Mail setup. Veil-to-Veil sends are sealed to the recipient's registered public key before sending. Outside-world mail is intercepted by a custom mail-server hook at the SMTP delivery stage — before the message is committed to any mailbox — which seals the body to the recipient's public key. Both flows verified end-to-end against the live server: a real external delivery and a real Veil-to-Veil send both decrypt correctly on the recipient's device.
Our philosophy
Technology should serve people. People should never become products.
Privacy is not a premium feature — it is a human right, recognised in Article 12 of the Universal Declaration of Human Rights. Veil exists to make that right practical in everyday life, and Veil Technologies Ltd is structured with a commitment to community benefit, not data extraction.
Your conversations, your keys, your history — held by you, not by us.
Nothing is advertised until the technology behind it is proven. Our evidence board is public.
Funded by the people who use it, with a share of revenue committed back to community benefit.
Early access
Veil is in active pre-release development by Veil Technologies Ltd, with a TestFlight beta as the next milestone.
Leave your email and you're on the early access list. True to form: we store your address for invitations only, share it with no one, and delete it on request.
contact@veilsuperapp.com · support@veilsuperapp.com