Skip to content

Ecosystem Overview

Seamless Auth is not a single package. It is a small ecosystem of projects that work together to deliver passwordless authentication, self-hosted infrastructure, and operator tooling.

This page is the fastest way to understand what each repository is for and where to start.


seamless-cli
-> scaffolds and checks your local stack
seamless-auth-api
-> runs the auth engine
@seamless-auth/express or @seamless-auth/core
-> connects your backend to the auth engine
@seamless-auth/react
-> connects your frontend to the auth flow
seamless-auth-admin-dashboard
-> gives operators a UI for users, organizations, sessions, events, security, and config

ProjectWhat it isUse it when
seamless-cliCLI for scaffolding and checking a local stackYou want a working React + Express project with generated auth wiring
seamless-auth-apiSelf-hostable auth serverYou need the passwordless auth engine itself
@seamless-auth/coreFramework-agnostic server auth primitivesYou are building your own backend adapter
@seamless-auth/expressOfficial Express adapterYour backend is Express and you want the supported integration path
@seamless-auth/reactReact SDK and built-in auth screensYour frontend is React and you want a ready-to-use auth integration
seamless-auth-admin-dashboardOperator dashboard appYou want a UI for admins and support teams
@seamless-auth/typesShared request/response and domain typesYou want consistent types across apps and tooling

seamless-auth-api owns the authentication domain:

  • registration
  • login
  • OTP flows
  • WebAuthn / passkeys
  • magic links
  • OAuth
  • TOTP / MFA
  • sessions
  • organizations
  • JWKS
  • system configuration
  • admin and internal metrics endpoints

Everything else either talks to it directly or sits on top of it.


Your application backend normally sits between the browser and the auth server.

That backend layer:

  • owns the security boundary for your app
  • validates cookies
  • enforces authorization
  • talks to the auth server using service-to-service credentials

If you use Express, start with @seamless-auth/express. If you need a different runtime, start with @seamless-auth/core.


@seamless-auth/react wraps your app with auth state and ships built-in auth routes for:

  • login
  • passkey login
  • email / phone OTP verification
  • magic link verification
  • OAuth login helpers
  • organization helpers
  • step-up helpers
  • WebAuthn PRF helpers
  • passkey registration

The SDK gives you auth state and flow helpers, but your app still owns routing, authorization, and product-specific UI decisions.


The admin dashboard is not built into the auth server. It is its own frontend application that talks to the auth API.

That separation matters because:

  • you can deploy the auth server without the dashboard
  • you can customize the dashboard independently
  • operator workflows stay separate from your end-user app

seamless-cli is the fastest way to get a working stack. It currently scaffolds a React frontend, an Express API, the auth server in Docker or local mode, and an optional admin dashboard.

It also includes check and bootstrap-admin. The current ../seamless-cli source does not ship deploy, destroy, or contributor workspace commands.

It is the easiest starting point if you want to learn the ecosystem through a working project rather than by assembling every piece manually.


Start with Getting Started and CLI Overview.


Read Auth API.


Read Server SDKs and How To Secure Routes.


Read React SDK and How To Build Your Own Auth UI.


Read How To Add OAuth Login, How To Use Organizations And Memberships, and How To Use TOTP And Step-Up.


Read Admin Dashboard.


The docs are being reshaped around this ecosystem model:

  • Start for guided onboarding
  • Build for package and integration docs
  • Understand for concepts and system behavior
  • Operate for CLI and runtime workflows
  • Reference for exact routes, env vars, and technical contracts

If a page makes a claim about a package or command, it should line up with the source repository for that package or command.


→ Continue to Auth API