Firefox stores saved logins in key4.db and logins.json. Every existing reader depends on NSS (the Mozilla crypto library) or Python with pycryptodome. Firefox 144 added an AES-256-CBC key row beside the legacy 3DES row. Readers that load NSS from the system path broke when the system NSS was older than 3.113. Keywise reads and decrypts both key formats directly in Zig. No NSS, no Python, no libsqlite3. Inspired by the (now discontinued) Lockwise mobile app from Mozilla.
Demo
Terminal previewOverview
Terminal UI to read Firefox saved logins
Reads a Firefox profile's saved logins with no dependencies. One static binary for macOS, Windows and Linux.
From the maintainer
Run keywise with no arguments. It finds the default Firefox profile, asks for the master password, and lists every saved login. Arrow keys to browse, type to filter by hostname, Enter to reveal or copy a password.
One Zig core library drives the TUI through libvaxis. The core includes a built-in SQLite reader so the binary has zero runtime dependencies. The TUI renders a scrollable table with masked passwords. Selecting a row reveals the password inline or copies it.
CSV and JSON export. Biometric unlock on macOS (Touch ID) and Windows (Windows Hello). A Linux GTK front end.
Latest Release
Search-mode navigation and port files
Up and Down arrow keys move the list cursor while the search field is
focused. Enter reveals the selected password from search mode. Escape
leaves search. PgUp and PgDn already worked; this release adds the
remaining navigation keys.
FreeBSD, OpenBSD and MacPorts port files build from source with
zig build --system. release-set-version.sh and release-set-hashes.sh
update version, checksums, and distinfo across all port files.
zig fmt --check runs in the test suite.
A search that ran out of memory on Windows showed no feedback. The
status bar reports the failure now. A status-bar message longer than
256 characters corrupted the displayed length on Windows.
GitHub releases were created with an empty body. They carry the tag
annotation now.
CHANGELOG.md lists every change.
Discussions