Live build identity for every SecureChat component, known issues, and the
date of the last end-to-end test. The /healthz endpoint
below is the source of truth; this page is the human-readable mirror.
Live session, peer, and waitlist counters are intentionally not
shown here. They live on the operator-only
/healthz/internal endpoint, authenticated with the
same admin token that gates the admin UI.
Same X3DH + Double Ratchet core as the iOS / macOS apps
Status: not started
Known issues
Group chats are not yet implemented. The protocol
supports 1:1 only; multi-party is on the roadmap for Q4 2026.
Voice messages are not yet implemented. The
container format is scoped (Opus + 32 kbps mono), but the UI is
not wired up.
Push notifications are unreliable on iOS 18
background-restart conditions. We mitigate with a 25-minute
keep-alive; a proper push-pipeline fix is on the roadmap.
Relay is single-region (EU, Falkenstein).
Self-host or wait for multi-region if you need HA outside
Europe.
Security posture, live.
Every defence listed in the
Security model
section of the README is checked here. Maturity levels follow the
same definitions as the README (implemented means
the code ships in the current build and runs on real connections;
enforced means it rejects attack input by default,
not just logs it; tested means an automated test
covers the exact behaviour).
Defence
Maturity
Tested
Notes
End-to-end encryption (X3DH + Double Ratchet)
enforced
yes
libsignal-protocol-c; ratchet state on-device only.
WSS over Let's Encrypt
enforced
yes
wss://securechat.team/ws; Caddy + LE.
No message persistence on the relay
enforced
yes
Relay forwards ciphertext only; it never stores plaintext or even ciphertext after the connection closes.
Pairing-token TOFU + key pinning
enforced
yes
Pinned on first scan; user can revoke any time.
Peer-bound canonicalisation (Sprint 22+)
enforced
yes
Messages are bound to the ratchet session id; the relay cannot swap peers mid-stream.
Maturity axis: shipped
means available to every Public-Beta user today,
planned means
scoped and scheduled but the code does not exist yet, and
not started means
acknowledged but not yet scoped.
Milestone
Status
Target
Public Beta (TestFlight + notarised host)
shipped
Q3 2026
DSGVO Datenschutzerklärung (Sprint 24)
shipped
Q3 2026
Auftragsverarbeitungsvertrag (Sprint 25)
shipped
Q3 2026
Sub-processors list (Sprint 25.1)
shipped
Q3 2026
Incident-response playbook (Sprint 25.2)
shipped
Q3 2026
Status page (Sprint 22)
shipped
Q3 2026
Crash opt-in Sentry (Sprint 23)
shipped
Q3 2026
Group chats (X3DH sender keys)
planned
Q4 2026
Voice messages (Opus 32 kbps)
planned
Q4 2026
Multi-region relay (EU + US)
planned
Q4 2026
Web client (SPA)
not started
Q1 2027
SBOM + dependency audit in CI (Sprint 21)
planned
Q4 2026
End-to-end tests
Every release candidate runs the securechat-test-acceptance suite
(iPhone end-to-end + relay smoke). CI runs the relay smoke tests on
every push to main:
Found a vulnerability? Please email
security@securechat.team
rather than opening a public issue. See the full policy in our
SECURITY.md, including the PGP key and our response timeline.
DSGVO incident response
The incident-response playbook is at
docs/INCIDENT-RESPONSE.md.
Summary: any confirmed personal-data breach is reported to the
BfDI within 72 hours of detection, and affected users are notified
by email within 24 hours of the report being filed.