tai42-accounts-postgres plugin
provides them — it stores email/password accounts on Postgres, mints sessions,
drives invites, and contributes the Studio’s Users screen.
Postgres accounts
Install and wire the store, run its migrations, create the first admin, and
invite the team — with the
TAI_ACCOUNTS_* session and login-limit settings.What every accounts deployment shares
- Accounts ride on access control. Turn it on
(
ACCESS_CONTROL_ENABLE=true) and name the provider inACCESS_CONTROL_AUTH_PROVIDERS. Keepredisin the list so minted API keys keep working next to human sessions. - A sign-in does not provision authority. A logged-in human resolves to a user id, and until a policy exists for that id every protected route denies the request. Provision the policy first, then invite the person — the access-control guide writes the jq policy end to end.
- Provider order matters. Members of
ACCESS_CONTROL_AUTH_PROVIDERSare tried in order and fail closed: an outage in an earlier member denies the members after it. - Every admin principal counts. The platform keeps at least one enabled admin
principal — an account on the
adminrole, the owner from setup, an admin service principal — and refuses the change that would leave none. Demoting your last admin account is allowed while the owner is still enabled. See the last enabled admin stays. - A member’s role is read from access control. The Members page shows the role every login of the member holds, No role when that member’s access was set directly rather than from a role, or Mixed roles with each login’s own role when the member’s logins hold different roles. A provider’s change-role action gives every login of the member one role, which clears it.
See also
- Accounts — the model behind these routes.
- Access control — the policy every identity resolves to.
- API-key machine identity — token auth for machines (not human sign-in).
- The admin console — where the Users screen lives.

