Skip to main content

Target Node Version

22.x (derived from the @types/node 22.x validation baseline used by tests and type checks).

Support Tiers

IconMeaning
🟢Supported: native or full implementation.
🔵Planned: not yet implemented; on the roadmap.
🟡Partial: functional with behavioral gaps or missing APIs.
TBD: under consideration; not yet committed.
🔴Stub: requireable but most APIs throw on call.
Unsupported: not available; require() throws immediately.

Module Compatibility Matrix

Core I/O and Networking

ModuleStatusNotes
fs🟡Core I/O implemented: readFile, writeFile, appendFile, open, read, write, close, readdir, mkdir, rmdir, rm, unlink, stat, lstat, rename, copyFile, exists, createReadStream, createWriteStream, writev, access, realpath. Deferred: watch, watchFile, chmod, chown, link, symlink, readlink, truncate, utimes.
http🟡request, get, createServer with bridged request/response classes. Fetch-based, fully buffered. No connection pooling, keep-alive tuning, WebSocket upgrade, or trailer headers. Agent is stub-only.
https🟡Same contract and limitations as http.
http2🔴Compatibility classes only (Http2ServerRequest, Http2ServerResponse); createServer/createSecureServer throw.
net🔵Planned.
tls🔵Planned.
dns🟢lookup, resolve, resolve4, resolve6, plus dns.promises. Permission-gated.
dgram
Fetch globals🟢fetch, Headers, Request, Response.

Process and Runtime

ModuleStatusNotes
process🟢env (permission-gated), cwd/chdir, exit, timers, stdio, hrtime, platform, arch, version, argv, pid, ppid, uid, gid.
child_process🟢spawn, spawnSync, exec, execSync, execFile, execFileSync. fork unsupported.
os🟢platform, arch, type, release, version, homedir, tmpdir, hostname, userInfo, os.constants.
timers🟢setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate.
module🟢createRequire, Module basics, builtin resolution.
worker_threads🔴Requireable; APIs throw on call.
cluster
vm🔴Polyfill via Function()/eval(). No real context isolation; shares global scope.
v8🔴Mock heap stats; serialize/deserialize use JSON instead of V8 binary format.

Crypto and Security

ModuleStatusNotes
crypto🔵getRandomValues() and randomUUID() use host secure randomness. subtle.* throws. Full crypto planned.
Web Crypto🔵Planned.

Data and Encoding

ModuleStatusNotes
buffer🟢
stream🟢
string_decoder🟢
zlib🟢
querystring🟢

Utilities and Diagnostics

ModuleStatusNotes
path🟢
url🟢
util🟢
assert🟢
events🟢
console🟢Circular-safe bounded formatting. Drop-by-default; use onStdio hook for streaming.
constants🟢
tty🔴isatty() returns false; ReadStream/WriteStream are compatibility constructors.
async_hooks
perf_hooks
diagnostics_channel
readline

Unsupported

ModuleStatus
dgram
wasi
inspector
repl
trace_events
domain

Error Format

Unsupported API calls follow this format:
<module>.<api> is not supported in sandbox
Unsupported modules use:
<module> is not supported in sandbox

Additional Notes

Node-Modules Overlay

The Node runtime composes a read-only /app/node_modules overlay from <cwd>/node_modules (default cwd is host process.cwd(), configurable via moduleAccess.cwd). Writes under /app/node_modules/** are denied with EACCES. Native addons (.node) are rejected.

Permission Model

Runtime permissions are deny-by-default for fs, network, childProcess, and env. If a domain checker is not configured, operations fail with EACCES. Embedders opt in via explicit permission policies (allowAll, allowAllFs, allowAllNetwork, allowAllChildProcess, allowAllEnv).