A secure CLI password manager with dual-key encryption, TOTP support, and SSH key management.
Features
- Dual-key encryption - Master password + secret key for enhanced security
- Strong cryptography - Argon2id key derivation + AES-256-GCM encryption
- System keyring integration - Secure storage with macOS/Linux keychain
- TOTP support - Generate 2FA codes with auto-clipboard copy
- SSH key management - Store and manage SSH keys with ssh-agent integration
- Biometric authentication - Touch ID, Face ID, Apple Watch support on macOS
- Session caching - Avoid repeated password prompts with configurable timeout
Quick Start
# Install from crates.io
# Initialize deck
# Add a hand
# Get a hand
# Copy password to clipboard (auto-clears after 30s)
Installation
From crates.io (Recommended)
From source
From binary releases
Download pre-built binaries from GitHub Releases.
macOS (Apple Silicon):
Linux (x86_64):
With cargo-binstall
Basic Usage
Managing Hands (Password Entries)
# Add hand with cards (key-value fields)
# Add hand interactively
# List all hands
# Get hand details
# Copy specific card to clipboard
# Edit hand
# Remove hand
TOTP (Two-Factor Authentication)
# Add TOTP secret
# Get TOTP code (displays + copies to clipboard)
# Output: TOTP Code: 123456 (valid for 28 seconds)
# Remove TOTP secret
SSH Key Management
# Add SSH key from file
# Connect via SSH (auto-loads key)
# Pass additional SSH arguments
# List loaded keys
# Unload key from ssh-agent
Session Management
# Check session status
# Lock deck (clear cached session)
# Configure session timeout (minutes)
Advanced Features
URI-Based Secret Injection (1Password Compatible)
Inject secrets into config files using hc:// or op:// URI references:
# Create a template config file
# Inject secrets (supports both hc:// and op:// URIs)
# Or from stdin
|
URI Format: hc://[deck/]hand/card or op://[deck/]hand/card
Environment Variables with URIs
Run commands with secrets from URI references:
# Use hc:// or op:// URIs
# Supports environment variable substitution
Import/Export
# Export deck to encrypted JSON
# Import from encrypted JSON
Biometric Authentication (macOS)
Touch ID, Face ID, and Apple Watch authentication:
# Enable/disable biometric auth (enabled by default on macOS)
# After initial setup:
# - First unlock: Biometric + master password
# - Subsequent unlocks: Biometric only
Documentation
- Security Guide - Encryption details and security model
- SSH Key Management - Comprehensive SSH integration guide
- Multi-Deck Support - Managing multiple decks
- Distribution Guide - Release and distribution process
Security
Encryption
- Key derivation: Argon2id (19MB memory, 2 iterations) with master password + secret key
- Encryption: AES-256-GCM with random nonce per save
- Secret key: 160-bit random key stored in system keyring
Session Caching
The derived encryption key is cached in the system keyring to avoid repeated password prompts. Sessions automatically expire after the configured timeout (default: 60 minutes).
Backup and Recovery
Use hc export to backup your deck:
Important: Store export files securely. You need BOTH the export file and its password to restore your deck.
Building from Source
# Set up Git hooks (recommended for contributors)
# Build
# Run tests
# Lint
# Format
Git Hooks
The project includes a pre-push hook that automatically runs:
cargo fmt --check- Ensures code is properly formattedcargo clippy -- -D warnings- Catches common mistakes and enforces best practices
This prevents CI failures by catching issues before pushing to remote.
Platform Support
- macOS: Apple Silicon (aarch64) and Intel (x86_64)
- Linux: x86_64 GNU
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Acknowledgments
Built with: