Your app needs secrets. Your codebase doesn’t.
Keep credentials out of repos, group chats, and shell history. Give every environment its own source of truth.
Stop passing .env files around.
One quick ask turns into a credential in a group chat. Now nobody knows which version is current.
Secrets change.
Your workflow keeps moving.
One vault. Separate environments. Straight to your app.
checkout
Environment vaultDATABASE_URL••••••••••••REDIS_URL••••••••••••SESSION_SECRET••••••••••••STRIPE_SECRET_KEY••••••••••••OBSERVABILITY_TOKEN••••••••••••WEBHOOK_SECRET••••••••••••
Update a secret. Stay in flow.
Watch mode polls for changes and restarts your app with fresh values.
outray secrets run --watch \
--org acme \
--vault checkout \
--env development \
-- npm run devnpm run devShare a secret.
Not a seat.
Share selected secrets without inviting someone to your organization.
- Encrypted snapshots, not your live vault.
- Set an expiry and a reveal limit.
- Revoke access to future reveals.
A private handoff.
3 selected values from checkout
- API_BASE_URL
- ••••••••••••
- SERVICE_NAME
- ••••••••••••
- NODE_ENV
- ••••••••••••
An encrypted snapshot. Not a live connection to your vault.
A way back.
Built into every change.
See who changed a secret and when. Restore an earlier value without losing the history.
Restore individual secret versions.
Previous versions stay in your history.
DATABASE_URLcheckout / Production••••••••••••••••••••••••Value hidden- Changed by
- Akin
- Recorded
- Oct 15, 09:32
Access, without all-access.
Give each runner the permissions it needs, scoped to a vault or environment.
secrets:readRead only- Vault
- checkout
- Environment
- Production
- Expires in
- 30 days
Know who touched what.
And when.
Follow recorded actions, with their actor, target, and time. Not the secret value.
- AkinUpdated
DATABASE_URL - Production deployRead
6 secrets - AkinRevealed
WEBHOOK_SECRET
Delete your .env file today.
Create a vault, add your first environment, and run your app with the right secrets.