npmreport

npm gives maintainers mechanisms to verifiably establish how a package was published.

Staged publishing
Published through npm's staged flow, prepared and reviewed before it goes live. npm docs ↗
Trusted publisher
Published from CI over OIDC, with no long-lived npm token to leak or steal. npm docs ↗
Provenance
A signed link from the published package back to the exact source commit and build. npm docs ↗
None
No verifiable signal. The release rests on the maintainer's account and token alone, so a compromise there can ship malware unnoticed.

In the summary, staged publishing and trusted publisher both count as strong trust; provenance is a weaker positive; none is the one to check.

Supply-chain trust signals for npm orgs. Audit, visualize, share, track over time.

Example report
Strong trust
40% (24) staged or trusted
Any trust
65% (39) incl. provenance
No trust signal
35% (21) no trust metadata detected

Every package owned by acme, tracked daily.

Strong trust Any trust No trust signal
0%50%100%6/226/277/17/87/127/19
Run your own audit ↓

Recent reports

Latest saved audits
  1. fast-check
  2. netlify
  3. react-router, remix
  4. vitest
  5. vue
  6. … 13 more

Configuration

astrojs

One or more npm org slugs (up to 5).

Reports
GitHub+Actions

Publishers to treat as automation. Note: npm cannot distinguish a human from that human’s CI token, so “manual” is a proxy, not proof.

streaming to terminal →
audit · stream
→ audit astrojs | reports: trust,manual
→ scope: ALL org packages
[trust] listing packages in: astrojs
[trust] 76 packages; checking latest release metadata...
[trust] resolved 76/76
[trust] in scope (ALL org packages): 76 packages
[trust] checking trust status (76)...
[trust] trust 25/76
[trust] trust 50/76
[trust] trust 75/76
[trust] trust 76/76
[trust] fetching weekly downloads (74 scoped)...
[trust] downloads 20/76
audit running

Live log shows audit progress and warnings.

Progress over time

Strong trust
61.8% (47) staged or trusted
Any trust
67.1% (51) incl. provenance
No trust signal
32.9% (25) no trust metadata detected
Strong trust Any trust No trust signal
0%50%100%8/249/159/2310/17
  1. 51/76 any trust
  2. ...
    51/76 any trust
  3. ...
    51/76 any trust
  4. 51/76 any trust
  5. 51/76 any trust
  6. 51/76 any trust
  7. ...
    51/76 any trust
  8. ...
    51/76 any trust
  9. 50/76 any trust
  10. ...
    50/76 any trust
  11. ...
    50/75 any trust
  12. 50/75 any trust
  13. 50/75 any trust
  14. 50/75 any trust
  15. 50/75 any trust
  16. 50/75 any trust
  17. ...
    48/75 any trust
  18. ...
    48/74 any trust
  19. 48/74 any trust
  20. 48/74 any trust
  21. ...
    48/74 any trust
  22. ...
    48/74 any trust
  23. ...
    48/74 any trust
  24. ...
    48/74 any trust
  25. 48/74 any trust
  26. 48/74 any trust
  27. 48/74 any trust
  28. ...
    48/74 any trust
  29. ...
    48/74 any trust
  30. 48/74 any trust
  31. 48/74 any trust
  32. 48/74 any trust
  33. 48/74 any trust
  34. ...
    48/74 any trust
  35. 48/74 any trust

“Recency” is the latest dist-tag’s publish time. “Manual” means the publisher isn’t in your bot-exclusion list — npm can’t tell a human session from that account’s automation token.

User publish history

standalone — by npm account

Versions attributed to a specific npm publisher within the window. This scans that account’s maintained packages, optionally combined with packages from the last audit run.

paused — audit running