https://github.com/t33devv/pryva
python cli program to securely store your passwords offline
https://github.com/t33devv/pryva
aes-256 argon2 password password-manager password-manager-cli python3
Last synced: 17 days ago
JSON representation
python cli program to securely store your passwords offline
- Host: GitHub
- URL: https://github.com/t33devv/pryva
- Owner: t33devv
- License: mit
- Created: 2025-08-08T02:42:18.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-08-08T04:26:52.000Z (10 months ago)
- Last Synced: 2025-08-08T06:24:00.575Z (10 months ago)
- Topics: aes-256, argon2, password, password-manager, password-manager-cli, python3
- Language: Python
- Homepage:
- Size: 35.2 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# pryva - password manager CLI
python cli program to store your passwords locally in an encrypted SQLite database, protected by a master password.
## Features
- 🔐 **Secure Storage**: All passwords encrypted with AES-256 using your master password
- 🛡️ **Strong Authentication**: Master password hashed with Argon2
- 💻 **Cross-Platform**: Works on Windows, macOS, and Linux
- 🔍 **Search & Organization**: Find passwords by service name
- 📝 **Rich Metadata**: Store usernames, passwords, and notes for each service
- 🔄 **Easy Management**: Add, update, delete, and list your passwords
- 📋 **Clipboard Support**: Optional clipboard integration (with pyperclip)
## Installation
### From PyPI (when published)
```bash
pip install pryva
```
### Development Installation
```bash
git clone
cd pryva
uv sync
```
## Quick Start
1. **Initialize your password vault:**
```bash
pryva init
```
2. **Add your first password:**
```bash
pryva add Gmail
```
3. **Retrieve a password:**
```bash
pryva get Gmail
```
4. **List all your stored services:**
```bash
pryva list
```
## Usage
### Initialize Vault
```bash
pryva init
```
Creates a new password vault protected by your master password. This only needs to be done once.
### Add Password
```bash
pryva add
```
Adds a new password entry. You'll be prompted for:
- Username/Email
- Password
- Notes (optional)
### Get Password
```bash
pryva get
pryva get --copy # Copy to clipboard
```
Retrieves and displays password information for a service.
### Update Password
```bash
pryva update
```
Updates an existing password entry.
### Delete Password
```bash
pryva delete
pryva delete --force # Skip confirmation
```
Removes a password entry from the vault.
### List Services
```bash
pryva list
```
Shows all stored service names.
### Search Services
```bash
pryva search
```
Finds services containing the specified keyword.
## Security Features
- **Argon2 Password Hashing**: Master password is hashed using Argon2, a memory-hard function resistant to GPU attacks
- **AES-256 Encryption**: Sensitive data is encrypted using AES-256 in CBC mode
- **PBKDF2 Key Derivation**: Encryption keys are derived using PBKDF2 with 100,000 iterations
- **Secure Random Salt**: Each vault uses a unique, cryptographically secure random salt
- **Local Storage**: Your data never leaves your device
## Data Storage
Pryva stores your encrypted password database in:
- **Linux/macOS**: `~/.pryva/passwords.db`
- **Windows**: `%USERPROFILE%\.pryva\passwords.db`
## Development
### Running Tests
```bash
uv run pytest
```
### Installing with Clipboard Support
```bash
uv sync --extra clipboard
```
## Security Notes
- **Master Password**: Your master password can't be recovered
- **Backup**: Consider backing up your `~/.pryva/passwords.db` file securely
- **Environment**: Run Pryva in a secure environment
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests for new functionality
5. Run the test suite
6. Submit a pull request
## License
This project is licensed under the MIT License
## Disclaimer
This software is provided as-is. While care has been taken to implement security best practices, use at your own risk. Always keep backups of important data.
## Made with 💙 by Tommy