Smart Password Manager GUI

A cross-platform desktop GUI 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-gui-rs is a self-contained desktop 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 click copies a generated password to the system clipboard
  7. Search - filter entries by description or public key as you type

Key Features

  • Decentralized & Serverless - no central database, no cloud lock-in, complete user sovereignty
  • 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
  • Dark Theme Interface - clean, modern dark UI built with egui
  • Full CRUD - create, read, update, delete entries from a desktop window
  • Live Search - filter entries by description or public key in real time
  • Secure Input - secret phrase hidden by default with Show / Hide toggle
  • Live Validation - buttons enable only when the form is valid; counters for description and secret length
  • Copy to Clipboard - system clipboard on X11, Wayland, Windows; OSC 52 fallback
  • Keyboard Shortcuts - full keyboard navigation and hotkeys
  • About / Help / Shortcuts Dialogs - built-in documentation and reference
  • Cross-Platform Data - same passwords.json format as Python, JS, Kotlin, Go and C#
  • No Network Access - runs entirely offline, no runtime dependencies beyond the OS graphics stack

KeyAction
Ctrl+NAdd a new entry
Ctrl+GGet password for selected entry
Ctrl+EEdit selected entry (description, length)
Ctrl+RVerify secret against selected entry
DelDelete selected entry
EnterGet password for selected entry
Up / kMove selection up
Down / jMove selection down
F5Refresh list from disk
F1Open Help
Ctrl+/Open keyboard shortcuts reference
Ctrl+QQuit
EscClose any open dialog

Note: shortcuts are ignored while a text input has focus, so typing in the search box works normally.

When you click Copy to clipboard in the password dialog, or press Ctrl+C while the password is shown, the application tries two methods in order:

  1. System clipboard via the arboard crate. Works on X11, Wayland and Windows sessions.
  2. OSC 52 escape sequence written to stdout. Works in most modern terminals and also over SSH.

If neither method is available, the status bar reports No clipboard available, and the password can be selected manually from the password field.

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

With no arguments the application opens its main window.

Creating Your First Entry

  1. Click + Add (or press Ctrl+N)
  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. Click Create - only the public verification key is stored

Retrieving a Password

  1. Select an entry in the table (click a row, or use ↑ / ↓)
  2. Click Get or press Ctrl+G / Enter
  3. Enter your secret phrase
  4. The password regenerates - click Copy to clipboard to use it

Editing Metadata

  1. Select an entry and click Edit (or press Ctrl+E)
  2. Update the description or length
  3. Click Save

Deleting an Entry

  1. Select an entry and click Delete (or press Del)
  2. Confirm - only metadata is removed

Verifying a Secret

  1. Select an entry and click Verify (or press Ctrl+R)
  2. Enter your secret phrase
  3. The application reports whether the secret matches the stored public key - without generating or displaying the password

Searching

Type in the Search box at the top. Entries are filtered by description or public key as you type. Click Clear to reset.

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
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 produces identical passwords to:

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

Option 1: cargo install

Builds the binary for your system and installs it to ~/.cargo/bin/.

cargo install smart-password-manager

Option 2: Prebuilt binaries

Download from GitHub Releases:

PlatformFilename
Linux x86_64smart-password-manager-linux-x86_64-<version>
Windows x86_64smart-password-manager-windows-x86_64-<version>.exe

Option 3: One-command install (Linux)

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

Installs the binary to ~/.local/bin/ and registers the application in your desktop menu.

Build from source

Requires Rust 1.88+ (edition 2024) and on Linux - X11 / Wayland / OpenGL dev packages.

Linux (Debian / Ubuntu)

sudo apt-get install -y \
  libx11-dev \
  libxcursor-dev \
  libxrandr-dev \
  libxi-dev \
  libgl1-mesa-dev \
  libwayland-dev \
  libxkbcommon-dev

Linux (Arch)

sudo pacman -S base-devel libx11 libxcursor libxrandr libxi mesa wayland libxkbcommon

Build

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

Uninstall

cargo uninstall smart-password-manager

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

rm -rf ~/.config/smart_password_manager

smart-password-manager-gui-rs/
├── .github/
│   └── workflows/
│       ├── publish.yml
│       └── release.yml
├── src/
│   ├── main.rs        Entry point, window setup, CLI parsing
│   ├── app.rs         Application state, dialog states, business logic
│   ├── theme.rs       Color palette
│   ├── style.rs       egui visuals, button and frame factories
│   ├── clipboard.rs   System clipboard + OSC 52 fallback
│   └── ui/
│       ├── mod.rs          Render dispatcher
│       ├── main_window.rs  Menu, header, toolbar, search, table, info, status
│       ├── dialogs.rs      Add, Get, Edit, Verify, Delete, About, Help, Shortcuts
│       └── message.rs      Info and Error popups
├── .gitignore
├── Cargo.toml
├── Cargo.lock
├── LICENSE
├── README.md
├── install.sh
└── uninstall.sh

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