Presence and voice
Live cursors, who is in a note, online status, and the hold-to-talk broadcast that is never recorded.
Presence is ephemeral by construction. It rides the awareness protocol, which is a separate short-lived CRDT of small JSON per client that clears itself when a client disconnects, and none of it is persisted.
In a note
- Live cursors and selections, with a deterministic colour per person.
- Avatars for who is viewing the note you have open.
- Online status, derived from whether someone has awareness state anywhere in the vault. A person's profile shows Online or Away.
Push to talk
Holding the talk button broadcasts your microphone to everyone in the vault, as 16 kHz mono audio on the same channel that announces a member joining. Playback schedules the incoming chunks back to back so the stream is gapless.
Nothing is persisted: no blob, no row, no file, no history. A chunk is played and dropped, and someone who was offline simply missed it. That is why it adds no storage and no retention policy. The speaker is stamped from the connection's own token rather than trusted from the payload, and a leaky-bucket limit per speaker keeps the channel from being flooded.
This page is written from docs/specs/04-team-collaboration.md and docs/STATUS.md in the repository. Those documents go further, and they are the ones that change first.
Read it on GitHubWas this page helpful?
