Start here
Getting started
Pharos explains why a known vulnerable JavaScript package version is in your lockfile, and finds the package that owns the fix.
Understanding output
Read chains, owners, fix paths, and recommendations.
JSON reports
Wire Pharos into CI with the structured `--json` output.
CLI reference
Every flag and example in one place.
Supported lockfiles
What Pharos can parse today.
Pass any exact package@version reported by Dependabot, Snyk, npm audit, yarn audit, or a CVE. Pharos walks the lockfile, traces the chain, and tells you which top-level dependency owns the fix.
Run without installing
npx pharos-cli@latest request@2.88.2 --path ./my-app
The package argument must include an exact version:
pharos <package>@<version>
Install globally
npm install -g pharos-cli
pharos request@2.88.2 --path ./my-app
Choose a project
By default, Pharos scans the current directory:
pharos minimist@1.2.5
Pass --path to scan another project:
pharos qs@6.13.0 --path ./apps/web
Use --recursive when you want to scan multiple nested projects:
pharos semver@7.0.0 --path ~/projects --recursive
What to do next
After Pharos finds a chain, read the owner and fix path in the output. The owner is the top-level dependency declaration in the sibling package.json that likely needs to change.
Not a vulnerability scanner
Pharos doesn't maintain an advisory database. Use yarn audit, npm audit, Dependabot, or your existing scanner to find vulnerabilities, then hand the exact package@version to Pharos to explain and remediate.