
Ossprey CLI
zsh — ~/acme-web
$
▍
/ Install
Install the CLI
Install the Ossprey CLI. It detects your OS and architecture, verifies the binary’s sha256, and drops it on your PATH.
--override-package-managers
installs the PATH shims at the same time
Updating? Simply run ossprey update to download and install the latest version.
Single Go binary, ~16 MB. macOS, Linux and Windows on amd64 and arm64.
linux/amd64
linux/arm64
darwin/amd64
darwin/arm64
windows/amd64
windows/arm64
/ Zero-config protection
Step 01
$ npm install left-pad
npm
pnpm
yarn
pip
poetry
uv
A dependency tries to install
Step 02
ossprey
Ossprey checks for malware first
Step 03
Clean — install runs
exit 0
Malware — install blocked
exit 1
Either installed or blocked
/ Quick start
Sign in, scan, and protect installs
Sign in once, scan the repository already open in your terminal, then install shims so package managers are checked automatically.
1
Create an account and sign in
Create a free Ossprey account, then authenticate once in the browser. In CI, export OSSPREY_API_KEY instead.
$ ossprey login
opening browser · code BQTL-XZKD
✓ signed in as dana@acme.dev
2
Scan the respository
Statically parses supported manifests and lockfiles, submits the resulting OSSBOM, and exits non-zero when malware is confirmed.
$ cd acme-web && ossprey scan .
cataloguing package-lock.json, uv.lock
342 components · submitting
No malware found
3
Protect package installs
Install PATH shims for npm, pnpm, yarn, pip, pip3, poetry, and uv so future installs are checked automatically.
$ ossprey shim install --all
npm, pnpm, yarn, pip, poetry, uv
$ npm install chalk
ossprey: no malware found, forwarding to npm
Need a quick sense check on a package? ossprey check -e npm lodash@4.17.21
/ Workflows
Protect every dependency path
Use the CLI where risk enters your workflow, from local installs and commits to CI and one-off package checks.
Scan a repository
Build an OSSBOM from supported manifests and lockfiles without running a package manager, then return a CI-friendly exit code.
$ ossprey scan . -o sbom.json
--local
-o sbom.json
--no-version-lookup
--dry-run-safe
Protect CI
Export OSSPREY_API_KEY in your CI secret store, run the same scan command, and fail the job on confirmed malware or scan errors.
$ export OSSPREY_API_KEY=… · ossprey scan .
npm
pnpm
yarn
pip
pip3
poetry
uv
Protect installs
Install real PATH shims so npm, pnpm, yarn, pip, pip3, poetry, uv, Makefiles, and coding agents all pass through Ossprey.
$ ossprey shim install --all
status
dir
--dry-run
uninstall
Protect commits
Inspect dependency changes in the staged diff before they land. Clean commits stay quiet; confirmed malware aborts the commit.
$ ossprey precommit install
install
pre-commit framework
fails open
Check a package
Request a verdict by package name with no project on disk. Specify a version, or let Ossprey resolve the latest published release.
$ ossprey check -e npm lodash@4.17.21
-e npm
-e pypi
name==version
/ Agents & MCP
Ossprey keeps your Agents & MCP in check
MCP servers and coding agents don’t ask permission before running npm install. Shims excel because every install an agent spawns goes through the same check your terminal does, with no agent-side configuration at all.
Nothing to configure
Interception happens at the process level. Any MCP server that shells out to npm, pnpm, pip, poetry or uv is covered the moment the shims are installed.
The refusal lands in the transcript
A blocked install prints the finding to stderr and exits 1, so the agent reads why it failed and can reach for a maintained package instead of retrying blind.
The check runs before the code does
Ossprey parses manifests statically and never executes your package manager, so a malicious postinstall script never gets the chance to run.
agent session — tool call: run_shell
> npm install fast-json-parser
ossprey: WARNING: fast-json-parser:2.1.0 contains malware
ossprey: blocked `npm install fast-json-parser`
exit 1
Agent:
That package is flagged as malware, so the install was blocked before anything was written. I’ll use fast-json-stringify instead and re-run.
MCP servers
Coding agents
Sandboxes
Container images
CI runners
/ See it in the dashboard
View scan results in your dashboard
The exit code stops the build. The dashboard tells you which package, which version, which repo, and who introduced it.

/ Coverage & behavior
Coverage you can verify
Ossprey statically parses supported Python and JavaScript/TypeScript dependency files. Lockfiles provide the full transitive tree; bare manifests provide direct dependencies, with unpinned ranges resolved for checking.
Python
requirements.txt
poetry.lock
uv.lock
Pipfile.lock
pdm.lock
setup.py
pyproject.toml
pypi
JavaScript / TypeScript
package.json
package-lock.json
yarn.lock
pnpm-lock.yaml
npm
Runtime behavior
Predictable outcomes for local development, automation, and recovery paths.
Confirmed malware
Block the action and exit 1
Clean package install
Forward to the real package manager unchanged
Shim or pre-commit check unavailable
Warn and fail open to avoid blocking development
Scan, catalog, or API error
Exit 1 so automation cannot mistake an error for a clean result
--local
Generate the OSSBOM locally without an API request or malware verdict
/ Ready when you are
Make the next install the safe one.
Create a free account, install the CLI, and protect supported named or locked dependencies across local development, CI, commits, and coding-agent workflows.