Documentation menu

Tools

Node.js client

loadEnv, the client and the typed REST API for Node.js and Bun.

Terminal
npm install envpass-cli

The package works in Node.js 20+ and Bun. It ships TypeScript types for the whole REST API.

Load values into process.env

TypeScript
import { loadEnv } from "envpass-cli"

await loadEnv({ environment: "prod", service: "api" })
console.log(process.env.DATABASE_URL)

loadEnv reads the token from ENVPASS_TOKEN or the CLI login, and scope from its arguments, ENVPASS_* variables or .envpass.json. Existing variables are kept unless you pass override: true.

Client

TypeScript
import { createEnvpass } from "envpass-cli"

const envpass = createEnvpass({ token: process.env.ENVPASS_TOKEN })

const entries = await envpass.resolve({ environment: "prod" })
// [{ key: "DATABASE_URL", value: "postgres://...", source: "shared" }, ...]

const dotenv = await envpass.resolveText({ environment: "prod" }, "dotenv")
const me = await envpass.me()
Option Default
baseUrl ENVPASS_URL or https://envpass.dev
token ENVPASS_TOKEN or the saved CLI login
userAgent envpass-node

Typed REST API

envpass.api is an openapi-fetch client generated from the OpenAPI spec, so paths, parameters and responses are typed:

TypeScript
const { data, error } = await envpass.api.GET("/api/v1/workspaces/{workspaceId}/projects", {
  params: { path: { workspaceId } },
})

await envpass.api.PUT("/api/v1/workspaces/{workspaceId}/projects/{projectId}/secrets", {
  params: { path: { workspaceId, projectId } },
  body: { environmentId, entries: [{ key: "FEATURE_FLAG", value: "on" }] },
})

Errors

Methods throw EnvpassError with status and code (unauthorized, forbidden, not_found, conflict, invalid, limit_reached, rate_limited).

TypeScript
import { EnvpassError } from "envpass-cli"

try {
  await envpass.resolve({ environment: "prod" })
} catch (error) {
  if (error instanceof EnvpassError && error.code === "forbidden") {
    console.error("This token can't read prod")
  }
}