Skip to content

Envelope types

Envelope types are the top-level protocol payloads that clients publish to the backend. SDKs handle them automatically. App developers usually work with content types instead.

The backend derives the wire topic from each payload. A publish request does not supply a topic. Query and subscription responses use unsigned backend envelopes over a trusted transport.

EnvelopePurposeWire topic kind
Group messageMLS application or commit message0x00
WelcomeBootstrap a new group member0x01
Identity updateLink, rotate, or revoke inbox identities and installations0x02
Key packagePublish an installation’s MLS credentials0x03
Commit-log entryDetect group commit forks0x04

Application messages carry encrypted content such as text, attachments, reactions, and receipts. Commit messages change the group’s cryptographic state, membership, metadata, or permissions.

Commits can add or remove members, update metadata, update permissions, rotate keys, or repair missing membership. A client processes commits in backend topic order.

A Welcome bootstraps a new member with group context, encrypted group secrets, the ratchet tree, and confirmation data. It depends on the new installation’s key package.

A key package contains the public encryption key, signature key, capabilities, lifetime, and identity credential for an installation. The newest key package for an installation is the package with the highest sequence ID on its topic.

Identity updates link installations and account identifiers to an inbox. They also carry rotation and revocation changes.

A commit-log entry records a group commit for fork detection. Its topic is separate from the group-message topic, even though both use the group ID as their identifier.