Stop gluing
vendor SDKs
together.
Radon is one unified API across auth, payments, storage, email, and AI — 126+ providers, swappable by config, self-hosted, no lock-in.
Every product ends up wiring five vendor SDKs — each with its own auth scheme, its own quirks, its own webhook shape.
Radon collapses them into one typed interface. Provider differences are absorbed inside each adapter and never leak into your code — so switching Stripe for Paystack, or S3 for R2, is a config change, not a rewrite.
Five SDKs. One API.
One license.
Each pillar ships today — provider-agnostic and production-complete. They share one interface shape and one lifetime license, and the suite keeps growing.
Radon Auth
new Radon()Authentication you actually own. Email codes, magic links, passwords, and 50 OAuth providers — over any database, wired into your framework in a few lines.
import { Radon } from "@radonsdk/auth";
import { postgresAdapter } from "@radonsdk/auth/adapters/postgres";
const auth = new Radon({
adapter: postgresAdapter(pool),
session: { secret: process.env.RADON_SECRET! },
providers: {
magicLink: { sender, baseUrl: "https://app.com/verify" },
google: { clientId, clientSecret },
},
});Radon Payments
payments.charge()One typed charge() across 24 payment providers — global, African, and crypto. Normalized webhooks, a coupon engine, and bring-your-own-provider.
import { RadonPayments, money } from "@radonsdk/payments";
const payments = new RadonPayments({
providers: { stripe: {} },
defaultProvider: "stripe",
});
const charge = await payments.charge({
amount: money(1999, "USD"),
customer: { email: "ada@example.com" },
});Radon Storage
storage.upload()One upload() across 26 storage providers — object storage, CDN/media, self-hosted, and local. Signed URLs, resumable uploads, multi-provider failover.
import { RadonStorage } from "@radonsdk/storage";
const storage = new RadonStorage({
providers: { s3: { bucket: "uploads", region: "us-east-1" } },
defaultProvider: "s3",
});
const { url } = await storage.upload({
key: "avatars/ada.png",
path: "./ada.png",
});Radon Email
email.send()One send() across 16 email providers — Western, African, and raw cloud. Batch sends, template interpolation, and normalized delivery webhooks.
import { RadonEmail } from "@radonsdk/email";
const email = new RadonEmail({
providers: { resend: {} },
defaultFrom: "Acme <hello@acme.com>",
});
await email.send({
to: "ada@example.com",
subject: "Welcome, {{name}}!",
html: "<p>Hi {{name}}, thanks for joining.</p>",
variables: { name: "Ada" },
});Radon AI
ai.chat()One chat() across 10 model providers. Normalized streaming, one tool schema that works everywhere, and a raw-client escape hatch.
import { RadonAI } from "@radonsdk/ai";
const ai = new RadonAI({
providers: { openai: {} },
defaultProvider: "openai",
});
const res = await ai.chat({
messages: [{ role: "user", content: "Say hello in one word." }],
});
console.log(res.content); // "Hello"126+ providers. One API to reach them all.
Payment processors, object stores, email services, model providers, and 50 OAuth identities — each behind the same typed call. Add a provider, not an integration project.
- Local
- SeaweedFS
- SMTP
137 unique marks · rendered monochrome · more added every release
Built on a few strong opinions.
The same principles run through every SDK. They're why swapping a provider is a config change, and why you never get boxed in.
Swap by config, never by code
One typed interface every provider implements. Provider quirks — auth schemes, minor vs major units, webhook shapes — are absorbed inside each adapter and never leak into your code.
Own your data. No lock-in.
No hosted service, no per-MAU pricing. Everything runs in your infrastructure, against your database and your provider keys. Radon never stores your secrets.
Escape hatches, first-class
The unified API handles the 80% case. For the other 20%, drop to the provider's own client with native() or rawClient() — without leaving your Radon config.
Free is complete, not crippled
Free tiers are production-grade, not trials. Pro adapters are built to the exact same completeness bar — gating is a licensing concern, never a quality one.
Zero deps, lazy-loaded
Strict TypeScript, ESM + CJS, Node ≥ 18, zero required dependencies. Adapters load on demand — an OpenAI + Anthropic app never bundles the other eight.
One key, every project, forever
A single lifetime license unlocks Pro across every SDK in the suite. Not a subscription, not tied to a domain — use the same key across all your apps.
One payment. Every SDK. For life.
Free is a complete, production-grade backend — not a trial. Pro unlocks every provider across all five SDKs: one payment, unlimited projects, no renewal.
Free
Open source, MIT. A genuinely complete backend stack — not a trial.
- All 5 SDKs — MIT-licensed, zero-dependency core
- Payments: Stripe, Paystack, PayPal, OPay, Bachs
- Storage: Amazon S3, Cloudflare R2, local
- Email: Resend, SendGrid, SMTP
- AI: OpenAI, Anthropic, Groq
- Auth: email codes, magic links, passwords, Google + 7 DB adapters
- Normalized webhooks, escape hatches, framework integrations
Pro
one-time · lifetimeOne payment unlocks Pro across all five SDKs. No subscription, no per-MAU pricing, no renewal — unlimited projects, forever.
- Everything in Free — across every SDK
- Auth: 50 OAuth providers, passkeys, 2FA/TOTP, phone OTP, orgs
- Payments: +19 providers — Adyen, Razorpay, Flutterwave, crypto
- Storage: +23 providers, resumable uploads, multi-provider failover
- Email: +13 providers, batch sends, templates, delivery webhooks
- AI: +7 providers, embeddings, vision, structured output, fallback
- One key, unlimited projects, forever
Built by
NexiaAn independent studio building the tools we wished existed in the open. Radon is made by developers who got tired of re-integrating the same logic on every project.
One API. Every provider.
Yours to run.
Install a package, write one call, ship. No account to create, no service to depend on — it's just code you run.