Who can see what is a team decision.
Access lives on the workspace, not in a shared file. Encryption at rest (locked before storage) is the floor, not the whole story.
- Roles
- Owner, admin, and member. Invite people even before they have an account. Cancel a pending invite when access should stop.
- Audit trail
- Creates, updates, deletes, imports, exports, and CLI pulls that return values are written down. The log never stores the secret itself.
- Stay out of chat
- Stop pasting
.envfiles in Slack or git. One source of truth per project and environment (release lane).
Workspace, then project, then environment.
A secret is a named value. It belongs to one environment inside one project.
Workspace
└── Project
├── development
│ ├── DATABASE_URL
│ └── RESEND_API_KEY
└── production
├── DATABASE_URL
└── RESEND_API_KEYLocal apps and CI get the same values.
Create a machine token, then inject secrets into a process. Prefer run so values stay in memory, not in a committed file.
node packages/cli/index.mjs login --token es_... --api http://localhost:3000 node packages/cli/index.mjs use -w acme -p atlas-api -e development node packages/cli/index.mjs run -- npm run devCLI details in the docs
Free to use. Free to host.
Self-host EnvShare with Firebase and an encryption key you control. There is no upgrade wall for teams.