A CLI password manager built on standard KDBX4, compatible with KeePassXC, Strongbox, and KeePassDX. The added value is in tooling: ergonomic CLI, first-class credential rotation, and a security audit command.
Note
This project is actively in development. Core read/write functionality works alongside existing KDBX clients, but some workflows have known gaps (see below).
export FREEKEE_DB=~/vault.kdbx # set once, omit --db everywhere
freekee init db.kdbx # create a new database
freekee ls --db db.kdbx # list entries
freekee get --db db.kdbx Personal/email # show entry fields
freekee get --db db.kdbx Personal/email --show # reveal password
freekee set --db db.kdbx Personal/email url=https://example.com
freekee set --db db.kdbx Personal/email --gen-password --print-generated
freekee history --db db.kdbx Personal/email # show password history
freekee mv --db db.kdbx Personal/email Work/email
freekee rm --db db.kdbx Personal/email
freekee rotate passphrase --db db.kdbx
freekee rotate kdf-params --db db.kdbx --memory 128
freekee rotate entry --db db.kdbx Personal/email
freekee audit --db db.kdbx # check ciphers, KDF, entry strengthEvery mutating command backs up the database before writing and rolls back on failure.
set password=mysecretexposes the value in shell history - a stdin input path is planned.- Keyfile-protected databases can be read but not written yet.
- No clipboard integration, no default database config, no shell completions.
Keyfile write support, safe password input for set, clipboard (get --clip), default database path config, shell completions, field-based search, bulk rotation, Tauri desktop/mobile UI.
cargo build --release
cargo test --workspaceRequires Rust 1.85+.
freekee can emit completion scripts for bash, zsh, fish, elvish, and
powershell. Pipe the output wherever your shell expects completions:
# bash
freekee completions bash > ~/.local/share/bash-completion/completions/freekee
# zsh (assumes ~/.zfunc is on $fpath)
freekee completions zsh > ~/.zfunc/_freekee
# fish
freekee completions fish > ~/.config/fish/completions/freekee.fishSetting a default database avoids passing --db <path> to every
command. Precedence (highest to lowest):
--db <path>on the command line.$FREEKEE_DBenvironment variable.default_dbin~/.config/freekee/config.toml(or the platform equivalent:$XDG_CONFIG_HOME/freekee/config.tomlon Linux,~/Library/Application Support/freekee/config.tomlon macOS,%APPDATA%\freekee\config.tomlon Windows).
Example config.toml:
default_db = "/home/me/secrets/personal.kdbx"Built on the shoulders of giants (non-exhaustive list):
- keepass - reference implementation
- keepass-rs
- keepassxc
Dual-licensed under MIT or Apache-2.0.