Sign-in methods
Email, phone, username or social sign-in, with a password or a one-time code
Identity Infrastructure for SaaS
Everything your SaaS needs to manage identity, access and user lifecycle.
Authentication
Verification, sessions, roles and recovery ship as one system, inspectable down to a single request
Email, phone, username or social sign-in, with a password or a one-time code
A second factor by app or SMS, plus recovery codes for the day someone loses the phone
See every device someone is signed in on and cut any one of them off, without touching the others
The same role can mean different things per customer, so you stop writing a permission layer per tenant
Put the role, tenant or plan into the access token, and preview it against a real user before it ships
"email": "{{ user.email }}","role": "{{ grants.0.role }}","tenant": "{{ org.slug }}","plan": "{{ billing.plan }}",
One more confirmation before a destructive action — for that action only, never the whole session
Sensitive actions
single use · 5m
Rate limits and a bot check in front of sign-in, recovery and lookups — the endpoints that get hammered first
Sign-ins, sign-ups and verifications on one clock, so you can see when your users actually show up
weekday peak 10:00 · 1,284 events
Every one of these is a setting, not a release — configured per environment and promoted with a diff
Six requests a product makes, and the systems each one wakes up on the way through
This is the console your team gets on day one — the screens you would otherwise spend a quarter building, for every part of identity your product touches
Everyone who has an identity in this project.
| User | Status | Created | Last sign in |
|---|---|---|---|
| ALAda Lovelace[email protected] | Active | 4 months ago | 2 minutes ago |
| GHGrace Hopper[email protected] | Active | 3 months ago | 18 minutes ago |
| ATAlan Turing[email protected] | Active | 2 months ago | 3 hours ago |
| KJKatherine Johnson[email protected] | Not confirmed | 6 days ago | never |
| RPRadia Perlman[email protected] | Banned | 1 year ago | 9 days ago |
Most SaaS teams end up integrating multiple vendors just to manage users, permissions, invitations, communications and audit logs
5 vendors · 10 integrations to own
1 vendor · 0 integrations
One platform
The cost is not the vendors. It is the seams between them
What you actually needed to do
Write glue at the issuer for every claim you need.
A claims template you preview against a real user.
The flow lives in one vendor, the template in another.
One template, per channel and per language.
Join audit trails from five systems that disagree on time.
One trail with actor, target and category.
Repeat it by hand in every vendor and hope nothing drifted.
Compare two environments and merge the diff.
Built as one system, not assembled from five
Six layers that ship together, instead of six vendors you assemble
Email, phone or username sign-in with multi-factor flows and the social providers your users already have
Roles are scoped to an organization, so a permission means something specific for each customer
Every project is a standards-compliant issuer with discovery, JWKS and dynamic client registration
Edge functions on a Deno runtime with npm support, an in-browser editor and versioned deploys
Email and SMS wired to identity events, with templates per channel and per language
Traffic and performance on one side, a searchable request history and audit trail on the other
Create applications, manage consent flows, authorize third-party integrations and operate your own OAuth server
/.well-known/openid-configuration{"issuer": "https://acme.nulvless.app","authorization_endpoint": "/oauth/authorize","token_endpoint": "/oauth/token","userinfo_endpoint": "/oauth/userinfo","jwks_uri": "/.well-known/jwks.json","scopes_supported": ["openid", "profile", "email", "offline_access"],"code_challenge_methods_supported": ["S256"],}
Every project is an issuer from the first minute — any standards-compliant client can discover it without a line of glue
Not how people sign in — how you prove what happened afterwards. Every change and every request carries an actor, a target and a time
Who changed what, in which environment, and when.
| Action | Actor | Category | When | Target |
|---|---|---|---|---|
| Rotated secret key | AdAda Lovelace[email protected] | security | yesterday at 14:02 | api_keysk-a91c07d5 |
| Promoted development to production | AdAda Lovelace[email protected] | environments | yesterday at 11:41 | environmentmain |
| Granted role admin | GrGrace Hopper[email protected] | permissions | 2 days ago | userusr_9de2b710 |
| Enabled provider apple | AlAlan Turing[email protected] | auth | 3 days ago | projectacme-web |
| Deleted environment preview/checkout | AlAlan Turing[email protected] | environments | 4 days ago | environmentpreview-checkout |
| Added redirect URL | GrGrace Hopper[email protected] | settings | 6 days ago | projectacme-web |
Every configuration change recorded with actor, target and category
A searchable trail of individual requests, not only aggregate counts
An API key belongs to one environment, so a test key cannot reach production
Sign-in returns only to the URLs listed for that environment
Traffic and error rates charted next to the requests behind them
Staging and production never share state, users or keys
Typed SDKs, an error code for every failure, and framework quickstarts that end with a signed-in user
const { data: verified } = await nulvless.auth.verify({
resource: "proj_16tbwq34",
roles: ["owner", "admin"],
});{
"data": {
"user": { "id": "usr_4c81f0a2" },
"session": {
"id": "ses_7b31d0",
"amr": [{ "method": "password" }, { "method": "totp" }],
"scopes": ["projects:write"]
}
},
"error": null
}Organizations hold projects, projects hold environments, and every identity decision is inspectable down to the individual request
Initialize
188ms
Promote authentication
653ms
Promote communications
285ms
Customers and teams
Members · Billing · Usage · Audit logs · Settings
Identity and access
Users · Roles · Providers · Protection · Rate limits · Token claims
Environments and releases
Environments · Compare · Deployments · Redirects · API keys
Traffic and history
Traffic · Performance · Network · Audience · Services · Log query
Focus on your product. We handle identity infrastructure
What you would have built
Six areas, every one of them a project of its own.