Password auth
The site posts credentials to Torii. Torii verifies the Argon2 hash and sets a signed gate_jwt cookie scoped to the platform's apex domain.
/api/v1/auth/login
← Set-Cookie: gate_jwt
Torii holds every OAuth app, every session, every password hash. Sites hold nothing but their own slug and Torii's origin. Adding Discord to every service in the platform is a toggle — not a deploy.
Continue with Torii, or use a password below.
How Torii works
The three moving parts you need to understand.
The site posts credentials to Torii. Torii verifies the Argon2 hash and sets a signed gate_jwt cookie scoped to the platform's apex domain.
/api/v1/auth/login
← Set-Cookie: gate_jwt
Clicking the Torii button opens a popup on the Torii origin. Torii runs the OAuth flow with Google, Discord, or any provider — the site never sees the third party.
window.open(torii)
↔ provider dance
← postMessage back
Traefik consults Torii on every request to a protected route. Backends receive X-User-Id, groups, and permissions as trusted headers — no JWT parsing, no rewriting login per service.
X-User-Id, X-Groups