Runtime-agnostic JS utils for detecting environments, runtimes, CI providers, and AI coding agents.
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.
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.
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, junie
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.
| 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) |
MIT