Security model
How Buddy actually protects your vault.
Architecture, exact parameters, known limits, and public code for the security-sensitive core. No “military-grade” shortcuts.
Verify the implementation. The Rust crypto core, the vault specification, and the break-glass recovery tool are public.
Browse open-source projects →Where your data lives
Your vault is a local database on your computer, in your operating system's application data folder. Every sensitive value in it is encrypted before it is written. It is never uploaded to us. We have no copy, no partial copy, and no way to request one.
The only things Buddy sends over the network are a license check to confirm your purchase and an update check for new versions. Neither contains anything from your vault. Once Buddy is downloaded and activated, opening and using your vault does not require an internet connection.
How the encryption works
Your master password never leaves your machine and is never stored in plain form. It is run through Argon2id using 64 MiB of memory, three passes, and four lanes for newly created vaults. Those parameters are stored with each vault so a future increase never strands an older file. The step-by-step walkthrough is in how Buddy encrypts your vault. Argon2id was the winner of the Password Hashing Competition and the current standard for turning a password into an encryption key. Argon2id is deliberately expensive to compute, which is what makes guessing attacks against a stolen vault file impractical.
The derived key encrypts your vault with XChaCha20-Poly1305, a modern authenticated cipher with 24-byte nonces. Authenticated means tampering is detected, not just hidden: a modified vault fails to decrypt rather than silently feeding you altered data.
Both algorithms are public, standardized, and widely studied. This isn't security through obscurity; the strength comes from the math, not from hiding how it works. Keys are wiped from memory when the vault locks, and fields are masked in the interface until you choose to reveal them.
Buddy's core is written in Rust, which makes memory corruption bugs such as use-after-free and invalid pointer access substantially harder to introduce in safe code. Rust is not a security proof: dependency bugs, unsafe blocks, logic mistakes, and flaws in the Vue interface or browser extension remain possible.
Key derivation
Argon2id
64 MiB · t=3 · p=4
Encryption
XChaCha20-Poly1305
Core language
Rust
Protection while you work
- •Touch ID unlocks the vault on macOS, with your master password held by the system keychain rather than typed into every prompt.
- •Windows Hello does the same on Windows: face, fingerprint, or PIN, backed by your machine's TPM.
- •Auto-lock engages when your machine sleeps or sits idle for a period you choose, clearing decryption keys from memory the same as a manual lock.
- •Clipboard clearing removes copied passwords after a few seconds, so they don't linger for the next paste.
- •Click-to-reveal keeps secrets masked until you ask for them.
- •Weak and reused password warnings surface problems before an attacker does.
- •Encrypted backups run automatically to a folder you choose, and restores are validated before they replace anything.
- •Encrypted attachments protect files you store alongside a login: IDs, backup codes, scanned documents. Each file gets its own randomly generated key, itself wrapped under a key separate from the one protecting your entries.
- •Signed, verified updates. Every release is cryptographically signed, and the app checks that signature before installing anything. A tampered download won't run.
- •Safety backups before migrations. When an update changes the vault's internal schema, Buddy backs it up automatically first, so a bad migration doesn't cost you your data.
The autofill path
The browser extension never holds your vault. It connects to the desktop app through your operating system's native messaging channel, a direct local pipe between the browser and Buddy. Credentials are handed over per fill, on your machine, and nothing transits the internet.
The first connection triggers a one-time pairing step: you approve it in a prompt, and only then does the desktop app issue a secret the extension presents on every later request. Each connection is also checked at the OS level: the desktop app confirms the calling process belongs to your own user account and is the actual native-host binary it installed. Neither check stops a determined attacker already running code as you (the real protection is that your vault stays locked and encrypted regardless), but they close off casual or drive-by attempts.
What we won't claim
Buddy has not yet been through an independent security audit. One is planned as the product grows, and the report will be published here when it happens. Until then, the security-sensitive core, versioned vault format, compatibility test vectors, and independent recovery tool are public. That makes the claims inspectable; it does not replace an audit.
The commercial desktop application is not fully open source. Its interface, updater, and licensing implementation remain closed. The exact boundary is documented on the open-source page.
Buddy has no server-side reset or recovery path for a forgotten master password. If biometric unlock is already configured on a device, its operating-system credential store may still let Buddy unlock there. Without the master password or an available biometric unlock, neither we nor anyone else can decrypt the vault.
Found something? Security reports go to the top of the pile. Contact us.
A safer architecture by default.
Try it free for 30 days and watch it work with the network cable unplugged.
Download Buddy