Baalda

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.

Audio and the member-joined announcement are vault-wide rather than per note, so a member who has just been removed can still hear audio until their socket drops or their vault token expires, which is at most ten minutes.

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 GitHub

Was this page helpful?