Two systems, two records of the same user
The auth side knows who logged in. The billing side knows who paid. Webhooks land out of order, and the reconciliation code that keeps the two agreeing is yours to write and yours to debug.
A user's login and their subscription live in one record — you never reconcile who's paid with who's signed in, because there was never a second system to drift.
You run it yourself, and the data stays in your Postgres. It's from a small team, MIT licensed, with the source on GitHub if you want to read it before you trust it.
New to Rekey? See how the operator panel works
No per-MAU meter · MIT licensed · the source is on GitHub
Most teams wire an auth provider to a payments provider with hand-written webhooks. Then the two records disagree: a paying customer gets locked out, or access lingers after a payment fails. Keeping them in sync is the part nobody wants to own.
The auth side knows who logged in. The billing side knows who paid. Webhooks land out of order, and the reconciliation code that keeps the two agreeing is yours to write and yours to debug.
Per-MAU meters assume a single product. Ship a second app that shares users, and you pay twice for the same people, plus a per-seat charge for your own team.
Identities, subscription history, and webhook receipts sit inside the vendor. Exporting them is possible on paper and painful in practice once you have real volume.
When a user's agent wants to check their plan or recent payments, the usual answer is a static admin key with full access. There's no scoped, read-only way to hand it just the account it's allowed to see.
Rekey is a self-hostable service that keeps auth and billing in one tenant model, so a user's login and their plan don't drift apart. You bring the payment processor and keep your own account; Rekey keeps the data, the panel, and the SDKs in your infrastructure.
`docker compose --profile full up` boots the API, Postgres, Redis, and the panel. The same image runs in production, and the Postgres is yours.
A Tenant owns one or more Applications. Login and subscription state share that model: access checks read the record that payment webhooks write, so there's no second copy to drift. Every row carries `applicationId`.
Stripe, PayPal, and Razorpay sit behind one `BillingProvider` interface, set per Application. You change a config value, not your billing code. Provider-specific fields live in `metadata`.
A user's agent reads their own account over scoped OAuth 2.1 (read-only). And an operator MCP lets your agent run the workspace — read metrics, create apps, configure billing, cancel subscriptions — behind explicit, scoped consent (read / write / admin). No static admin key changes hands. Connect Claude, Cursor, or Claude Code to your own instance; the end-user MCP is off by default, so enable it per Application in the panel.
From an empty workspace to a live app with auth and billing — the operator panel, the SDKs, and the agent surface, in one pass.
Rekey does auth and billing. It doesn't ship a CRM, an email blaster, or a feature-flag service. Pair it with the tools you already run.
API, operator panel, Postgres, and Redis come up together. Point a domain at it, and you own your auth and billing end to end.
git clone github.com/rekey-dev/rekey cd rekey && cp .env.example .env # set JWT_SECRET, ENCRYPTION_KEY, SUPER_ADMIN_KEY docker compose --profile full up -d # → API :3030 · panel :3031
Self-hosting is free and always will be — one docker compose command, unlimited Applications, Tenants, and end-users, and the Postgres is yours. Rekey Cloud is the same product run by us, billed per workspace: one production application, unlimited development and staging.
Free to self-host (MIT licensed) · Rekey Cloud $99 per workspace / month
Run the whole stack yourself. The recommended path today.
No per-MAU meter; the Postgres is yours
Read the self-host guideThe same product, run by us. One workspace, billed monthly — development and staging applications are free and uncounted.
Billed per workspace — not per seat, not per login. Want a free trial first? Get in touch.
Get started — $99/monthSelf-host with a named support contact and roadmap input.
For teams that need a named contact. On the roadmap, not built yet: SAML, LDAP, and SCIM.
Get in touchIf yours isn't here, ask through the contact form. This page gets updated from real questions.
Self-host, the SDKs on npm, and the API are available today, MIT licensed and free with no limits. Rekey Cloud is $99 per workspace per month — one production application, unlimited development and staging — and subscribing provisions your workspace immediately. Want a free trial on our infrastructure first, or enterprise terms? Get in touch and we'll arrange it. The license is settled: MIT.
MIT licensed
If you'd rather not glue two vendors together and reconcile them by hand, run it yourself or read the source first. Want us to run it instead? That's Rekey Cloud, $99 per workspace per month.
Rekey Cloud from $99/month per workspace · self-hosting is free under MIT