Ossprey raises $2.65m to fight AI-era software supply chain attacks.

Ossprey raises $2.65m to fight AI-era software supply chain attacks. Learn More

Ossprey

Ossprey raises $2.65m to fight AI-era software supply chain attacks.

Ossprey

Ossprey CLI

Stop malware with the Ossprey CLI

Stop malware with the Ossprey CLI

Stop malware with the Ossprey CLI


The Ossprey CLI wraps npm, pnpm, yarn, pip, poetry and uv. Package installs are checked against Ossprey’s malware database. If anything is flagged the install is blocked, keeping you safe.


The Ossprey CLI wraps npm, pnpm, yarn, pip, poetry and uv. Package installs are checked against Ossprey’s malware database. If anything is flagged the install is blocked, keeping you safe.

zsh — ~/acme-web

$ npm install chalk-next

ossprey: WARNING: chalk-next:1.0.4 contains malware.

ossprey: blocked `npm install chalk-next`

$ npm install chalk

ossprey: no malware found, forwarding to npm


added 1 package in 412ms

$ npm install chalk-next

ossprey: WARNING: chalk-next:1.0.4 contains malware.

ossprey: blocked `npm install chalk-next`

$ npm install chalk

ossprey: no malware found, forwarding to npm


added 1 package in 412ms

$

/ 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.

Install
curl -fsSL https://github.com/ossprey/ossprey-cli/releases/latest/download/install.sh | sudo sh

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

Protect your pipeline
from malware

Protect your pipeline
from malware

Protect your pipeline
from malware

The Ossprey CLI reliably protects your repositories by preventing known malware from ever installing

The Ossprey CLI reliably protects your repositories by preventing known malware from ever installing

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.