One login layer.
Zero crossover.
Hosted login, session lifecycle, and machine identity for every tenant you serve, enforced the same way for all of them.
Built on open identity standards
Available capabilities use OpenID Connect, OAuth 2.0, PKCE, WebAuthn passkeys, DPoP, and Token Exchange. Planned SAML and SCIM work is labelled below instead of presented as shipped.
One platform, six primitives
Everything a multi-tenant product needs from its identity layer, run the same way for every tenant on it.
Hosted login
A brandable hosted sign-in surface for standard authorization-code flows, or a first-party API your own screen can drive directly.
Tenant isolation
Enforced at the data layer, not only in application code. One tenant's request cannot resolve another tenant's data.
Session lifecycle
Idle and absolute expiry, visible device and session inventories, and revocation your team can trigger.
Machine and agent identity
Sender-constrained, single-use, short-lived credentials for services and agents.
Per-tenant policy
Password rules, session lifetimes, and notification behavior configured per tenant, never hard-coded once for everyone.
Tenant branding
A tenant's own name, mark, and accessible color treatment across hosted sign-in and authentication email.
Tenant isolation enforced where it counts
Every tenant's users, sessions, and policy are isolated at the data layer, not only in application logic. One tenant's request cannot resolve another tenant's data, even under a misconfiguration in the calling application.
Accessibility is enforced the same way. A tenant brand palette that fails WCAG AA contrast is rejected at configuration time, not shipped and flagged later.
How a sign-in actually moves through the platform
Four steps, the same for every application and every tenant.
Redirect
The application sends the browser to a hosted authorization request, built on OpenID Connect and OAuth 2.0 with PKCE.
Verify
A passkey, password, authenticator-app code or one-time code is checked against the one tenant that request belongs to, never another. Federation remains on the public roadmap.
Issue
Short-lived, sender-constrained tokens go back only to the application that asked, built on DPoP and Token Exchange.
Isolate
The resulting session, its logs, and its permissions stay scoped to that tenant for the life of the session.
Properties, not promises
Six things you can verify are true of the platform, not marketing language about it.
Fail visibly
A misconfiguration stops the affected request instead of degrading quietly into a support ticket nobody notices.
Tenant isolation enforced
Isolation lives at the data layer, so it cannot be bypassed by a mistake in application code.
Sender-constrained tokens
Machine and agent credentials are single-use and short-lived, built on DPoP, not a shared static secret.
Accessibility enforced
A tenant brand palette that fails WCAG AA contrast is rejected at configuration time, not shipped and fixed later.
Credentials never recoverable
What is stored about a credential cannot be reversed back into the credential itself.
Honest limits
Where a limit exists (a rate limit, a retention window, a capability not yet built), it is published along with the reason.
See every session. Revoke any of them.
Every signed-in session is visible as a device and location entry, not a black box. A tenant administrator, or your own product, can end one session or all of them immediately.
Idle and absolute expiry apply automatically, so a forgotten laptop or a stale browser tab does not stay signed in forever.
Fail visibly, not quietly.
Accessibility enforced, not advised.
Limits published, not hidden.
Tell us what you're building.
Name, work email, and a sentence about your product is enough to start. We reply directly, not through a queue.