Encrypted environment variables. No SDK.
Keep using environment variables.Stop managing them as files.
Your app still reads environment variables. Every value is encrypted in the browser or CLI, and we store ciphertext only. npx getmyenv run hands them to your app at start, per context. No code changes.
Start without an account. Then npx getmyenv run [context] -- npm run dev
From a .env file to a running app
One set of variables, with a value for each place your app runs. Config and secrets alike. Your app still reads environment variables.
- 1.
Start
Run it in your project folder. Start without an account, or sign in.
npx getmyenv - 2.
Add values
Import a .env, type them in the dashboard, or fill them from a template link. Values are encrypted before upload.
npx getmyenv import - 3.
Run
Your app starts with its variables. It still reads ordinary environment variables.
npx getmyenv run -- npm start - 4.
Another machine
Run it in the same folder and sign in. Servers read a Read-only context with a server token.
npx getmyenv - 5.
Share with a teammate
Invite by email, with access per context. Your browser seals the keys to their account.
See what your app gets before it starts
run resolves the context, checks every variable and merges it with your shell. A missing value stops the run and names it. --explain prints names and sources, never values.
Run getmyenv where your app starts: your machine, the server, the CI job, or the container's start command. It needs Node 24 or newer there. run is the default. If getmyenv can't run where the app starts, export writes a plaintext .env instead.
$ npx getmyenv run staging --explain -- npm startmy-api / Staging (staging)API_URL getmyenv (staging)DATABASE_URL getmyenv (staging)LOG_LEVEL getmyenv (staging)PORT getmyenv (staging), replaces parent envSTRIPE_KEY not set (missing in staging)4 from getmyenv, 1 replaced, 0 kept, 0 from parent env, 1 not setgetmyenv: 1 variable has no value in staging:STRIPE_KEYSet it in a terminal: npx getmyenv set --missing -c stagingOr remove it from the project: npx getmyenv unset STRIPE_KEY --allOr run anyway: --allow-missing
Works where your app already runs
Push a context to your platform, or wrap the command that starts your app. The CLI needs Node 24 or newer where the app starts, also in a Python, Ruby or PHP container.
Push to
The CLI copies a context there with your platform token. Values are decrypted locally. Your token stays on your machine.
Works with
No SDK. run passes ordinary environment variables to the process.
The CLI runs your app. The dashboard holds the rules.
Read-only values, machines and server tokens are managed there.
Variables by context
Each context shows which values are set and which are missing. Values stay encrypted until you reveal one.
Approve a machine
A new machine asks to read a Read-only context. Approve it once, trust it, or deny it.
Server tokens
A server token reads one Read-only context from the IPs you allow.
Encrypted before it leaves your machine
The browser or CLI encrypts each value. We store ciphertext and never see your Vault password. Analytics loads on public pages only. It never loads on sign-in, signup, claim or the dashboard, where the vault unlocks.
1
Your browser or CLI
Encrypts each value with a context key.
2
getmyenv
Stores ciphertext. Cannot read it.
3
run, on your machine
Decrypts with your key.
4
Your app
Gets ordinary environment variables.
Who reads the values
People, servers and AI agents each get access their own way. All of them end up with ordinary environment variables.
Approval gives a machine a one-time grant for 1 hour.
- You
Set values in the dashboard or the CLI. You hold the Vault password.
npx getmyenv set API_KEY- A teammate
Accepts your invite and gets the contexts you share. Has their own Vault password. You can remove them and rotate the keys.
npx getmyenv run -- npm run dev- A server
Reads one Read-only context with a server token, from an allowlisted IP. A new machine waits for your approval, or is trusted from an allowed IP if you choose.
npx getmyenv run -- node server.js- An AI agent
Creates a guest project while scaffolding. No account needed. Starts the app with run. You claim the project later.
npx getmyenv guest
A context for each place your app runs
Name them after where your app runs, like Staging or Customer Acme. Each variable has a value per context. New projects start with Development (open) and Production (Read-only).
Read-only: the CLI reads and exports, never writes.
- Development
- Production
- Staging
- Preview
- Customer Acme
- New context
| Context | API_URL | CLI |
|---|---|---|
| Development | http://localhost:8080 | Read and write |
| Production | https://api.example.com | Read-only |
| Staging | https://staging.example.com | Read and write |
| Preview | https://preview.example.com | Read and write |
| Customer Acme | https://acme.example.com | Read and write |
Works with AI editors
Paste the prompt into Cursor, Claude Code or any agent. It starts without an account, keeps values out of the chat, and hands the project to you to claim.
Set up getmyenv for this project (AI scaffolding, no account): 1. Ask the human once, in one message: where will the app run, and use getmyenv at runtime or as a manager only? Recommend runtime: npx getmyenv run -- <command> passes the values to the process, with no .env file on disk. Manager only: npx getmyenv export writes a plaintext .env for tools that read one, and the scripts stay as they are. Run getmyenv where your app starts: your machine, the server, the CI job, or the container's start command. It needs Node 24 or newer there. run is the default. If getmyenv can't run where the app starts, export writes a plaintext .env instead. If you cannot ask, use runtime for local development. 2. From the project root: npx getmyenv guest --name <project-name>. Guest projects have Development only. Claiming adds Production (Read-only). 3. Add variables: npx getmyenv import (reads .env files in this folder), or npx getmyenv set the way the human chose. In the same message, ask how to enter secret values. First declare the names with no values: npx getmyenv set KEY1= KEY2=. Names are safe to share. Then recommend the hidden prompt: the human runs npx getmyenv set --missing in a terminal and types each value, which never enters the chat. With an account, the dashboard works too. If the human pastes a value in chat instead, it is sent to your AI provider, so tell them to rotate it at its provider afterwards. Values not secret, like LOG_LEVEL, can use set KEY=value. import reads .env files directly. If you cannot ask, declare the names and tell the human to run npx getmyenv set --missing. While guest, claim.json holds the passphrase, so there is no Vault password prompt. 4. Runtime: start the app with npx getmyenv run -- <start command>. Do not wrap the agent itself. With runtime, remove --env-file=.env only from scripts that load that file. run already puts the values in the environment, and node stops with an error when the file is missing. Manager only: npx getmyenv export, and keep the scripts as they are. 5. A missing value stops run and prints its name. Set it, or pass --allow-missing. 6. Commit .getmyenv/project.json and .getmyenv/template.json. token.json and claim.json stay local and are gitignored. Commit the .gitignore changes too. 7. claim.json holds the claim code and guest passphrase until claim. If the folder is lost before claim, the project cannot be claimed. A clone with .getmyenv/template.json can start a new project with the same names. Keep claim.json private. Do not print it, paste it in chat, or add it to git. The human runs npx getmyenv claim in the same folder, and claim reads it. After claim, the context keys are sealed to the human's account. 8. Tell the human to run: npx getmyenv claim, from this folder. After claim, values open with the human's Vault password. The human runs npx getmyenv run -- <start command> once in a terminal to unlock. Then run works without a prompt for 8 hours. A guest project stays active while the CLI uses it. After 30 days without use, or 180 days after it was created, values can't change. For 30 more days, run still works and it can still be claimed. Unclaimed projects may be deleted after that. 9. Docs: https://getmyenv.com/docs/cli and https://getmyenv.com/llms.txt

Oct 14, 2026 · 4 min read
Hold the API keys your developers need
You own the Stripe, OpenAI and email accounts. Keep their keys in one project, give developers test keys only, and send live keys to the server, not to people.

Oct 10, 2026 · 5 min read
Your AI agent can read your .env file
.gitignore keeps .env out of commits, not out of reach of an AI agent in your folder. Move the values out and start the app with getmyenv run.

Oct 10, 2026 · 4 min read
Next.js environment variables without .env.local
Next.js reads process.env before any .env file. Start next dev, next build and next start with
npx getmyenv runand drop .env.local.
Open pilot
Accounts created during the pilot stay free, up to 5 projects you own, 10 contexts each. Projects shared with you do not count. No paid plans are live yet. Limits may change.
Questions
Is getmyenv free?
Open pilot, limits may change. Accounts created during the pilot stay free, up to 5 projects you own, 10 contexts each. Projects shared with you do not count.
No paid plans are live yet.
Do I need an account to start?
No. Run npx getmyenv and choose Start without an account.
A guest project stays active while the CLI uses it. After 30 days without use, or 180 days after it was created, values can't change. For 30 more days, run still works and it can still be claimed. Unclaimed projects may be deleted after that.
Run npx getmyenv claim to keep it.
Is it only for secrets?
No. Put any config in: ports, URLs, flags, keys. Every value is encrypted the same way.
Can secrets and config live together?
Yes. Both are variables in the same context. run starts your app with all of them. Tag variables in the dashboard to filter them.
Where does getmyenv need to run?
Where your app starts. The CLI needs Node 24 or newer where the app starts, also in a Python, Ruby or PHP container. If it can't run there, export writes a plaintext .env.
Does run need the network?
Yes. run fetches the values from getmyenv each time it starts. If it can't reach the server, the command does not start. A running process keeps its values.
How does Production differ from Development?
New projects start with Development (open) and Production (Read-only). Guest projects have Development only. Claiming adds Production (Read-only).
Only the owner sets Read-only values, in the dashboard.
The CLI reads Production with a server token, from an allowlisted IP, on a trusted or approved machine. All three are required.
A server token's New machines rule can also trust machines from allowed IPs.
Can I share a project?
Yes. Invite a teammate by email and pick which contexts they get, read or write. Only the owner sets Read-only values, in the dashboard.
- Your browser seals each context key to their public key the next time you unlock the vault.
- Comparing key fingerprints is optional and confirms the key is theirs.
- Removing a member rotates the keys by default.
- You can also transfer a project to a member.
How do I export or delete my data?
- Download an encrypted backup of a project.
- Export one context as a .env with
npx getmyenv export. - Delete account in Settings removes your account and the projects you own.
Does it work with 1Password or other tools?
Yes. getmyenv reads the parent environment, so you can chain: op run -- npx getmyenv run staging -- npm start.
Use --keep-existing to let parent values win.
Does it work with Vercel or Netlify?
Yes. npx getmyenv push vercel or npx getmyenv push netlify copies a context there with your platform token. The CLI decrypts locally. Your token stays on your machine.
That copy lives on the platform. Future changes in getmyenv are not pushed automatically.
Does it work with Docker Compose?
Yes. Wrap the command: npx getmyenv run production -- docker compose up -d.
If a tool reads a .env file, write one with npx getmyenv export.
Which languages work?
Any language that reads environment variables. First-class examples: Node, Python, Ruby, Rust, Go, and PHP. Java, .NET, and shell scripts work the same way.
So do Next.js, Vite, Laravel, Rails, Prisma, Turborepo and PM2: wrap the command that starts or builds the app.
What does getmyenv store?
We store:
- Ciphertext
- Sealed context keys
- Your private key, wrapped with your Vault password
- If you have a recovery code, a separate copy wrapped with it
- Names: projects, contexts, variables
Never your Vault password, your recovery code or readable values.
Where does encryption happen?
In the browser or CLI.
When do I enter the Vault password?
- In the browser, once per tab for all your projects, until you lock, reload, or close it.
- In the CLI, once per project every 8 hours on each machine. Unlocked context keys stay in the OS keychain for 8 hours, or until
npx getmyenv lock. - Servers and CI use a server token, which holds its context key and never asks.
We never store your Vault password. We store an encrypted key blob.
How do I enter secret values with an AI agent?
- The agent declares the names with no values:
npx getmyenv set KEY1= KEY2=. - In a terminal, you run
npx getmyenv set --missing. Type each value. It never enters the chat.
With an account, the dashboard works too. A value pasted in chat is sent to the AI provider, so rotate it afterwards.
What if I forget the Vault password?
We cannot recover your Vault password. Your recovery code lets you set a new one and keeps every value.
Without the recovery code, you can reset the vault. Names, contexts and members stay, and you set your values again. The Vault model docs cover backups and resets.
Can I expire a value?
Yes. After the date, getmyenv stops providing it. The credential still works at its provider until you rotate it there.