Skip to content
Documentation (14 pages)

Chat

Chat is a built-in part of the Tallow room, not a separate app. The module’s tab bar carries three working surfaces — Send, Receive, and Chat — and chat rides whichever room session is already live.

Starting a Chat

Chat pairs on its own: no files required.

  1. Select the Chat tab
  2. Choose Start a chat — a room code and share block appear (Copy code, Copy link, QR)
  3. Send the code or link to the other person
  4. They select Chat → Join with a code and enter it; the conversation opens on both sides

Files can travel in the same thread: the attach control stages your picks first, then sends them as a normal offer, with each file’s state shown inline in the conversation. A chat is joined with the room code, exactly like a file room.

Encryption: End-to-end vs Transport-only

Chat follows the room’s mode, and the split is the same honest one as everywhere else in Tallow:

Mode Chat encryption
End-to-end encrypted Every message is encrypted in your browser with AES-256-GCM under per-direction keys — one HKDF subkey of the room key for what you send, a different one for what you receive — so the two directions never share a nonce space, and chat nonces are domain-separated from file-chunk nonces. The relay forwards ciphertext only.
Transport-only Chat is not end-to-end encrypted. Messages still ride the same room connection, but the payload is plaintext. The mode says transport-only, and the chat says so too.

The protocol’s chat session ratchets message keys (with sparse ML-KEM re-keying carried inside the encrypted payload), and only claims post-quantum forward secrecy once a re-key exchange has actually completed.

History and Retention

In the Room