SYS NOMINAL

Open console

AUTHSY BACKEND PLATFORM AURADB ENGINE MIT

The database refuses to hand over anybody else's row.

Draw your backend on a canvas, deploy it, and talk to it from one client library. One rule per table decides who can read a row, and the database enforces it — so your code never has to remember to filter, and a route that forgets cannot leak anything.

FIG.01 — SAMPLED FLOW
Row rules 4

none / owner / authenticated / public

Databases to set up 0

The database comes with the platform

Client libraries 1

Users, queries, files, one install

Minutes to a working app 20

From an empty account, in the quickstart

SEC.01THE RULEFOUR VALUES, ONE PER TABLE

Nothing in that query says
“belonging to me”.

It does not have to. A table whose rule is owner returns that caller's rows and nothing else — for every route, every query, and the endpoint somebody adds next year and forgets to filter. The rule belongs to the table, so it applies everywhere the table is read.

APP.JS @authsy/client
// your app's own users, your app's own rows
import { createClient } from '@authsy/client';

const authsy = createClient(host, 'lsk_…');

await authsy.auth.signUp({ email, password });
await authsy.from('notes').insert({ body: 'mine' });

const { data } = await authsy.from('notes').select();
// → only theirs. Sign in as somebody
//   else and find nothing.
What that returns

Their rows, and no others

The same call, signed in as somebody else, comes back empty. Not filtered down to empty — never read in the first place, because the rule is checked where the row is decoded rather than in a predicate the query had to remember to carry.

Read the client library docs

Value 01

none

Nothing reaches a client. Server-side work only — the table is not readable through the API at all.

Value 02

owner

Each caller sees the rows they own. It stays fast as the table grows, because the rest are never read.

Value 03

authenticated

Any signed-in user of this project. A signed-in stranger from another project is not one of them.

Value 04

public

Readable without signing in. Writing is still governed by the rule, so “public” never means “editable by anyone”.

Why it holds

Nothing to configure wrong

Access rules usually fail one of two ways: the rule is right but something connects in a way that skips it, or the rule is right but a new endpoint never goes through it. Neither can happen here. There is one place a rule is applied, every read goes through it, and there is no setting anywhere that turns it off.

Isolation between projects

A wall, not a convention

Two projects on one account cannot reach each other's data, even by asking for a record by its exact id. Staging cannot read production, a client's project cannot read another client's, and neither of those depends on anybody remembering to keep them apart.

SEC.02ACCESS REVIEWMEASURED, NOT ASSUMED

It wears each identity
and writes down the answer.

“The rule looks right” is how access control fails. So the access review does not read your rules back to you. It signs in as each kind of caller in turn — nobody, a signed-in stranger, the person who owns the row — and reports what each one was actually given. Nothing it does is kept: the whole check is undone when it finishes.

What each kind of caller can do to a table whose rule is owner
Caller Read Insert Update Delete
Case 01anonymous Deny0 rows Deny Deny Deny
Case 02signed-in stranger Deny0 rows Passown only Deny Deny
Case 03the row's owner Pass3 rows Pass Pass Pass

CHECK COMPLETE · NOTHING CHANGED FINDINGS: rule_drifted FINDINGS: not_deployed Open the docs

Finding

rule_drifted

The rule on your canvas and the rule the live table is using are not the same. Editing a rule and not deploying it changes nothing, which is the safe direction — and still worth being told about.

Finding

not_deployed

A table exists on your canvas but has never been deployed. There is nothing live to review, and nothing live to leak.

Counted from

what is live, not what is open

Every number comes from what is actually live, not from what is open in an editor. A draft is a draft, and the review says so rather than counting it.

SEC.03PLATFORMPROJECTS, USERS, RULES, SCREENS

And the screen you
would otherwise build.

A project is a canvas, the tables and documents on it, its own users, and the keys that reach it. What comes with it is the week of admin screens you were going to build anyway — editable top to bottom, with your own columns and each person's licence already on their record.

01 · USERS TABLE

A support desk, not a read-only list

The screen you run support from. Edit a record, add columns of your own, see the licence somebody bought sitting on their row, ban an account. It shows what a user owns beside what they can actually see, and you can look at the app as one of them without any risk of changing their data by accident.

  • Your own columns
  • Licence on the record
  • Owns vs. can see
  • Look without touching

02 · APP USERS

Your users, not ours

Sign-up, sign-in, sessions and rotating refresh tokens, separate from your Authsy account and from every other project.

  • Email + password
  • SSO
  • Rotating refresh

03 · DOCUMENTS

Collections, queried the shape you expect

Store JSON documents and query them the way you already know — find, count and aggregate, with the filters and grouping you would expect. The same access rules apply.

  • Fields you can query by
  • Same rules apply

04 · LUMEN

A query you can read in order

Our own query language, for when a person is writing the query rather than a program building it. A collection, then a run of steps, in the order they happen.

  • Reads top to bottom
  • Safe by default
  • Same rules apply

05 · STORAGE & REALTIME

Buckets, a change feed, and a REST surface

Files under the same access rules as your rows, updates pushed to clients as they happen, and a REST endpoint for everything you deploy without writing one.

  • Secure uploads
  • Live updates
  • REST, generated

06 · LICENSING, KEYS & PAY

The product Authsy started as, still here

Licence keys with device binding, activation limits, trials, subscriptions and floating seats; a key gateway with checkpoints and issued-key statistics; and Authsy Pay for checkout, payment links, charges and payouts. If you are only building a web backend you can ignore all of it — it is a section inside a project, not something you have to set up first.

  • Ed25519 offline licences
  • HMAC-signed responses
  • Cards, Link, Apple & Google Pay
  • Crypto via Plisio

07 · REFERENCE

Every surface, written down

The client library, the row rules, collections, storage, the key system and the licensing API — with the request and response for each.

SEC.04AURADB ENGINETHE DATABASE, INCLUDED

The database comes
with the platform.

There is nothing to provision, nothing to connect and nothing to keep in sync. Your projects, their users, their rows and their files all live in one place, which is what lets a change that touches several of them either happen completely or not at all.

What AuraDB Engine gives you
SetupNone. No database to create, no connection string to paste, no credentials to rotate. It is running the moment your account is.
DurabilityWhen a write comes back, it is saved. Not queued, not cached, not probably — saved, including through a sudden restart.
AccessYour access rules are applied by the database itself. Every read goes through them, so there is no path around them and no setting that disables them.
IsolationProjects cannot reach each other's data. Staging cannot read production, and one client's project cannot read another's.
BackupsTake a copy at any time, without stopping anything and without a maintenance window.
PortabilityExport a project whole — its structure and its data — and import it somewhere else. Nothing you store is trapped here.
Self-hostingRun the whole platform yourself: one service and one directory to back up. It is MIT licensed.
What that means day to day

Fewer moving parts to get wrong

Most of the work in standing up a backend is not the code — it is the database you have to create, the credentials you have to store, the pool you have to size, the migration you have to run, and the second service you have to keep alive next to the first.

None of that exists here. You draw what you want, deploy it, and it is there. When you need to move, the whole project exports and imports again, so choosing us is not a door that locks behind you.

See how a project is built

SEC.05PRICINGBILLED ON PEOPLE WHO SHOWED UP

Monthly active users.
Not keys issued.

Licence keys are unlimited on every tier, including the free one, because counting them would charge you for the ones nobody redeemed. Top up in packs when you run out, and plans lapse back to free on their own rather than failing closed on your users.

Tier 00

Free

$0/ month

  • 2,000 monthly active users
  • Unlimited licence keys
  • Every row rule
  • Access review
Start
Tier 01

Indie

$9/ month

  • 10,000 monthly active users
  • Unlimited licence keys
  • Custom domains
  • Authsy Pay checkout
Choose indie
Tier 02

Studio

$29/ month

  • Higher monthly active users
  • Unlimited licence keys
  • Team members
  • Webhooks and audit log
Choose studio
Tier 03

Scale

$99/ month

  • The largest included allowance
  • Unlimited licence keys
  • Payouts and earnings
  • Priority support
Choose scale

ALL TIERS · UNLIMITED LICENCE KEYS TOP-UP PACKS AVAILABLE PLANS LAPSE TO FREE Or self-host it — MIT

SEC.06QUESTIONSANSWERED HERE

Q/01

What happens when an endpoint forgets to filter?

Nothing, which is the point. The filter was never the mechanism — the rule on the table is. An endpoint that asks for a whole table and forgets to narrow it gets back exactly what its caller was allowed to see, which on an owner table is that caller's own rows and no more.

Q/02

How do I know the rules do what I think they do?

Run the access review. It signs in as each kind of caller in turn — nobody, a signed-in stranger, the person who owns the row — and reports what each one was actually given. It tells you what happened rather than that a rule exists, and it measures what is live rather than what is open in an editor. Nothing it does is kept.

Q/03

Do I have to set up a database?

No. It comes with the platform and is running the moment your account is. Nothing to create, nothing to connect, no credentials to store and no second service to keep alive next to the first.

Q/04

Is the licensing product separate from the platform?

Same account, same project, reached as a section rather than a second dashboard. You choose what a project is for when you create it, so a licensing project opens on licensing and a backend project never shows you a payments panel you did not ask for.

Q/05

Can I run it myself?

Yes. The whole platform is MIT licensed and self-hosting is one service and one directory to back up. You can also start hosted and move later — a project exports whole, with its structure and its data.

Empty account to working app in twenty minutes.

Ending with the part where you sign in as somebody else and find nothing.