voidly
Veil · the private channel

The relay can’t read a word.

End-to-end encrypted messages, calls and group channels. Your keys are generated on your device and never leave it. And when a network turns hostile, Veil is still reachable — over Tor, through bridges we run ourselves.

No phone number · no App Store · free · built on Voidly Relay · Veil is a messenger, not a VPN — that’s Voidly VPN.

01 · why

Why Veil?

Most messaging apps rely on centralized servers that can read your messages. Even “encrypted” apps often hold the keys server-side or require phone numbers that link to your real identity.

Veil is different:

  • True E2E — keys generated on your device, never uploaded
  • No phone number — cryptographic identity only (did:voidly:)
  • Voice & video calls — peer-to-peer WebRTC, encrypted signaling
  • Post-quantum — ML-KEM-768 resists future quantum computer attacks
  • Forward secrecy — every message uses a unique key via Double Ratchet
  • Metadata-minimized routing — automatic, no setting; drop boxes store no sender/recipient for updated peers (residuals disclosed)
  • Deniable auth — neither party can prove the other sent a message
  • No App Store — works as a PWA, bypassing Apple review
02 · what it does

Messaging Features

Everything you expect from a modern messenger, with encryption by default.

Voice & Video Calls

Peer-to-peer WebRTC calls with STUN/TURN traversal. Mute, toggle video, see call duration. Incoming call notifications.

Voice Messages

Record and send voice notes up to 30 seconds. Playback with speed control (1x, 1.25x, 1.5x, 2x) and waveform visualization.

Image Sharing

Send photos with inline preview. Full-screen viewer with zoom. Images are encrypted end-to-end like all other messages.

Emoji Reactions

React to any message with quick emoji (👍 ❤️ 😂 😮 😢 🔥). Reactions sync in real-time and show counts.

Reply & Quote

Reply to specific messages with quoted preview. Keeps conversation threads clear even in fast-moving chats.

Disappearing Messages

Set messages to auto-delete after 5 minutes, 1 hour, 24 hours, or 7 days. Per-conversation timer.

Read Receipts

See when messages are sent (✓), delivered (✓✓), and read (✓✓ blue). Know your message got through.

Typing Indicators

See when the other person is typing. Real-time animated dots so conversations flow naturally.

Message Search

Full-text search across all conversations. Results show contact name, date, and highlighted match with context.

Message Forwarding

Forward any message to another contact. Search and select from your contact list — the message is re-encrypted for the new recipient.

Link Previews

URLs in messages show rich previews with title, description, and image. Previews are fetched client-side, so the relay never sees which links you share (the linked site still sees the fetch).

Presence Indicators

See when contacts are online, idle, or offline. Last-seen timestamps update automatically via shared polling.

03 · what it protects

Security & Privacy

Your messages, your keys, your device — and an honest account of what the relay can still see.

We publish the full threat model, residual leaks, and privacy policy: what the relay can and can’t see · privacy policy.

Veil works when your network doesn’t.

Three ways in, for three strengths of adversary. Normally you use the web address. If the domain is DNS-poisoned or SNI-blocked, Veil is also a Tor onion service — the app and its message rail both, so you can still send, not just load a page. In Tor Browser the normal address offers the onion automatically. If Tor itself is blocked, we run obfs4 bridges to get you onto it.

The onion serves the byte-identical build to the normal site, enforced by a publish gate that refuses to ship on a version mismatch. Someone routing around censorship gets the same client as everyone else, or an honest holding page — never a quietly degraded one.

What it does not do: this is not anonymity, and it does not survive the API itself going down — the onion host still reaches the API over the clearnet. It defeats blocking of your path.

Double Ratchet E2E

Same forward secrecy algorithm as Signal. Every message gets a unique key — compromise one, and past/future messages stay encrypted.

Post-Quantum Protection

ML-KEM-768 + X25519 hybrid key exchange. Resistant to harvest-now-decrypt-later quantum attacks (NIST FIPS 203).

Drop-Box Routing

There is no setting for this. Steady-state 1:1 messages route through opaque per-pair mailboxes — no sender or recipient stored at rest, so a seized relay DB holds no who-talks-to-whom edge for updated peers. Residuals (IP/timing, legacy-build peers, and first contact, which is linkable by anyone from the recipient's published keys) are disclosed in full.

Deniable Authentication

HMAC-SHA256 shared-secret auth. Neither party can prove the other sent a message — plausible deniability under duress.

Cover Traffic (opt-in)

Its own switch in Settings, off until you turn it on. Decoy packets and a constant send cadence blur when you are actually communicating. This makes timing correlation costly, not impossible — it is not a mixnet.

TOFU Key Pinning

Trust-on-first-use key verification. Pin a contact's public keys and get alerted if they change — detects man-in-the-middle attacks.

Encrypted Channels

Sender-key E2E group encryption — only members can read messages. Standard channels register the channel name and each member's DID with the relay; metadata-clean private groups — the default when you create one — leave no server-side group record at all.

No App Store Required

Install from Safari — add to Home Screen. Works as a standalone app with full-screen display, push notifications, and offline support.

QR Identity Exchange

Share your cryptographic identity via QR code. No phone number, no email — just scan and connect.

04 · groups

Encrypted Group Channels

Create & manage

  • Create encrypted channels with name and description
  • Invite members by DID — accept or decline invitations
  • View member list with roles
  • Leave channels at any time

Encryption & verification

  • Sender-key E2E — only members can decrypt message content
  • Admin-signed, fork-rejecting membership rosters
  • Attestations — cryptographically signed claims for censorship verification
  • In-channel censorship reporting — report blocked domains with method and country
  • Private groups are the default and leave no server-side group record; a standard channel is the opt-out, and registers the channel name + member DIDs with the relay
05 · your data

Data Portability & Sync

Identity & History Backup

Export a passphrase-encrypted identity backup to restore your keys and identity on a new device, and an optional passphrase-encrypted history backup (.veilhist) — the only way to carry chat history across devices. Restoring identity alone does not recover messages.

Cloud Settings Sync

Sync display name, theme preference, and settings to the encrypted relay — settings only, not messages. Restore on any device.

Offline Queue

Messages sent offline are queued in IndexedDB and automatically delivered when connectivity returns.

06 · measured against others

Encryption Comparison

E2E Encryption
Veil
Signal
Telegram
~
WhatsApp
Forward Secrecy
Veil
Signal
Telegram
WhatsApp
Post-Quantum
Veil
Signal
~
Telegram
WhatsApp
No Phone Number
Veil
Signal
Telegram
WhatsApp
No stored (sender, recipient) edge †
Veil
~
Signal
Telegram
WhatsApp
Deniable Auth
Veil
Signal
Telegram
WhatsApp
Cover Traffic ‡
Veil
~
Signal
Telegram
WhatsApp
Voice/Video Calls
Veil
Signal
Telegram
WhatsApp
Disappearing Messages
Veil
Signal
Telegram
~
WhatsApp
No App Store
Veil
Signal
Telegram
WhatsApp
Open Protocol
Veil
Signal
Telegram
~
WhatsApp

~ = partial support. Telegram E2E only in “Secret Chats”. Signal post-quantum is PQXDH (recently added). Telegram disappearing only in secret chats.

† Veil drop-box routing has no toggle — the rail engages automatically once a peer’s rendezvous seed is known (no sender/recipient stored for updated 1:1 peers); residuals — IP/timing, legacy-build peers, and first contact, where BOTH ends are recoverable by a third party because the inbox and its key derive from the recipient’s published keys — are disclosed at privacy-model and, in the app, metadata-privacy. ‡ Veil cover traffic is an opt-in timing-blur toggle, independent of the privacy level, and not a mixnet.

07 · how it works

How It Works

1

Create Your Identity

Open the app and generate an Ed25519 keypair. Your identity is a did:voidly: address derived from your public key. No email or phone number required.

2

Exchange QR Codes

Share your QR code in person, paste your DID, or search the directory by name. X3DH key agreement sets up a Double Ratchet session automatically.

3

Send Encrypted Messages

Type and send. Each message is encrypted with a unique ratchet key and padded to a fixed size class. There is no setting for this. Steady-state 1:1 messages route through opaque per-pair mailboxes with no sender or recipient stored at rest. Messages arrive in near real-time.

4

Call, React, Share

Make voice and video calls, send voice notes and photos, react with emoji, set disappearing timers. All encrypted end-to-end.

5

Join Encrypted Channels

Create group channels with sender-key E2E encryption — only members can decrypt message content. New groups are private by default and leave no server-side group record; you can opt out to a standard channel, whose name and members are registered with the relay.

08 · install

Install on iPhone

Requires iOS 16.4+ and Safari. Works on any iPhone from iPhone 8 onwards.

1

Open in Safari

Visit msg.voidly.ai on your iPhone

2

Tap Share

Tap the share button (square with arrow)

3

Add to Home Screen

Scroll down and tap "Add to Home Screen"

4

Launch

Open from your Home Screen — full app experience

Also works on: Android (Chrome), macOS (Safari/Chrome), Windows (Edge/Chrome), Linux (any browser). On Android, Chrome will prompt you to install the PWA automatically.

Open Veil
09 · everything else

Additional Features

Contact Management

Search the directory, add by DID or QR code, edit names, block/unblock. Trust badges show verified contacts.

Themes

Dark, light, or system-matched theme. Your preference syncs across devices.

Push Notifications

Native browser notifications for new messages. Toggle on or off in settings.

Key Rotation

Generate fresh keypairs at any time. Old sessions continue working while new ones use updated keys.

Trust Scoring

Contacts earn trust scores based on relay interactions. Visual trust badges show verification level at a glance.

Layout Diagnostics

Built-in viewport and safe-area diagnostics for debugging display issues on any device.

10 · under the hood

Technical Details

Encryption SDK@voidly/agent-sdk v3.36.0
Key ExchangeX3DH (X25519) + ML-KEM-768 (NIST FIPS 203)
Message EncryptionDouble Ratchet → XSalsa20-Poly1305 per message
SignaturesEd25519 (tweetnacl)
Deniable AuthHMAC-SHA256 with shared DH secret
Channel EncryptionSender keys (per-sender chain + Ed25519, XSalsa20-Poly1305)
Identitydid:voidly:{base58} — self-certifying, no central authority
Voice/VideoWebRTC (Opus audio, VP8/VP9/H264 video, STUN/TURN)
StorageIndexedDB (encrypted ratchet state, contacts, messages)
TransportSSE primary, long-poll fallback, polling tertiary
Relayapi.voidly.ai (Cloudflare Worker + D1)
OfflineService Worker shell + IndexedDB message queue
Cover TrafficOpt-in decoy packets + constant cadence (Maximum tier; timing-blur, not a mixnet)
Metadata routingOpt-in per-pair drop boxes (no sender/recipient at rest); residuals disclosed
ThemesDark / Light / System (persisted + cloud synced)
11 · questions

Frequently Asked Questions

Ready to message privately?

No account needed. No phone number. Just open and start.

Open Veil