Secrets stay in the backend
Empty values and explicit references are resolved at runtime. pw-env exports resolved keys to stdout instead of writing a generated .env file back to disk.
pw-env resolves empty env keys from 1Password, Bitwarden, or GPG-backed files, then streams the results straight into your shell.

pw-env keeps the project-facing ergonomics of a normal .env file while moving secret resolution to the edge of your shell session.
Developers keep checked-in env shape, approvals stay explicit, and secret values stop drifting into repositories and local plaintext copies.
eval "$(pw-env export . --shell bash)"DATABASE_URL=
API_KEY=op://Development/my-app/api_key
LOG_LEVEL=debug # pw-env:ignoreDATABASE_URL=sqlite:///example.db
API_KEY=XdASdf923.....
LOG_LEVEL=debug # pw-env:ignoreLeave secret keys empty or point them at a specific backend reference.
Resolve empty values through 1Password, Bitwarden, or a GPG-backed env file.
Export once for a shell session or install a hook that follows your working directory.
curl -fsSL https://m42e.de/pw-env/install.sh | bashPS> & ([scriptblock]::Create((irm https://m42e.de/pw-env/install.ps1)))curl -fsSL https://m42e.de/pw-env/install.sh | bash -s -- --version v0.2.8cargo build --release
./target/release/pw-env --helpmy-service/
├── .env
├── .pw-env.toml
└── .git/DATABASE_URL=
API_KEY=bw://env-secrets/my-service/api_key
LOG_LEVEL=debug # pw-env:ignoreUse a global config for defaults, and add .pw-env.toml only when a project needs a local override. The local override is discovered by walking upward from the current directory until the repository root.