No centre
No server and no traditional account password. Codes are computed locally and keep working offline.
Serverless, non-realtime two-factor authentication. Keys stay on your devices, and entries are encrypted before they leave them.
No server and no traditional account password. Codes are computed locally and keep working offline.
Entries are encrypted individually before leaving a device; QR and LAN channels carry ciphertext only.
QR codes support single frames, multiple frames and image import; devices on the same subnet can discover each other directly.
The master key is wrapped by a TPM, Android Keystore or StrongBox. The real backend is reported, never silently downgraded.
An Argon2id wrap plus Windows Hello or Android biometrics, with the password always kept as the way back in.
The application is Apache-2.0; the Rust libraries are LGPL-3.0-or-later.
The application itself, three Rust libraries behind it, the binding layer, and two independent platform authentication paths. Every repository builds and publishes on its own, and every dependency names a version on crates.io.
A Compose Multiplatform application sharing one interface and one set of logic between Windows and Android.
Install and features →All cryptography, the vault format, and the pairing and sync protocols. No I/O, no clock, no unsafe.
Read the docs →Exposes the core as UniFFI bindings for Kotlin and Swift, and implements the LAN channel.
Read the docs →P-256 device identity primitives plus the platform-native key stores on Windows and Android.
Read the docs →QR capacity model, framing and image decoding, plus LAN multicast discovery and data plane.
Read the docs →Wraps a 32-byte key so that only a completed platform authentication can open it; currently Windows Hello.
Read the docs →Uses Android Keystore and BiometricPrompt to lock the master key behind the device's own user authentication.
Read the docs →The independent libraries know nothing about Qualia2FA; the core knows nothing about the interface or the platform.
qualia-dik ────────► qualia2fa-core ────────► qualia2fa-ffi ────────► Qualia2FA qualia-transport ──► qualia2fa-core qualia-transport ─────────────────────────► qualia2fa-ffi (iroh-lan) qualia-bioauth ───────────────────────────► qualia2fa-ffi qualia-bioauth-android ───────────────────────────────────────────► Qualia2FA (Android)
Every arrow is a versioned crates.io dependency, not a submodule and not a path dependency on a sibling directory.
Install the application, or bring one layer into your own project.