TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Show HN: Places-env, secure version control of environment files

6 pointsby marckrn5 months ago
Now that I have your attention (“Don’t you dare version control environment files!!”, “This can’t be safe.”) and before you tear me and my project to shreds, please allow me to take a moment to celebrate something small but meaningful: I’ve finally released a thing. Thank you.<p><i>Motivation tl;dr:</i> The existing tools and libraries for versioning and syncing environment files &#x2F; secrets across team members and CI machines just didn’t cut it for me. So, I set out to create my own solution — one finally checks all my boxes.<p><i>So what is places-env?</i><p>(I encourage you to check the readme <a href="https:&#x2F;&#x2F;github.com&#x2F;marckrenn&#x2F;places-env&#x2F;tree&#x2F;develop?tab=readme-ov-file#motivation--the-heck-is-places-env">https:&#x2F;&#x2F;github.com&#x2F;marckrenn&#x2F;places-env&#x2F;tree&#x2F;develop?tab=rea...</a> over on GitHub – it will all make a lot more sense with the corresponding schematic.)<p>- places-env is a self-contained, completely free open-source (FOSS) alternative to HashiCorp Vault, Infisical, dotenv-vault and sops.<p>- Leverages a single source of truth (SSOT) places.yaml for deriving multiple environment files.<p>- Similar to sops, places-env encrypts only the values in places.yaml, resulting in places.enc.yaml, which can be securely checked into git:<p><pre><code> - Congrats, your SSOT is now version-controlled - Always synchronized with collaborators - Fully in-sync with the rest of your code, branches and tags (try doing that with Infisical &amp; co.) - Changes remain &#x27;human-trackable&#x27; — even when values are encrypted - Contrary to sops, encryption keys can be assigned either per environment or on a per-value basis </code></pre> - Provides a straightforward setup with no dependency on external services or libraries.<p>- places watch start (persistently) tracks changes in places.yaml &#x2F; places.enc.yaml and automatically handles encryption, decryption, keeps .gitignore up-to-date, and auto-updates environment files. So it&#x27;s essentially set and forget.<p>If you’re intrigued, please also check out the readme’s FAQ section <a href="https:&#x2F;&#x2F;github.com&#x2F;marckrenn&#x2F;places-env&#x2F;tree&#x2F;develop?tab=readme-ov-file#faq">https:&#x2F;&#x2F;github.com&#x2F;marckrenn&#x2F;places-env&#x2F;tree&#x2F;develop?tab=rea...</a>.<p>Feedback, criticism, etc. is, of course, very welcome.

1 comment

theozero5 months ago
First off, congrats on getting this published! It&#x27;s a big jump from &quot;this kind of works for just me&quot; to &quot;tested, documented, flexible, and ready for others to use&quot;, so good on you for seeing it through! Seems like it has some nice DX improvements from sops, dotenvx, and other encrypt-your-secrets-within-your-repo type of tools. While that strategy may not work for every project, it is certainly valid and makes sense in some cases.<p>If you are looking for a tool that solves some of these problems, but also provides a more complete toolkit for dealing with config, check out <a href="https:&#x2F;&#x2F;dmno.dev" rel="nofollow">https:&#x2F;&#x2F;dmno.dev</a><p>It has a plugin system and while we have an encrypted file plugin that works like places-env, we also support syncing secrets from places like 1Password, Bitwarden, Infisical, with more plugins in the works (aws, gcp, azure).<p>Additionally it handles:<p>- validation and coercion<p>- full type-safety (currently only for TypeScript, but generated types for other languages are coming soon!)<p>- built in documentation for your config<p>- sharing config across projects in a monorepo<p>- composing config any way you want, not just limited to an env switch and string templates<p>- manage all config, not just sensitive values<p>- better conrol of static&#x2F;dynamic config (which values can be replaced at build time)<p>- security features (log redaction, leak prevention) for JS&#x2F;TS<p>- drop in integrations for many frameworks and tools<p>- additional tools for dealing with various platforms (vercel&#x2F;netlify&#x2F;cloudflare&#x2F;etc) that provide pre-built schemas defining env vars they inject, and additional tooling<p>- flexible type system to reuse existing config type definitions that come with built-in validations, docs, etc<p>It&#x27;s built in TypeScript, and you define your config schema in a TS file, but it is designed to be used in projects in any language, providing a unified config system for your whole stack.<p>Would love to hear what you think. Pop into our discord and say hi :) <a href="https:&#x2F;&#x2F;chat.dmno.dev" rel="nofollow">https:&#x2F;&#x2F;chat.dmno.dev</a>