Encrypt folders, notes and attachments on disk with a password, so private files stay unreadable when locked.
Encrypt folders in your Obsidian vault, notes and attachments alike, with a password. When a folder is locked, its files on disk are unreadable without the password or the recovery key.
https://api.lemonsqueezy.com/v1/licenses/activate. Lemon Squeezy returns an activation ID.https://api.lemonsqueezy.com/v1/licenses/validate to check the key is still active..vaultlocker file. A copy of each folder's key header (keys still encrypted) is kept in the plugin's own settings file.Everything works on a folder, so pick the folder first:
The first time you protect a folder, Vault Locker shows a recovery key. Save it somewhere safe, such as a password manager. It's the only way back in if you forget the password.
name.md.vlock (or a random name, with hidden names on), checks that it decrypts, and only then removes the original.Note.md becomes Note.md.vlock), and so do folder names. The contents are encrypted. Pro can give locked files random names..m4v or .zip), but they still get locked. Turn on Settings › Files and links › Detect all file extensions to see them..vlock files change, which is expected..vlock files stay on the device that locked them. Obsidian Sync also skips dot-files, so the folder's .vaultlocker key file does not travel; Vault Locker keeps a copy (keys still encrypted) in its own plugin settings and puts it back on the other device. That copy travels only if "Installed community plugins" sync is on. iCloud, Dropbox and Syncthing copy everything, so they need no setting.Copyright (C) 2026 Senior Enterprises LLC. Released under the GNU General Public License v3.0 or later (see LICENSE).
The license covers the code. The "Vault Locker" name and Pro license keys are not part of it: please don't publish a copy under the same name, and don't share or resell keys. Buying Pro is how this plugin gets paid for and kept up.
No npm packages needed (Node 22.18+ runs the TypeScript directly).
npm test: unit tests plus an end-to-end test of the built plugin.npm run build: writes main.js and copies it into test-vault/ (a throwaway vault for hand testing, created if missing).