Org invitations
Add a member to your organization by sending them a link. The recipient clicks → previews the invite → accepts → lands inside the org. Works whether they already have a stech account or not.
Inviting #
Invitations live on /settings/members. Owner / admin only.
Click invite member:
- Role —
member(default) oradmin. Owners can also invite asowner; the receiving member becomes a co-owner on accept. - Email (optional) — when set, the api sends the invite link to that address via Resend (shares setup with magic-link sign-in). When left blank, you get a shareable link to copy and send out-of-band (Slack DM, etc.). The link is the auth either way.
Pending invitations show below the members table with their role, target email (if any), expiry, and a revoke button.
Lifetime #
- Expiry — 7 days from creation. Expired invitations stop accepting and auto-hide from the list.
- Single-use accept — the token is consumed atomically with the membership insert; double-clicking the link can't double-add.
- Revoke — owner / admin can revoke any pending invite. Revoked links 410 immediately on the next click.
Accepting (the invitee's side) #
The link points at /invite/<token>. The page previews the org name and
the role being offered without requiring sign-in, so the recipient can
see what they're walking into.
Three caller states, all handled by a single accept button:
- Already signed in to stech — accept inserts the membership and
bounces to
/<orgSlug>/agents. - Has an account, signed out — accept redirects to
/sign-in?next=…with a continuation back to the accept page; sign in (password or magic-link) and the original accept resumes. - No account yet — same shape but via
/sign-upinstead. Account is created, membership is added, you're in.
The accepter's email does not have to match the invite's target email — the link itself is the proof. We may harden this later if a customer asks.
CLI #
stech members covers list / role-change / remove today. CLI invite
parity (stech members invite <email>) is on the roadmap; for now,
issue invitations from the dashboard.
Related #
- Magic-link sign-in — the same Resend pipeline ships invitation emails.