- Added comprehensive configuration files for seamless migration - SSH, GPG, Karabiner, iTerm2, Neofetch, SwiftBar configs - Pass license management system with templates and documentation - Enhanced shell functions with MAS updates and moon phase tracking - Comprehensive encrypted backup system (GPG AES256) - Included encrypted backups of all sensitive data - BBEdit as default editor with proper configuration - Fixed shell compatibility issues - Merged existing .zsh configs with improvements Security: - All sensitive data is GPG encrypted (.gpg files) - Private keys excluded from version control - Only configs and encrypted backups are tracked Following prime directive: durable, thoughtful solutions 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
Pass License Management
A thoughtful, durable solution for managing software licenses and sensitive text data using the Unix philosophy.
Overview
Pass (the standard Unix password manager) uses GPG encryption to securely store licenses, API keys, and other sensitive information. Everything is stored as GPG-encrypted files in ~/.password-store/, making it version-controllable and portable.
Initial Setup
Pass is already configured with your GPG key. If you need to reinitialize:
pass init YOUR-GPG-KEY-ID
Daily Workflow
Adding New Licenses
Method 1: Using the helper script (recommended)
new-license "AppName"
# Opens BBEdit with the license template
Method 2: Direct entry
pass edit licenses/AppName
# Opens BBEdit with a blank file
Method 3: Quick single-line entry
echo "LICENSE-KEY-HERE" | pass insert licenses/AppName
Viewing Licenses
# List all licenses
pass ls licenses/
# View specific license
pass show licenses/BBEdit
# Copy license key to clipboard (first line only)
pass -c licenses/BBEdit
# Copy specific line to clipboard (e.g., line 2)
pass show licenses/BBEdit | sed -n '2p' | pbcopy
Searching Licenses
# Search across all stored data
pass grep "adobe"
pass grep "scanner"
Editing Existing Licenses
pass edit licenses/AppName
# Opens in BBEdit for editing
Removing Licenses
# Remove single license
pass rm licenses/AppName
# Remove with confirmation prompt
pass rm -i licenses/AppName
Organization Structure
Recommended hierarchy for different types of sensitive data:
~/.password-store/
├── licenses/
│ ├── adobe/
│ │ ├── photoshop
│ │ └── illustrator
│ ├── microsoft/
│ │ └── office
│ ├── BBEdit
│ ├── VueScan
│ └── Bartender
├── api-keys/
│ ├── github
│ ├── openai
│ └── stripe
└── servers/
├── production
└── staging
Create subdirectories as needed:
pass insert licenses/adobe/photoshop
pass insert api-keys/github
License Template
The template at ~/dotfiles/pass-templates/license-template.txt contains:
Application: APPLICATION_NAME
License Key: LICENSE_KEY_HERE
Email: REGISTERED_EMAIL
Name: REGISTERED_NAME
Purchase Date: YYYY-MM-DD
Purchase Price: $AMOUNT
Vendor: VENDOR_NAME
Notes: Any additional notes about the license
Integration with Notes.app
For redundancy, you can keep copies in Notes.app:
- Create a "Software Licenses" folder in Notes
- Create secure notes (lock icon) for each license
- This provides iCloud sync and an additional backup
Backup Strategy
Your Pass data is backed up in three ways:
- Encrypted in dotfiles backup:
~/dotfiles/backups/complete/all_secrets_*.tar.gz.gpg - Version controlled: Can add
~/.password-store/to git - Manual backup:
tar -czf pass-backup.tar.gz ~/.password-store/
Advanced Usage
Generate passwords
pass generate accounts/example.com 20
Git integration
cd ~/.password-store
git init
git add .
git commit -m "Initial pass store"
Multiple line clipboard
# Copy email from license entry
pass show licenses/BBEdit | grep "Email:" | cut -d' ' -f2 | pbcopy
Temporary display (clears after 45 seconds)
pass show -c licenses/BBEdit
Troubleshooting
BBEdit doesn't wait: Ensure EDITOR="bbedit -w" is set in your shell
GPG key issues: Check with gpg --list-secret-keys
Can't decrypt: Ensure GPG agent is running: gpgconf --launch gpg-agent
Security Notes
- All data is encrypted with your GPG key
- Temporary files are created in secure locations and cleaned up
- Clipboard is cleared after 45 seconds when using
-c - Never commit
.password-store/to public repositories
Prime Directive Alignment
This solution embodies μέτρον (measure and proportion):
- Durable: Plain text files, GPG encryption, Unix philosophy
- Thoughtful: Organized structure, templates for consistency
- Portable: Works on any system with GPG and pass
- Secure: Industry-standard encryption, no proprietary formats