Why E2E chat is not on the web
Buzzio will never ship end-to-end private chat in a normal browser client.
web.buzzio.dev is a phone-approved linked companion for shared surfaces (permanent open-history groups, Communities, Broadcast, and service bot DMs). It is not a second sealed client. This page explains the mechanism and the product refusal — not a roadmap item.
Product rule (non-negotiable)
| Surface | Phone app | Linked web (web.buzzio.dev) |
|---|---|---|
| 1-to-1 chat (sealed) | Yes | No |
| E2E groups / Whisper private chat | Yes | No |
| Encrypted calls | Yes | No |
| Private Vault / recovery phrase / messaging keys | Phone-only | Never |
| Open-history groups | Yes | Yes (scoped session) |
| Communities | Yes | Yes (scoped session) |
| Broadcast channels | Yes | Yes (scoped session) |
| Service bots (search + 1:1 bot DM) | Yes | Yes (scoped session, bot) |
| Note to Self | Yes (local) | Yes (notes-only key + 3-day mailbox; not sealed 1:1) |
| Saved Messages | Yes (Premium write) | Yes (saved key + durable ciphertext; not sealed 1:1) |
Linked web sessions are time-boxed, revocable from the phone, and use an opaque session token. They do not claim exclusive device login and do not bump device_session_epoch. See engineering note docs/LINKED_WEB_SESSION.md in the app repo (internal).
What “E2E” means for Buzzio sealed chat
For sealed surfaces, Buzzio’s model is:
- 12-word mnemonic generated on-device → messaging keys derived locally.
- Ciphertext produced on-device (X3DH + Double Ratchet for 1:1; sender keys for E2E groups).
- Relay path aimed at blind delivery, not a durable readable cloud inbox.
- Readable private history in device SQLCipher, not operator-readable sealed archives.
If private keys or decrypted sealed history move into a browser tab, the endpoint changes even when wire formats still look encrypted. Buzzio refuses to call that “the same E2E.”
Why browsers fail the sealed threat model
A native app can use OS secure storage and a constrained process. A browser page is a shared execution environment.
| Threat | Effect on “browser E2E” |
|---|---|
| Browser extensions | Can read DOM, storage, and often page memory |
| XSS / origin compromise | Script on web.buzzio.dev could exfiltrate keys or plaintext |
| JS supply chain / CDN updates | Client code changes without a store-review gate like mobile apps |
| Shared PCs / synced profiles | Session leftovers, screenshots, corporate monitoring |
| DevTools / memory inspection | Keys held in JS heap are easier to extract than hardware-backed phone keys |
Ceiling: Cryptography in JavaScript is possible. Honest sealed E2E in a general-purpose browser is not under Buzzio’s threat model for private chat. Shipping it would either put long-term secrets in a weaker endpoint or quietly turn “E2E web” into decrypted companion access.
What linked web *is* (and is not)
Is: A convenience client for rooms that are already shared by design — TLS in transit, plaintext (or product-readable) content on Buzzio servers so moderation, backscroll, discovery, and multi-device shared history can work. See Sealed vs shared.
Also: Note to Self on linked web — notes-only session key from the phone, device history package on link, and a 3-day encrypted mailbox for live phone↔web messages. Buzzio does not keep a permanent Note to Self cloud vault. See Note to Self.
Also: Saved Messages on linked web — the phone wraps a stable Saved Messages key on link (does not rotate on every browser). Ciphertext stays durable; the browser holds the key only for that session. This is companion ciphertext access, not sealed 1:1. See Saved Messages.
Is not:
- A place to enter or store the recovery phrase
- A decryptor for 1-to-1 / Whisper / E2E group ciphertext
- Proof that “Buzzio has full WhatsApp Web for private chat”
- A substitute for phone-bound exclusive session controls
- A durable encrypted notes archive on Buzzio servers
Phone remains the authority: scan dual QR (challenge → confirm), choose duration, revoke anytime.
Why Buzzio will not “add it later”
Other products optimize for desktop parity. Buzzio optimizes for an honest sealed lane.
Adding sealed chat to the browser would require one of:
- Exporting seed or long-term keys to web storage / memory
- Server-side or companion decryption that breaks the sealed story
- Weakening phone-first identity so a browser equals a full second device
All three conflict with Privacy guarantees and the sealed vs shared split. The refusal is permanent product policy, not temporary engineering debt.
How to verify the claim
| Check | Expectation |
|---|---|
| Linked web UI / API scopes | OHG, community, broadcast, service bot DM, Note to Self mailbox, and Saved Messages paths succeed with a web session token |
| Sealed send / decrypt APIs from web | Rejected — phone auth / sealed clients only |
| Recovery phrase / Vault | Never prompted or stored in the browser companion |
| Phone revoke | Web bootstrap fails; session ends |
Broader sealed claims: Verify zero metadata · How to verify.
Related pages
- Sealed vs shared privacy model
- Privacy guarantees
- What Buzzio can see
- Threat model
- Official Buzzio sites (
web.buzzio.dev) - Public explainer: Why Buzzio will never put E2E chat on the web