End-to-end encrypted messaging · iOS

Messages that
only the recipients
can read.

SecureChat is a privacy-first iOS messenger. The relay is a blind packet dropbox: it stores and forwards opaque, client-encrypted, client-signed payloads. It never sees your plaintext, your keys, or your message bodies. No phone number. No email. No analytics. No media cloud. Source-available; self-hostable relay on a $5/month VPS.

Status: Public Beta. The relay, the iOS app, and the production-hardening story are shipping. Security audit is recommended before high-assurance claims.

How it works

Three layers, each with one job. The cryptography is the same one you would write yourself if you were starting from Apple's CryptoKit and a clean spec.

1. Identity

On first launch the app generates a Curve25519 keypair (signing + agreement) and stores the private key in the iOS Keychain. The public key is your identity; you share it as a base64 fingerprint. No email, no phone, no server-issued token.

2. Envelope

Outgoing messages are sealed with AES-GCM using a per-message symmetric key, which itself is encrypted to the recipient's Curve25519 public key. The result is signed with your signing key, then handed to the relay.

3. Drop

The relay accepts the packet (signed + sealed, plus metadata: sender, recipient, expiry), stores it for up to 24 h, and delivers it when the recipient next asks. The relay cannot read the payload; it cannot forge a sender; it cannot replay an old packet.

Privacy posture

The relay is designed so that a successful subpoena, a server-side breach, or a curious operator is structurally incapable of reading user messages. The list below is the negative space we have engineered out of the system.

What the relay never receives

Plaintext message bodies, plaintext keys, decrypted attachments, contact lists, message timestamps in any client-readable form beyond packet expiry, group membership, your identity fingerprint history.

What the relay does receive

Opaque, base64-encoded sealed payloads, signed envelopes, packet IDs, sender and recipient peer IDs (64-hex), and a TTL. All of this is opaque to the operator without the recipient's private key.

What the iOS app never sends

Crash reports, analytics events, IDFA, contacts, location, device identifiers, push tokens to third-party services, location of the user's phone number, push-notification content (the relay never receives it; only opaque packets).

What lives on your device only

The Curve25519 private key (iOS Keychain, ThisDeviceOnly), encrypted local message store, encrypted draft store, biometric app-lock state, Safety Number verifications.

Read the full privacy policy →

Get it

iOS TestFlight

iPhone or iPad, iOS 16 or newer. The first public beta is invite-only; tap to open TestFlight.

Join TestFlight →

Self-host the relay

The relay is a single Fastify container. Run it on a $5 VPS, point the iOS app at it, and you own the full stack.

Read the self-host guide →

Build from source

Both the iOS app and the relay are source-available under a fair license. The repo is the canonical source for the public beta.

View on GitHub →