Skip to main content

The TUI for pass

Project description

Contributors Forks Stargazers Issues GPL3 License

PassTUI

The TUI for pass — the standard Unix password manager.

passtui

About The Project

PassTUI is a terminal user interface for pass — the standard Unix password manager. It brings a keyboard-driven, visual experience to your encrypted password store without ever leaving the terminal.

If you live in the terminal and want a fast, intuitive way to manage your GPG-encrypted passwords, PassTUI is for you.

Built With

Python Textual passpy

(back to top)


Features

  • Browse your password store in a tree view
  • Search / filter passwords in real time
  • View and edit password entries in a built-in editor
  • Copy password to clipboard with a single keystroke
  • Copy username to clipboard with a single keystroke
  • Copy any line to clipboard
  • Create a new GPG key and password store
  • Add new password entries
  • Sync the password store with a remote Git repository
  • Export your GPG key to a file
  • Import a GPG key and re-encrypt the store

(back to top)


Getting Started

Prerequisites

pass relies on GPG to encrypt and decrypt passwords, so gpg must be installed on your system.

Ubuntu / Debian

sudo apt install gnupg

CentOS / Fedora

sudo yum install gnupg

openSUSE

sudo zypper install gpg2

Gentoo

emerge --ask app-crypt/gnupg

Arch

sudo pacman -Syu gnupg

macOS

brew install gnupg

macOS additional setup:

gpg2 is not always available after brew install, so you might need to create a symlink:

ln -s $(which gpg) /opt/homebrew/bin/gpg2

macOS also requires pinentry-mac to be installed:

brew install pinentry-mac

Then, add pinentry to gpg-agent.conf (make sure ~/.gnupg already exists — if not, run gpg -k first):

echo "pinentry-program /opt/homebrew/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf

Finally, restart gpg-agent:

gpgconf --kill gpg-agent

Installation

Install PassTUI with uv

Install uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

Install passtui:

uv tool install --python 3.14 passtui

Then launch it:

passtui

(back to top)


Usage

Create a GPG Store

If you don't have a password store yet, PassTUI can create a GPG key and initialise the store for you in one step.

  1. Launch PassTUI: passtui
  2. Press g to open the Create GPG Store dialog
  3. Fill in your name, email
  4. Press Enter to confirm

PassTUI will generate a 4096-bit RSA GPG key and initialise the store at ~/.password-store (or the path you provided).

Tip: The store path defaults to ~/.password-store. You can also set the PASSWORD_STORE_DIR environment variable to point to a different location before launching PassTUI.

(back to top)

Add a New Password

  1. Press n to open a blank entry in the editor

  2. Fill in your password, username, URL, and any extra notes following the template:

    (your password)
    Username: your-username
    Url: https://example.com
    
  3. Press Ctrl+S to save

  4. When prompted, enter the path for the new entry (e.g., email/gmail)

Tip: The first line is always the password. PassTUI (and pass) will copy only the first line when you use the copy-password shortcut.

(back to top)

View an Existing Password

  1. Navigate the tree with j / k (or arrow keys)
  2. Expand a folder with Enter
  3. Select an entry — its decrypted contents will appear in the editor panel on the right
  4. Press e to move focus to the editor
  5. From the editor you can:
    • Press c to copy the password to the clipboard
    • Press b to copy the username to the clipboard
    • Press y to copy the current line to the clipboard
    • Press i to enter edit mode and make changes
    • Press Ctrl+S to save any edits

(back to top)

Sync with a Git Repository

PassTUI can push and pull your password store to/from a remote Git repository.

First-time setup (new store)

  1. Press s to trigger a sync
  2. When prompted, enter the remote repository URL (e.g., git@github.com:user/passwords.git)
  3. PassTUI will initialise a Git repo, add the remote, and push

Subsequent syncs (store already has Git)

  1. Press s
  2. PassTUI will pull with rebase and then push automatically

Note: This workflow is designed for stores that were created fresh. If your store was cloned from an existing remote, manage Git operations outside of PassTUI for the initial setup.

(back to top)

Export a GPG Key

Exporting your GPG key lets you back it up or transfer it to another machine.

  1. Press x to open the Export GPG Key dialog
  2. Enter your GPG key passphrase
  3. Optionally enter a custom output path (defaults to ~/passtui/gpg-export.asc)
  4. Press Enter to export

The key will be saved as an ASCII-armored .asc file.

Warning: Keep this file in a safe place. Anyone who has it and knows your passphrase can decrypt your passwords.

(back to top)

Import a GPG Key

Importing a GPG key allows you to move your password store to a new machine or add a new trusted key.

  1. Press z to open the Import GPG Key dialog
  2. Enter the path to the .asc key file (e.g., ~/passtui/gpg-export.asc)
  3. Press Enter to import

PassTUI will import the key, mark it as ultimately trusted, update the store's .gpg-id, and re-encrypt all entries with the new key.

(back to top)


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

(back to top)


Roadmap

  • 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 issues.

(back to top)


Contributing

Contributions, issues, and pull requests are welcome! See CONTRIBUTING.md for development setup instructions.

(back to top)


License

Distributed under the GNU General Public License v3. See LICENSE for more information.

(back to top)


Contact

Francisco Morales — fjmoralesp@outlook.com

Project Link: https://github.com/fjmoralesp/passtui

(back to top)


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

passtui-0.0.3b1.tar.gz (824.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

passtui-0.0.3b1-py3-none-any.whl (43.2 kB view details)

Uploaded Python 3

File details

Details for the file passtui-0.0.3b1.tar.gz.

File metadata

  • Download URL: passtui-0.0.3b1.tar.gz
  • Upload date:
  • Size: 824.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for passtui-0.0.3b1.tar.gz
Algorithm Hash digest
SHA256 bb2c52bf40c48972f9c9ab61a08061799042278fda5d17be101afca5cd2744cb
MD5 3880b259c9956ac4d6396476978f2d2d
BLAKE2b-256 55c938b2c6d2037f0b671c5a6ee2d88f7702c1cce417e8fe98453083f0338f46

See more details on using hashes here.

File details

Details for the file passtui-0.0.3b1-py3-none-any.whl.

File metadata

  • Download URL: passtui-0.0.3b1-py3-none-any.whl
  • Upload date:
  • Size: 43.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for passtui-0.0.3b1-py3-none-any.whl
Algorithm Hash digest
SHA256 3ba7dfbf705931aae6588507c687b2b824b400af1fa147455ebf4471673d6cb8
MD5 50e6cdf79308be40509b13fddc24f7cd
BLAKE2b-256 75fa7496f950607fe5ab555b7de40efefe58db915fbcc17e979467d1078e9565

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page