Skip to content

Members and devices

A team has members and devices. Each device has its own key and fingerprint, and an admin grants the team key to a device only after seeing that fingerprint from its owner. This is what keeps the sync server from adding a device of its own.

Only admins can invite people, grant keys, revoke invites and remove members.

  1. Admin: invite the member.

    bssh teams invite platform ana@example.com

    bssh prints two commands for Ana, with a one-time token and your device’s fingerprint. Send them over a channel where you know it is Ana.

  2. Ana: create her account with the invite, then join, pinning the admin’s fingerprint.

    bssh teams init --server https://teams.example.com --email ana@example.com --invite <TOKEN>
    bssh teams join <TOKEN> --fingerprint <ADMIN FINGERPRINT>

    bssh refuses to trust the team if no admin device of that team has that fingerprint. The join prints Ana’s device fingerprint.

  3. Admin: grant the key to Ana’s device.

    bssh teams grant platform

    This lists the devices waiting for the key. Grant one only after Ana sends you its fingerprint:

    bssh teams grant platform --fingerprint <ANA'S FINGERPRINT>
  4. Ana: sync.

    bssh teams sync

    The team’s connections appear in bssh list.

Why fingerprints are exchanged out of band

Section titled “Why fingerprints are exchanged out of band”

The invite carries the admin’s fingerprint, and the member pins it when joining. If the fingerprint does not belong to an admin device of the team, nothing is trusted: a server cannot pass itself off as the team’s admin. In the same way, an admin grants the key only to a fingerprint the member sent directly, so a server cannot slip in a device of its own.

Send fingerprints in a chat you already use, on a call, or in person. Not through the sync server, and not by reading them from the admin screen: the desktop app hides the fingerprint the server reports until the pasted one matches.

Granting the team key: the pasted fingerprint matches the device waiting on the server

Nothing was trusted, and the invite token is used up. Finish the join by team id with the right fingerprint:

bssh teams join --team <TEAM ID> --fingerprint <FINGERPRINT>

The error message prints the exact command, with the team id. Check the fingerprint with your admin first: a mismatch can also mean the server is not the one you think.

In the desktop app, the join dialog explains the mismatch and offers Try again, which finishes the join the same way.

A pending invite holds a seat until it is accepted or expires, 7 days after it was created.

Admins see pending invites with bssh teams members platform, and in the desktop app under Pending invites on the team’s Members & devices tab.

bssh teams uninvite platform ana@example.com

This revokes the invite: its token stops working and its seat is free again. In the desktop app, choose Revoke next to the invite. If the token was lost, revoke the invite and send a new one.

bssh teams invite platform sam@example.com --admin

An admin can invite people, grant keys, revoke invites, remove members and read the audit log. In the desktop app, tick Make them an admin before Create invite.

bssh teams remove platform ana@example.com

bssh asks for confirmation, removes Ana and rotates the team key.

After the rotation, Ana’s devices can no longer sync, and nothing written afterwards is readable by them. They may still have copies of what they already synced, so rotate any credentials that matter.

A rotation wraps the new key only to devices this admin machine approved with bssh teams grant. If the server lists a device you never approved, the rotation stops and names it. On the command line, the member is already removed when this message appears; the team keeps its current key until the rotation succeeds. Check the device’s fingerprint with its owner and grant it, then sync again to finish the rotation. The desktop app’s Remove… dialog lists those devices and does not let you remove the member until each one is granted; if a rotation stops for another reason, the reason stays in the dialog.

Devices cannot be revoked one by one yet. To remove a single device, remove the member, then invite them again.

bssh teams members platform

This lists each member with their role and the fingerprint of each of their devices, then the pending invites if you are an admin. In the desktop app, the team’s Members & devices tab shows the same, with a seat meter, the devices waiting for the key and a Remove… button for each member other than you.

  • Sync after a grant, and to collect pending changes.
  • Audit log for the sessions members started on team hosts.