The TUI for pass
Project description
PassTUI
The TUI for pass — the standard Unix password manager.
About
PassTUI is a terminal UI for pass, the standard Unix password manager. Browse and manage your GPG-encrypted password store without leaving the terminal.
Built With
Features
- Tree view for browsing your password store
- Real-time search and filter
- Built-in editor to view and edit entries
- Copy password, username, or any line to clipboard
- Create a GPG key and password store from scratch
- Add new password entries
- Sync with a remote Git repository
- Export and import GPG keys
Getting Started
Installation
Linux
This script handles detection of your distro's package manager and the full setup. If it doesn't cover your case, see the manual steps below.
curl -LsSf https://raw.githubusercontent.com/fjmoralesp/passtui/main/scripts/install-linux.sh | sh
Manual installation
Ubuntu / Debian
sudo apt install gnupg
CentOS / Fedora
sudo dnf install gnupg2
openSUSE
sudo zypper install gpg2
Gentoo
emerge --ask app-crypt/gnupg
Arch
sudo pacman -Syu gnupg
Configure gpg
- Create the keyring folder:
gpg -k - Add GPG terminal detection to your shell config (~/.zshrc or ~/.bashrc):
export GPG_TTY=$(tty)
macOS
macOS doesn't ship with GPG. The following script handles the common setup, but if it doesn't work for your case, see the manual steps below.
curl -LsSf https://raw.githubusercontent.com/fjmoralesp/passtui/main/scripts/install.sh | sh
Manual installation
- Install gnupg and pinentry-mac:
brew install gnupg pinentry-mac - Create the keyring folder:
gpg -k - Configure pinentry:
echo "pinentry-program $(brew --prefix)/bin/pinentry-mac" > "$HOME/.gnupg/gpg-agent.conf" - Add GPG terminal detection to your shell config (~/.zshrc or ~/.bashrc):
export GPG_TTY=$(tty) - Create a gpg2 binary symlink:
ln -s "$(which gpg)" "$(brew --prefix)/bin/gpg2" - Restart the GPG agent:
gpgconf --kill gpg-agent
Installation without GPG
If you prefer to handle GPG yourself and only install PassTUI, make sure you have the following in place first:
gpg2- A
pinentryprogram (e.g.,pinentry-curses,pinentry-gtk2,pinentry-mac)
Then install via uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install --python 3.14 passtui
passtui
Usage
Create a GPG Store
No password store yet? PassTUI can generate the GPG key and set everything up in one go.
- Launch PassTUI:
passtui - Press
gto open the Create GPG Store dialog - Fill in your name and email
- Press
Enter
A 4096-bit RSA key is generated and the store is initialised at ~/.password-store (or wherever PASSWORD_STORE_DIR points).
Tip: Set
PASSWORD_STORE_DIRbefore launching if you want the store somewhere else.
Add a New Password
-
Press
nto open a blank entry in the editor -
Fill in your details following this format:
(your password) Username: your-username Url: https://example.com -
Press
Ctrl+Sto save -
Enter the path for the entry when prompted (e.g.,
email/gmail)
Tip: The first line is always treated as the password — that's what
ccopies.
View an Existing Password
- Navigate the tree with
j/k(or arrow keys) - Expand a folder or decrypt an entry with
Enter - The decrypted contents appear in the editor panel on the right
- From there:
c— copy passwordb— copy usernamey— copy current linei— enter edit modeCtrl+S— save
Sync with a Git Repository
First time (new store)
- Press
s - Enter the remote URL (e.g.,
git@github.com:user/passwords.git) - PassTUI initialises a Git repo, adds the remote, and pushes
Already has Git
- Press
s - PassTUI pulls with rebase, then pushes
Note: If your store was cloned from an existing remote, manage the initial Git setup outside PassTUI.
Export a GPG Key
- Press
xto open the Export GPG Key dialog - Optionally enter an output path (defaults to
~/passtui/gpg-export.asc) - Press
Enter
The key is saved as an ASCII-armored .asc file.
Note: The GPG key passphrase will be requested using pinentry. Warning: Keep this file safe — anyone with it and your passphrase can decrypt your passwords.
Import a GPG Key
- Press
zto open the Import GPG Key dialog - Enter the path to the
.ascfile (e.g.,~/passtui/gpg-export.asc) - Press
Enter
PassTUI imports the key and then locally signs it as fully trusted using one of your existing private keys. If you don't have one yet, PassTUI will create a new key first (you'll be asked for a passphrase using pinentry for it) and use that to sign the imported key.
The trust is local-only (a local signature), so it has no effect outside your machine. Once signed, PassTUI updates .gpg-id and re-encrypts all entries with the imported key.
Note: The local signature is what tells GPG the key is trusted for encryption on this machine. It doesn't certify the key for anyone else.
Keybindings
Global
| Key | Action |
|---|---|
/ |
Focus the search bar |
n |
Add a new password entry |
e |
Focus the editor panel |
t |
Focus the password tree |
s |
Sync with Git |
g |
Create a new GPG Store |
x |
Export GPG key |
z |
Import GPG key |
Password Tree (T panel)
| Key | Action |
|---|---|
j / ↓ |
Move cursor down |
k / ↑ |
Move cursor up |
h |
Scroll left |
l |
Scroll right |
Enter |
Expand folder / select entry |
c |
Copy password to clipboard |
b |
Copy username to clipboard |
Editor (E panel)
| Key | Action |
|---|---|
i |
Enter edit mode |
Escape |
Cancel / exit edit mode |
j |
Move cursor down |
k |
Move cursor up |
h |
Move cursor left |
l |
Move cursor right |
c |
Copy password to clipboard |
b |
Copy username to clipboard |
y |
Copy current line to clipboard |
Ctrl+S |
Save changes |
Roadmap
- Route all passphrase prompts through
pinentryfor better security - Config file
- Vi motions for password editor
- Custom keybindings
- Imports
- 1Password txt or 1pif data
- KeePass KeepassX XML / CSV data
- Figaro's Password Manager XML data
- LastPass CSV data
- Ked Password Manager data
- Revelation Password Manager data
- Password Gorilla data
- PWSafe data
- KWallet data
- Roboform data
- password-exporter data
- pwsafe data
See the open issues for a full list of proposed features and known bugs.
Contributing
Contributions, issues, and pull requests are welcome. See CONTRIBUTING.md for development setup instructions.
License
Distributed under the GNU General Public License v3. See LICENSE for more information.
Contact
Francisco Morales — fjmoralesp@outlook.com
Project Link: https://github.com/fjmoralesp/passtui
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file passtui-0.1.1.tar.gz.
File metadata
- Download URL: passtui-0.1.1.tar.gz
- Upload date:
- Size: 92.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cfb46ef528939851807984d0cc86a43d05bb2fb189196531f0691111c9da3bd
|
|
| MD5 |
4d630cb913c2041465643d51738ee21b
|
|
| BLAKE2b-256 |
5fbfbe4b33d84a1f68a72488cc6d3c1e1de9f856832d28e6a74d637b0c135b75
|
File details
Details for the file passtui-0.1.1-py3-none-any.whl.
File metadata
- Download URL: passtui-0.1.1-py3-none-any.whl
- Upload date:
- Size: 44.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93900d57687aeae4d5e9bcc65fb002a9713d7502bdff36ba8d72101555a0bcda
|
|
| MD5 |
6124c620fdc82026a9d017b28a31d4f4
|
|
| BLAKE2b-256 |
684d234dd9564922e76a1fed70586b0856c4032d2eaa9022c76d8177e661ebc1
|