Vinum CLI
The Vinum CLI analyzes npm packages from your terminal, or every resolved dependency in your project, using the same evidence as the website. It never installs dependencies or runs package code.
New to scores and coverage? Read What is Vinum?
Install
The installer downloads a single executable that embeds its own runtime, so you do not need Node.js or npm.
curl -fsSL https://vinum.dev/install.sh | bashvinum --version- Installs to ~/.local/bin/vinum. It does not use sudo or edit your shell profile; if the folder is not on your PATH, the installer tells you what to add.
- Verifies the release's SHA-256 checksum and runs the new executable before replacing any existing install.
- Supports Linux (glibc, x64 and arm64) and macOS (Intel and Apple silicon). Alpine/musl and Windows are not supported yet.
- Needs curl and sha256sum or shasum.
To read the script first, or to choose a version or folder:
curl -fsSL https://vinum.dev/install.sh -o install-vinum.sh
VINUM_INSTALL_DIR="$HOME/bin" sh install-vinum.sh 0.1.0Run the installer again to update. There is no self-update command yet.
Analyze a package
Pass a package name, optionally with an exact version. Without a version, Vinum resolves the current one and always prints which exact release it analyzed.
vinum analyze express
vinum analyze express@5.1.0
vinum analyze @scope/name@1.2.3Versions must be exact, such as 5.1.0. Ranges and tags like ^5 or latest are rejected so a result always refers to one published release.
Analyze your project
Run it with no package from inside a project. Vinum finds the owning lockfile in the current folder or a parent and analyzes every resolved direct and transitive dependency.
cd my-app
vinum analyze- Reads npm package-lock.json (v2 and v3), pnpm-lock.yaml (v9), Yarn Classic v1 and modern Yarn lockfiles. If several lockfiles exist, set packageManager in package.json.
- The summary shows totals first, then only the packages with findings or that could not be analyzed.
- Local workspace links, patched, Git and private-registry dependencies are reported as skipped, because Vinum only analyzes public npm releases.
- Add --details for per-package evidence.
Reading the output
express@5.1.0
100 / 100 ████████████████████████ No major concerns
Coverage ◐ Limited · 25 analysis gaps
Findings None
Observed behavior
• Reads environment configuration
• Uses network or DNS access
• Uses filesystem access
Report https://vinum.dev/express/5.1.0
⚠ Some behavior involving dependencies and dynamic calls could not be fully traced.- The score runs from 0 to 100 and its color matches the website: green for no major concerns, yellow for limited concerns, orange for notable concerns, red for high-risk evidence.
- Coverage says how much of the package Vinum could trace. Limited coverage means some code, such as calls into dependencies or dynamically built references, could not be followed.
- Findings lists observations worth a closer look with the file and line behind each one. Observed behavior lists what the package can do, which is normal for most packages.
- Open the report link for the full evidence.
A package with no findings is not guaranteed safe. See What is Vinum? for how scores and coverage work.
Options and exit codes
| Option | What it does |
|---|---|
| --details | Show full per-package evidence instead of the short summary. |
| --json | Write one schema-versioned JSON document to stdout for scripts and CI. |
| --timeout <seconds> | Overall deadline from 1 to 86400 seconds. The default is 1800. |
| --version | Print the CLI version. |
| --help | Show usage, examples, exit codes and environment variables. `vinum help analyze` shows the analyze options. |
| Code | Meaning |
|---|---|
| 0 | Every target completed, including packages with findings or limited coverage. |
| 1 | Some targets were unavailable, incomplete or skipped, or the analysis was partial. |
| 2 | Invalid arguments, project, lockfile or API configuration. |
| 130 / 143 | Interrupted with Ctrl+C (SIGINT) or SIGTERM. Submitted scans may continue. |
Progress shows in the terminal while it runs, and colors turn off when the output is piped or NO_COLOR is set. The --json schema is published at https://vinum.dev/schemas/cli/v1.json.
What is sent
- Only public package names and versions, plus the integrity hash from your lockfile, are sent to Vinum.
- Your source files, lockfile, project name, paths and dependency graph are not uploaded.
- The CLI does not install dependencies, run scripts or execute package code, and it adds no telemetry or visitor ID.
- Results for public packages are shared: if someone already analyzed a release, you get that result immediately.
Limits to know about
- Results describe the published package, not the files in your node_modules. Vinum does not check that your installed copy matches.
- Lockfile entries with only a SHA-1 hash cannot be verified and show as not verified.
- Checksums confirm the download matches the release, not who published it. Signed releases are planned.
- The service is shared and rate limited. If it is busy the CLI waits and retries, then tells you to try again later.