Computer Science
Web Dev
Software Development
App Dev
Cloud Engineering


Trust me when I say this, you are not the only one who faced a ridiculous amount of issues and inconveniences with managing .envs.
If you are using multiple devices or working with a team, you know how hard it is to keep track of all the .envs and their changes. You might have faced issues like:
  • Asking your team members to send you the latest .env files every time they make a change.
  • Corrupting the .env files because you forgot what temporary changes you did for using a different API_KEY.
  • Accidentally pushing .env files with sensitive information to the git repository.
  • Need to manually create and copy .env files from one project to another, or worse, one device to another.
  • Need to manually create .env.example files for your team members to know what .env variables are required.
  • rm -rf project && git clone project “Oh no! I have to ask my CTO for the .env again”.
  • Forgot to add dotenv.config() “proces.env.KEY=undefined!“.
  • Losing track of .env changes because you can’t keep track of them (until now!).
Not to mention how unsafe and dangerous it is to share your .env with your colleagues via slack / discord / teams / email / etc.
Well, you are not alone. We have all been there. And that’s why envshh is born.


Envshh is a CLI tool that helps you to manage your .env files. It is very simple and most importantly, IT DOES NOT EVEN TAKE A MINUTE to install, learn and use!


Envshh uses a simple concept of Encrypted .envs in git. You can use any git repository like GitHub, GitLab, or even your own self-hosted git server. Envshh will encrypt your .env files with your own password and store them in your own git repository. You can then pull the .env files from any device you want.


  • Encrypted .envs in git - Your .envs are encrypted and stored in your own git repository. You can use any git repository like GitHub, GitLab, or even your own self-hosted git server.
  • Multiple Branches - You can use multiple branches to store different .envs. For example, you can use dev branch for development .envs, prod branch for production .envs, and test branch for testing .envs.
  • Multiple Instances - You can create unlimited instances and save the .envs to different git repositories.
  • Super Easy and Convenient - envshh pullenvshh pushenvshh push -b stagingenvshh pull -b staging , envshh push -i work-envsenvshh pipeenvshh generate - That’s all you need to know to use Envshh. How easier can it be?
  • Offline Mode - You can use the offline option to temporarily disable the remote repository and use only the local directory to store the .envs. Git features will still work.
  • Generate .env.example - You can generate a .env.example file from your .env files.
  • Pipe .env to stdin - You can pipe a .env file to stdin. Then run your command. The .env variables will be available in the process.env without importing dotenv and using dotenv.config(), dotenv.load() or any other library in your codebase.
  • git clone and get .envs - You can clone your project just like git clone but get .envs for the project automatically without any extra steps, even if they are in “.gitignore`.
  • Super Secure - Your .envs are encrypted with a highly secure and encrypted algorithm with your own password. So even if someone gets access to your git repository (Even Microsoft), they won’t be able to decrypt the .envs without your password.
  • Cross Platform - Envshh is cross-platform. It works on Windows, Linux, and Mac.
  • Customizable - From default branch to default instance, from directory to .env filename patterns, you can customize everything. To learn more about this, check out the Configuration page.
  • Open Source - Envshh is completely open source. You can contribute to the project on GitHub
  • No Installation Required - You don’t need to install Envshh. You can use it with npx or pnpx or yarn dlx. See Quick Usage for more details.
  • No Configuration Required - You don’t need to configure Envshh. It works out of the box. But you can customize it to your needs. See Configuration for more details