Smart Password Manager TUI

A terminal user interface for smart password management built on smartpasslib

Generate deterministic passwords from secret phrases without storing them. No cloud, no database, no trust required.


smart-password-manager-tui-rs is a self-contained terminal application for managing smart passwords - passwords that are regenerated on demand from a secret phrase instead of being stored. It is built on top of the smartpasslib library and uses the same cryptographic algorithm as the Python, JavaScript, Kotlin, Go and C# implementations.

The application stores only public verification keys, descriptions and lengths. Your secret phrase and the actual passwords are never written to disk. Passwords are recalculated whenever you need them, using the same deterministic algorithm.

Decentralized by design: no cloud, no database, no third-party trust required. Your secrets never leave your device.

Core Principles

  • Zero-Storage Security - no passwords or secret phrases are ever stored or transmitted
  • Decentralized Architecture - no central servers, no cloud dependency, no third-party trust
  • Deterministic Regeneration - passwords are recreated identically from your secret phrase
  • Metadata Only - only public keys, descriptions and lengths are stored
  • Local Processing - all cryptographic operations happen on your device
  • On-Demand Discovery - passwords exist only when you generate them

What you can do

  1. Add entries - register a service description and a secret phrase, choose a length, and store only the public verification key
  2. Get passwords - enter the secret phrase for an entry and regenerate the password on demand
  3. Verify secrets - prove knowledge of a secret phrase without exposing it or generating a password
  4. Edit metadata - change the description or the length at any time
  5. Delete entries - remove metadata when you no longer need it
  6. Copy to clipboard - one key press copies a generated password to the system clipboard

Key Features

  • Decentralized & Serverless - no central database, no cloud lock-in
  • No Password Database - eliminates password storage completely
  • Deterministic Password Generation - same secret + same length = same password, always
  • Public Key Verification - verify secret knowledge without exposure
  • Full-Screen Terminal Interface - borders, colors, highlighted selection, modal forms
  • Secure Input - hidden secret phrase entry with Ctrl+T show/hide toggle
  • Real-Time Validation - live counters and validation of description, secret phrase and length
  • Sliding Window Input - cursor stays visible while typing long secret phrases
  • Copy to Clipboard - system clipboard on X11, Wayland, macOS, Windows; OSC 52 fallback including over SSH
  • About Screen - version, author, license, repository and website
  • Cross-Platform Data - same passwords.json format as Python, JS, Kotlin, Go and C#
  • No Network Access - runs entirely offline, no runtime dependencies

List screen

KeyAction
Up / kMove selection up
Down / jMove selection down
Enter / gGet password for selected entry
aAdd a new entry
eEdit selected entry (description and length)
dDelete selected entry (requires confirmation)
vVerify a secret phrase against selected entry
h / ?Open help
iOpen About
q / EscQuit
Ctrl+CQuit immediately

Form screens

KeyAction
TabNext field
Shift+TabPrevious field
EnterSave / submit (only when the form is valid)
EscCancel and return to list
Ctrl+TToggle secret phrase visibility
LeftMove cursor left
RightMove cursor right
HomeJump to start of field
EndJump to end of field
BackspaceDelete previous character
DeleteDelete character under cursor

Message screen

KeyAction
cCopy payload to clipboard
Enter / Esc / SpaceClose message
qQuit

Copy behavior

When you press c on a message that contains a password, the application tries two methods in order:

  1. System clipboard via the arboard crate. Works on X11, Wayland, macOS and Windows sessions.
  2. OSC 52 escape sequence written to stdout. Works in most modern terminals and over SSH, because the sequence is interpreted by the terminal on the user's side.

If neither method is available, the message modal reports No clipboard available on this host, and the password can be selected manually from the screen.

smart-password-manager-tui --help
smart-password-manager-tui --version

With no arguments the application starts in interactive mode.

Creating Your First Entry

  1. Press a to open the add form
  2. Enter a service description (e.g., GitHub Account)
  3. Enter your secret phrase (minimum 12 characters, never stored)
  4. Set password length (12–100 characters, 16–24 recommended)
  5. Press Enter - only the public verification key is stored

Retrieving a Password

  1. Select an entry with j / k
  2. Press g or Enter
  3. Enter your secret phrase
  4. Password regenerates identically for copying

Editing Metadata

  1. Select an entry and press e
  2. Update the description or length
  3. Press Enter to save

Deleting an Entry

  1. Select an entry and press d
  2. Confirm with y - only metadata is removed

Verifying a Secret

  1. Select an entry and press v
  2. Enter your secret phrase
  3. The application reports whether the secret matches the stored public key - without generating or displaying the password

Only public keys, descriptions and lengths are stored, as JSON. The file location follows the standard user data directory convention for your operating system.

PlatformPath
Linux~/.config/smart_password_manager/passwords.json
macOS~/.config/smart_password_manager/passwords.json
Windows%USERPROFILE%\.config\smart_password_manager\passwords.json

Format:

{
  "a3f8c1e0b9d2f4a6c8e0b1d3f5a7c9e1b2d4f6a8c0e2b4d6f8a0c2e4b6d8f0a1": {
    "public_key": "a3f8c1e0b9d2f4a6c8e0b1d3f5a7c9e1b2d4f6a8c0e2b4d6f8a0c2e4b6d8f0a1",
    "description": "GitHub Account",
    "length": 24
  }
}

What is NOT stored:

  • Your secret phrase
  • The actual password
  • Any reversible password data

What IS stored:

  • Public verification key (a hash derived from the secret)
  • Service description
  • Password length

The file is created automatically on first save. If it does not exist at startup, the application begins with an empty list.

Data Compatibility

  • Uses the same ~/.config/smart_password_manager/passwords.json format as the Python, JavaScript, Kotlin, Go and C# implementations
  • The same smartpasslib algorithm is used everywhere, so metadata can be synced through any channel without conversion
  • Consistent cryptographic operations across all ecosystem tools

Security Model

  • Proof of knowledge - public keys verify secrets without exposing them
  • Decentralized trust - no third party needed - you control your secrets completely
  • Deterministic security - same secret + same length = same password, always
  • Metadata separation - non-sensitive data stored separately from verification
  • Local processing - no data leaves your computer
  • No recovery backdoors - lost secret phrase = permanently lost access, by design

Decentralized Nature

There is no "forgot password" button. This is by design:

  • No central server can reset your passwords
  • No support team can recover your access
  • Your secret phrase is the ONLY key

This is the price of true decentralization - you are completely in control.

Secret Phrase Security

Your secret phrase is the cryptographic master key

  1. Permanent data loss - lost secret phrase = irreversible loss of all derived passwords
  2. No recovery mechanisms - no password recovery, no secret reset, no administrative override
  3. Deterministic generation - identical input (secret + length) = identical output (password)
  4. Single point of failure - secret phrase is the sole authentication factor for all passwords
  5. Secure storage required - digital storage of secret phrases is prohibited

Critical: Test password regeneration with non-essential accounts before production use.

Secret Phrase Requirements

  • Minimum 12 characters (enforced by the application)
  • Case-sensitive - MySecret and mysecret are different
  • Use a mix of: uppercase, lowercase, numbers, symbols, emoji, or Cyrillic
  • Never store digitally
  • NEVER use your password description as your secret phrase

Strong Secret Examples

" ! MyStrongSecretPhrase2026"   - mixed case + numbers + symbols
"P@ssw0rd!LongSecret"           - special chars + numbers + length
"КотБегемот2026НаДиете"         - Cyrillic + numbers
"Correct-Horse-Battery-42"      - memorable phrase with separator

Weak Secret Examples (avoid)

"short"                  - too short, rejected
"GitHub Account"         - using description as secret (weak!)
"password"               - dictionary word, too short
"1234567890"             - only digits, too short
"qwerty123"              - keyboard pattern
Same as description      - never use the same value as description

Powered by smartpasslib - the core library for deterministic password generation.

Key derivation

Key TypeIterationsPurpose
Private Key15–30 (dynamic)Password generation (never stored, never transmitted)
Public Key45–60 (dynamic)Verification (stored locally)

Character set (Google-compatible)

!@#$%^&*()_+-=[]{};:,.<>?/ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz

Validation rules

  • Secret phrase: minimum 12 characters
  • Password length: 12–100 characters

Decentralized architecture

  • No central authority required
  • Metadata can be synced via any channel
  • Your security depends only on your secret phrase
  • Works offline - no internet connection required

The same deterministic algorithm is available in multiple languages. Smart Password Manager TUI produces identical passwords to:

Data transfer: Metadata can be moved between platforms through the shared passwords.json format.

From crates.io

cargo install smart-password-manager-tui

Prebuilt binary (Linux, static musl)

Download from the Releases page:

chmod +x smart-password-manager-tui-<version>-linux-x86_64-musl
./smart-password-manager-tui-<version>-linux-x86_64-musl

From source

Requires Rust 1.88 or newer (edition 2024).

git clone https://github.com/smartlegionlab/smart-password-manager-tui-rs.git
cd smart-password-manager-tui-rs
cargo build --release
./target/release/smart-password-manager-tui

Build and install to your home directory

cargo build --release
install -Dm755 target/release/smart-password-manager-tui ~/.local/bin/smart-password-manager-tui

One-command install

curl -fsSL https://raw.githubusercontent.com/smartlegionlab/smart-password-manager-tui-rs/master/install.sh | bash

Uninstall

rm -f ~/.local/bin/smart-password-manager-tui

Your password metadata in ~/.config/smart_password_manager/passwords.json is never touched by the uninstaller. Delete it manually if you want to remove it:

rm -rf ~/.config/smart_password_manager

Termux (Android)

After cargo install, Termux won't find the binary because ~/.cargo/bin is not in PATH. Add it once:

echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

smart-password-manager-tui-rs/
├── Cargo.toml
├── Cargo.lock
├── .gitignore
├── LICENSE
├── README.md
├── install.sh
├── uninstall.sh
└── src/
    ├── main.rs        Entry point, terminal setup, event loop, CLI parsing
    ├── app.rs         Application state, screen enum, event handling
    ├── input.rs       Plain and password input widgets with cursor
    ├── ui.rs          Top-level render dispatcher
    └── screen/
        ├── mod.rs
        ├── list.rs    Table of stored entries
        ├── form.rs    Add / Edit / Get / Verify forms
        ├── confirm.rs Delete confirmation dialog
        ├── message.rs Success and error messages
        ├── help.rs    Full key binding reference
        └── about.rs   Version, author, license and links

By using this software, you agree to the full disclaimer terms.

Software provided "AS IS" without warranty. You assume all risks.

Full legal disclaimer: See DISCLAIMER.md

License: BSD 3-Clause License