Skip to content
Sign-in · billing · flags · support

Auth your AI agent can set up

Sign-in, roles, plans, feature flags and support chat from one token, checked offline in your API. Point your coding agent at the docs and it wires up the rest.

  • Role, plan and flag in one guard, no call per request
  • Test and production, promoted in one step
  • Free to start, every feature in test
api/routes.ts
const auth = createAuth({
  project: 'acme', env: 'prod', audience: 'acme-api', access, flags,
});

app.use('/api/*', auth.middleware()); // offline: no call per request

// Role, plan and flag: one token, one guard
app.post('/api/reports/export',
  auth.require('report:export', {
    plan: ['team', 'scale'],
    flag: 'bulk-export',
  }),
  exportReports);
npm i @anchring/auth · one package for your browser app, API and CLI
The token is the spine

One token knows who, what and which plan

When a user signs in, their token carries their identity, organisation and roles, their plan and payment status, and everything your feature flags target. Your API checks it all in one guard, offline, with cached keys.

  • Roles and org membership, typed: a misspelt permission fails to compile
  • Plan, entitlements and payment status, updated at the next refresh
  • Flags targeted by plan, org or role, with the same answer in API, browser and dashboard
  • Support conversations see the same user, plan and flags
Identitywho signed in, and howsub · amr
Rolesthe organisation and what it allowsorg.role
Billingthe plan and its payment statusbilling.plan
Flagswhat is switched on for this userflag()
What you get

Six things every product needs, as one system

Each part reads from or writes to the user's token, so they agree with each other without glue code.

Sign-in

Passkeys, passwords, email codes, social logins, and enterprise SSO with SCIM. Hosted pages in your brand, in English and Danish.

Organisations and roles

Teams, invites, custom roles and org switching inside your app. Permissions are typed and checked offline.

Billing

Our own billing engine: plans, proration, dunning, invoices and EU VAT with reverse charge and OSS. Charges run through your Adyen account.

Feature flags

Roll out by plan, org, role or percentage. Evaluated offline from the token, with a kill switch and a change log.

Support chat

Talk to signed-in users and visitors with their plan, roles and flags beside each conversation. Support access is time-limited and audited.

Set up by your agent

llms.txt, rule files for Claude Code, Cursor and Copilot, and an MCP server that plans the integration and explains errors.

Sign in with the accounts your users already have

GoogleMicrosoftAppleGitHubGitLabDiscordSlackLinkedInFacebookOpenID Connect
For developers

A few lines in each place, and the hard parts are done

Your API checks tokens on its own, with no call per request. Per-route rules ask for a recent second factor or a permission. Your frontend gets the user as a signal or a hook, and your tests sign tokens offline.

api/routes.ts
import { createAuth } from '@anchring/auth/server';

const auth = createAuth({ project: 'acme', env: process.env.AUTH_ENV ?? 'test', audience: 'acme-api' });
const perms = auth.permissions({
  roles: { member: ['report:read'], admin: ['report:*'] },
  context: async (user) => ({ role: await roleOf(user.sub) }),
});

app.use('/api/*', auth.middleware());                                              // tokens checked offline
app.use('/api/billing/*', auth.middleware({ policy: { requireMfaWithin: '15m' } })); // a recent second factor
app.delete('/api/reports/:id', perms.guard('report:delete', (c) => loadReport(c.req.param('id'))), removeReport);

Hono, Express or any framework. A revoked session stops at its next refresh (minutes), or at once with back-channel logout.

AI setup

Tell your agent. It does the setup.

The docs are written for coding agents as much as for you. Your agent reads the rules, plans the integration with the MCP server, and writes code that uses the SDK as documented.

  • llms.txt and llms-full.txt: every guide and the SDK reference
  • Rule files for Claude Code, Cursor, Copilot and AGENTS.md
  • An MCP server that plans the integration, explains errors and manages flags
  • Errors end with a link to the dashboard page that fixes them
terminal
claude mcp add anchring -- npx -y @anchring/mcp

Rules for the agent: add CLAUDE.md to CLAUDE.md

prompt
Add Anchr.ing sign-in to this app with @anchring/auth:
project acme, environment test. Protect the API,
and gate exports on the Team plan.
Compared

One system instead of four vendors

A typical stack joins a sign-in provider, a billing service, a flag service and a chat tool with webhooks and your own code. Anchr.ing does the same jobs from one token.

JobTypical stackAnchr.ingSign-in, organisations and rolesClerk IncludedSubscriptions, invoices and EU VATStripe Billing Included; charges through your Adyen accountFeature flagsLaunchDarkly IncludedSupport chatIntercom IncludedPlan and flags where your API checks accessSynced between the services by webhooks and code you writeIn the user's token, checked offline in one guardWhere your users' data is hostedDepends on each vendor and planIn the EU (Hetzner, Germany and Finland)Contracts, DPAs and billsFourOne

Each of these is a capable product on its own; product names are trademarks of their owners. You can also use Anchr.ing for sign-in only and keep the rest.

Enterprise SSO

Sell to businesses without rebuilding sign-in

A customer's employees sign in through their company's identity provider, set up per organisation in your dashboard or by the customer's own admin.

  • SAML 2.0 or OpenID Connect, with presets for the common providers
  • Verified domains send each employee to the right connection
  • Enforce SSO per organisation, with break-glass owners
  • SCIM 2.0 creates, updates and removes their accounts
  • One connection included on Team, three on Scale
Microsoft Entra IDGoogle WorkspaceOktaMicrosoft AD FSOneLoginJumpCloudPing IdentitySAML 2.0
Test and production

Two environments from the first minute

The ID you pick becomes two hosts: one for testing, one for real users. They share nothing but the name: separate users, keys, apps and webhook secrets. In test, mail to your users lands in the mail log instead of being sent.

test
https://acme.test.anchr.ing
prod
https://acme.prod.anchr.ing
When it works, Promote to production copies apps with their audiences and claims templates, webhooks, social connections, settings and branding, and the users you imported into test.
api/auth.ts
import { createAuth } from '@anchring/auth/server';

// Same code in both environments: only AUTH_ENV changes.
export const auth = createAuth({
  project: 'acme',
  env: process.env.AUTH_ENV ?? 'test', // 'prod' after the promote
  audience: 'acme-api',
});

app.use('/api/*', auth.middleware()); // offline verification, no call per request
How it works

Set up in minutes, live when you are ready

Set up your sign-in

Sign up, pick an ID, and get a test and a production environment with their own hosts.

Register your apps

Add your browser app, API or CLI in the dashboard and copy its client ID.

Add the SDK

Sign users in from your app and check their tokens in your API, a few lines each.

Promote to production

Copy apps, webhooks and settings from test to prod in one step, then swap in the prod client IDs.

Read the getting-started guide
Switching

Bring your users with you

Export your users from the provider you have today and upload the file in the dashboard. It is converted in your browser, checked, and imported into the environment you pick.

  • Passwords carry over where your provider exports the hashes; where it doesn't, you email every user a link to set a new one, from the dashboard
  • Verified emails, names and linked social logins carry over
  • Try it in test first; nothing reaches production until you import there
Auth0ClerkFirebaseSupabaseAmazon CognitoKeycloak
Why Anchr.ing

The parts other providers leave to you

A real test environment

Not a flag on production: its own users, keys and apps, and mail kept in a log instead of sent. Every feature works there on every plan.

No call per request

Your API verifies tokens with cached keys, so a slow or unreachable sign-in service doesn't slow your API down.

Your own database, your own keys

You get your own database, signing keys and secrets, in test and in production, so your data never sits next to anyone else's.

Standards, no lock-in

OpenID Connect, OAuth with PKCE, WebAuthn, SAML and SCIM. Any OIDC library works; the SDK just makes it shorter.

2

environments, test and production

9

social providers built in, plus any OpenID Connect

6

providers to import your users from

0

calls to us when your API checks a token

Isolation by design

A bug in our code can't reach another customer's data

Every customer gets its own namespace with separate test and production databases. Our server reaches each one only through that environment's own database user, so a query that forgets a filter, or a token from one customer used against another, is refused by the database itself.

  • The customer comes from the address the request was sent to, never from a token or a form
  • Each environment has its own users, signing keys and secrets: a test token fails in production
  • This guards the request path; keys and secrets are protected separately
How customers are kept apartEach customer has its own namespace with separate Test and Production databases. Each environment holds its own users, apps, sessions and tokens, signing key and database user. A request from customer A's production app reaches only A's production database: a query from it towards customer B is refused by the database itself, and test never trusts production. A's production app Anchr.ing server Customer Aown namespace TestUsersAppsSessions, tokensSigning keyDatabase user ProductionUsersAppsSessions, tokensSigning keyDatabase user Test never trusts production Customer Bown namespace TestUsersAppsSessions, tokensSigning keyDatabase user ProductionUsersAppsSessions, tokensSigning keyDatabase user The databaserefuses How customers are kept apartEach customer has its own namespace with separate Test and Production databases. Each environment holds its own users, apps, sessions and tokens, signing key and database user. A request from customer A's production app reaches only A's production database: a query from it towards customer B is refused by the database itself, and test never trusts production. A's production app Anchr.ing server Customer Aown namespace TestUsersAppsSessions, tokensSigning keyDatabase user ProductionUsersAppsSessions, tokensSigning keyDatabase user Test never trusts production Customer Bown namespace Test Production The database refuses
Trust

EU-hosted, run by a Danish company

Your users' data stays in the EU

Servers at Hetzner in Germany and Finland, sign-in mail through Brevo in France, and a GDPR data processing agreement with every customer.

Sub-processors

A company you can reach

Simon ApS, Hellerup, Denmark (CVR 38213458). Founder-led: support replies come from the people who build it.

About us

Security, written down

A database per project and environment, argon2id passwords, keys encrypted per project, and a disclosure policy.

Security overview

Reliability, stated plainly

Nightly backups kept for 30 days, at most 24 hours of data at risk and 4 hours to restore. Your API keeps checking tokens while we are down.

Service status
Pricing

Free to start, simple when you grow

Plans grow with your sign-in apps and monthly active users. APIs and backend services are free, and test environments include everything, always.

Free

For hobby apps and trying it out.

€0/ month
  • 2 sign-in apps in productionAPIs and backend services are free
  • 5,000 monthly active users
  • 2 dashboard members
  • 1 project with test and production
  • Every sign-in method: email, password and social logins together
  • Not included: Passkeys and two-step verification (authenticator apps)
  • Not included: Require two-step verification for every user
  • Not included: Your own sign-in page, without "Powered by Anchr.ing"
  • Not included: Custom domain (auth.yourcompany.com)
  • Feature flags and support chat1 chat seat
  • Not included: Enterprise SSO (SAML, OIDC) and SCIM

Startup

For your first product in production.

€29/ month
  • 5 sign-in apps in productionAPIs and backend services are free
  • 20,000 monthly active usersthen €3 per 1,000 a month
  • 5 dashboard members
  • 1 project with test and production
  • Every sign-in method: email, password and social logins together
  • Passkeys and two-step verification (authenticator apps)
  • Require two-step verification for every user
  • Your own sign-in page, without "Powered by Anchr.ing"
  • 1 custom domain (auth.yourcompany.com)
  • Feature flags and support chat2 chat seats
  • Not included: Enterprise SSO (SAML, OIDC) and SCIM

Team

For growing products, and your first business customers' SSO.

€99/ month
  • 15 sign-in apps in productionAPIs and backend services are free
  • 50,000 monthly active usersthen €2 per 1,000 a month
  • 20 dashboard members
  • 3 projects, each with test and production
  • Every sign-in method: email, password and social logins together
  • Passkeys and two-step verification (authenticator apps)
  • Require two-step verification for every user
  • Your own sign-in page, without "Powered by Anchr.ing"
  • 3 custom domains (auth.yourcompany.com)
  • Feature flags and support chat5 chat seats
  • 1 enterprise SSO connection (SAML, OIDC) with SCIM€75 a month for each extra

Scale

For products at volume.

€299/ month
  • Unlimited sign-in apps in productionAPIs and backend services are free
  • 150,000 monthly active usersthen €1.50 per 1,000 a month
  • 50 dashboard members
  • 10 projects, each with test and production
  • Every sign-in method: email, password and social logins together
  • Passkeys and two-step verification (authenticator apps)
  • Require two-step verification for every user
  • Your own sign-in page, without "Powered by Anchr.ing"
  • 10 custom domains (auth.yourcompany.com)
  • Feature flags and support chat15 chat seats
  • 3 enterprise SSO connections (SAML, OIDC) with SCIM€75 a month for each extra
  • First reply within 4 business hours
Questions

Before you switch

The short answers. The guides have the long ones.

What is Anchr.ing?

Sign-in, organisations and roles, billing, feature flags and support chat for your apps, as one system built around the user's token. Your apps use it through OpenID Connect and one SDK for browsers, servers and CLIs.

Do I have to use your SDK?

No. Your sign-in is a standard OpenID Connect provider with discovery, so any OIDC or OAuth library works. The SDK makes the common cases a few lines and adds offline permissions, policies and webhook verification.

Where is our users' data?

In the EU, on Hetzner servers in Germany and Finland. Anchr.ing is run by Simon ApS, a Danish company, under a GDPR data processing agreement. The security page has the details.

Can we run it on our own servers?

On the Sovereign plan: a dedicated EU deployment, or the same software on your own servers under licence, so you can start hosted and move it in-house later.

What can I do on the free plan?

Build everything. Test environments have every feature on every plan; the plan decides what production gets and how many users it counts.

I already use another provider. Can I move?

Yes. Import users from Auth0, Clerk, Firebase, Supabase, Amazon Cognito or Keycloak in the dashboard. Passwords carry over where the provider exports the hashes; where it doesn't, you email every user a link to set a new one, from the dashboard. Your apps switch by changing their issuer and client ID.

Start in test, go live in an afternoon

Create your account, set up your sign-in, register your apps: all in the dashboard.

Free to start. No card needed.