Privacy policy

Privacy

SecureChat is built so that the relay, by design, never receives enough information to read your messages. This page describes what we collect, what we do not collect, and how to make a data-deletion request.

Summary

What we do not collect

  • Plaintext message bodies (we never see them)
  • Your Curve25519 private key (lives in iOS Keychain only)
  • Contact lists, phone number, email, name
  • Crash reports, analytics events, device identifiers
  • Location, IDFA, advertising identifiers
  • Third-party SDKs (no Firebase, no Sentry, no analytics)

What the relay does receive

  • Opaque, sealed, signed message envelopes
  • Sender and recipient peer IDs (64-hex)
  • Packet expiry timestamps (default 24h, configurable)
  • Standard TLS metadata (your IP, the relay's IP) — these are visible to any internet server you talk to and we treat them with the same care as any other operator

Self-host the relay

If you do not want the public relay to be involved at all, run your own. The relay is a single Fastify container, takes about 20 minutes to deploy on a fresh VPS, and the iOS app points at it via a configurable host. See the self-host guide.

Data retention

The relay stores sealed packets for at most 24 hours (configurable via MAX_TTL_SECONDS). Once a recipient acknowledges a packet, it is deleted immediately. Packets that expire without being acknowledged are removed by a periodic cleanup pass. The file-store implementation writes its state to DATA_DIR and does not retain a separate history.

Server logs

The relay logs HTTP-level access (method, path, status code, request ID) for the /v1/relay and /v1/admin surfaces. Logs do not include request bodies, peer IDs, or sealed payloads. Logs are written to stdout in JSON via pino and are not shipped off-host.

Data-deletion requests

To request deletion of any data we hold about you, email privacy@securechat.team. The only data the public relay holds about you is sealed packets and tombstones; both are removed within 24 hours of sending or receiving, respectively. We will reply within 30 days and confirm the deletion in writing.

Changes to this policy

Material changes to this policy will be announced in the iOS app and on the status page. The full history of this file is in the project repository: privacy.html on GitHub.