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. vitest
  2. vue
  3. nuxt
  4. lit
  5. astro
  6. … 14 more

Configuration

nuxt

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 nuxt | reports: trust
→ scope: ALL org packages
[trust] listing packages in: nuxt
[trust] 157 packages; checking latest release metadata...
[trust] resolved 100/157
[trust] resolved 157/157
[trust] in scope (ALL org packages): 157 packages
[trust] checking trust status (157)...
[trust] trust 25/157
[trust] trust 50/157
[trust] trust 75/157
[trust] trust 100/157
[trust] trust 125/157
[trust] trust 150/157
[trust] trust 157/157
[trust] fetching weekly downloads (142 scoped)...
[trust] downloads 20/157
audit running

Live log shows audit progress and warnings.

Progress over time

Strong trust
33.8% (53) staged or trusted
Any trust
48.4% (76) incl. provenance
No trust signal
51.6% (81) no trust metadata detected
Strong trust Any trust No trust signal
0%50%100%8/98/248/319/810/610/18
  1. ...
    76/157 any trust
  2. 76/157 any trust
  3. 76/157 any trust
  4. 76/156 any trust
  5. ...
    76/156 any trust
  6. ...
    74/155 any trust
  7. 74/155 any trust
  8. ...
    74/155 any trust
  9. ...
    74/155 any trust
  10. ...
    74/155 any trust
  11. ...
    74/155 any trust
  12. ...
    74/155 any trust
  13. ...
    74/155 any trust
  14. 74/155 any trust
  15. 74/154 any trust
  16. 74/154 any trust
  17. 74/154 any trust
  18. ...
    74/154 any trust
  19. ...
    74/154 any trust
  20. 74/154 any trust
  21. ...
    73/153 any trust
  22. ...
    73/152 any trust
  23. 73/152 any trust
  24. 73/152 any trust
  25. 73/152 any trust
  26. 73/152 any trust
  27. 73/152 any trust
  28. 73/152 any trust
  29. 73/152 any trust
  30. 73/152 any trust
  31. 73/152 any trust
  32. ...
    73/152 any trust
  33. 73/152 any trust
  34. 72/150 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