CLI reference
storeenv push
Encrypt and upload env files as a new version.
zsh
$ cd ~/code/my-app$ storeenv push -m "First version" --yesProject ada/my-app (no Git)Scanning 2 env files (ignored: node_modules, .git, dist, .next)SERVICE FILE ENV CHANGESroot .env default +2root .env.production production +2Encrypting 4 secrets locally and uploading... donedefault v b8c7ece "First version"production v e5314c9 "First version"Keys wrapped for 1 member. Template updated. View: storeenv openNext: run storeenv pull on another machine
$ storeenv push
Flags
--message <value>, -m | Version message, like a commit message. |
--file <value> | Push one file only, for example backend/.env.production. |
--service <value> | Push all files of one service. |
--force | Push on top even if the remote has a newer version. |
--dry-run | Show the plan and upload nothing. |
--skip-unverified | Encrypt only for readers whose keys are verified; the rest wait for a key share. |
More examples
$ cd ~/code/my-app$ storeenv push -m "Turn the flag on" --yesLocal commits to upload (1):fdab642 Turn the flag on +1fdab642 "Turn the flag on" default v 5a203a5Project ada/my-app (no Git)Scanning 2 env files (ignored: node_modules, .git, dist, .next)SERVICE FILE ENV CHANGESroot .env default no changesroot .env.production production no changesYour env files match the last commit. Nothing else to push.$ cd ~/code/shared-stripe$ storeenv push -m "Stripe test keys" --yesProject ada/shared-stripe (no Git)Scanning 1 env file (ignored: node_modules, .git, dist, .next)SERVICE FILE ENV CHANGESroot .env default +2Encrypting 2 secrets locally and uploading... donedefault v c053ee5 "Stripe test keys"Keys wrapped for 1 member. Template updated. View: storeenv openNext: run storeenv pull on another machine
Good to know
- Values are never printed by push.
- Only secrets whose value changed are encrypted again; the rest are carried forward.
- If the remote moved since you last synced, push stops with SE_REMOTE_AHEAD: pull first, or --force to add your version on top. History is never lost.
- The scanner runs first. Lines that aren't KEY=value and quotes that never close stop the push; values that look like live provider keys (AWS, Stripe, Razorpay, OpenAI and others), duplicate keys, and env files tracked by Git or missing from .gitignore are warnings. storeenv scan runs it alone.
Related commands
Global flags
--project <value> | Project as <namespace/name> or its id (default: .storeenv.json, then this repository's remotes). |
--env <value> | Environment name. |
--json | Machine readable output. |
--yes, -y | Skip confirmations. |
--color | Coloured output (--no-color to turn off). Default: true. |
--verbose | Show debug details. |
--api <value> | API base URL of a self-hosted StoreEnv. |
--trust-writer <value> | Trust a writer for this run: @login=SE:XXXX-XXXX-XXXX. |
--allow-unsigned | pull and diff: use values that aren't signed by a trusted writer, after you confirm on a terminal (or with STOREENV_ALLOW_UNSIGNED=1). Never applies to run or copy. |