npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

osv-ui

v1.1.6

Published

A beautiful, zero-config visual CVE dashboard for npm, Python, Go, and Rust. Run 'npx osv-ui' to scan or 'npx osv-ui -d' to auto-discover services. Repo: https://github.com/toan203/osv-ui

Readme

osv-ui dashboard

osv-ui

一款美观、零配置的 npm、Python、Go、Rust、Java、PHP 和 Ruby 项目 CVE 仪表板。
一条命令。无需注册。无需 API 密钥。100% 本地运行 — 您的代码绝不会离开您的机器。

🇻🇳 Tiếng Việt · 🇺🇸 English · 🇨🇳 中文 · 🇯🇵 日本語

npm version npm downloads License: MIT PRs Welcome Node.js


问题

$ npm audit

# ... 这里有 300 行 ...
# moderate  Regular Expression Denial of Service in semver
# package   semver
# patched in >=7.5.2
# ...
# 12 vulnerabilities (3 moderate, 6 high, 3 critical)

没人会读这些枯燥的文字。安全问题被忽视。依赖项仍然存在漏洞。

解决方案

npx osv-ui

→ 打开一个直观的仪表板。每一个 CVE,每一个修复方案,涵盖你所有的服务。搞定。

为什么要尝试使用?

  • 零配置:无需安装、无需创建帐户或 API Key。
  • 隐私至上:分析过程 100% 在您的本地机器上完成。
  • 直观且快速:几秒钟内即可显示风险评分、漏洞图表和详细的升级指南(安全版本)。
  • 支持多平台:原生支持 Node.js (npm)、Python、Go、Rust、Java、PHP 和 Ruby。

功能特性

| | | |---|---| | 🌐 多生态支持 | 扫描 package-lock.jsonpnpm-lock.yamlyarn.lockPipfile.lockpoetry.lockrequirements.txtgo.sumCargo.lockpom.xmlcomposer.lockGemfile.lock | | 📡 实时 CVE 数据 | 由 OSV.dev 提供支持 — 每天从 NVD、GitHub Advisory、PyPI Advisory 更新。无需 API 密钥。 | | 🏢 多服务扫描 | 一条命令扫描整个 monorepo — 前端、后端、workers、ML 服务 | | 💊 修复指南 | Dependabot 风格的升级表:当前版本 → 安全版本 + 一键复制命令 | | 🔌 内置 REST API | 使用 GET /api/data 或 CLI 导出标志,构建自有的安全仪表板 | | 🎯 风险评分 | 为每个服务提供 0–100 的评分,让您知道该优先修复哪里 | | 🔍 CVE 详情 | 点击任意行查看详情:CVSS 评分、描述、NVD 链接、GitHub Advisory 链接 | | 🌙 深色模式 | 无论昼夜,提供更舒适的安全审计体验 |


快速开始

扫描当前目录:

npx osv-ui

扫描 monorepo(同时扫描多个服务):

npx osv-ui ./frontend ./api ./worker ./ml-service

自动发现当前目录下的所有服务:

npx osv-ui -d

添加到你的 package.json 脚本中:

{
  "scripts": {
    "audit:ui":  "npx osv-ui",
    "audit:all": "npx osv-ui ./frontend ./api ./worker"
  }
}

所有选项:

--discover, -d  自动查找包含受支持清单文件的服务目录
--port=2003     使用自定义端口(默认:2003)
--json[=file]   将报告保存为 JSON(默认:osv-report.json)
--html[=file]   将报告保存为 HTML(默认:osv-report.html)
--no-open       不自动打开浏览器
--offline       跳过 OSV.dev 查询 — 仅解析清单文件
-h, --help      显示帮助信息

🤖 AI 智能体集成 (MCP)

osv-ui 现在是一个 Model Context Protocol (MCP) 服务器。这允许像 Claude Desktop, Cursor, 和 Claude Code 这样的 AI 智能体:

  1. 自动扫描项目 中的 CVE 漏洞。
  2. 打开可视化仪表板 供你查看发现(人机回环/Human-in-the-loop)。
  3. 在经过你明确确认后应用修复

快速设置 (npx):

{
  "mcpServers": {
    "osv-ui": {
      "command": "npx",
      "args": ["-y", "osv-ui-mcp"]
    }
  }
}

有关详细设置说明,请参阅 MCP 软件包 README


🔌 强大的内置 API

osv-ui 不仅仅是一个仪表板;它还是一个安全数据引擎。
当仪表板运行时,您可以获取整个项目的原始安全数据:

# 获取所有服务的完整 JSON 数据
curl http://localhost:2003/api/data

# 在您的自定义脚本中使用
curl -s http://localhost:2003/api/data | jq '.[0].vulns'

支持的清单文件

| 生态系统 | 文件 | |-----------|-------| | npm / JS | package-lock.json · pnpm-lock.yaml · yarn.lock | | Python | requirements.txt · Pipfile.lock · poetry.lock · pyproject.toml · uv.lock | | Go | go.sum | | Rust | Cargo.lock | | Java | pom.xml (Maven) | | PHP | composer.json · composer.lock | | Ruby | Gemfile · Gemfile.lock |

更多生态系统即将推出 — 请参阅 路线图


工作原理

项目文件
    │
    ├─ package-lock.json   ──┐
    ├─ Pipfile / poetry    ──┤──► 解析器 (parser) ──► 软件包列表
    ├─ go.sum / Cargo.lock ──┘
                                     │
                                     ▼
                             OSV.dev 批量 API (免费,无需密钥)
                                     │
                                     ▼
                             CVE 匹配 + 修复版本
                                     │
                                     ▼
                          Express 服务器 → 浏览器仪表板
                               http://localhost:2003

CVE 数据来自 OSV.dev — 一个由 Google 维护的免费开放数据库,汇总了:

每日更新。无需账号。无速率限制。无供应商锁定。


与 osv-scanner (Google) 完美配合

osv-ui 和 osv-scanner 使用相同的 OSV.dev 数据源。osv-ui 补充了 osv-scanner 缺少的视觉层:

  • 浏览器仪表盘,而非终端输出
  • 多服务侧边栏
  • 类似 Dependabot 的升级指南,附带复制命令

与其他方案的比较

| | osv-ui | npm audit | Snyk | Dependabot | |---|:---:|:---:|:---:|:---:| | 直观仪表板 | ✅ | ❌ 仅限终端 | ✅ | ✅ | | 支持 npm | ✅ | ✅ | ✅ | ✅ | | 支持 Python | ✅ | ❌ | ✅ | ✅ | | 一处查看多服务 | ✅ | ❌ | ✅ (付费) | ✅ | | 无需注册 | ✅ | ✅ | ❌ | ❌ | | 适用于 GitLab 免费版 | ✅ | ✅ | ❌ | ❌ | | 自托管 / 本地运行 | ✅ | ✅ | ❌ | ❌ | | 修复命令 | ✅ | 部分 | ✅ | ✅ | | 开源 | ✅ | ✅ | ❌ | ❌ |


GitLab CI — 在出现严重 CVE 时阻止部署

在 GitLab 免费版上没有 Dependabot?将此内容添加到 .gitlab-ci.yml

audit:
  stage: test
  image: node:20-alpine
  script:
    - npm audit --json > /tmp/audit.json || true
    - |
      node -e "
        const r = require('/tmp/audit.json');
        const crit = Object.values(r.vulnerabilities || {})
          .filter(v => v.severity === 'critical').length;
        if (crit > 0) {
          console.error('已阻止:发现 ' + crit + ' 个严重 CVE。请运行:npx osv-ui');
          process.exit(1);
        }
        console.log('OK:无严重漏洞');
      "
  artifacts:
    paths: [/tmp/audit.json]
    when: always

运行要求

  • Node.js >= 16
  • 访问互联网以进行 OSV.dev 查询 — 或使用 --offline
  • npm 项目:先运行 npm install 以生成 package-lock.json
  • Python 项目:上述清单列表中的任何文件

路线图

欢迎所有贡献。如果你想开发某个功能,请先开启一个 issue,以便我们进行协调。

  • [x] Go 支持 — 解析 go.sum / go.mod
  • [x] Rust 支持 — 解析 Cargo.lock
  • [x] Java / Maven 支持 — 解析 pom.xml
  • [x] PHP / Composer 支持 — 解析 composer.lock
  • [x] Ruby / Bundler 支持 — 解析 Gemfile.lock
  • [x] 导出报告 — 保存为 HTML / JSON
  • [x] 深色模式 — 护眼的仪表板 UI
  • [ ] GitHub Actions — 在 PR 上发布 CVE 差异评论
  • [ ] SBOM 导出 — CycloneDX / SPDX 格式
  • [ ] 监听模式 — 清单文件更改时自动重新扫描
  • [ ] Slack / webhook — 新出现的严重 CVE 通知

贡献 (Contributing)

本项目由社区构建。欢迎各种技能水平的开发者。

适合入门的 Issue (Good first issue):

  • 添加 Java/Maven 解析器 (pom.xml) — 请参考 src/parsers.js 中的模式
  • 为解析器编写单元测试
  • 改进 Python 解析器的边缘情况处理
# 克隆并在本地运行
git clone https://github.com/toan203/osv-ui
cd osv-ui
npm install

# 针对你自己的项目运行
node bin/cli.js /path/to/your/project

# 针对多个服务运行
node bin/cli.js ./backend ./frontend

请阅读 CONTRIBUTING.md 以了解代码风格和 PR 流程。


开源协议 (License)

MIT — 随意使用、克隆、嵌入或二次开发。


osv-ui 是否在你的项目中发现了真实的 CVE?
一颗 ⭐ 能帮助其他开发者发现这个工具。

Sponsor this project

在 Twitter 分享 · 在 Reddit 发布