Skip to content

unjs/std-env

Repository files navigation

std-env

npm version npm downloads bundle size

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

isNode is also true in Bun/Deno with Node.js compatibility mode. Use runtime === "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