docs/CURRENT_SCOPE.md · G1–G69 · 56/56 conformance
Compatibility & scope
Exactly what Amber v1.17.0 supports, what is still in Preview, and what is out of scope. Every Stable row links to its contract.
Mirrors docs/CURRENT_SCOPE.md on main. If this page and that file disagree, the file wins. CURRENT_SCOPE.md
StableStable
Graduated under the Graduation Rule: reachable from the amber binary, described without stage reports, covered by tests, limits documented.
- amber run / eval / repl
amber run <file> · amber eval <code> · amber replBaseV8 execution through runtime_minimal; repl is the basic shell. - amber test
amber test [files...]BaseJest-style describe / test / expect with discovery. --parallel exits 2. - amber bundle
amber bundle <entry>G1oxc IIFE bundle; static import/require only; not webpack/esbuild parity.Contract - amber compile
amber compile <entry> -o <bin>G2Host single-executable on Linux/macOS/Windows; no cross-compile, no native addons.Contract - amber install
amber install [--frozen-lockfile]G3Direct deps from package.json with lockfile pins and SRI checks; not npm/yarn/pnpm.Contract - amber run --export-tools
amber run --export-tools <file>G4Prints tool schemas as JSON and exits; never executes the file or calls a model.Contract - amber run --inspect
--inspect · --inspect-brk · --inspect-portG5CDP subset on 127.0.0.1 (Runtime.evaluate); no breakpoints or stepping.Contract - --watch
amber run --watch · amber test --watchG6Full re-exec on change plus a localhost reload WebSocket; not in-place HMR.Contract - amber serve
amber serve [--port] [script]G41HTTP/1.1 health document or fetch-handler bridge; one request per connection.Contract - amber serve --https
amber serve --https --cert --keyG7rustls TLS, HTTP/1.1 only; no HTTP/2, keep-alive, chunked bodies or static files.Contract - TypeScript / TSX
.ts · .tsx · .mts · .cts · .jsxG36oxc transpile-only with .ts stack remap; not tsc — no type-checking.Contract - amber session / amber mcp
amber session <tools> · amber mcp <tools>BaseAgent tool execution over stdin JSON-RPC and an MCP stdio server. - amber snapshot
amber snapshot [build|status|clean]BaseManage V8 startup snapshots with mmap backing. - Capability sandbox
--sandbox · --allow-* · --permission-policy · --audit-logBaseDeny-by-default fs/net/env/run with exact allows and a JSONL audit trail. - Deterministic execution
--seed <u64> · --freeze-time <spec>BaseSeeded Math.random / getRandomValues and a frozen virtual clock. - amber:ai
Tensor · LLM · AgentPipelineBaseIn-process TypedArray tensors, local streaming LLM, pipelines. Cargo feature "ai" is empty. - WebAssembly streaming
WebAssembly.compileStreaming · instantiateStreamingBaseV8 Wasm; streaming compile from Response. amber:wasm zero-copy helpers are Preview. - WinterTC baseline
DOMException · URLPattern · navigator · amber:sockets · import.metaBaseECMA-429 minimum common API, wintertc export conditions, TCP + rustls sockets. - CommonJS require
require · module · require.resolve · createRequireG28provisionalnode_modules walk, package.json exports/imports/main; not the Node Module class.Contract - fs
fs · fs/promisesG8Byte I/O, mkdir, stat, fds, readdir dirents, promises; no glob / cp / opendir / statfs.Contract - fs.watch / fs.watchFile
fs.watch · fs.watchFile · fs.unwatchFileG64tentativeReal OS watcher (notify) and stat polling; no fs.promises.watch.Contract - path
path · path.posixG17POSIX semantics; path.win32 methods are the POSIX implementations.Contract - events
EventEmitter · onceG18Full listener API and static once; no events.on async iterator.Contract - buffer
BufferG19from / alloc / concat / toString / slice; readUInt* and compare are outside.Contract - os
platform · arch · cpus · tmpdir · homedir …G20Host info subset; cpus()[].speed / times are outside.Contract - os.hostname
os.hostname()G62Real gethostname / GetComputerNameW; not a DNS FQDN.Contract - os.networkInterfaces
os.networkInterfaces()G63Real OS enumerator; MAC is best-effort.Contract - zlib (sync)
gzipSync · deflateSync · inflateRawSync …G21Six sync codecs; no brotli, no zlib.constants.Contract - zlib (async callbacks)
gzip · gunzip · deflate · inflate · deflateRaw · inflateRawG48 · G58tentativeCallbacks on a later tick; no streaming createGzip family.Contract - util
format · inspect · promisify · callbackify · typesG22 · G59Basics plus util.types.isArrayBuffer / isRegExp; inspect ignores depth / colors.Contract - process
nextTick · env · cwd · stdout.write · hrtime · memoryUsageG22 · G44 · G53 · G54Basics only; hrtime is epoch-based, heap numbers are estimates; exit / stdin stay Preview.Contract - crypto
createHash · createHmac · randomBytes · randomUUID · timingSafeEqualG23md5 / sha* / blake3 digests; KDF, sign/verify and KeyObject stay Preview.Contract - crypto cipheriv
createCipheriv · createDecipheriv (AES-CBC / GCM / CTR)G43 · G51 · G52AES-128/192/256 CBC, GCM (auth tag, AAD) and CTR; no password createCipher.Contract - stream
Readable · Writable · PassThrough · pipeG24Flowing push / pipe; no backpressure. Transform / Duplex / pipeline stay Preview.Contract - child_process (sync)
execSync · spawnSyncG25Sandbox-aware; no timeout / cwd / env options.Contract - child_process (async)
exec · execFile · spawnG47 · G60tentativeCaptured output via callback on a later turn; no live stdio pipes.Contract - child_process.fork
fork · child.send · process.sendG67tentativeReal OS process with JSON IPC over localhost TCP.Contract - url
fileURLToPath · pathToFileURLG26POSIX file URL helpers; legacy parse / format are outside.Contract - dns
lookup · resolve4 · resolve6 · reverse · getServersG27 · G65provisionalHost getaddrinfo / getnameinfo, sync; no dns.promises or setServers.Contract - http (server)
http.createServer · listen · req / resG37tentativeBuffered responses; the http client, Agent, https and http2 are not supported.Contract - net
net.createServer · net.connectG45 · G61tentativeReal TCP listen / accept / connect; no TLS, unix sockets or full duplex parity.Contract - querystring
parse · stringify · escape · unescapeG38Fixed & / = separators; no options.Contract - string_decoder
StringDecoderG39 · G68utf8, latin1, ascii, base64, hex, utf16le with partial-unit buffering; no base64url.Contract - assert
ok · strictEqual · deepStrictEqual · throws · match · rejectsG40 · G69Strict assertions; loose equal coercion and the deepEqual alias are not pinned.Contract - timers
timers · timers/promisesG42 · G50Module timers and Promise setTimeout / setImmediate with AbortSignal.Contract - readline
createInterface · questionG46tentativeOne line from host stdin; no history, completer or readline.promises.Contract - tty
tty.isattyG49Real isatty on Unix; always false on Windows today.Contract - vm
runInThisContext · runInNewContext · ScriptG55 · G66tentativeSame-context run and a fresh-context property-copy sandbox; not Contextify parity.Contract - diagnostics_channel
channel · subscribe · tracingChannel.traceSyncG56tentativeCurrent-isolate pub/sub; no tracePromise.Contract - async_hooks
AsyncResource · AsyncLocalStorageG57tentativeALS run / getStore / snapshot; createHook is not supported.Contract - fetch
fetch · Request · Response · HeadersG9Streaming body reader, redirects, integrity, AbortSignal; no browser CORS origin.Contract - URL & encoding
URL · URLSearchParams · TextEncoder · TextDecoder · structuredCloneG10No IDNA; TextDecoder is UTF-8 only.Contract - Blob / File / FormData
Blob · File · FormDataG11Multipart fetch bodies; text() / arrayBuffer() are synchronous.Contract - Events & channels
EventTarget · AbortController · MessageChannel · BroadcastChannelG12No DOM tree; BroadcastChannel stays within one isolate.Contract - Streams, compression, timers
ReadableStream · CompressionStream · setTimeout · performanceG13Queuing strategies do not apply backpressure.Contract - Web Crypto
crypto.subtle · getRandomValues · randomUUIDG14SHA, HMAC, AES, PBKDF2, ECDH, Ed25519, ECDSA, RSA; no HKDF / RSA-PSS / X25519.Contract - WebSocket (client)
new WebSocket('ws://…')G15Real ws:// handshake; no subprotocols or permessage-deflate; not a server.Contract - Workers
Worker · worker_threads · navigator.serviceWorkerG16Dedicated workers with JSON messages; no SharedWorker or module workers.Contract - atob / btoa
atob · btoaG29Standard Base64; throws plain Error, not DOMException.Contract - ErrorEvent / onerror
ErrorEvent · globalThis.onerrorG30provisionalUncaught throws can be handled by onerror; not a document error pipeline.Contract - Clipboard (text)
navigator.clipboard.writeText / readTextG31Process-local text store, not the OS clipboard; no ClipboardItem.Contract - DOMParser
new DOMParser().parseFromString()G32Read-only HTML / XML parse tree with selectors; not a live DOM.Contract - Background Sync
registration.sync · SyncEventG33Fires on the same CLI isolate; not Periodic Sync.Contract - Cache Storage
caches.open · cache.match / putG34In-process store; not an HTTP cache and not persisted.Contract - Service worker fetch
FetchEvent.respondWithG35Activated worker intercepts page fetch; scope is not matched.Contract
Ids marked tentative or provisional graduated under the same rule and may still be renumbered.
PreviewPreview
Present in the default build. Useful for experiments; not yet a compatibility promise.
- Preview
Rest of src/nodejs_core/Node modules and methods outside the contracts above: stream Transform / Duplex / pipeline, crypto KDF / sign / KeyObject, process.exit / stdin, perf_hooks, and more.
- Preview
Rest of src/web_api/Web APIs outside the Stable contracts, such as ExtendableEvent. Treated per-API, not as blanket Web compatibility.
- Preview
amber:wasmZero-copy WebAssembly.Memory / ArrayBuffer helpers and mmap module load.
ExperimentalExperimental
Exists as code or a command surface. Do not rely on it without verifying it yourself.
- Experimental
amber init · create · add · remove · prune · upgrade · xPackage and scaffolding commands outside the Stable amber install contract.
- Experimental
amber debugDebug command; use the Stable --inspect CDP subset instead.
- Experimental
N-API hello loaderprocess.dlopen can load a C hello addon. Not Node ABI compatibility; Prisma and sharp are out of scope.
- Experimental
Cargo featuresbenchmarks and observability are CI-checked. cloudnative, enterprise, multilang and tch are not CI-gated; feature "ai" is empty.
- Experimental
Distribution channelsGHCR image is linux/amd64 only. The winget manifest lives in-repo and is not submitted.
Present in code, not yet classified
These subcommands, flags and amber:* modules exist in the source tree but are not described by CURRENT_SCOPE. Treat them as Experimental.
- amber fmt
- amber lint
- amber bench
- amber task
- amber types
- amber lsp
- amber profile
- amber deploy
- amber record / replay
- --virtual-fs
- --import-map
- amber:mcp
- amber:kv
- amber:bus
- amber:grammar
- amber:checkpoint
- amber:weights
- amber:tools
- amber:security
- amber:std
- amber:db
- amber:vector
- amber:pool
- amber:ffi
Not supportedNot supported
Deliberate non-goals for now. Amber fails closed on these instead of shipping stubs.
- Not supported
SharedWorker · module workersnew Worker(url, { type: 'module' }) throws.
- Not supported
Push · Notification · PaymentPush subscription rejects. These browser surfaces are deferred.
- Not supported
ClipboardItemclipboard.read / write reject with an Error naming ClipboardItem.
- Not supported
http client · Agent · https · http2Use the Stable Web fetch for outbound HTTP. Only the http server subset is Stable.
- Not supported
Streaming zlib · brotlicreateGzip / createDeflate families, brotli and zlib.constants are not implemented.
- Not supported
Type-checkingTypeScript is transpile-only. Run tsc --noEmit in CI if you need type errors.
- Not supported
fs.glob · fs.cp · fs.opendir · fs.statfsNot implemented; also no fs.promises.watch.
- Not supported
Parallel tests · cross-compileamber test --parallel exits 2. amber compile only targets the host OS.
- Not supported
npm workspaces · lifecycle scriptsamber install does not run scripts, link .bin, or read yarn / pnpm lockfiles.
How something becomes Stable
- 1It is reachable through src/main.rs or a documented API in src/lib.rs.
- 2Its behavior is described without relying on historical stage reports.
- 3Current tests or smoke commands cover the documented behavior.
- 4Known limitations are documented next to the capability.
- 5Feature-gated work passes a feature check for that feature.
tests/conformance/ runs small Node-style scripts — fs, streams, crypto, child_process, Express, Fastify, Hono and more — on every change. CI fails if any fixture fails or skips. Passing fixtures are a regression gate, not a claim of drop-in Node compatibility.
Read the scorecard