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", isCI: 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 or development
isLinux Linux platform
isMacOS macOS (darwin) platform
isMinimal Minimal environment (CI, test, or no TTY)
isProduction NODE_ENV is production
isTest NODE_ENV is test
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)
nodeENV Current NODE_ENV value (empty string if unset)

License

MIT