Team management
Invite colleagues to sign in and work on the same rooms.
Teams let colleagues sign in and work on the same rooms. This is different from share links: a share link needs no account and gives one narrow screen, whereas a team member signs in and gets the full Controller.
Find it at Team in the dashboard header, or /settings/team.
Read Roles do not restrict much yet before you invite anyone. Role names in this app do not currently limit what someone can do to your rooms, so who you invite matters more than which role you pick.
Members
The Members list shows each person's name (falling back to their email), their role, and the date they joined.
Roles
There are three roles: Owner, Editor, and Viewer. Whoever created the team is the Owner. When inviting, you can choose Editor or Viewer — you cannot grant Owner.
Roles do not restrict much yet
The invite form says "Editors can manage timers and messages; viewers can only observe." That is not what the app currently enforces. Almost every permission is granted to any team member regardless of role.
In practice, today:
| Action | Owner | Editor | Viewer |
|---|---|---|---|
| Invite people, cancel invites | Yes | Yes | No |
| Create, edit, delete rooms | Yes | Yes | Yes |
| Add, edit, reorder, delete sessions | Yes | Yes | Yes |
| Run the transport (start / pause / reset / skip) | Yes | Yes | Yes |
| Post and delete messages | Yes | Yes | Yes |
| Create and remove share links | Yes | Yes | Yes |
The only thing a Viewer genuinely cannot do is invite people.
So do not use Viewer as a way to give someone safe, look-only access — they can delete your rundown and stop your show. If you want genuinely read-only access, send an Agenda share link instead; if you want message-only access, send a Moderator link. Those are enforced.
Only invite people to the team if you would be comfortable with them driving the Controller.
Sending an invite
Owners and Editors see an Invite someone form. Enter an email, choose Editor or Viewer, and click Send invite. The invite then appears under Pending invites with its role and expiry date, and a Cancel button.
No email is actually sent, and the app does not show you the link.
The screen confirms "Invite sent to …", but nothing is delivered. The invite is created in the database and its URL is only written to the server log — it is never returned to the browser, so there is nothing on the page to copy either.
As shipped, an invite cannot be delivered from the app. Whoever administers the deployment has to read the URL out of the server logs (it is logged as
[INVITE] To: … | URL: …) and pass it on by hand.Custom SMTP (Brevo) is now configured — see docs/setup/resend-email-setup.md — but only signup confirmation and password recovery use it. The invite flow was never wired to send through it; sending an invite email is still unbuilt. Plan on either adding people out-of-band or having them sign up and be added another way.
Invites are valid for 7 days. You will see an error if you try to invite an email that already has an active invite.
Accepting an invite
The recipient opens the /invite/… link and sees which team they have been invited to
and as what role.
- Already signed in — one button: Join [team].
- Not signed in — tabs for Create account (default) and Log in, with the email prefilled. Passwords must be at least 8 characters.
Either way they land on the dashboard as a member.
The link is a bearer token — anyone holding it can join. Nothing checks that the person accepting owns the email you invited. Whoever opens that URL joins your team with the role you set. Do not post invite links anywhere shared.
What you cannot do yet
These are hard limitations, not settings you have missed:
- You cannot change someone's role after they join. There is no control for it.
- You cannot remove a member. There is no control for it, and the database does not permit it either.
Team membership is effectively permanent. Combined with the role situation above, that means adding someone to a team is not currently a reversible action from within the app — treat every invite as permanent full access, and prefer share links whenever they will do.
Related
- Share links — no-login access for people who do not need an account
- Agenda — genuinely read-only, unlike the Viewer role
- Moderator — message-only access, properly scoped