Operate

Invite teammates

Email invite, one-click accept, four-branch flow. Seven-day expiry by default.

Anyone with the invites:create permission (owner + admin by default) can invite a teammate. The recipient gets a one-click accept link; if they don't have a Nomos account yet, the link routes them to signup and finishes the join automatically.

Send

  1. 1
    Open Members

    /app/settings/membersInvite teammate → enter email + pick a role (default member).

    Invite teammate dialog with email + role picker
    Default role is member. Promote later.
  2. 2
    Email sends

    The dashboard sends via Resend with a 7-day expiry. If RESEND_API_KEY isn't set (self-host, dev), Nomos logs the raw accept URL to the server console — paste by hand for smoke tests.

What the recipient sees

The link lands on /accept-invite?token=…. Four branches:

| Branch | What | Next | |---|---|---| | joined | Signed in + email matches | Joined. Dashboard reloads with org switched. | | wrong_account | Signed in + email mismatches | Sign out, sign back in with the right account, click link again. | | needs_signup | Not signed in | Redirect to /sign-up?invite_token=…. After signup, joined automatically. | | error | Expired / revoked / unknown | Friendly error. Re-issue from Members page. |

Manage pending invites

Members table → Pending tab. Each row: email, role, sent-at, expires-at, revoke button. Revocation kills the token immediately; the recipient gets an error on click.

One pending invite per email per org.

Issuing a second invite to the same address returns CONFLICT — revoke the existing one first. This is intentional so you don't spam invitees.