Zero Accessby Railmandocs

Better Auth Zero Access

A passkey-centered security suite with standalone step-up, zero-access vaults, and Vault-backed E2E chat.

Security beyond sign-in

Better Auth Zero Access is a passkey-centered suite by Railman. Vault and Chat share a hardened WebAuthn and PRF foundation; Elevate can run independently with password, TOTP, or an optional passkey.

The suite provides:

  • standalone step-up / sudo that never unlocks encrypted data
  • a blind key store for browser-held master encryption keys (MEKs)
  • hardened passkey and PRF ceremonies for Vault unlock
  • sealed 1:1 Chat on a Vault-derived identity seed
Independent pathElevate

Password or TOTP works without Vault, PRF, or passkeys.

Passkey-centered stackHardened passkey + PRF
VaultUnlock locally

MEK and plaintext stay in the browser.

ChatUse the Vault identity

Zero-e2e consumes the seed after Vault unlock.

Live demos

ElevateStep-up lab — methods, L0/L1 gates, config catalog. No vault.
VaultFull ceremony: create, unlock, seal, recovery
ChatVault-layered E2E messaging with safety numbers

The demos share one app shell and Better Auth session. That shared shell is lab UX: Chat still derives its identity from the unlocked Vault path.

The rule worth memorizing

LayerMeaningDoes not do
L0 SessionBrowser is signed inUnlock encrypted data
L1 ElevateUser just re-provedUnwrap the MEK
L2 Vault unlockMEK is in tab memoryGrant admin routes

How it works has a clearer diagram. Background covers terms, crypto, and packages. Extended reading: WebAuthn and PRF, Crypto primitives, Crypto and package rationale.

Who this is for

  • Teams on Better Auth that need sudo without inventing session claims
  • Products that need passkey PRF unlock, optional vault password, BIP-39 recovery
  • Apps that keep step-up and encryption as separate control planes

Packages

PackagePrimary APIFeature
@railman/auth-zero-accesszeroAccess()Passkey-centered blind MEK store, wraps, recovery
@railman/auth-zero-access-passkeyenhancePasskey(passkey, …)Guard + stock options + browser PRF
@railman/auth-elevateelevate() · requireElevate()L1 step-up (passkey optional)
@railman/auth-login-factorloginFactors() · requireAccess()L0 stamps and gates
@railman/zero-vaultcreateVaultClient()Create / daily unlock / reset
@railman/zero-e2eX3DH + Double RatchetChat primitives on a Vault-derived identity

Full map and per-package getting started: Packages overview. HTTP paths and helpers: API & specs.

Start here

On this page