Chat and Rooms
UNC Chat explores room-based communication over Reticulum.
A room is the main conversation container. It owns metadata, visibility, retention settings, lifecycle status, posts, blobs, and room-key epoch state.
Room visibility
Public rooms
Public rooms are intended to be discoverable and lightweight.
They are useful for:
- open discussion
- public experiments
- easy joining
- less membership ceremony
Private rooms
Private rooms are intended to require membership for reading and posting.
The newer private-room direction keeps raw room keys on clients. The server stores membership records and wrapped key envelopes, not the raw room key for fresh private rooms created through the client transport flow.
Private rooms are useful for:
- explicit member control
- recipient-specific invites
- key rotation after revoke or leave
- smaller trusted groups
Retention
Visibility and retention are separate settings.
A room can be:
- public and ephemeral
- public and durable
- private and ephemeral
- private and durable
ephemeral means the room can age out through pruning.
durable means inactivity alone does not cause pruning-based expiry.
Durable does not mean immortal. Admins can still expire/delete rooms, and explicit expiry timestamps can still apply.
Key epochs
Private-room keys can rotate. The current epoch tracks which room-key version applies to new messages.
Clients keep room keys by epoch so remaining members can still read historical messages after a rotation.
Revoke and rotate
The intended private-room lifecycle is:
- revoke a member
- rotate the room key
- wrap the new key for remaining members
- revoked members lose access to future messages
This has been exercised end to end in the prototype, but the system is not yet an audited secure messenger.