Show HN: From dotenv to dotenvx – better config management
Scope and purpose of dotenvx
- Seen as an evolution of dotenv: CLI tool to load multiple
.envfiles, handle per-environment configs, and optionally encrypt individual values. - Some argue this could have been a backward‑compatible extension of dotenv instead of a new project; others see the split as marketing and company-building.
- Not Node-specific; positions itself as a generic process launcher with (optionally encrypted) env vars.
.env files and env vars in production
- Strong disagreement over use of
.envin prod:- Many argue
.envshould be dev-only and never exist on production servers. - Others note it’s common in VPS / real-world setups and they “just live with it.”
- Many argue
- Broader critique that env vars themselves are poor for secrets: they leak via logs, debugging, child processes, and
/proc/*/environ.
Secrets management & security model
- Advocates: encrypting .env values and committing them is a DX win and “good enough” for many teams; reduces risk of plain-text leaks and fits GitOps workflows.
- Critics: encryption without robust key management creates an illusion of security; if the private key leaks, everything is exposed.
- Concerns about key rotation, single
.env.keysfiles, and where to store the decryption key (often ends up in the same threat domain).
Encrypted secrets in git
- Supporters compare dotenvx-style encryption to tools like sealed-secrets, sops, or custom schemes; find it practical for small teams.
- Opponents insist secrets should live in vaults or infrastructure-native secret stores and never in VCS, even encrypted.
- Risk highlighted: rollbacks to older commits with outdated secrets; long-lived keys embedded in history.
Alternatives and comparisons
- Mentioned alternatives: sops, HashiCorp Vault, cloud secret managers (AWS, Azure, GCP), SecureStore, sealed-secrets, foreman, mise, dmno, phase.dev, others.
- Some prefer simple envdir-style folders, gpg-encrypted files, or password managers plus local injection.
Design and implementation critiques
- Worry about increased dependency surface vs original dotenv’s zero deps and Node’s built-in
--env-filesupport. - Concerns about command interpolation, inconsistent dotenv dialects, and potential security pitfalls.
- Some dislike that the tool can contact a “hub” over HTTP; would prefer a fully offline binary (often in Rust/Go).