Skip to main content
Barekey is a variable platform for teams that want better ergonomics than hand-managed .env files. In practice, most teams use it in one of two ways:
  • The SDK reads variables directly in your app.
  • The CLI manages variables and pulls them into local files when you want a classic .env workflow.
This documentation is organized around those two workflows first.

Use the SDK in application code

Use @barekey/sdk/server when your app should resolve variables directly:
  • server apps
  • worker runtimes
  • edge functions
  • scripts that already run in Node, Bun, or another fetch-compatible runtime
This is the best fit when you want current values at runtime, generated types, and fewer plaintext files on disk.

Use the CLI for setup, management, and local files

Use @barekey/cli when you want to:
  • log in once on a machine
  • create or update variables from the terminal
  • inspect stage values
  • pull resolved values into .env, .env.local, or JSON
  • run typegen for your installed SDK package

Use standalone mode for local .env compatibility

The server SDK also supports config.mode: "standalone". In that mode it reads local .env* files instead of calling the Barekey API. That gives you one SDK API for both:
  • centralized Barekey-backed environments
  • purely local development and testing

Core model

Variables are scoped by:
organization -> project -> stage -> variable
  • An organization is your team scope.
  • A project is an app or service inside that organization.
  • A stage is an environment such as development, staging, or production.
  • A variable is a named value inside one project stage.
Barekey currently documents these shipped variable kinds:
  • secret
  • ab_roll