{"_id":"@aminya/dotenv-vault","name":"@aminya/dotenv-vault","dist-tags":{"next":"1.26.2-aminya.1","latest":"1.26.2-aminya.1"},"versions":{"1.26.2-aminya.1":{"name":"@aminya/dotenv-vault","version":"1.26.2-aminya.1","description":"A secrets manager for .env files – from the same people that pioneered dotenv.","author":{"name":"Mot @dotenvorg"},"bin":{"dotenv-vault":"bin/run"},"homepage":"https://github.com/dotenv-org/dotenv-vault","license":"MIT","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/dotenv-org/dotenv-vault.git"},"dependencies":{"@oclif/core":"^1","@oclif/plugin-help":"^5.2.15","@oclif/plugin-not-found":"^2.3.34","@oclif/plugin-update":"^3.1.16","@oclif/plugin-warn-if-update-available":"^2.0.46","axios":"^1.6.7","chalk":"^4.1.2","dotenv":"^16.3.1"},"devDependencies":{"@oclif/test":"^2","@types/chai":"^4","@types/mocha":"^9.1.1","@types/node":"^16.18.11","chai":"^4","eslint":"^7.32.0","eslint-config-oclif":"^4","eslint-config-oclif-typescript":"^1.0.3","fs-monkey":"^1.0.4","globby":"^11","jest":"^27.5.1","memfs":"^3.5.1","mocha":"^9","oclif":"^2","shx":"^0.3.4","sinon":"^13.0.2","spyfs":"^1.0.2","ts-node":"^10.9.1","tslib":"^2.6.1","typescript":"4.9.5"},"oclif":{"bin":"dotenv-vault","dirname":"dotenv-vault","commands":"./dist/commands","plugins":["@oclif/plugin-help","@oclif/plugin-not-found","@oclif/plugin-update","@oclif/plugin-warn-if-update-available"],"warn-if-update-available":{"timeoutInDays":1},"topicSeparator":" ","topics":{"local":{"description":"[DEPRECATED][Switch to dotenvx: github.com/dotenvx/dotenvx] Local only commands"}},"update":{"node":{"version":"16.15.1"},"s3":{"xz":true,"host":"https://dotenv-vault-assets.dotenv.org","bucket":"dotenv-vault"}}},"engines":{"node":">=16"},"bugs":{"url":"https://github.com/dotenv-org/dotenv-vault/issues"},"keywords":["dotenv","dotenv-vault","env",".env","environment","variables","config","settings"],"types":"dist/index.d.ts","scripts":{"build":"shx rm -rf dist && tsc -b","lint":"eslint . --ext .ts --config .eslintrc","posttest":"yarn lint","test":"tsc -b && mocha --forbid-only \"test/**/*.test.ts\""},"_id":"@aminya/dotenv-vault@1.26.2-aminya.1","_integrity":"sha512-8rRjyeRSCRUSEFu4Lr+TPTA1xxNdWm3v491oFwxvkp/GPTtS7HgPQXT/gZ+bQp9i+qc+9aT6W1gvogS5SVgdtA==","_resolved":"/private/var/folders/g3/vq5kpk3x7mz98yxypn40q_sm0000gn/T/e143c293ae0ac4613ccbd8418139ce7f/aminya-dotenv-vault-1.26.2-aminya.1.tgz","_from":"file:aminya-dotenv-vault-1.26.2-aminya.1.tgz","_nodeVersion":"23.4.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-8rRjyeRSCRUSEFu4Lr+TPTA1xxNdWm3v491oFwxvkp/GPTtS7HgPQXT/gZ+bQp9i+qc+9aT6W1gvogS5SVgdtA==","shasum":"51d5ce3076ed052c9f24fc9237e629e220983879","tarball":"https://registry.npmjs.org/@aminya/dotenv-vault/-/dotenv-vault-1.26.2-aminya.1.tgz","fileCount":93,"unpackedSize":154186,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD5zJWtqPHdpXxCbdr1arU4AdivvcozxE8cfEKseyOy5QIgXZIuluIITZbe8kiT1Qf0zmmNtvfdyNzVFOr/7YHvwdQ="}]},"_npmUser":{"name":"aminya","email":"aminyahyaabadi74@gmail.com"},"directories":{},"maintainers":[{"name":"aminya","email":"aminyahyaabadi74@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dotenv-vault_1.26.2-aminya.1_1747462465572_0.2640884287436538"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-17T06:14:25.454Z","1.26.2-aminya.1":"2025-05-17T06:14:25.740Z","modified":"2025-05-17T06:14:26.041Z"},"maintainers":[{"name":"aminya","email":"aminyahyaabadi74@gmail.com"}],"description":"A secrets manager for .env files – from the same people that pioneered dotenv.","homepage":"https://github.com/dotenv-org/dotenv-vault","keywords":["dotenv","dotenv-vault","env",".env","environment","variables","config","settings"],"repository":{"type":"git","url":"git+https://github.com/dotenv-org/dotenv-vault.git"},"author":{"name":"Mot @dotenvorg"},"bugs":{"url":"https://github.com/dotenv-org/dotenv-vault/issues"},"license":"MIT","readme":"![dotenv.org](https://dotenv.org/banner.png)\n\n`dotenv-vault` is a cli to *sync .env files across machines, environments, and team members*.\n\n[![NPM Version](https://img.shields.io/npm/v/dotenv-vault.svg?style=flat-square)](https://npmjs.org/package/dotenv-vault)\n\n## 🌱 Install\n\nIt works with a single command. Run `npx dotenv-vault@latest push`.\n\n```sh\nnpx dotenv-vault@latest push\n```\n```\nremote:   Securely pushing (.env)... done\nremote:   Securely pushed development (.env)\nremote:   Securely built vault (.env.vault)\n```\n\nThat's it. You securely synced your `.env` file. Next, tell your teammate to run `npx dotenv-vault@latest pull`\n\n```sh\nnpx dotenv-vault@latest pull\n```\n\nNice!\n\nSee further [usage](#%EF%B8%8F-usage) and [commands](#-commands).\n\n---\n\n#### Other Ways to Install\n\nDon't want to use [npx](https://docs.npmjs.com/cli/v7/commands/npx)? Install a number of other ways.\n\n<p><img alt=\"apple icon\" src=\"https://api.iconify.design/mdi/apple.svg\" width=\"20\" /> Install via <a href=\"https://github.com/dotenv-org/homebrew-brew\">Homebrew</a></p>\n\n```bash\n$ brew install dotenv-org/brew/dotenv-vault\n$ dotenv-vault help\n```\n\n<p><img alt=\"windows icon\" src=\"https://api.iconify.design/mdi/windows.svg\" width=\"20\" /> Install on <a href=\"https://dotenv-vault-assets.dotenv.org\">Windows</a></p>\n\n* [32-bit installer](https://dotenv-vault-assets.dotenv.org/channels/stable/dotenv-vault-x86.exe)\n* [64-bit installer](https://dotenv-vault-assets.dotenv.org/channels/stable/dotenv-vault-x64.exe)\n\n<p><img alt=\"docker icon\" src=\"https://api.iconify.design/mdi/docker.svg\" width=\"20\" /> Install and run commands via <a href=\"https://hub.docker.com/r/dotenv/dotenv-vault\">Docker</a></p>\n\n```bash\n$ docker run -w $(pwd) -v $(pwd):$(pwd) -it dotenv/dotenv-vault help\n```\n\n<a href=\"https://www.dotenv.org/install/\">Learn more about installation</a>\n\n## 🏗️ Usage\n\nWhen you make a change to your `.env` file, push it up.\n\n```bash\n$ npx dotenv-vault@latest push\n```\n\nCommit your `.env.vault` file safely to code.\n\n```bash\n$ git add .env.vault\n$ git commit -am \"Add .env.vault\"\n$ git push\n```\n\nNow your teammate can pull the latest `.env` changes.\n\n```bash\n$ git pull\n$ npx dotenv-vault@latest pull\n```\n\nThat's it!\n\n<a href=\"https://www.dotenv.org/docs/quickstart?r=1\">Learn more about usage</a>\n\n## 🚀 Deploying\n\nStop scattering your production secrets across multiple third-parties and tools. Instead, use an encrypted `.env.vault` file.\n\nGenerate your encrypted `.env.vault` file.\n\n```bash\n$ npx dotenv-vault@latest build\n```\n\nFetch your production `DOTENV_KEY`.\n\n```bash\n$ npx dotenv-vault@latest keys production\nremote:   Listing .env.vault decryption keys... done\ndotenv://:key_1234…@dotenv.org/vault/.env.vault?environment=production\n```\n\nSet `DOTENV_KEY` on your server.\n\n```bash\n# heroku example\nheroku config:set DOTENV_KEY=dotenv://:key_1234…@dotenv.org/vault/.env.vault?environment=production\n```\n\nCommit your `.env.vault` file safely to code and deploy.\n\n```bash\n$ git add .env.vault\n$ git commit -am \"Update .env.vault\"\n$ git push\n$ git push heroku main # heroku example\n```\n\nThat's it! On deploy, your `.env.vault` file will be decrypted and its secrets injected as environment variables – just in time.\n\n<a href=\"https://www.dotenv.org/docs/quickstart?r=1\">Learn more about deploying</a>\n\n## 🌴 Manage Multiple Environments\n\nAfter you've pushed your `.env` file, dotenv-vault automatically sets up multiple environments. Manage multiple environments with the included UI. [learn more](/docs/tutorials/environments)\n\n```\n$ npx dotenv-vault@latest open production\n```\n\nThat's it! Manage your ci, staging, and production secrets from there.\n\nWould you also like to pull your production `.env` to your machine? Run the command:\n\n```\n$ npx dotenv-vault@latest pull production\n```\n\nℹ️  **🔐 Vault Managed vs 💻 Locally Managed**: The above example, for brevity's sake, used the 🔐 Vault Managed solution to manage your `.env.vault` file. You can instead use the 💻 Locally Managed solution. [See the faq further below](#how-do-i-use--locally-managed-dotenv-vault). Our vision is that other platforms and orchestration tools adopt the `.env.vault` standard as they did the `.env` standard. We don't expect to be the only ones providing tooling to manage and generate `.env.vault` files.\n\n<a href=\"https://www.dotenv.org/docs/tutorials/environments?r=1\">Learn more about environments</a>\n\n## 📚 Examples\n\n<table>\n  <tbody>\n    <tr>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/platforms/vercel\">\n          <img src=\"https://api.iconify.design/devicon/vercel.svg\" alt=\"Vercel\", width=\"20\" />\n          Vercel\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/platforms/heroku\">\n          <img src=\"https://api.iconify.design/skill-icons/heroku.svg\" alt=\"Heroku\", width=\"20\" />\n          Heroku\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/cis/github-actions\">\n          <img src=\"https://api.iconify.design/devicon/github.svg\" alt=\"GitHub\", width=\"20\" />\n          GitHub Actions\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs/gitlab-ci\">\n          <img src=\"https://api.iconify.design/devicon/gitlab.svg\" alt=\"GitLab\", width=\"20\" />\n          GitLab CI/CD\n        </a>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/platforms/netlify\">\n          <img src=\"https://api.iconify.design/skill-icons/netlify-light.svg\" alt=\"Netlify\", width=\"20\" />\n          Netlify\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/platforms/docker\">\n          <img src=\"https://api.iconify.design/skill-icons/docker.svg\" alt=\"Docker\", width=\"20\" />\n          Docker\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/express/docker-compose\">\n          <img src=\"https://api.iconify.design/skill-icons/docker.svg\" alt=\"Docker Compose\", width=\"20\" />\n          Docker Compose\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/cis/circleci\">\n          <img src=\"https://api.iconify.design/logos/circleci.svg\" alt=\"CircleCI\", width=\"20\" />\n          CircleCI\n        </a>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/serverless/aws-lambda\">\n          <img src=\"https://api.iconify.design/logos/serverless.svg\" alt=\"Serverless\", width=\"20\" />\n          Serverless\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs/railway\">\n          <img src=\"https://api.iconify.design/simple-icons/railway.svg\" alt=\"Railway\", width=\"20\" />\n          Railway\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs/render\">\n          <img src=\"https://api.iconify.design/simple-icons/render.svg\" alt=\"Render\", width=\"20\" />\n          Render\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs/travis-ci\">\n          <img src=\"https://api.iconify.design/simple-icons/travisci.svg\" alt=\"Travis CI\", width=\"20\" />\n          Travis CI\n        </a>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/cis/google-cloud-build\">\n          <img src=\"https://api.iconify.design/devicon/googlecloud.svg\" alt=\"Google Cloud\", width=\"20\" />\n          Google Cloud\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/platforms/fly\">\n          <img src=\"https://api.iconify.design/logos/fly-icon.svg\" alt=\"Fly.io\", width=\"20\" />\n          Fly.io\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/addons/slack\">\n          <img src=\"https://api.iconify.design/devicon/slack.svg\" alt=\"dotenv-vault + Slack\", width=\"20\" />\n          Slack\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs/buddy\">\n          <img src=\"https://api.iconify.design/logos/buddy.svg\" alt=\"Buddy\", width=\"20\" />\n          Buddy\n        </a>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs/cloud66\">\n          <img src=\"https://api.iconify.design/simple-icons/cloud66.svg\" alt=\"Cloud66\", width=\"20\" />\n          Cloud66\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs/digital-ocean\">\n          <img src=\"https://api.iconify.design/devicon/digitalocean.svg\" alt=\"Digital Ocean\", width=\"20\" />\n          Digital Ocean\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs/dagger\">\n          <img src=\"https://dagger.io/img/logo-alt-2.svg\" alt=\"Dagger\", width=\"20\" />\n          Dagger\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs/bitbucket\">\n          <img src=\"https://api.iconify.design/devicon/bitbucket.svg\" alt=\"Bitbucket\", width=\"20\" />\n          Bitbucket\n        </a>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs\">\n          <img src=\"https://api.iconify.design/devicon/nodejs.svg\" alt=\"Node.js\", width=\"20\" />\n          Node.js\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/express\">\n          <img src=\"https://api.iconify.design/devicon/express.svg\" alt=\"Express\", width=\"20\" />\n          Express\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/nextjs\">\n          <img src=\"https://api.iconify.design/devicon/nextjs.svg\" alt=\"NextJS\", width=\"20\" />\n          NextJS\n        </a>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/remix\">\n          <img src=\"https://api.iconify.design/skill-icons/remix-dark.svg\" alt=\"Remix\", width=\"20\" />\n          Remix\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/astro/netlify\">\n          <img src=\"https://api.iconify.design/devicon/astro.svg\" alt=\"Astro\", width=\"20\" />\n          Astro\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/rails\">\n          <img src=\"https://api.iconify.design/logos/rails.svg\" alt=\"Rails\", width=\"20\" />\n          Rails\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/ruby\">\n          <img src=\"https://api.iconify.design/logos/ruby.svg\" alt=\"Ruby\", width=\"20\" />\n          Ruby\n        </a>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/sinatra/heroku\">\n          <img src=\"https://api.iconify.design/logos/sinatra.svg\" alt=\"Sinatra\", width=\"20\" />\n          Sinatra\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/flask/heroku\">\n          <img src=\"https://api.iconify.design/devicon/flask.svg\" alt=\"Flask\", width=\"20\" />\n          Flask\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/python\">\n          <img src=\"https://api.iconify.design/devicon/python.svg\" alt=\"Python\", width=\"20\" />\n          Python\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/integrations/supabase/nodejs?r=1\">\n          <img src=\"https://api.iconify.design/devicon/supabase.svg\" alt=\"Supabase\", width=\"20\" />\n          Supabase\n        </a>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/languages/nodejs/pulumi\">\n          <img src=\"https://api.iconify.design/vscode-icons/file-type-pulumi.svg\" alt=\"Pulumi\", width=\"20\" />\n          Pulumi\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/angular/vercel\">\n          <img src=\"https://api.iconify.design/devicon/angular.svg\" alt=\"Angular\", width=\"20\" />\n          Angular\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/nuxtjs\">\n          <img src=\"https://api.iconify.design/logos/nuxt-icon.svg\" alt=\"Nuxt\", width=\"20\" />\n          Nuxt\n        </a>\n      </td>\n      <td align=\"left\" valign=\"middle\">\n        <a href=\"https://www.dotenv.org/docs/frameworks/vite/vercel\">\n          <img src=\"https://api.iconify.design/devicon/vite.svg\" alt=\"Vite\", width=\"20\" />\n          Vite\n        </a>\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n<a href=\"https://www.dotenv.org/docs/\">See more integration guides</a>\n\n## 📖 Commands\n\n```\n$ npx dotenv-vault@latest help\n```\n\n* [new](#new)\n* [login](#login)\n* [logout](#logout)\n* [push](#push)\n* [pull](#pull)\n* [open](#open)\n* [whoami](#whoami)\n* [build](#build)\n* [keys](#keys)\n* [rotatekey](#rotatekey)\n* [decrypt](#decrypt)\n* [versions](#versions)\n* [local](#local-build)\n  * [local build](#local-build)   \n  * [local decrypt](#local-decrypt)   \n  * [local keys](#local-keys)   \n\n### `new`\n\nCreate your project at Dotenv Vault.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest new\n```\n\n##### ARGUMENTS\n\n*[DOTENV_VAULT]*\n\nSet .env.vault identifier. Defaults to generated value.\n\n```\n$ npx dotenv-vault@latest new vlt_6beaae5…\nlocal:    Adding .env.vault (DOTENV_VAULT)... done\nlocal:    Added to .env.vault (DOTENV_VAULT=vlt_6beaa...)\n```\n\n##### FLAGS\n\n*-y, --yes*\n\nAutomatic yes to prompts. Assume yes to all prompts and run non-interactively.\n\n---\n\n### `login`\n\nLog in to dotenv-vault.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest login\n```\n\n##### ARGUMENTS\n\n*[DOTENV_ME]*\n\nSet .env.me identifier. Defaults to generated value.\n\n```\n$ npx dotenv-vault@latest login me_00c7fa…\n```\n\n##### FLAGS\n\n*-y, --yes*\n\nAutomatic yes to prompts. Assume yes to all prompts and run non-interactively.\n\n```\n$ npx dotenv-vault@latest login -y\n```\n\n---\n\n### `logout`\n\nLog out of dotenv-vault.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest logout\n```\n\n##### FLAGS\n\n*-y, --yes*\n\nAutomatic yes to prompts. Assume yes to all prompts and run non-interactively.\n\n```\n$ npx dotenv-vault@latest logout -y\n```\n\n---\n\n### `push`\n\nPush `.env` securely.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest push\n```\n\n##### ARGUMENTS\n\n*[ENVIRONMENT]*\n\nSet environment to push to. Defaults to development\n\n```\n$ npx dotenv-vault@latest push production\n```\n\n*[FILENAME]*\n\nSet input filename. Defaults to .env for development and .env.{environment} for other environments\n\n```\n$ npx dotenv-vault@latest push production .env.production\n```\n\n##### FLAGS\n\n*-m, --dotenvMe*\n\nPass .env.me (DOTENV_ME) credential directly (rather than reading from .env.me file)\n\n```\n$ npx dotenv-vault@latest push --dotenvMe=me_b1831e…\n```\n\n*-y, --yes*\n\nAutomatic yes to prompts. Assume yes to all prompts and run non-interactively.\n\n```\n$ npx dotenv-vault@latest push -y\n```\n\n---\n\n### `pull`\n\nPull `.env` securely.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest pull\n```\n\n##### ARGUMENTS\n\n*[ENVIRONMENT]*\n\nSet environment to pull from. Defaults to development\n\n```\n$ npx dotenv-vault@latest pull production\n```\n\n*[FILENAME]*\n\nSet output filename. Defaults to .env for development and .env.{environment} for other environments\n\n```\n$ npx dotenv-vault@latest pull production .env.production\n```\n\n##### FLAGS\n\n*-m, --dotenvMe*\n\nPass .env.me (DOTENV_ME) credential directly (rather than reading from .env.me file)\n\n```\n$ npx dotenv-vault@latest pull --dotenvMe=me_b1831e…\n```\n\n*-y, --yes*\n\nAutomatic yes to prompts. Assume yes to all prompts and run non-interactively.\n\n```\n$ npx dotenv-vault@latest pull -y\n```\n\nIf you want to pull a specific version you can do so. For example,\n\n```\nnpx dotenv-vault@latest pull development@v14\n```\n\n---\n\n### `open`\n\nOpen project page.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest open\n```\n\n##### ARGUMENTS\n\n*[ENVIRONMENT]*\n\nSet environment to open to. Defaults to development.\n\n```\n$ npx dotenv-vault@latest open production\n```\n\n##### FLAGS\n\n*-y, --yes*\n\nAutomatic yes to prompts. Assume yes to all prompts and run non-interactively.\n\n```\n$ npx dotenv-vault@latest open -y\n```\n\n---\n\n### `whoami`\n\nDisplay the current logged in user.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest whoami\n```\n\n##### FLAGS\n\n*-m, --dotenvMe*\n\nPass .env.me (DOTENV_ME) credential directly (rather than reading from .env.me file)\n\n```\n$ npx dotenv-vault@latest whoami dotenvMe=me_b1831e…\n```\n\n---\n\n### `build`\n\nBuild .env.vault file.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest build\n```\n\n##### FLAGS\n\n*-m, --dotenvMe*\n\nPass .env.me (DOTENV_ME) credential directly (rather than reading from .env.me file)\n\n```\n$ npx dotenv-vault@latest build dotenvMe=me_b1831e…\n```\n\n*-y, --yes*\n\nAutomatic yes to prompts. Assume yes to all prompts and run non-interactively.\n\n```\n$ npx dotenv-vault@latest build -y\n```\n\n---\n\n### `keys`\n\nList .env.vault decryption keys.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest keys\n```\n\n##### ARGUMENTS\n\n*[ENVIRONMENT]*\n\nSet environment. Defaults to all.\n\n```\n$ npx dotenv-vault@latest keys production…\nremote:   Listing .env.vault decryption keys... done\ndotenv://:key_899..@dotenv.org/vault/.env.vault?environment=production\n```\n\n##### FLAGS\n\n*-m, --dotenvMe*\n\nPass .env.me (DOTENV_ME) credential directly (rather than reading from .env.me file)\n\n```\n$ npx dotenv-vault@latest keys dotenvMe=me_b1831e…\n```\n\n*-y, --yes*\n\nAutomatic yes to prompts. Assume yes to all prompts and run non-interactively.\n\n```\n$ npx dotenv-vault@latest keys -y\n```\n\n---\n\n### `rotatekey`\n\nRotate DOTENV_KEY.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest rotatekey production\n```\n\n##### FLAGS\n\n*-m, --dotenvMe*\n\nPass .env.me (DOTENV_ME) credential directly (rather than reading from .env.me file)\n\n```\n$ npx dotenv-vault@latest rotatekey dotenvMe=me_b1831e…\n```\n\n*-y, --yes*\n\nAutomatic yes to prompts. Assume yes to all prompts and run non-interactively.\n\n```\n$ npx dotenv-vault@latest rotatekey -y\n```\n\n---\n\n### `decrypt`\n\nDecrypt .env.vault locally.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest decrypt dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development\n```\n\n##### ARGUMENTS\n\n*[DOTENV_KEY]*\n\nSet `DOTENV_KEY` to decrypt .env.vault. Development key will decrypt development, production will decrypt production, and so on.\n\n```\n$ npx dotenv-vault@latest decrypt dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development\n```\n\n---\n\n### `versions`\n\nList version history.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest versions\n```\n\n##### ARGUMENTS\n\n*[ENVIRONMENT]*\n\nSet environment to check versions against. Defaults to development.\n\n```\n$ npx dotenv-vault@latest versions production\n```\n\n##### FLAGS\n\n*-m, --dotenvMe*\n\nPass .env.me (DOTENV_ME) credential directly (rather than reading from .env.me file)\n\n```\n$ npx dotenv-vault@latest versions dotenvMe=me_b1831e…\n```\n\n*-y, --yes*\n\nAutomatic yes to prompts. Assume yes to all prompts and run non-interactively.\n\n```\n$ npx dotenv-vault@latest versions -y\n```\n\nIf you want to pull a specific version you can do so. For example,\n\n```\nnpx dotenv-vault@latest pull development@v14\n```\n\n---\n\n### `local build`\n\nBuild .env.vault from local only\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest local build\n```\n\nThis will encrypt the contents of your `.env` file and any `.env.ENVIRONMENT` files you have locally into your `.env.vault` file.\n\n### `local decrypt`\n\nDecrypt .env.vault from local only\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest local decrypt dotenv://:key_1234@dotenv.local/vault/.env.vault?environment=development\n```\n\n##### ARGUMENTS\n\n*[DOTENV_KEY]*\n\nSet `DOTENV_KEY` to decrypt .env.vault. Development key will decrypt development, production will decrypt production, and so on.\n\n```\n$ npx dotenv-vault@latest local decrypt dotenv://:key_1234@dotenv.local/vault/.env.vault?environment=development\n```\n\n### `local keys`\n\nList .env.vault local decryption keys from .env.keys file\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest local keys\nlocal:    Listing .env.vault decryption keys from .env.keys... done\n environment DOTENV_KEY\n ─────────── ────────────────────────────────────────────────────────────────────────────────────────────────────────\n develompent dotenv://:key_33ee..@dotenv.local/vault/.env.va…\n production  dotenv://:key_7038..@dotenv.local/vault/.env.va…\n```\n\n##### ARGUMENTS\n\n*[ENVIRONMENT]*\n\nSet `ENVIRONMENT` to output a single environment's DOTENV_KEY.\n\n```\n$ npx dotenv-vault@latest local keys development…\nlocal:    Listing .env.vault decryption keys from .env.keys... done\ndotenv://:key_a682c..@dotenv.local/vault/.env.vault?environment=development\n```\n\n### `example`\n\nGenerate `.env.example` file with keys from a specific environment.\n\nExample:\n\n```bash\n$ npx dotenv-vault@latest example production\nremote:   Securely pulling production... done\nGenerated .env.example successfully with keys from production environment.\n```\n\n## ❓ FAQ\n\n### Why is the `.env.vault` file not decrypting my environment variables successfully?\n\nFirst, make sure you are using `dotenv@16.1.0` or greater. (If you are using a different language make sure you have installed one of its [libraries](#what-languages-does-this-work-with).)\n\nSecond, test decryption is working locally.\n\n```bash\n$ npx dotenv-vault@latest decrypt dotenv://:key_1234..@dotenv.local/vault/.env.vault?environment=production\n# outputs environment variables\n```\n\nThird, test decryption on boot is working locally.\n\n```bash\n$ DOTENV_KEY='dotenv://:key_1234..@dotenv.local/vault/.env.vault?environment=production' npm start\n# boots your app with production envs\n```\n\n### Should I commit my `.env.vault` file?\n\nYes. It is safe and recommended to do so. DO commit your `.env.vault` file to code. DO NOT commit your `.env` file. The `.env.vault` file contains ciphertext generated using AES-256. AES-256 is trusted by the US Government to transmit top-secret information and has a brute-force timescale of about a billion years.\n\n### I accidentally leaked my `DOTENV_KEY`, what can I do? \n\nDoes that attacker also have access to your `.env.vault` file?\n\n* No: good, the attacker cannot do any damage. They need both the `DOTENV_KEY` and `.env.vault` file to access your secrets. This extra layer of security sets the `.env.vault` file apart as a superior solution to other SecretOps solutions.\n* Yes: IMMEDIATELY start rotating your secrets at your third-party API providers. This scenario would be the same no matter what SecretOps solution you use.\n\nAfter completing the above, rotate your `DOTENV_KEY` using the [rotatekey](#rotatekey) command, rebuild your `.env.vault` file, and redeploy.\n\n### Is it safe to store my secrets with dotenv-vault?\n\nIt safer than scattering your secrets across multiple cloud providers. Those providers are focused on code deployment and server performance over secrets security.[1]\n\nDotenv Vault's singular focus is secrets security, and as a result we go to great lengths to make sure your secrets are safe. Afterall, we keep our secrets here too.[2]\n\n* [[1] CircleCI Breach](https://techcrunch.com/2023/01/05/circleci-breach/)\n* [[2] Security at Dotenv Vault](https://www.dotenv.org/security)\n\n### What languages does this work with?\n\nThe `.env.vault` file and its encryption algorithm is language-agnostic so technically it works with any language. We've built convenience libraries for it in a handful of languages and are adding more quickly.\n\n* [Go](https://github.com/dotenv-org/godotenvvault)\n* [Kotlin](https://github.com/dotenv-org/dotenv-vault-kotlin)\n* [NodeJS](https://github.com/motdotla/dotenv)\n* [PHP](https://github.com/dotenv-org/phpdotenv-vault)\n* [Python](https://github.com/dotenv-org/python-dotenv-vault)\n* [Ruby](https://github.com/dotenv-org/dotenv-vault-ruby)\n\n### How do I use 💻 Locally Managed dotenv-vault?\n\nThere are a series of **💻 Locally Managed** commands available to you. Locally managed never makes a remote API call. It is completely managed on your machine.\n\n**🔐 Vault Managed** adds conveniences like backing up your .env file, secure sharing across your team, access permissions, and version history.\n\n**💻 Locally Managed** is a good choice for someone who would prefer to handle this coordination themselves and does not want to trust Dotenv Vault with their secrets. \n\n<a href=\"https://www.youtube.com/watch?v=Ad7Wl8iC3Rs\">\n<div align=\"right\">\n<img src=\"https://img.youtube.com/vi/Ad7Wl8iC3Rs/hqdefault.jpg\" alt=\"how to deploy with a .env.vault file video tutorial\" align=\"right\" width=\"330\" />\n<img src=\"https://simpleicons.vercel.app/youtube/ff0000\" alt=\"youtube/@dotenvorg\" align=\"right\" width=\"24\" />\n</div>\n</a>\n\nHere's how it works.\n\nGenerate your `.env.vault` file.\n\n```shell\n$ npx dotenv-vault@latest local build\n```\n\nThis creates two files:\n\n* `.env.vault` - encrypted contents of .env* file(s)\n* `.env.keys` - decryption key(s)\n\nBoot using `.env.vault`.\n\n```\n$ DOTENV_KEY=<key string from .env.keys> npm start\n\n[dotenv@16.1.0][INFO] Loading env from encrypted .env.vault\n```\n\nGreat! Next, set the `DOTENV_KEY` on your server. For example in heroku:\n\n```shell\n$ heroku config:set DOTENV_KEY=<key string from .env.keys>\n```\n\nCommit your `.env.vault` file safely to code and deploy.\n\nYour `.env.vault` is decrypted on boot, its environment variables injected, and your app works as expected.\n\nCongratulations, your secrets are now much safer than scattered across multiple servers and cloud providers!\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md)\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-835a82e3481cf84f5f97d2cc6ed86aab"}