std-env
v4.0.0
Published
Runtime agnostic JS utils
Readme
std-env
Runtime-agnostic JS utils for detecting environments, runtimes, CI providers, and AI coding agents.
Runtime Detection
Detects the current JavaScript runtime based on global variables, following the WinterCG Runtime Keys proposal.
import { runtime, runtimeInfo } from "std-env";
console.log(runtime); // "" | "node" | "deno" | "bun" | "workerd" ...
console.log(runtimeInfo); // { name: "node" }Individual named exports: isNode, isBun, isDeno, isNetlify, isEdgeLight, isWorkerd, isFastly
[!NOTE]
isNodeis alsotruein Bun/Deno with Node.js compatibility mode. Useruntime === "node"for strict checks.
See ./src/runtimes.ts for the full list.
Provider Detection
Detects the current CI/CD provider based on environment variables.
import { isCI, provider, providerInfo } from "std-env";
console.log({ isCI, provider, providerInfo });
// { isCI: true, provider: "github_actions", providerInfo: { name: "github_actions", ci: true } }Use detectProvider() to re-run detection. See ./src/providers.ts for the full list.
Agent Detection
Detects if the environment is running inside an AI coding agent.
import { isAgent, agent, agentInfo } from "std-env";
console.log({ isAgent, agent, agentInfo });
// { isAgent: true, agent: "claude", agentInfo: { name: "claude" } }Set the AI_AGENT env var to explicitly specify the agent name. Use detectAgent() to re-run detection.
Supported agents: cursor, claude, devin, replit, gemini, codex, auggie, opencode, kiro, goose, pi
Flags
import { env, isDevelopment, isProduction } from "std-env";| Export | Description |
| ------------------ | ------------------------------------------------------------ |
| hasTTY | stdout TTY is available |
| hasWindow | Global window is available |
| isCI | Running in CI |
| isColorSupported | Terminal color output supported |
| isDebug | DEBUG env var is set |
| isDevelopment | NODE_ENV is dev/development or MODE is development |
| isLinux | Linux platform |
| isMacOS | macOS (darwin) platform |
| isMinimal | MINIMAL env is set, CI, test, or no TTY |
| isProduction | NODE_ENV or MODE is production |
| isTest | NODE_ENV is test or TEST env is set |
| isWindows | Windows platform |
| platform | Value of process.platform |
| nodeVersion | Node.js version string (e.g. "22.0.0") |
| nodeMajorVersion | Node.js major version number (e.g. 22) |
See ./src/flags.ts for details.
Environment
| Export | Description |
| --------- | ---------------------------------------------------- |
| env | Universal process.env (works across all runtimes) |
| process | Universal process shim (works across all runtimes) |
| nodeENV | Current NODE_ENV value (undefined if unset) |
License
MIT
