The Parse-Once pipeline
In a conventional toolchain, your code is parsed many times: the runtime parses it to execute, the linter parses it to analyze, the formatter parses it to reprint, the type-checker parses it, the bundler parses it again. Five tools, five parsers, five copies of your AST melting your CPU. meow keeps a single lossless Oxc model in memory and serves every in-process consumer from it:1
Concrete Syntax Tree (CST)
A lossless tree that preserves every token and whitespace span — what the
formatter needs to reprint faithfully.
2
Semantic graph
Scopes, bindings, and references built on top of the CST — what the linter
and semantic-aware tooling need.
3
Runtime IR & type-stripping
TypeScript annotations are blanked in place (preserving byte positions, so no
source maps are needed) to produce the JavaScript the runtime executes.
meow-graph) instead of re-reading your source.
meow-graph is the single Oxc entry point for the formatter, the linter, and the
runtime’s in-place type-stripping — one parse, reused. The bundler (Rolldown) is
built on the same Oxc generation and resolves modules through meow’s own resolver,
so the dependency graph stays consistent. Type-checking is the one job Oxc doesn’t
do, so meow check delegates to tsc.The execution model
meow runs on a tuned build of V8, embedded throughdeno_core. The main module
runs on the main thread’s isolate; parallelism comes from one isolate per OS
thread, not cooperative scheduling.
The main module runs on the main thread. Each node:worker_threads worker gets its own OS thread, its own V8 isolate, and its own event loop; they communicate only through serialized messages (and SharedArrayBuffer for shared memory).
node:worker_threads worker its own OS
thread, isolate, and single-threaded async runtime (the model Node and Deno use).
Workers share nothing but structured-cloned messages and any SharedArrayBuffer
you pass; each reuses the project’s immutable resolution graph + content cache by
reference and boots from the same V8 snapshot, so spawning stays cheap. See
Workers for the full surface.
CPU-bound work that should leave the main thread — SHA-512 verification and
tarball decompression during installs — is offloaded to background OS threads, so
network I/O is never starved waiting on a hash.
The crate map
meow is composed of focused crates, each isolating one concern. The only crate permitted to read ambient host state is the CLI edge.meow-cli
The command-line edge. Owns argument parsing, the omni-router, the terminal UI
helpers, and project-root discovery. The only layer that reads host
environment variables.
meow-config
Reads
meow.config.json and the user-owned package.json; generates the
git-ignored shadow tsconfig that editors and tsc consume.meow-graph
The single Oxc pipeline: CST, semantic graph, and runtime IR as lazy,
invalidatable queries. The one parser entry point for the whole workspace.
meow-runtime
V8 isolate orchestration, the event loop, runtime extensions, in-place
TypeScript stripping, and the determinism harness.
meow-loader
The single module resolver for the toolchain: ESM and CommonJS resolution,
content-addressed cache reads, and TypeScript source fallback.
meow-pkg
The lockfile model, the global content-addressed cache, integrity
verification, and
node_modules materialization.meow-tool
Linting and formatting on the shared Oxc graph, and bundling (Rolldown over
meow’s own resolver).
meow-obs
Pure, deterministic dependency path-tracing — the engine behind the
why-*
observability verbs.meow-ui
A dependency-free terminal rendering engine: gradients, Bento panels, progress
bars, and structured diagnostics — degrading to plain text in pipes and CI.
Floof & Teeth
Two design values, deliberately in tension:The Floof
Best-in-class, empathetic terminal UX. Errors arrive as structured panels with
the offending line and a caret, not raw stack traces. Spinners are paw prints.
Output is a pleasure to read — and collapses gracefully to plain text when piped.
The Teeth
Zero-overhead systems engineering. One parse, copy-on-write installs, OS-thread
offloading, kernel syscalls, and a fat-LTO single-codegen-unit release binary.
Speed comes from engineering, never from skipping correctness.
Where to go next
Runtime modes
The
strict-web / node-compat split that shapes everything above the engine.Determinism
The harness that makes a bare run reproducible across machines.