How it works

From npx to first login

Three commands to a working login, none of them a redirect. Everything below runs on your machine, against the same auth server the managed instances run.

01One command

Scaffold the stack

The CLI generates a web app, an API, an auth server, and a compose file, already pointed at each other. Nothing is left to wire up by hand.

$ npx seamless-cli init my-app

my-app/
├─ web/                React app
├─ api/                Express API
├─ auth/               Seamless Auth server
└─ docker-compose.yml
02One command

Bring it up

Postgres, the auth server, the API, and the web app start together. Ports bind to 127.0.0.1 only, because the dev auth server returns OTP codes in the response.

$ docker compose up

db     127.0.0.1:5432
auth   127.0.0.1:5312
api    127.0.0.1:3000
web    127.0.0.1:5173
03First login

Register and sign in

The email you gave init is stored as OWNER_EMAIL, and the first account created with it gets the admin role. Registering in the app you just scaffolded is the whole step.

# http://localhost:5173

Register with the email you gave init
→ admin role granted at signup
04Already written

The wiring you did not do

Provider on the client, adapter on the server. Both ship inside the scaffold; this is what init put there.

// web/src/App.tsx
<AuthProvider apiHost={API_URL}>
  <ApplicationRoutes />
</AuthProvider>

// api/src/index.ts
app.use('/auth', createSeamlessAuthServer(options));
05Your code

Read the session

The session travels as an HttpOnly cookie and the SDK exposes the identity behind it, so your components never handle a token.

import { useAuth } from '@seamless-auth/react';

const { user, credentials } = useAuth();

What comes with it

All of it is in the open source server and SDKs, so self-hosting gives up none of it.

Sign-in methods
Passkeys, with WebAuthn conditional UI
Magic links, with a redirect allowlist
Email and SMS one-time codes
OAuth social sign-in
Accounts and access
Organizations with scoped roles
Step-up authentication for sensitive actions
TOTP multi-factor
Admin dashboard for users, sessions, and policy
Where it runs
React and React Native SDKs
Express and Fastify adapters
An Expo starter for mobile
Per-flow rate limits you configure

Where the pieces live

Self-hosted, these all run on your infrastructure. On a managed instance the first two are unchanged and we operate the rest.

Your application
React SDK — session state in your components
Server adapter — verifies the signed token locally

Authenticated traffic never leaves your stack.

Your auth instance
Dedicated auth service container
Dedicated database container
Your keys, users, and audit log

Yours either way: compose on your machine, or provisioned for you.

Shared backbone
Load balancer
Private network
API gateway

Hardened and patched by us, not a cloud account per tenant.

Run it yourself, or let us host it

Self-hosted core
Every line is open source: read it, fork it, deploy it
Framework-agnostic core with per-framework adapters
AGPL-3.0; commercial licensing available
Free to run, on your own infrastructure
Managed hosting
We provision, host, and operate your instance
Version upgrades and security patches applied for you
Backups, monitoring, and on-call cover
Migration from your current provider, if you need it

Read the source

Every piece above is published. Nothing in the login path is a black box.