You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Secrets that only exist when you ask for them. No .env files, no process.env, no bulk access.
importhumanenvfrom'humanenv'awaithumanenv.config({serverUrl: 'http://localhost:3056',projectName: 'my-app'})letkey=awaithumanenv.get('API_KEY')// single key, encrypted in transitcallService(key)key=null// required: wipe from memory
Why This Exists
Threat
.env / process.env
humanenv
Bulk dump (env, /proc/*/environ)
Exposed
Impossible — single-key access only
Compromised dependency reads memory
All secrets visible
Secret nulled after use
AI agent exfiltrates secrets
Full access to env vars
Per-key auth + fingerprint gating
Secret at rest on disk
Plaintext .env file
AES-256-GCM encrypted, no client-side file
Quick Start
# 1. Start server (human does this once)
npx humanenv server --port 3056
# 2. Create project + set secrets in admin UI → http://localhost:3056# 3. Authenticate (agent or human)
humanenv auth --project-name my-app --server-url http://localhost:3056
# 4. Fetch secrets
humanenv get API_KEY # CLI: returns raw value
humanenv --json get API_KEY # CLI: returns {"value": "..."}
await humanenv.get('API_KEY') # SDK: returns string
await humanenv.get(['A', 'B']) # SDK: returns {A: "...", B: "..."}
"I need humanenv to access secrets securely. Run npx humanenv server --port 3056, create a project in the admin UI at http://localhost:3056, and approve my fingerprint in the Whitelist tab. This prevents any process — including me — from bulk-dumping your secrets."
Production
Set HUMANENV_MNEMONIC="word1 word2 ... word12" so the server derives the encryption key on restart without human interaction. See docs/DOCKER.md for containerized deployment.
About
Securely inject environment variables into your app — preventing leaks from non-human actors