Zenith Passkeys (zenithpasskeys)
Local-first, air-gapped passkey (WebAuthn & FIDO2) manager with an encrypted vault.
Built and managed by Zenith Open Source Projects.
Highlights
- 🔒 100% Local-First & Air-Gapped: Zero cloud accounts, zero telemetry, zero external network requests. Your private keys never touch the internet.
- 🛡️ Hardware-Grade Cryptography: Master Encryption Key (MEK) protected by Argon2id (64MB RAM, 3 iterations, 4 lanes) and AES-256-GCM authenticated encryption.
- 🔑 Dual-Slot Emergency Recovery: Instant vault recovery using a 32-character Crockford Base32 emergency key (
XXXX-XXXX-...). Re-wraps the MEK under a new password without losing any passkeys. - ⚡ Zero Setup Required: Runs out of the box in any environment without manual virtualenv activation or system compilation.
- 🌐 Dual Standalone or Browser Mode: Use purely from the terminal as an independent passkey vault, or pair seamlessly with the Zenith Passkeys Chrome/Edge/Firefox Web Extension.
Installation
Install in any environment via pip:
pip install zenithpasskeys
Or install cleanly using pipx (recommended for isolated CLI tools with zero venv management):
pipx install zenithpasskeys
Once installed, you can launch the CLI using either command:
zenith-passkeys
# or
zenithpasskeys
Quickstart Guide
1. Initialize Your Secure Vault
Create a new encrypted vault and generate your 32-character Emergency Recovery Key:
zenith-passkeys init
Save the printed recovery key in a physical notebook or cold storage.
2. View Stored Passkeys
List all passkey credentials stored in your local vault:
zenith-passkeys list
# Filter by domain:
zenith-passkeys list --domain github.com
3. Run a Security Audit
Perform an offline diagnostic check for duplicate credentials or stale passkeys:
zenith-passkeys audit
4. Export & Import Credentials
Securely export your credentials (encrypted with a dedicated export password):
# Encrypted export (recommended):
zenith-passkeys export --encrypt
# Plaintext export:
zenith-passkeys export
Import credentials from another Zenith instance or migration file:
zenith-passkeys import export.json
5. Create Local Backup Snapshots
Create an encrypted backup snapshot directly to an external drive, USB stick, or backup directory:
zenith-passkeys backup create /path/to/backup/zenith-vault-backup.enc
6. Emergency Recovery
Forgot your master password? Recover your vault and set a new password using your Emergency Recovery Key:
zenith-passkeys recover
7. Instant Lock
Clear active authentication sessions and lock the vault across all processes:
zenith-passkeys lock
Command Reference
| Command | Description |
|---|---|
zenith-passkeys init |
Initialize a new vault and register native host messaging |
zenith-passkeys list |
Display stored passkeys with rich metadata and domain filtering |
zenith-passkeys audit |
Run offline security diagnostics and health scoring |
zenith-passkeys export |
Export credentials to encrypted or plaintext JSON |
zenith-passkeys import |
Import credentials from encrypted or plaintext export files |
zenith-passkeys backup |
Create or restore encrypted vault backup snapshots |
zenith-passkeys recover |
Reset master password using 32-character Emergency Recovery Key |
zenith-passkeys rotate-recovery-key |
Generate and display a new active Emergency Recovery Key |
zenith-passkeys change-password |
Update master password and re-wrap vault master key |
zenith-passkeys lock |
Clear active memory session and lock the vault |
zenith-passkeys config |
Configure auto-lock timeout (inactivity minutes) |
zenith-passkeys delete |
Permanently delete a credential by domain |
zenith-passkeys logs |
View internal diagnostic action audit trail |
Pairing with the Browser Extension (Optional)
Zenith Passkeys works as a standalone terminal manager, but also pairs with the Zenith Passkeys Browser Extension for passwordless web logins.
When you run:
zenith-passkeys init
it automatically writes the Native Messaging manifest for Google Chrome, Microsoft Edge, and Mozilla Firefox. The browser extension can then securely communicate with the local zenith-passkeys-host daemon to sign WebAuthn ceremonies on sites like GitHub, Google, and Amazon.
Security Architecture
- Argon2id Key Derivation:
- Memory: 64 MB (
m=65536) - Iterations: 3 (
t=3) - Parallelism: 4 lanes (
p=4)
- Memory: 64 MB (
- Dual-Slot Key Wrapping:
- Slot 0 (
pwWrapped): Master Encryption Key encrypted under master password. - Slot 1 (
recWrapped): Master Encryption Key encrypted under the 32-character recovery key. - Password changes re-wrap Slot 0 while keeping the recovery key permanently functional.
- Slot 0 (
- Atomic Operations & Integrity:
- Atomic file replace using tempfile swaps to eliminate corruption risks.
- File locks via
filelockprevent concurrent write race conditions. - Public Suffix List (PSL) validation prevents cross-subdomain credential spoofing.
License & Support
- License: Open source under the MIT License.
- Repository: GitHub
- Support & Security Disclosures:
zenithprojects@icloud.com - Maintained by: Zenith Open Source Projects
Metadata
Release files for zenithpasskeys 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| zenithpasskeys-1.1.1.tar.gz | 44.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| zenithpasskeys-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 89.3 kB
Release files / zenithpasskeys-1.1.1.tar.gz
| Download URL | zenithpasskeys-1.1.1.tar.gz |
|---|---|
| Size | 44.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
85bec5308205ac319b3c1df19739dacc664f6da3d3a924184a946d6f3ab43069
|
|
BLAKE2b-256 checksum How to use checksums |
fa0e4f1cb08d5babd6786000ca75b95f8af3009b6aaf02d5c1ec944b1d7604f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Release files / zenithpasskeys-1.1.1-py3-none-any.whl
| Download URL | zenithpasskeys-1.1.1-py3-none-any.whl |
|---|---|
| Size | 45.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9838961248786f297aa3c7f999d6058c8f4ac801b571385114fa491c28039632
|
|
BLAKE2b-256 checksum How to use checksums |
42e1bc6d04b9e034fa41f25d9a934e4bd428796376888cc1b52da3421c95fcec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|