A secure and efficient password manager and generator written in Rust. PassGen helps you generate, store, and manage your passwords securely. You can use either a traditional CLI (subcommands) or an optional full-screen terminal UI built with Ratatui.
Version: 1.12.0
- Full-screen TUI (
--tui/-t) for browsing, generating, inserting, retrieving, deleting, and configuring without leaving the terminal - Generate secure, random passwords (CLI or TUI)
- Copy passwords to clipboard automatically
- Encrypted password storage (ChaCha20-Poly1305)
- Organized password storage under your home directory
- Configurable settings (
~/.config/passgen/passgen.toml) - Backup: export the whole
~/passgenstore to.zip,.tar, or.tar.gz; import archives and merge new entries without overwriting existing files
- Rust programming language (latest stable version recommended)
- Linux/Unix-like system (for clipboard support: X11 via the
clipboardcrate, Wayland viawl-copy/wl-paste) - A terminal that supports alternate-screen and raw mode (typical modern terminals)
-
Clone the repository:
git clone https://github.com/MarcosFlavioGS/Password_Genius.git
-
Navigate to the project directory and run the installation script:
cd Password_Genius ./install.shOr build from source with Cargo:
cargo build --release
After installation, create your initial configuration (either subcommand or TUI):
passgen configOr launch the TUI and use Settings (s on the main screen), then Ctrl+S to save.
This creates ~/.config/passgen/passgen.toml. You can customize:
- Whether retrieved/generated passwords are shown on screen (
show_pass) - The encryption key used with Argon2 key derivation (
passgen_key)
- Encryption: Passwords at rest are encrypted; key material is derived via Argon2 from
passgen_keyin config (see project docs for design tradeoffs). - Clipboard: Retrieved/generated passwords can be copied to the clipboard from the CLI or TUI.
- Storage: One encrypted file per entry under
~/passgen/<name>/pass.
passgen [OPTIONS] [COMMAND]-t,--tui— Run the full-screen terminal UI instead of a one-shot subcommand.
With no command and without --tui, passgen prints help.
passgen --tui
# or
passgen -t| Screen | Keys (summary) |
|---|---|
| Main list | Type to filter entries (fzf-style subsequence match); ↑ / ↓ — move; Enter — open; Esc — clear filter; Ctrl+G / Ctrl+I / Ctrl+D / Ctrl+S / Ctrl+Q — generate / insert / delete / settings / quit |
| Generate / Insert | Tab — switch fields; Enter — submit; Esc — back |
| Retrieve | c — copy to clipboard; Esc — back |
| Delete confirm | y / n or Esc |
| Settings | Tab — switch fields; Space — toggle “show password”; Ctrl+S — save; Esc — back (or quit if no config yet) |
passgen list
passgen generate <name>
passgen insert <name>
passgen get <name>
passgen config
passgen delete <name>
passgen export [OUTPUT] # default: passgen-export-<time>.zip in cwd
passgen import <ARCHIVE> # .zip, .tar, or .tar.gz — merges into ~/passgenGenerate a new password for GitHub (CLI):
passgen generate githubOpen the TUI:
passgen -tList all stored password entry names:
passgen listsrc/
├── main.rs
├── cli.rs
├── import_export/ # Backup / restore ~/passgen archives
├── tui/ # Ratatui full-screen UI (entry: tui::run)
├── password/ # Password management
├── config/ # Configuration (read / write / interactive create)
├── path/ # Path utilities
├── clipboard/ # Clipboard operations
├── generator/ # Password generation
├── directories/ # Directory listing for stored names
├── utils/ # Utility functions
└── encrypter/ # Encryption and key derivation
Entries are stored as:
~/passgen/
├── github/
│ └── pass
└── work/
└── pass
Each pass file holds encrypted data (nonce + ciphertext).
Contributions are welcome. Please feel free to submit a Pull Request.
This project is licensed under the MIT License — see the LICENSE file for details.
