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:

  1. revoke a member
  2. rotate the room key
  3. wrap the new key for remaining members
  4. 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.