Skip to main content
meow — purrs like a kitten, runs like Rust
meow runs your JavaScript and TypeScript, installs your packages, type-checks, lints, formats, bundles, and tests them — all from one binary, with one config file, over a single parse of your code. It is built on two ideas in tension, held together on purpose:

The Floof

Empathetic, beautiful terminal UX. Structured diagnostics with code frames and caret markers, paw-print spinners, Bento-style panels — that degrade cleanly to plain text in CI.

The Teeth

Ruthless systems engineering. One Oxc parse feeds every tool, packages materialize with copy-on-write, and runs are deterministic by default. No redundant work, no wasted bytes.

Why meow exists

A modern JavaScript project is a pile of tools that don’t know about each other. Node runs the code; npm or pnpm installs the packages; tsc checks types; ESLint lints; Prettier formats; a bundler bundles; a test runner tests. Each one parses your source again. Each one has its own config file. Each one is a separate install with its own version drift. meow collapses that stack. One binary. One config. One parse.
meow doesn’t reinvent the engine or fork the ecosystem. It runs on a tuned build of V8 (via deno_core) and resolves real npm packages from the public registry. What’s new is the integration: the runtime, installer, type-checker, linter, formatter, bundler, and test runner are one program sharing one in-memory model of your code.

The equation

0 config  +  0 duplicated bytes  +  1 binary  =  meow

What makes it different

Parse once, use everywhere

Your code is parsed a single time into an Oxc syntax tree and reused by the runtime, linter, formatter, type-checker, and bundler. No tool re-parses what another already read.

Deterministic by default

In strict-web mode the clock is frozen, randomness is seeded, and the timezone is pinned to UTC — so the same code produces the same output on every machine. Ideal for tests, CI, and edge.

Two runtime modes

node-compat gives you the full Node.js surface for frameworks like Next.js and Vite. strict-web gives you a portable, web-standard sandbox. You choose per project.

Zero-waste installs

Packages download once to a global content-addressed cache and project into your workspace via copy-on-write or hardlinks — no symlink loops, no duplicated disk.

One config file

meow.config.json replaces the graveyard of .eslintrc, .prettierrc, tsconfig.json, and test configs. meow generates the legacy shims that editors still expect.

Diagnostics that help

Errors are framed inside structured panels with the offending line, caret markers, and a path to the fix — not a wall of raw compiler output.

Start here

Install meow

Get the binary on your machine in one command.

Quickstart

From empty folder to a running TypeScript server in 60 seconds.

Coming from Node?

A side-by-side cheat sheet for npm, node, and npx users.

A taste

meow init            # write package.json + meow.config.json, scaffold main.ts
meow dev             # run the dev script with a deterministic runtime
Every command has colorized --help, and the CLI reference documents each verb and flag.