Authentication

Every way in, handled

Passwords, providers, passwordless and MFA behind one SDK call — with the settings, limits and user records that a real product needs on day one

Auth/Users · production

Users

Everyone who has an identity in this project.

New user
UserStatusLast sign in
ALAda Lovelace[email protected]Active2 minutes ago
GHGrace Hopper[email protected]Active18 minutes ago
ATAlan Turing[email protected]Active3 hours ago
KJKatherine Johnson[email protected]Not confirmednever
RPRadia Perlman[email protected]Banned9 days ago

Ways in

Social login

Turn methods on per environment. The client picks them up without a redeploy, and users keep one identity across all of them

Acme

Sign in

Continue with Google
Continue with GitHub
Continue with Apple
or

Providers are per environment — the client reads them at runtime, so enabling Apple is a setting, not a release

Email and password

Password policy, breach checks and reset flows, with hashing you never have to pick

Social providers

Google, GitHub, Apple and the rest, configured per environment

Passwordless

Magic links and one-time codes over email or SMS

Multi-factor

TOTP and recovery codes, enforced globally or per role

Sudo mode

Elevate a single action with a one-time nonce instead of the whole session

Sessions

Device, location and method recorded on every session, revocable one by one

Protection

Protection

The parts you would otherwise bolt on after the first incident, already in the box

  • Rate limits

    Per endpoint, per identifier, per environment — with the counters visible

  • Bot protection

    Challenge sign-up and sign-in without shipping a captcha yourself

  • Sign-up controls

    Allowlists, blocked domains, invitation-only projects and waitlists

  • Breach detection

    Known-compromised passwords rejected at the moment they are set

AL

Ada LovelaceActive

usr_4c81f0a2 · [email protected]

Chrome in macOScurrentLisbon, Lisboa, PT · sudo mode for 14 minutesaal2
Safari in iOSactiveLisbon, Lisboa, PTaal2
Firefox in LinuxexpiredPorto, Porto, PTaal1
Edge in WindowsclosedMadrid, Madrid, ESaal1

Open a user and every session is there: device, city, assurance level, and which factors they actually hold

The user record

The user record

A real table, not an opaque blob. Search it, filter it, open a user and see everything attached to them

Requests

Every call the platform served, as it happened.

TimeMethodStatusPath
12:04:11.204POST200/auth/signin
12:04:10.881GET200/.well-known/jwks.json
12:04:09.117POST401/auth/signin
12:04:08.640POST200/oauth/token
12:04:07.019POST429/auth/signin
12:04:05.552POST502/functions/webhook-relay
12:04:04.238GET200/auth/session
12:04:02.907POST202/notifications/send

Every sign-in attempt lands in the same request trail, with the reason it failed attached

Search and filter

By email, provider, status or metadata, across millions of rows

Linked identities

One user, every provider they have ever signed in with

Metadata

App metadata you control and user metadata they control, kept apart

Suspend and ban

Cut access immediately without deleting the history behind it

Sudo mode

Ask again, right before it matters

A valid session is not the same as intent. Sudo mode puts a fresh check in front of the actions that would hurt — and the same check is available to the actions your own product considers dangerous

  • Protected actions

    MFA, credentials, permissions, identities, sessions and passwords, each toggled on or off

  • Your own actions

    Guard anything in your API with the SDK — deleting a key, wiring a payout, exporting data

  • Timeout

    One confirmation elevates the session for a window you set, then it lapses on its own

  • Single-use nonce

    Or authorize exactly one call, without elevating the session at all

  • Any factor

    TOTP, email code or SMS — whichever the user actually has

  • Visible in the session

    Sudo state and its expiry sit on the session, next to device and location

Sudo Mode

An extra layer of confirmation in front of sensitive actions.

4 of 6 actions protected
Enable Sudo ModeProtects sensitive actions behind a fresh confirmation.
TimeoutHow long the session stays elevated after a confirmation.30 min
Single-use authorization (nonce)Every action below can also be authorized one at a time, without elevating the whole session.

Confirm your access

ALAda Lovelace[email protected]
492

We sent a verification code to ada***@example.com

CancelConfirm

Or send the code by SMS. After confirming, protected actions run without asking again until the timeout expires.

You choose which actions demand a fresh confirmation, and how long one confirmation lasts

One call in, one call to check

The SDK returns a discriminated result instead of throwing, so the failure path is something you handle rather than something you catch.

authentication.ts
const { data: verified } = await nulvless.auth.verify({
  resource: "proj_16tbwq34",
  roles: ["owner", "admin"],
});

One platform, from your first user

Focus on your product. We handle identity infrastructure

What you would have built

Six areas, every one of them a project of its own.

  • Authenticationpasswords, providers, MFA, sessions
  • AuthorizationRBAC, scopes, per-resource grants
  • OAuth serverOIDC discovery, JWKS, PKCE
  • Edge functionsDeno runtime, deploys, rollback
  • Notificationstemplates, providers, delivery logs
  • Observabilitymonitoring, audit trail, query
Roughly9 engineer-months · $135,000You start at$0