Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/denoland/celld/llms.txt

Use this file to discover all available pages before exploring further.

node: specifiers are always available in celld Workers. No compatibility flag is required or read.
The nodejs_compat compatibility flag is not needed and celld does not read it. celld deploy externalizes node:* at bundle time. The runtime supplies its own subset — it does not use Wrangler-style unenv polyfills.

Implemented modules

The following modules are fully available with no known gaps:
ModuleNotes
node:assertFull assert interface.
node:async_hooksReal AsyncLocalStorage backed by V8 async context.
node:bufferBuffer, Blob, and related helpers.
node:eventsEventEmitter and related types.
node:pathPOSIX and Win32 path utilities.
node:streamCore streams, plus stream/web, stream/promises, stream/consumers.
node:timers/promisesPromise-based setTimeout, setImmediate, setInterval.
node:utilpromisify, inspect, types, TextEncoder / TextDecoder, and more.

Partial implementations

ModuleWhat worksWhat does not work
node:cryptoHashes, HMAC, HKDF, PBKDF2, webcrypto, secret key objects, asymmetric keys, one-shot signatures. createPublicKey / createPrivateKey read PEM, DER, and JWK for RSA, EC (P-256/384/521), Ed25519, X25519, and DSA, including password-protected PKCS#8. generateKeyPairSync for RSA, EC P-256, Ed25519, X25519. sign() / verify() for Ed25519, RSA PKCS#1 v1.5, ECDSA P-256. Keys cross to Web Crypto through KeyObject.from().Diffie-Hellman throughout, streaming createSign / createVerify, ciphers, RSA-PSS, DSA signing, DH key generation.
node:zlibSync gzip / deflate family (gzipSync, gunzipSync, deflateSync, inflateSync).Async stream-based APIs.
node:fsexistsSync returns false. Read calls fail with ENOENT.All write operations; directory listing; file watching.

node:crypto in depth

node:crypto covers most common use cases for key management and signing:
import { createPublicKey, createPrivateKey, sign, verify } from "node:crypto";

// Read an Ed25519 key pair from PEM.
const privateKey = createPrivateKey(pemPrivate);
const publicKey = createPublicKey(pemPublic);

// Sign with Ed25519 (DER encoding by default).
const signature = sign(null, Buffer.from("hello"), privateKey);

// Verify the signature.
const ok = verify(null, Buffer.from("hello"), publicKey, signature);
HKDF and PBKDF2 are available through node:crypto even though they are missing from the Web Crypto deriveBits interface:
import { hkdfSync, pbkdf2Sync } from "node:crypto";

const key = hkdfSync("sha256", ikm, salt, info, 32);
const derived = pbkdf2Sync(password, salt, 100_000, 32, "sha256");

Not implemented

Unimplemented modules give inert stubs and do not fail the import. If code imports node:http it will load without error, but any call on the module will do nothing or throw at runtime. This is a known silent gap.
The following modules do not have runtime implementations. Imports succeed but the module is an inert stub:
ModuleNotes
node:http / node:httpsUse the global fetch() API instead.
node:netNo TCP socket support in the Workers runtime.
node:tlsNo TLS socket support.
node:dnsNo DNS resolver.
node:osNot available.
node:processThe process global exists (with env, version, platform), but the node:process module does not.
node:worker_threadsNot available.
node:vmNot available.
node:child_processNot available.

Build docs developers (and LLMs) love