Перемикання між варіантами .env (local, staging, production) та синхронізація між машинами через age-шифрування.
envs дозволяє перемикатися між варіантами .env (local, staging, production) та синхронізувати їх між машинами — все за допомогою одного bash-скрипту. Він шифрує файли через age з використанням вашого SSH-ключа та зберігає їх у будь-якій спільній теці — iCloud Drive за замовчуванням, або будь-який каталог, вказаний у ENVS_STORE_DIR (Syncthing, Dropbox тощо).
envs push staging # зашифрувати .env як "staging"
envs use production # розшифрувати "production" у .env
envs diff staging # порівняти локальний .env зі збереженим "staging"
envs list # показати всі варіанти для цього репо
Жодних церемоній налаштування — envs використовує ваш ключ ~/.ssh/id_ed25519, окрема генерація ключів не потрібна. Немає демона чи обгорткових скриптів — .env залишається звичайним файлом, який усі інструменти читають як зазвичай. Скрипт ідемпотентний і працює однаково на macOS та Linux.
Варіанти кожного проєкту зберігаються у плоскому каталозі, названому за нормалізованим git remote URL, тому один і той самий репо на різних машинах автоматично відповідає одній теці. Перед перезаписом .env інструмент перевіряє sha256-хеш для виявлення незбережених змін і попереджає — використовуйте --force для примусового перезапису.
Шифрування використовує X25519 + ChaCha20-Poly1305 + HMAC-SHA256 через age. Зашифровані .age файли — це непрозорі блоби, які можна розшифрувати лише вашим приватним ключем, забезпечуючи додатковий рівень захисту незалежно від моделі шифрування сервісу синхронізації.