Know who is here. Count people, not tabs.

Show the members participating in a live room. Keep the roster of identities distinct from the number of open connections.

One person. Two tabs.
Still one member.

Close the extra tab and inspect what changes in the live workspace.

Maya’s second browser tabSame member ID
Harbor operationsLive workspace
TODAY’S ORDERSReady for dispatch.
MCAL
OrderCustomerStatus#42Maya ChenReady#43Alex LeePacked#44Sam KimPreparing
Maya
Alex
2members
3connections
Maya has two tabs open.
She appears once.

Know who’s here.

One person can have several connections. Show each member once, and update presence when their first tab joins or their last one leaves.

Interactive illustration with fictional records. No account operation is performed.

Sign the member identity.
Maintain the roster.

Show the members participating in a live experience.

Assign identity on your backend.

A presence- channel uses private authorization with signed member_data. Your backend determines member_id and the safe profile information sent to the room.

Render the initial membership.

After subscription succeeds, read the current member roster before applying join and leave observations. The first connection adds the member and the last connection removes them.

Keep shared profile data small.

Every member receives member_info. Use safe display details such as a name or avatar, and keep private account fields and authorization roles out of that shared profile.

Scale without
losing control.

Organize teams in workspaces, control API access, and trace changes through audit logs.

BirdHarborOrganization
WorkspacesProductionSandbox

Delivery agent

API key · Customer operations team
Active
PermissionsAccess
EmailRead & write
SMSRead & write
ALAlex Lee AdminPermissions updated

Audit log

Production
Workspace
Production
Resource
Delivery agent
WhatsApp
Read accessRead & write
Succeeded

Start with Realtime.
Build across channels with Bird.

Your next idea. Ready to connect.