TERMINAL UI · RUST · MIT

Your Proton Pass SSH keys, in the terminal.

List, generate, copy, trash and delete SSH keys — and run the SSH agent — with vim motions and one-letter actions. protui drives the official pass-cli and never touches a private key.

Download for macOS & Linux ↓ View source ↗

v0.1.0 is the latest release. Prebuilt binaries on GitHub Releases. Rust developers can also build from source.

◆ PROTUI● AGENT UP2/9 KEYS
deploy-ci
Work · UvImZaYMEtKJ…
ED25519
▶ github-personal
Personal · oJXyD5OVZQz5…
ED25519
hetzner-vps
Infra · unJJm/oSHoNr…
RSA4096
old-macbook
Personal · K5wdfg83xEkh…
RSA2048
c copyn new/ filtera agentD delete

Requires pass-cli

protui doesn't talk to Proton's servers. It shells out to the official Proton Pass CLI, which must be installed and logged in — otherwise protui exits before opening a UI you can't use.

$ brew install protonpass/tap/pass-cli
$ pass-cli login

Navigate like vim. Act with one letter.

Motions keep vim's meaning. Actions follow lazygit and k9s: one mnemonic letter each. No dd or yy — a list has one object under the cursor and no motions to disambiguate.

MOVE

j k
down / up
gg G
top / bottom
^f ^b
page down / up
^d ^u
half page down / up
/
fuzzy filter by title, vault, comment or fingerprint

ACT

c y
copy the public key
n
generate a new key
d
move to trash — recoverable
D
delete permanently — type the title to confirm
a
SSH agent: status, start, stop
r ? q
reload · help · quit

Built so secrets stay secret.

No private key, ever

The one upstream call that returns private key material is never used. Public keys are read one field at a time.

Nothing secret in argv

Passphrases reach pass-cli through the environment, not the command line any user can read with ps.

Escape sequences stripped

Shared titles and comments are sanitised before drawing, so they can't clear your screen or write your clipboard via OSC 52.

Fingerprints, computed locally

Algorithm and fingerprint come from the public key itself — no extra secret access, and --show-secrets is never passed.

Scanned in CI

Dependencies are checked against the RustSec advisory database, clippy treats every warning as an error, and the tests run on Linux and macOS.

Install

Download the binary for your platform from the latest release, put it on your PATH, and run protui. macOS and Linux; Windows is not supported.

Copying uses the system clipboard: built in on macOS, xclip, xsel or wl-copy on Linux.

Latest release

v0.1.0

released 2026-10-31

Prebuilt binaries for macOS and Linux, attached to every GitHub release.

Download v0.1.0 ↓ All releases & changelog ↗
ADVANCED · BUILD FROM SOURCE WITH CARGO
# install straight from the repo; needs Rust 1.88 or newer
cargo install --locked --git https://github.com/nxplain-sh/protui protui

# or from a clone
cargo xtask build   # → target/release/protui
cargo xtask install # → ~/.cargo/bin/protui

SSH keys. That's it.

v1 lists, generates, views, copies, trashes and deletes SSH keys, and manages the agent. Logins, notes, TOTP and vault management stay with pass-cli.