NEW Python is here: pkgfire uv

Ship your code.
Know what’s coming with it.

A dependency firewall that checks every package before it is installed. Known vulnerabilities, malware, hijacked releases and code that suddenly does something new are stopped before they reach your machine or your pipeline.

Sign-up is by invitation for now. Join the waitlist with your email and you will hear from us when there is room. Personal accounts get 5,000 free credits every month. Pricing

EXAMPLE
❯ pkgfire uv add requests
Resolving without building anything...
$ uv add requests --no-sync --no-build

NEW         requests@2.32.5
TRANSITIVE  certifi  charset-normalizer  idna  urllib3

Scanning 5 changed packages...
✓ advisories    ✓ malware patterns
✓ install code  ✓ takeover signals
ALLOWWheels only. Nothing was built.exit 0
❯ pkgfire npm install some-package
$ npm install --package-lock-only --ignore-scripts

NEW         some-package@1.4.2
TRANSITIVE  helper-lib@0.3.1

some-package@1.4.2
  HIGH  reads credential files    ~/.npmrc, ~/.ssh
  HIGH  sends data to a remote host
  GAINED install code its previous release did not have
BLOCKNot installed. No lifecycle scripts ran.exit 2
❯ pkgfire bun update
Resolving dependency changes...

UPGRADED    fresh-lib  3.0.9 → 3.1.0

fresh-lib@3.1.0
  BLOCK release_cooldown
  Published 2 hours ago, inside the 7-day cooldown.
  Most malicious releases are pulled within hours.
  A version this new has not had time to be caught.
BLOCK3.0.9 stays. Try again in a few days.exit 2
❯ pkgfire pnpm install
$ pnpm install --lockfile-only --ignore-scripts

UPGRADED    23 packages
19 already judged, 4 scanned now

✓ artifacts match the registry's integrity hashes
✓ no known vulnerabilities
✓ nothing gained since the previous release
ALLOWInstalling with your own pnpm.exit 0
❯ pkgfire go get example.com/lib@v1.4.0
Checking against the Go checksum database...

UPGRADED    example.com/lib  v1.3.2 → v1.4.0

example.com/lib@v1.4.0
  MEDIUM known vulnerability in its HTTP parser
  ✓      not reachable from your code
  can: network, files. not: exec, unsafe
WARNInstalled. Worth a look, not a stop.exit 1
WORKS WITH
  • npmpackage-lock
  • pnpmpnpm-lock
  • Bunbun.lock
  • Yarnyarn.lock
  • Pythonuv · Poetry · Pipenv · requirements
  • Gogo.sum
  • CargoCargo.lock
HOW IT WORKS

Your package manager, with a checkpoint in front of it.

Put pkgfire before the command you already type. It works out what would change, checks every package in the result, and runs the real install only when the verdict allows it.

  1. 01

    Resolve

    The new dependency graph is worked out with install scripts off and nothing built. Your manifest and lockfile are put back byte for byte.

  2. 02

    Inspect

    Every package in the result is checked, not only the changed ones: a cloned lockfile can already pin malware. Each is verified against its registry and opened in an isolated scanner with no credentials in reach.

  3. 03

    Decide

    Your policy turns the evidence into ALLOW, WARN or BLOCK. Every verdict says why, and every one is kept.

  4. 04

    Install

    Only then does your own npm, pnpm, Bun, uv or Go run, with install scripts still off by default. A block means nothing was installed and nothing ran.

NEW · PYTHON

Python, without running setup.py first.

On PyPI the dangerous moment is the build: resolving a source distribution runs its code. pkgfire uv resolves with nothing built and installs wheels only, so a package is judged before any of its code gets a chance to run.

  • Reads uv.lock and pylock.toml with the full graph, so direct and dev-only packages are known.
  • Watches what runs on install: a sdist’s setup.py and a wheel’s .pth hooks.
  • Notices takeovers: a new maintainer role, a quarantined project, wheels that disappear between releases.
  • Builds only when you say so, and only after an ALLOW: --pkgfire-allow-scripts.
Python with uvEXAMPLE
# the commands you know, checked first
❯ pkgfire uv add django
❯ pkgfire uv lock
❯ pkgfire uv sync

# or check any lockfile, anywhere
❯ pkgfire scan .
ON BY DEFAULT

The cheapest defence there is.

Nearly every real supply-chain attack has the same shape: a hijacked maintainer account publishes a poisoned version, and the registry pulls it within hours. A release cooldown refuses versions younger than seven days, which blocks every one of those attacks without needing to detect anything. PkgFire applies it the same way across every ecosystem it supports, and a release that has been checked and found clean is let through after two days.

WHAT IT CHECKS

Seven questions for every package.

Each one answered from the files that would actually land on your disk, not from a package’s description of itself.

01

Is this version known to be bad?

Vulnerability and malware advisories for npm, PyPI, Go and crates.

02

Does it look like malware?

Known malicious patterns: exfiltration, obfuscation, downloaders, typosquats.

03

What did this release gain?

Each release is compared with the one before it. New install code, new credential reads or new network access is what a hijack looks like.

04

Does it ship a secret?

Credentials and tokens left inside the published package.

05

Does the code do what attacks do?

Rules for wallet drainers, worms that publish themselves, workflow writers, credential theft.

06

Does your code reach the flaw?

For Go, whether a vulnerable function is actually called, and what each module can do.

07

Who published it, and how?

Provenance, attestations and maintainer changes that do not fit the project’s history.

24/7

Watching new releases.

New npm, PyPI, Go and Cargo releases of the packages you use are reviewed as they are published, and you are told if one turns out to be bad.

EVERYWHERE YOU INSTALL

One policy, from your laptop to production.

Terminal

Wraps the install commands you already use on macOS and Linux, Intel or ARM.

CI

Any pipeline that can run a shell. A clear exit code, so the job fails only when you want it to.

0 ALLOW1 WARN2 BLOCK

Pull requests

A check on every pull request that changes a lockfile, on GitHub, Forgejo or Gitea.

Workspace

Projects, scan history, policies, a package lookup and alerts by email, shared with your team.

GET STARTED

Two minutes.
Then every install is checked.

One small CLI in front of your existing package manager.
macOS and Linux, on Intel or ARM.

Browse downloads ↗
01

Install the CLI

Read installer
curl -fsSL https://pkgfire.org/install.sh | sh
02

Connect your account

Create API key ↗
pkgfire auth set-key
03

Check your next install

pkgfire bun install
pkgfire npm install
pkgfire pnpm install
pkgfire uv sync
pkgfire go mod tidy

Downloads are checked against the published SHA256 checksums.

Know what’s coming with it.

Sign-up is by invitation for now. Join the waitlist with your email.

Join the waitlist