Security
Start with the limit
A security page is only worth reading if it opens with what it cannot do.
The limit
No end-to-end encryption
Messages travel over HTTPS and are stored in a form the server can read. Whoever administers that server is technically able to read them.
If your threat model includes the person running the server, use Signal. If it is the advertising economy you want out of, read on.
Accounts
Sign-in
Hashed, not stored
A password is kept as a one-way hash and cannot be recovered from it.
Codes expire
Single-use, time-limited, five attempts, then void.
One identity
A username and an email each belong to one account, held by a constraint in the database.
Clean expiry
A dead session returns you to sign-in, not to a half-authenticated screen.
Updates
The update path is the attack surface
An app that installs its own updates is only as safe as the channel delivering them.
Signed with one key
Android refuses an update signed with any other, so a substituted file cannot install over your copy.
Verified on arrival
Checked against the published fingerprint. A mismatch is deleted.
Publishing is signed
Carries a timestamp, so a captured publish cannot be replayed.
Our own files only
The server refuses to advertise an update hosted anywhere else.
Infrastructure
Where it runs
One server in Germany, behind automatically renewed certificates. The database is not exposed to the internet.
This site loads nothing it did not ship — no CDN, no font service, no analytics host — and says so in a policy the browser enforces.
Reporting
Found something
buildsevaa@gmail.com, with enough to reproduce it. No bounty — this is independent work — but reports are read, and fixes appear in the release notes.