A secure and lightweight CLI password manager built with Python.
Passwords are encrypted using Fernet symmetric encryption (AES-256) and stored locally in a SQLite database. No cloud, no tracking, and no external services.
- AES-256 encryption via Fernet
- Local SQLite database storage
- Beautiful interactive terminal UI powered by Rich
- Automatic encryption key generation
- Password masking during input
- Input validation
- Graceful
Ctrl+Chandling - Atomic database transactions with automatic rollback
- Fully offline — your data stays on your machine
| Technology | Purpose |
|---|---|
| Python 3.14+ | Main programming language |
| SQLite3 | Local embedded database |
| cryptography | Fernet encryption |
| Rich | Terminal interface |
.
├── main.py # Application entry point
├── generate_key.py # Encryption key generator
├── secret.key # Encryption key (keep safe!)
├── vault.db # Password database
├── requirements.txt # Python dependencies
├── README.md # English documentation
├── README-FA.md # Persian documentation
└── LICENSE
git clone https://github.com/SMHO179/Password-Manager.git
cd Password-Managerpython -m venv .venv
source .venv/bin/activatepip install -r requirements.txtRun the application:
python main.py- Passwords are never stored as plaintext
- Every vault uses its own unique encryption key
- The encryption key is required to decrypt stored passwords
- Password input is hidden while typing
- Invalid empty inputs are rejected
Losing
secret.keymeans your encrypted passwords cannot be recovered.
Keep your key file safe and backed up.
| Column | Type | Description |
|---|---|---|
| id | INTEGER | Primary key |
| site | TEXT | Website or service name |
| username | TEXT | Account username |
| password | TEXT | Fernet encrypted password |
| created_at | TIMESTAMP | Creation time |
Contributions are welcome!
- Fork the repository
- Create your feature branch
- Commit your changes
- Open a Pull Request
This project is licensed under the terms of the LICENSE.
