Skip to main content
MonoPass is Monolex’s passkey store and WebAuthn/FIDO2 client. It keeps service-scoped P-256 passkeys behind an envelope-encryption key, supports standard navigator.credentials.create() and get() JSON, can drive complete HTTP relying-party registration/login flows, and has explicit interop paths for Chrome DevTools virtual authenticators. The 0.4.0 dispatcher exposes 28 operational root commands plus root help/version aliases. Published contract: monopass 0.4.0, OpenCLIs build 2026-05-27-232315. The executing binary, registry, and public CDN metadata agree on this release. The table below follows the exact 0.4.0 payload; generic token storage belongs to OpenCLIs Vault, not to a monopass cred command in this release.

Quick Start

--service <name> selects a logical store, defaulting to default, and --json enables structured output where supported. Those two global flags are filtered wherever they appear in argv. A missing --service value silently falls back to default, so always supply and verify the intended service.

Store and Integrity Commands

Passkey CRUD

Standard WebAuthn and RP Commands

Assertion and Interop Commands

The installed 0.4.0 help advertises export [--rp <domain>], but the handler never parses that flag and exports the whole service. Do not use --rp as a confidentiality boundary.

Parser and Exit Contract

  • Help is root-only: monopass help, -h, or --help. There is no command-specific help branch. monopass init --help still runs init because the handler ignores the extra token.
  • Version aliases are version, -v, and --version.
  • passkey-create and passkey-get always emit standard credential JSON even without the global --json flag.
  • Unknown/invalid arguments and invalid services exit 2; an uninitialized key exits 3; integrity failure exits 5; not-found exits 6; other errors exit 1.
  • Service names are 1–64 characters and accept Unicode alphanumerics, hyphen, and underscore. This differs from OpenCLIs Vault’s ASCII-only validator.

Storage and Key Ownership

Each service owns passkeys.db, where each private P-256 PKCS#8 value is encrypted with AES-256-GCM and a per-row nonce. A service-specific 32-byte master key opens those rows. Backend selection is ordered:
  1. MONOPASS_FORCE_KEYCHAIN forces the OS credential store.
  2. MONOPASS_FILE_STORAGE forces a user file (intended for debug/CI).
  3. If the stable OpenCLIs helper exists, MonoPass uses the Vault service monopass-<service>.
  4. Debug builds fall back to file storage; other builds use the OS credential store.
On first Vault use, a legacy keyring master key is copied best-effort into the Vault while the keyring copy is kept as recovery material. init and whereis still print the legacy ai.monolex.monopass.<service> identifier even when the Vault is the active backend; that output is not a backend-selection proof. Losing the master key makes the encrypted database unrecoverable. Export files contain plaintext private keys and are a different, much more sensitive backup boundary.

Published Payload Matrix

There is no Windows ARM64 artifact. Touch ID, Secure Enclave, se-test, and webauthn-rp-se-demo are macOS-only even though the general passkey store and software WebAuthn paths are cross-platform.

Choose the Right Mode

Relationships