No master password — anywhere
Other managers add passkeys as a login shortcut on top of a master-password-derived key. Pass 014 derives the encryption key from the passkey's PRF output itself. No password exists to bypass, on the server or on disk.
Most password managers let you sign in with a passkey but still hold a master-password-derived key that can decrypt your vault. Pass 014 doesn't have one. The encryption key is derived directly from your YubiKey or Face ID — no fallback exists, anywhere.
Open source · Self-hosted · Desktop, iOS, and browser
Other managers add passkeys as a login shortcut on top of a master-password-derived key. Pass 014 derives the encryption key from the passkey's PRF output itself. No password exists to bypass, on the server or on disk.
Entries are AEAD-sealed under a per-vault key, which is wrapped under your account key, which is derived from a per-passkey PRF. The backend stores ciphertext + envelopes. Compromise the server and you have a brick.
Single Go binary plus nginx. Default storage is SQLite — no external services, no third-party telemetry, no upstream account. Backup is a GPG-encrypted file you keep wherever you want.
Add a new phone or laptop by scanning a one-shot QR code on your already-signed-in machine. Both sides display an 8-hex code; you compare on screen, the owner taps Approve. No password roams.
Vaults can be shared by name to other Pass 014 users. The vault key is sealed for the recipient via X25519 — your machine never hands it to the server, and the server can't forward it.
iOS credential-provider extension fills passwords system-wide in Safari and native apps. Firefox extension does the same on desktop. Both run fully offline once your vault is unlocked.
You tap a YubiKey or Face ID. The authenticator returns an assertion plus a PRF output — a 32-byte secret derived from the passkey and a per-account salt.
PRF output → HKDF → device key. Server hands over your account-key envelope (AEAD-sealed under the device key). Decrypted locally. The server never sees the plaintext key.
Each vault's encryption key is wrapped under either your account key (private) or sealed for you over X25519 (shared). Both unwrap on-device; entries decrypt one at a time on reveal.
One static Go binary, nginx as TLS terminator, SQLite by default. Tested on a $5 VPS.
# on the server
curl -L https://github.com/berrabou/pass014/archive/main.tar.gz \
| tar -xz
cd pass014-main
sudo deploy/install.sh
# point your DNS at the box, drop in nginx config from deploy/
sudo nginx -s reload
sudo systemctl start pass014
Full instructions in deploy/README.md. Single-user, multi-user, family — same setup either way.
docs/security-model.md for the full breakdown.
Pass 014 is open-source under the MIT license. Backend (Go), desktop app (Tauri + React), iOS app (SwiftUI + Rust via UniFFI), and Firefox extension all live in one workspace.