Target Node Version
22.x (derived from the @types/node 22.x validation baseline used by tests and type checks).
Support Tiers
| Icon | Meaning |
|---|---|
| 🟢 | 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
| Module | Status | Notes |
|---|---|---|
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
| Module | Status | Notes |
|---|---|---|
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
| Module | Status | Notes |
|---|---|---|
crypto | 🔵 | getRandomValues() and randomUUID() use host secure randomness. subtle.* throws. Full crypto planned. |
| Web Crypto | 🔵 | Planned. |
Data and Encoding
| Module | Status | Notes |
|---|---|---|
buffer | 🟢 | |
stream | 🟢 | |
string_decoder | 🟢 | |
zlib | 🟢 | |
querystring | 🟢 |
Utilities and Diagnostics
| Module | Status | Notes |
|---|---|---|
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
| Module | Status |
|---|---|
dgram | ⛔ |
wasi | ⛔ |
inspector | ⛔ |
repl | ⛔ |
trace_events | ⛔ |
domain | ⛔ |
Error Format
Unsupported API calls follow this format: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 forfs, 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).