Pro50 OAuth providers, passkeys & 2FA

Auth you'll never have to migrate away from.

The open-source authentication engine for Node. Any database, any email provider, wired into your framework in a few lines — no hosted service, no per-MAU pricing, no lock-in.

Get Started
lib/auth.ts
adapter
import { Radon } from "@radonsdk/auth";
import { postgresAdapter } from "@radonsdk/auth/adapters/postgres";
import { resendSender } from "@radonsdk/auth/senders/resend";

export const auth = new Radon({
  adapter: postgresAdapter(pool),
  session: { secret: process.env.RADON_SECRET! },
  providers: {
    emailCode: { sender: resendSender({ apiKey }) },
    magicLink: { sender, baseUrl },
    google:    { clientId, clientSecret },
  },
});
Radon

50 OAuth providers · one engine

GitHubGoogleDiscordSpotifyTwitchGitLabNotionFigmaAppleXDropboxZoomRedditFacebookPatreonCoinbaseShopifyAuth0OktaMicrosoftSlackLinkedInGitHubGoogleDiscordSpotifyTwitchGitLabNotionFigmaAppleXDropboxZoomRedditFacebookPatreonCoinbaseShopifyAuth0OktaMicrosoftSlackLinkedIn
//How it works

Production auth in three steps.

No dashboards to configure, no webhooks to wire. Install, mount, done — it's just code you own.

01

Install & configure

One package, one config object. Hand Radon your database adapter and an email sender — that's the whole setup.

import { Radon } from "@radonsdk/auth";import { postgresAdapter } from  "@radonsdk/auth/adapters/postgres";export const auth = new Radon({  adapter: postgresAdapter(pool),  session: { secret: process.env.AUTH_SECRET },});
02

Mount the handler

A single catch-all route wires every auth flow — codes, OAuth callbacks, sign-out. No hand-rolled routing.

// app/api/auth/[...radon]/route.tsimport { auth } from "@/lib/auth";import { toNextHandler } from  "@radonsdk/auth/next";export const { GET, POST } =  toNextHandler(auth);
03

Sign users in

Call one method. Radon handles hashing, sessions, and cookies — you get back a signed-in user.

const res = await auth.verifyCode(email, code);if (res.ok) {  // session cookie is set automatically  redirect("/dashboard");}
//Features

Everything auth needs. Nothing you'll outgrow.

Radon runs on your database, your email provider, and your framework — one small contract underneath it all, so you can swap any piece without touching the rest.

adapter
sender

one contract · swap freely · never re-auth

Bring your own everything

Seven database adapters, five email senders, ten framework integrations. One contract underneath — swap any piece and never migrate your auth.

  • bcrypt passwords
  • AES-256-GCM at rest
  • constant-time compare
  • HttpOnly · Secure cookies

Secrets never stored in the clear

Codes and tokens are hashed before they touch your DB. Reversible secrets are AES-256-GCM encrypted.

app.use("/api/auth", radonExpress(auth))

Ten framework integrations

Prebuilt routes and middleware — mount in a couple of lines.

+36

one OAuth2/OIDC engine

50 OAuth providers, one engine

Every provider is a one-liner on the same OAuth2/OIDC core.

eyJhbGci.eyJzdWIi.4f2c…verify

verify in your own middleware — no round-trip

Stateless JWT sessions

Verify tokens in your own middleware — no session round-trip.

//Why self-hosted

Hosted auth rents you your own users.

Radon gives them back. Same production-grade primitives, none of the per-seat tax or lock-in.

Hosted auth

Clerk · Auth0 · Cognito

  • Per-MAU pricing that scales against you
  • Your users' identities live on their servers
  • Vendor lock-in — migrating means re-authenticating everyone
  • Rate limits and quotas on your own auth
  • Outages you can't fix and don't control
  • Compliance scope you don't own

Radon

Self-hosted, yours for life

  • One-time $7.99 — unlimited users, forever
  • Users live in your database, under your control
  • Swap any piece without touching auth code
  • No quotas — it's your infrastructure
  • You own uptime; no third-party dependency
  • Data never leaves your servers
//Pricing

Free forever, or Pro for life.

Free is a complete auth stack, not a trial. Pro adds the enterprise surface — one payment, unlimited projects.

Free

$0/ forever

Open source, MIT. A genuinely complete auth stack — not a crippled trial.

  • Email one-time codes
  • Magic links
  • Email + password (with reset)
  • Google OAuth
  • Stateless JWT sessions
  • 4 framework integrations
  • 7 database adapters
  • 5 email providers + failover
Read the docs

Pro

Best value
$7.99once · for life

One payment, unlimited projects, forever. No subscription, no per-MAU pricing, no renewal.

  • Everything in Free
  • 50 OAuth providers
  • Passkeys / WebAuthn
  • 2FA / TOTP
  • Phone / SMS OTP
  • 6 more framework integrations
  • Refresh tokens, orgs, API keys
  • Impersonation, GDPR export/delete
Buy Pro — $7.99
//FAQ

Questions, answered.

Yes. The free tier is a complete, production-grade auth system — email codes, magic links, passwords, Google OAuth, sessions, and every database and framework integration. It's MIT-licensed and always will be. Pro is a one-time $7.99 for the advanced methods and team features.

Own your auth in the next five minutes.

Install the package, mount the handler, ship a sign-in flow. No account to create — it's just code you run.

Read the docs