why-dep, why-large, why-slow, doctor, and ls — built-in tools for understanding real-world project drag.
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?
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 │╰──────────────────────────────────────────────╯
Flag
Effect
--shortest
Show one shortest chain per version instead of every chain.
--json
Emit 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.
List dev servers currently listening, with friendly labels for well-known ports.
meow ls
PID SERVICE PORT48213 Vite 517348990 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.