Zero Accessby Railmandocs
Packages

Zero-vault

Getting started with @railman/zero-vault — create, daily unlock, and recovery reset.

Getting started — Zero-vault

@railman/zero-vault is a browser product controller. It never talks HTTP itself — your app persists wraps via zero-access endpoints. It does not open on elevate success.

Guide: Vault · Demo: /vault

Install

pnpm add @railman/zero-vault @railman/auth-zero-access @railman/auth-zero-access-passkey

Setup

import { defineZeroAccessPasskeyCryptoConfig } from "@railman/auth-zero-access-passkey/client";
import { createVaultClient } from "@railman/zero-vault";

const cryptoConfig = defineZeroAccessPasskeyCryptoConfig({
  salt: process.env.NEXT_PUBLIC_PRF_SALT!,
});

const vault = createVaultClient({
  userId,
  passkeyOptions: cryptoConfig,
});

// create → force recovery export → unlockDaily → seal app data

Typical surface:

MethodRole
createVaultInit MEK + recovery (+ optional PRF/password wraps)
unlockDailyPRF and/or vault password
resetWithRecoveryPhraseBreak-glass reset
reenrollDailyMethodsAfter recovery

Requirements

  • Server: zeroAccess() + passkey stack in the same Better Auth instance (zero-access)
  • PRF salt only in browser crypto config
  • Recovery phrase for reset, not everyday unlock

Next

On this page