Skip to main content
meow ships verbs for answering the questions every real project eventually asks: why is this package here, what’s bloating my install, why is startup slow, and is my environment healthy?

why-dep — dependency provenance

Trace exactly how a package ended up in your tree. meow reads meow.lock.jsonl and prints every chain from a direct dependency down to the target.
meow why-dep is-number
╭─ why-dep is-number ─────────────────────────╮
│ is-number is in the dependency tree — 1 version(s). │
│ (each chain starts at a project direct dependency)  │
│ is-number@6.0.0  integrity sha512-…          │
│   my-app@0.1.0 → is-odd@3.0.1 → is-number@6.0.0     │
╰──────────────────────────────────────────────╯
FlagEffect
--shortestShow one shortest chain per version instead of every chain.
--jsonEmit the structured report for tooling.
--limit <n>Cap chains enumerated per version before reporting truncation.
It exits non-zero if the package isn’t in the tree — handy in scripts that assert a dependency is (or isn’t) present.

why-large — what’s heavy

List the packages in your lockfile by their cached tarball size, so you can see what’s actually costing you.
meow why-large
╭─ meow why-large ────────────────────────────╮
│ ◔ 128 packages · 84.2 MB total               │
│ typescript                       12.1 MB  14% │
│ @next/swc-darwin-arm64            9.8 MB  11% │
│ …                                            │
╰──────────────────────────────────────────────╯

why-slow — cold-start timing

Report process-init timing and, given a target, basic module + lockfile stats — a quick read on cold-start drag.
meow why-slow
meow why-slow main.ts
╭─ meow why-slow ─────────────────────────────╮
│ ◔ cold start · 18ms                          │
│ 18ms process init · meow-cli 0.0.0           │
│ module        0.2ms   3.1 KB                 │
│ path          main.ts                        │
│ lockfile      0.1ms   128 packages           │
╰──────────────────────────────────────────────╯

doctor — environment health

A one-glance check of your project and global state: package.json, lockfile, node_modules, and the cache.
meow doctor
╭─ meow doctor ───────────────────────────────╮
│ ◉ meow 0.0.0                                 │
│ ✓ package.json    found                      │
│ ✓ lockfile        128 packages               │
│ ✓ node_modules    materialized               │
│ ✓ cache           ~/.meow/cache              │
╰──────────────────────────────────────────────╯
Run it first whenever something feels off — a missing lockfile or unmaterialized node_modules shows up immediately.

ls — active dev servers

List dev servers currently listening, with friendly labels for well-known ports.
meow ls
PID    SERVICE          PORT
48213  Vite             5173
48990  Next.js / React  3000
meow recognizes common ports out of the box — Next.js/React (3000), Astro (4321), Vite (5173) and Vite Preview (4173), Tauri (1420), Wrangler (8787), and more.
meow ls discovers listeners via lsof, so it’s available on macOS and Linux where lsof is present.

Configuration reference

Every key in meow.config.json.