strict-web and node-compat modes —
the mode only changes whether the Node host surface is layered on top.
The committed global surface
These are typed for your editor automatically —
meow sync writes
.meow/strict-web.d.ts so the globals resolve with nothing installed.
Examples
Not present
meow is a runtime, never a browser. The DOM and browser-host globals are intentionally absent —window, document, localStorage, and WebSocket are
not part of the surface. The generated type config pins lib: ["esnext"] so
those names don’t leak into your editor either.
Crypto & determinism
Instrict-web mode, crypto.getRandomValues() draws from the
seeded RNG by default — deterministic
across runs. crypto.subtle (hashing, signing, key derivation) is unaffected; it’s
deterministic by nature. Grant real entropy with --allow-random when you need it.
Serving HTTP
The server side of the web platform — accepting requests and returningResponse
objects — is the meow:http built-in module:
Beyond the committed surface above, meow also exposes some web APIs transitively —
structuredClone, atob/btoa, performance, EventTarget, and streams beyond
fetch bodies are present but not yet a committed surface, so they aren’t declared
in the strict-web types and may evolve. Build on the committed set for stability.meow:http
The HTTP server module.
Node.js compatibility
When you need
node:fs, process, and CommonJS.