RU /EN
Start a project
← Selected projects
Case study

VaultGuard

An open-source password manager: a local KeePass (.kdbx) file with no server at all, or any Bitwarden / Vaultwarden-compatible server — your own or hosted. AutoFill, TOTP, biometrics, certificate pinning. Apache 2.0.

What it is

An open-source password manager. It works two ways: opening a local KeePass (.kdbx) file directly on the device, or connecting to a Bitwarden- or Vaultwarden-compatible server — your own Vaultwarden, the bitwarden.com cloud, or its EU instance.

The app operates no service of its own. The developer hosts no server, receives no vault content, and receives no money: the app has no in-app purchases or subscriptions, and any plan on the chosen server is between the user and that service.

Why it exists

A password manager is about trust, and trust requires verifiability. Most convenient clients are either tied to the vendor’s cloud, or closed source, or charge a subscription for features the user’s own server already provides.

Hence the two things that shaped the project: open source, and no backend of its own. If the app has nowhere to send data, the question “what is it sending” is answered by construction rather than by a promise.

What I did

The whole application: both vault types, the security model, the AutoFill extension, the password generator, TOTP, biometric unlock, import and export, localisation in two languages.

What’s technically interesting

The master password is never written to disk. In server mode it derives the vault key — Argon2id or PBKDF2, matching whatever the server is configured for. A local .kdbx is opened with the KeePass KDF: Argon2 or AES-KDF. Only derived material stays in memory for the session.

Two Keychain access groups. Session keys, the wrapped user key, KDF parameters and the offline-cache key live in an app-private group the AutoFill extension is not entitled to. The shared group holds only the minimum state AutoFill needs.

This is the project’s central architectural decision. The AutoFill extension runs in a separate process and is inherently more exposed than the main app: the system launches it on demand from any password field. So it receives neither the vault key nor any token, but a separate minimal cache sealed under a key derived from a short-lived shared secret with a configurable TTL. Locking, signing out, removing an account, closing a local vault and TTL expiry — each of these revokes access.

Self-signed certificates. System-trusted certificates are validated normally. A self-signed one requires confirming its SHA-256 fingerprint on first connection, and a later change of that fingerprint is flagged. It is a concession to people running a server at home, without silently trusting anything.

What came out of it

The app is in beta: managing entries, the generator, TOTP, AutoFill and biometrics are implemented; passkey support is preview. No independent security audit has been performed — stated plainly, because for a password manager that matters.

The app contains no analytics, no telemetry and no crash reporting.

There is a support page and a privacy policy.

VaultGuard is an independent project. It is not affiliated with, endorsed by or sponsored by Bitwarden Inc.; the names are used only to describe server compatibility.