kpassh
A terminal TUI for browsing KeePass (KDBX) databases and managing SSH keys via the SSH agent.
Features
- Browse password entries by group with instant search
- Copy username, password, host, or URL to clipboard
- Detect and list SSH private keys (RSA, Ed25519, ECDSA) attached to KDBX entries
- Add/remove SSH keys to/from the running SSH agent — no passphrase prompt if stored in the entry's password field
- Reads the SSH key comment from the key file itself, preserving the original comment in the agent
- Internationalization: automatically uses English or Korean based on the OS locale (
LANGUAGE/LANG)
Installation
uv tool install .
Requirements
- Python >= 3.9
- Dependencies:
pykeepass,textual,cryptography,bcrypt,appdirs - Clipboard: one of
wl-copy(Wayland),xclip, orxsel(X11)
Setup
Before the first run, place your KDBX database in the app data directory:
kpassh-db path # show the expected database path
kpassh-db push # copy database.kdbx from the current directory
kpassh-db push -i my.kdbx # specify a custom filename
Usage
TUI viewer
kpassh # use the default database
kpassh /path/to/database.kdbx # specify a file
Enter the master password when prompted, then navigate the TUI.
Key bindings
General
| Key | Action |
|---|---|
1 |
Switch to Passwords tab |
2 |
Switch to SSH Keys tab |
q |
Quit |
Passwords tab
| Key | Action |
|---|---|
Tab / Shift+Tab |
Switch focus between Groups and Entries panels |
/ |
Open search (group name, title, username, URL) |
Esc |
Clear search / go back |
u |
Copy username to clipboard |
p |
Copy password to clipboard |
h |
Copy host to clipboard (from Host: line in Notes, or URL) |
l |
Copy URL to clipboard |
SSH Keys tab
| Key | Action |
|---|---|
a |
Add selected key to SSH agent |
d |
Remove selected key from SSH agent |
The passphrase is automatically read from the entry's Password field when adding a key. A manual prompt appears only if the entry has no password or the password is incorrect.
Database file management
The database is stored in the OS-specific user data directory.
| OS | Path |
|---|---|
| Linux | ~/.local/share/kpassh/database.kdbx |
| macOS | ~/Library/Application Support/kpassh/database.kdbx |
| Windows | C:\Users\<user>\AppData\Local\kpassh\database.kdbx |
kpassh-db path # print the database path
kpassh-db pull # copy from app data dir to current directory
kpassh-db pull -o backup.kdbx # specify output filename
kpassh-db push # copy from current directory to app data dir
kpassh-db push -i edited.kdbx # specify input filename
kpassh-db pull/push -f # overwrite if destination already exists
Project structure
kpassh/
__init__.py
main.py # TUI viewer (Textual)
ssh_agent.py # SSH agent socket protocol, key parsing and fingerprinting
db.py # Database file management CLI
i18n.py # Internationalization (gettext, auto-detects OS locale)
locale/
ko/LC_MESSAGES/
kpassh.po # Korean translations source
kpassh.mo # compiled catalog
database.kdbx # bundled default database
License
BSD 3-Clause License. See LICENSE for details.
Metadata
Release files for kpassh 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| kpassh-0.2.0.tar.gz | 19.1 kB | Without provenance | Details for kpassh-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| kpassh-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for kpassh-0.2.0-py3-none-any.whl |
Total release size: 37.9 kB
Release files / kpassh-0.2.0.tar.gz
| Download URL | kpassh-0.2.0.tar.gz |
|---|---|
| Size | 19.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9ea8d95983d6688d0b56345dc2a2245d397e5b179c1e27fa007b5eaf71b5563d
|
|
BLAKE2b-256 checksum How to use checksums |
d51c5976a20e071629c5943f9a24d09247a54b1006adb507e66494d4a7a70074
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / kpassh-0.2.0-py3-none-any.whl
| Download URL | kpassh-0.2.0-py3-none-any.whl |
|---|---|
| Size | 18.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9d73a218ae072e4d879a8c8aed5398651d64eeb3fed1d7b9fd5c7502be18a288
|
|
BLAKE2b-256 checksum How to use checksums |
42c1e71968e16a0c5c49e4c4be4beebb9906036e790bbe2b3b5e2d454449e901
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for kpassh 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.