Dank One Time Password - CLI and TUI TOTP/Authenticator storage
Project description
DOTP
Dank One Time Password - A CLI and TUI application for secure TOTP/Authenticator storage.
Features
- 🔒 Encrypted vault storage with password protection
- 💻 CLI commands for managing TOTP entries
- 🖥️ Interactive TUI for quick access
- 📥 Import/Export support for Aegis and otpauth URI formats
- ⏱️ Real-time token generation with auto-refresh
- 🔍 Search and filter capabilities with fuzzy matching
- 📋 Clipboard integration
- 🎨 Clean, modern terminal UI with progress indicators
Installation
Using uvx (Recommended)
Run DOTP without installation:
uvx dotp --help
Using uv (for development)
git clone https://github.com/yourusername/dotp.git
cd dotp
uv sync
uv run dotp --help
Quick Start
Initialize a vault
uvx dotp init
This creates an encrypted vault at ~/.config/dotp/.vault.dotp (or $XDG_CONFIG_HOME/dotp/.vault.dotp).
Add an entry
uvx dotp add --label GitHub --secret YOURBASE32SECRET
Or interactively:
uvx dotp add --label GitHub
# You'll be prompted for the secret
List all entries
uvx dotp list
Get a specific token
uvx dotp get GitHub
For scripting (clean output):
DOTP_PASSWD=123456 uvx dotp get GitHub | wl-copy
Import from file
DOTP supports importing from various formats. See the sample files in the repository:
full_vault.txt- Example otpauth URI formataegis_sample.json- Example Aegis export format
# From otpauth URI format
uvx dotp import full_vault.txt
# From Aegis JSON format
uvx dotp import aegis.json --aegis
Export to file
# To otpauth URI format
uvx dotp export backup.txt
# To Aegis JSON format
uvx dotp export backup.json --aegis
TUI Mode
Launch the interactive TUI by running dotp without arguments:
uvx dotp
# or with password from environment
DOTP_PASSWD=123456 uvx dotp
TUI Features
- Type to search: Start typing to filter entries in real-time
- Enter in search: Focus results to navigate with arrow keys
- Enter on item: Copy selected token to clipboard
- Ctrl+Enter: Copy token and close application
- Ctrl+A: Add a new entry
- Ctrl+Q: Quit
- Escape: Clear search
- Backspace: Return to search when navigating results
Configuration
Create a config file at ~/.config/dotp/config.toml:
# Path to your vault file (optional)
vault_path = "/path/to/.vault.dotp"
# Close TUI immediately after copying (default: false)
close_on_copy = true
# Clipboard command to use (default: wl-copy)
clipboard_command = "wl-copy"
Environment Variables
DOTP_PASSWD: Set vault password (useful for scripting)
Vault Location Priority
DOTP looks for the vault in this order:
--pathargumentvault_pathin config file.vault.dotpin current directory~/.config/dotp/.vault.dotp
Security
- Vault is encrypted using Fernet (symmetric encryption)
- Password is derived using PBKDF2HMAC with SHA256
- 480,000 iterations (OWASP recommended minimum)
- 16-byte random salt per vault
Development
Running tests
uv sync --extra dev
uv run pytest
Running with coverage
uv run pytest --cov=src/dotp --cov-report=html
Linting
uvx ruff check src/
uvx ruff format src/
Stack
- UV - Package management
- pyotp - TOTP generation
- cyclopts - CLI framework
- Rich - Terminal formatting
- Textual - TUI framework
- cryptography - Encryption
- xdg-base-dirs - XDG Base Directory support
License
MIT License - See LICENSE file for details
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dotp-0.1.0.tar.gz.
File metadata
- Download URL: dotp-0.1.0.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d23f61a7c13ca4194261f8d049126463dcf2ce86c9d8ebece208d7439e0c1e9f
|
|
| MD5 |
af43c0fc1acd9bd937fe18a10a04f99a
|
|
| BLAKE2b-256 |
86a066498f137434a42c38b5cd5d847605564ffc00ccb5fb4c86a90aacbf3e7c
|
File details
Details for the file dotp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: dotp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6efdbd7339f375a653e2f92e2c2b05f068a841a096378a507b4e7f68e05f8283
|
|
| MD5 |
28908b60d142b4c98a6ea4441bf069c3
|
|
| BLAKE2b-256 |
729804385424b3398c0763ab2adffe530613da9f8cde75f705482bc62e1ce779
|