Local password vaults keep secrets off vendor clouds, but moving the vault between machines means copying a database file by hand or trusting a file-sync service that leaves conflict copies, and filling a login still means switching windows. Subclave is a local-first desktop password manager: the vault lives on your machine and syncs end to end through storage you own.
v0.1.0 is the first release: an encrypted vault, sync to your own S3 bucket or WebDAV share, and a browser extension for Chromium browsers and Firefox.
Releases after v0.1.0 attach the extension next to the installers:
subclave-chrome.zip and subclave-firefox.zip. It is not in the Chrome Web
Store or signed by Mozilla yet, so it is loaded by hand.
First, in Subclave, open Settings > Browser and turn on "Chromium browsers" or "Firefox". That writes the native messaging manifest the extension connects through.
- Unzip
subclave-chrome.zipinto a folder you keep. The browser loads the extension from that folder every time it starts. - Open
chrome://extensions, turn on Developer mode and click Load unpacked. - Pick the unzipped folder. The extension's card shows the ID
fbefjngeldidlcdilbigapddeimhklpn, the only origin Subclave's native messaging manifest allows. The manifest pins akey, so every unpacked copy gets this ID. - With Subclave running and unlocked, open the browser's Extensions menu on the toolbar, click Subclave (pin it to keep it on the toolbar), then Pair with Subclave. Click Allow in Subclave once its code matches the one in the popup.
To update, replace the folder's contents with the next release's
subclave-chrome.zip and click reload on the extension's card. The browser
does not update an unpacked extension by itself.
Release and Beta Firefox install only add-ons signed by Mozilla, and this one is not signed yet:
- Release or Beta Firefox: open
about:debugging#/runtime/this-firefox, click Load Temporary Add-on and picksubclave-firefox.zip. Firefox removes it when it restarts, so it has to be loaded again after every restart. - Firefox ESR, Developer Edition or Nightly: set
xpinstall.signatures.requiredtofalseinabout:config, then inabout:addonspick Install Add-on From File in the gear menu and choosesubclave-firefox.zip. It stays installed.
Pair from the Extensions menu as in step 4 above. If the popup offers Pair with Subclave again after a restart, pair again and revoke the old entry under Settings > Browser.
Click a login field, or the key icon in it, to list the logins saved for that page's exact host, and pick one.
Logins for another host of the same domain (an entry for github.com opened
from gist.github.com) are not listed. The picker's last row,
N more logins on github.com, opens the Subclave popup, which lists every
match. Where the browser cannot open the popup from the page, the row turns
into text; then open Subclave from the browser's Extensions menu (or the
toolbar once pinned) and pick the login there.
Ctrl+Shift+L (Cmd+Shift+L on macOS) fills the current page without the
picker: one match fills right away; several open the popup, or fill the most
recently used login where the browser cannot open it.
The browser leaves the shortcut unset when another extension already holds
it. Set it at chrome://extensions/shortcuts, or in Firefox under
about:addons, gear menu, Manage Extension Shortcuts.
Needs Rust stable, Node 20.19+ with pnpm, and Tauri's prerequisites.
pnpm install
pnpm tauri:dev # dev build, separate data dir
pnpm tauri build # installersContributing: CONTRIBUTING.md. Design: ARCHITECTURE.md. Accepted limits: KNOWN-LIMITS.md. Security: SECURITY.md.
The Windows uninstaller removes the browser integration itself: the HKCU
native messaging keys and the manifests under
%APPDATA%\dev.rendy.subclave\browser-hosts\. The .deb, .rpm, AppImage and
macOS removals cannot reach per-user files, so before uninstalling there, turn
off both switches in Settings > Browser. That removes the manifest from every
browser Subclave still detects.
Per-user files an uninstall leaves behind:
- Linux and macOS: the
dev.rendy.subclave.jsonmanifest in each browser's native messaging directory, unless the switches were turned off first.- Linux:
~/.config/<browser>/NativeMessagingHosts/for Chrome, Chromium, Edge, Brave and Vivaldi (google-chrome,chromium,microsoft-edge,BraveSoftware/Brave-Browser,vivaldi), the Snap and Flatpak copies under~/snap/and~/.var/app/, and for Firefox~/.mozilla/native-messaging-hosts/,~/snap/firefox/common/.mozilla/native-messaging-hosts/and~/.var/app/org.mozilla.firefox/.mozilla/native-messaging-hosts/. - macOS:
~/Library/Application Support/<browser>/NativeMessagingHosts/(Google/Chrome,Chromium,Microsoft Edge,BraveSoftware/Brave-Browser,Vivaldi), and for Firefox~/Library/Application Support/Mozilla/NativeMessagingHosts/.
- Linux:
- The AppImage's
subclave-proxycopy, inside the app data dir. - The app data dir itself, which holds the vault: Linux
~/.local/share/dev.rendy.subclave/, macOS~/Library/Application Support/dev.rendy.subclave/, Windows%APPDATA%\dev.rendy.subclave\. Keep it, or a backup, until you no longer need the vault. - The logs: Linux
~/.local/share/dev.rendy.subclave/logs/, macOS~/Library/Logs/dev.rendy.subclave/, Windows%LOCALAPPDATA%\dev.rendy.subclave\logs\.
Derived from Tervia by rendyuwu, itself derived from TEDI by IlhamriSKY and Terax by Crynta, both Apache-2.0. This repo starts from the imported Tervia v0.1.3 tree.
