Skip to Content
Plural
Teams

Creating and joining a team

A team is a group of people who run their own plural and trust each other enough to see who is around.

A team is a group of people who run their own plural, each with their own agent and key, and trust each other enough to see who is around. You see every session shared with the team and can open a teammate's session from the side panel.

plural team create Backend --as vlad
plural team join tm-7f3k9-xq2m4 --as alia
plural team create Backend --relay wss://relay.example.com   # a relay of your own instead
plural team members
plural team invite          # a new code, owner only
plural team kick alia       # owner only
plural team leave
plural team disband         # owner only, deletes the team for everyone
plural team status

create prints a reusable invite code that does not expire; give it to teammates, who run join with the same relay. Without --relay both use the Plural relay. One key owns at most 3 teams on a relay: delete one with plural team disband to make another. After a successful create or join, Plural opens automatically (create --json and --help only print) and the side panel shows every session currently shared with the team; no separate room link is needed. Names are what teammates see and @name will use: 1 to 32 letters, digits, dots, dashes or underscores, and unique in the team. The relay must run with a team directory (plural-host relay --teams /data/teams.db) for team create and team join to work on it.

Inside Plural the team half of the side panel ends with × leave team (× disband team for the owner, who cannot only leave). It asks first, and the answer enter picks on its own is cancel. Leaving takes effect at once: the team's rows, the sessions you were watching and your share disappear, and the relay is told in the same step, with no separate program to start. If the relay does not answer, the team stays and the dialog says so; one that no longer knows you (the team was deleted, you were removed, the certificate ran out) leaves you out all the same.

A team in the browser

The web client joins a team too: paste the plural team join … command into or join a team on its first page, or open the invite link the owner made there (invite to the team in the side panel). The browser keeps a key of its own, so it is a member of its own with its own name, separate from your terminal. It lists the team's shared sessions, a click opens one as a viewer, and /access asks to write. A page served over https reaches only a relay and sessions at wss://.

A team on your own machine, behind a tunnel

With no server at hand, one command starts the relay with a team directory, opens a tunnel to it, creates the team on the tunnel's address and opens a session in that team:

plural team create Backend --tunnel ngrok        # or cloudflared

The banner of the session shows two links: the room link (plural join "…", for someone you want in this session) and the team link (plural team join <code> --relay <address>, for people who should join the team; reusable, with no expiry, and plural team invite can make another). Quit the session and the relay and the tunnel stop with it. The directory file is ~/.plural/teams.db.

This team lives only as long as the session

Your machine is the directory, so while that session is closed nobody can join or see the team's cards; sessions that are already open go on. A free ngrok address and a cloudflared quick tunnel change on every start, and the team is bound to the relay's address, so after a restart everyone has to join again. Closing the session disbands the team while the tunnel is still up, so the owner is not left in a team that points at a closed address. For a team that stays, run the relay on a server or behind a fixed domain and use --relay. --tunnel and --relay cannot be combined.

On this page