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.
Rides, shopping, and a wallet — built into the app in preview, designed so convenience never costs you your data.
An assistant designed around privacy: no profile built on you, nothing harvested to train on your life. Shipping when it meets our bar.
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
The same 11 entries our own team is held to internally — including the one place we're honest that something isn't fully solved yet. Filter by status, or open any entry for the full explanation and the technical detail behind it.
Vault — your notes, passwords, and documents — is stored only on your device, behind your biometric gate. 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.
End-to-end encryption protects what you say, not who you're talking to. Veil's relay can still see who is contacting whom — the room membership itself isn't hidden, even in an encrypted conversation. Genuine metadata privacy ("sealed sender" or similar) would mean replacing how the underlying protocol routes messages, not a setting we can flip — we've scoped what that would actually take and it's a major undertaking, not something we're claiming is solved. What we have fixed: the messaging server's access log used to record your source IP address alongside your account identifier on every request, with no size or retention limit at all, growing forever. Both are now fixed — the access log no longer records IP addresses at all, and everything else logged is hard-capped and auto-rotating. What remains: the server still has to know which room you're in and who else is in it, to deliver your messages to the right people. That's a real, ongoing limitation, not one we're claiming to have solved.
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 previously had no explicit level set, so it inherited the root logger's default and recorded the client's source IP address, account identifier, request path, and timing for every API call. An explicit override now sets that logger alone to a quieter level, 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) rather than growing forever. 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. Everything lives inside your device's own sandboxed storage, unlocked only by your biometric gate.
Vault items are persisted using your device's native secure storage (Keychain for notes and passwords; sandboxed app storage for documents), gated by on-device biometric authentication with a passcode fallback. 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.
We've built and tested a real WireGuard VPN tunnel — genuine handshake, genuine encrypted traffic, confirmed working on a physical device, not a mockup. It is an early-stage spike, by design: it isn't included in this build, has no user-facing on/off control yet, and we haven't finished auditing what the VPN server itself logs. We're not switching it on for anyone until all of that is true and reviewed.
WireGuard's standard protocol suite (Curve25519 key exchange, ChaCha20-Poly1305 encryption, BLAKE2s hashing) via a native iOS Network Extension. Verified end-to-end on a physical device: real handshake confirmed both client- and server-side, full-tunnel routing confirmed via the server's own packet counters. Explicitly Phase 1: single hardcoded test key pair, no consent or toggle UI, excluded from this build's entitlements. Server-side 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.
Calls use WebRTC with DTLS-SRTP encryption directly between your device and the person you're calling. There is no server in the call path that can decrypt the audio or video — our TURN relay, used only when a direct connection isn't possible, forwards encrypted packets it cannot read itself. That part is end-to-end encrypted — the same real guarantee messaging has. What calls don't yet have is messaging's device-level cryptographic identity: every Matrix conversation is tied to registered device keys for each Veil ID, while a call's signalling is authenticated only by a shared app secret, not by your specific identity. We also don't yet expose a way to manually verify device identity for calls (or messages) in the app — a real, open gap, not glossed over here.
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 real, different, weaker identity guarantee than messaging's Olm/Megolm device trust.
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.
Email us 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.
Request early accesscontact@veilsuperapp.com · support@veilsuperapp.com