> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meow.style/llms.txt
> Use this file to discover all available pages before exploring further.

# meow

> A standards-first JavaScript & TypeScript runtime, package manager, and quality toolchain — in a single Rust binary.

<Frame>
  <img src="https://mintcdn.com/meow-64098f61/sjFCi9yA4xKg5xXS/images/banner.webp?fit=max&auto=format&n=sjFCi9yA4xKg5xXS&q=85&s=ef29a9220831e4325cb698a93c9a33d5" alt="meow — purrs like a kitten, runs like Rust" width="1536" height="1024" data-path="images/banner.webp" />
</Frame>

**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:

<CardGroup cols={2}>
  <Card title="The Floof" icon="cat">
    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.
  </Card>

  <Card title="The Teeth" icon="bolt">
    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.
  </Card>
</CardGroup>

## 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.**

<Note>
  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.
</Note>

## The equation

<Frame caption="Zero config to maintain. Zero bytes duplicated on disk. One binary to install.">
  <div style={{textAlign: 'center', fontSize: '1.6rem', fontWeight: 700, padding: '1.5rem', fontFamily: 'Space Grotesk, sans-serif'}}>
    0 config  +  0 duplicated bytes  +  1 binary  =  <span style={{color: '#F92C8B'}}>meow</span>
  </div>
</Frame>

## What makes it different

<CardGroup cols={2}>
  <Card title="Parse once, use everywhere" icon="layer-group" href="/concepts/architecture">
    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.
  </Card>

  <Card title="Deterministic by default" icon="lock" href="/concepts/determinism">
    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.
  </Card>

  <Card title="Two runtime modes" icon="toggle-on" href="/concepts/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.
  </Card>

  <Card title="Zero-waste installs" icon="feather-pointed" href="/package-manager/overview">
    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.
  </Card>

  <Card title="One config file" icon="file-code" href="/configuration/meow-config">
    `meow.config.json` replaces the graveyard of `.eslintrc`, `.prettierrc`,
    `tsconfig.json`, and test configs. meow generates the legacy shims that editors
    still expect.
  </Card>

  <Card title="Diagnostics that help" icon="wand-magic-sparkles" href="/toolchain/check">
    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.
  </Card>
</CardGroup>

## Start here

<CardGroup cols={3}>
  <Card title="Install meow" icon="download" href="/installation">
    Get the binary on your machine in one command.
  </Card>

  <Card title="Quickstart" icon="rocket" href="/quickstart">
    From empty folder to a running TypeScript server in 60 seconds.
  </Card>

  <Card title="Coming from Node?" icon="arrow-right-arrow-left" href="/migrate-from-node">
    A side-by-side cheat sheet for `npm`, `node`, and `npx` users.
  </Card>
</CardGroup>

## A taste

<CodeGroup>
  ```bash Scaffold & run theme={null}
  meow init            # write package.json + meow.config.json, scaffold main.ts
  meow dev             # run the dev script with a deterministic runtime
  ```

  ```typescript main.ts theme={null}
  import { serve } from "meow:http";
  import { ui } from "meow:ui";

  ui.purr("meow runtime started!");

  serve((req) => {
    return new Response("🎀 🐾 Hello from meow! 🐾 🎀\n");
  }, { port: 3000 });
  ```

  ```bash One toolchain theme={null}
  meow add zod         # resolve + install, SHA-512 verified, lockfile updated
  meow check           # type-check via tsc over a generated shadow config
  meow fmt             # format with the Oxc code printer
  meow lint            # lint over the shared syntax tree
  meow test            # run *.test.ts in isolated, deterministic V8 isolates
  ```
</CodeGroup>

<Tip>
  Every command has colorized `--help`, and the [CLI reference](/cli/overview)
  documents each verb and flag.
</Tip>
