A CLI for smarter package manager operations (especially in monorepos).
- Package manager agnostic — works with pnpm and bun, no need to remember which one your project uses
- Scoped installs by default — automatically installs only the current package, no more accidental full-monorepo installs
- Clean signal handling —
Ctrl+Cproperly shuts down the entire process tree, no orphaned dev servers - Easy navigation — jump to any workspace package from anywhere
CleanShot.2026-02-07.at.00.04.46.mp4
brew install fdarian/tap/better-pmOr with npm
Homebrew is recommended — it installs a native binary, so shell completions resolve in ~60ms.
npm install -g better-pmThen activate shell integration:
# Add to your .zshrc (or .bashrc)
eval "$(pm activate zsh)" # or bashpm i Install (monorepo-aware)
pm i -F <pkg> Install specific workspace package(s)
pm add <pkg> Add a dependency (-D for dev)
pm remove <pkg> Remove a dependency
pm ls List workspace packages as a tree
pm cd <pkg> cd into a workspace package
pm run <script> Run a package.json script
pm <script> Shorthand for pm run
From inside a workspace package, pm i automatically scopes to that package:
pm i # installs only the current package
pm i -F @myapp/web # target a specific package
pm i -F @myapp/web -F @myapp/api # target multipleFrom the monorepo root, pm i won't blindly install everything — it shows a warning and lists your workspace packages:
[WARNING] You are at the monorepo root. This will install ALL packages.
Workspace packages:
├── packages/
│ ├── core "@myapp/core"
│ └── utils "@myapp/utils"
└── apps/
└── web "@myapp/web"
To install a specific package:
pm i -F <package-name>
To install everything:
pm i --sure
Copied a command from a README? Just paste it:
pm add "npm install -D something" # automatically extracts -D and the package
pm add "pnpm add foo bar" # works with any package manager command
pm add "bun add -D @scope/pkg" # scoped packages toopm detects pasted npm install, pnpm add, bun add (and their shorthands like npm i) and extracts the packages and -D flag automatically.
List all workspace packages as a tree:
pm lsJump to any package directory (requires shell integration):
pm cd @myapp/web # cd into a workspace package
pm cd # cd to monorepo root