关于 Bomly
Bomly 是面向开发者、安全工程师和 CI 流水线的开源命令行工具,用于构建和检查软件依赖图。它可追溯依赖来源、审核策略、比较 Git 引用并生成标准报告,也通过 MCP 向编码 Agent 提供扫描、解释和差异比较操作。
主要功能
- 01从源码、SBOM、Git 引用和镜像构建依赖图
- 02解释软件包的引入原因
- 03补充漏洞与许可证数据
- 04按策略审核并返回 CI 可用的退出码
- 05导出 JSON、SARIF、SPDX 和 CycloneDX
- 06在终端交互式检查依赖图
适用场景
- 01检查拉取请求中的依赖变化
- 02根据策略或漏洞发现阻断 CI 构建
- 03为项目或镜像生成 SBOM
- 04调查软件包来源及依赖路径
MCP 相关
Bomly 可通过 `bomly mcp serve` 或 `bomly-mcp` npm 封装程序作为本地 MCP 服务运行。编码 Agent 可调用其扫描、解释和差异比较工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
分析你的软件 DNA。
Bomly 是一款免费、开源的命令行工具,可帮助你了解软件依赖项。它面向开发者、安全工程师和 CI 流水线构建。Bomly 可以:
- 将源代码树、SBOM、Git 引用和容器镜像扫描并整合为一张依赖关系图;
- 说明软件包为何存在;
- 在你使用
--enrich请求时,添加漏洞和许可证数据; - 根据策略检查结果,并返回 CI 可据此采取操作的退出码;
- 写入 JSON、SARIF、SPDX 和 CycloneDX 格式的输出。
无需账户,无需登录,无需托管服务,也没有遥测。只有一个二进制文件。除非你传入 --enrich,否则 Bomly 不会联系任何漏洞或许可证服务。网络与隐私列出了所有网络访问触发条件,你可以自行核实这一说法。
安装
# macOS / Linuxbrew
brew install bomly-dev/tap/bomly
# Linux / macOS install script
curl -fsSL https://bomly.dev/install.sh | sh
# Windows
winget install Bomly.BomlyCLI
使用 bomly version 检查安装是否成功。安装说明介绍了 Linux 软件包、Scoop、go install、使用你自己的 Syft 和 Grype 的精简版 bomly-lite 二进制文件、校验和以及卸载方法。
开始扫描
# Scan the current project
bomly scan
# Scan a specific directory
bomly scan --path ./services/api
# Scan a container image
bomly scan --image ghcr.io/example/app:latest
# Scan a remote Git ref
bomly scan --url https://github.com/owner/repo --ref v1.2.3
# Read an existing SPDX or CycloneDX SBOM
bomly scan --sbom --path ./sbom.cdx.json
Bomly 会读取清单、锁文件、软件包管理器输出、容器层或现有 SBOM,并将其整合为一张依赖关系图。原生检测器支持 Go、npm、pnpm、Yarn、Maven、Gradle、Python、Composer、Bundler、GitHub Actions 等。Syft 则覆盖其余生态系统和容器镜像。请参阅支持矩阵和扫描目标。
| 问题 | 命令 | 了解更多 |
|---|---|---|
| 我们依赖哪些组件? | bomly scan | 入门指南 |
| 哪些软件包存在已知漏洞,是否有修复方案? | bomly scan --enrich | 匹配器 |
| 此构建应该失败吗? | bomly scan --enrich --audit --fail-on high | 审计器、退出代码 |
| 我的代码能触达哪些发现?(实验性功能) | bomly scan --enrich --audit --analyze --fail-on high --fail-on reachable | 可达性 |
| 为什么会有这个软件包? | bomly explain lodash | explain |
| 此 PR 中有哪些更改? | bomly diff --base main --head HEAD --enrich --audit | diff |
| 为我生成 SBOM | bomly scan -o spdx=sbom.spdx.json -o cyclonedx=sbom.cdx.json | SBOM 格式 |
| 给我一份 CI 可读取的内容 | bomly scan --json、--format sarif | 输出格式 |
可达性是实验性功能:“不可达”并不保证安全。用例中还有更多示例,发布保障列出了每个版本发布前都会进行的检查。
交互式探索
想要手动检查依赖图时,可以打开终端 UI:
bomly scan --interactive
你可以用它模糊查找软件包、检查版本和作用域、在发现之间切换,并查看依赖项如何进入依赖图,无需将报告写入磁盘。请参阅交互式 TUI。
为拉取请求设置门禁
Bomly Guard action 会针对拉取请求的合并基点运行 bomly diff,并将结果作为检查和 PR 评论发布。只会审计 PR 更改过的软件包,因此其他位置已有的发现不会阻止 PR:
# .github/workflows/bomly.yml
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: bomly-dev/bomly-guard@v1
with:
fail-on: high
请参阅 Bomly Guard。CI 集成中提供了适用于 GitLab、Jenkins、Azure DevOps 和 CircleCI 的示例。
将 Bomly 与 AI Agent 配合使用
Bomly 可以作为 Model Context Protocol (MCP) 的本地服务运行,让 AI 编码 Agent 调用你在命令行中使用的同一组 scan、explain 和 diff 工具:
bomly mcp serve
如果尚未安装 CLI,bomly-mcp npm 包装器也会启动同一服务:
npx -y bomly-mcp
请参阅 MCP 服务,了解 Claude Code、Cursor 和 VS Code 的配置方法以及工具参考。
配置和扩展
Bomly 依次从 ~/.bomly/config.yaml、--config 或 BOMLY_CONFIG 指定的文件、BOMLY_* 环境变量和命令行标志中读取设置,后面的来源优先级更高。仓库中的配置文件不会自动加载:要使用该文件,请传入 --config .bomly/config.yaml。请参阅配置参考。
插件可以添加检测器、匹配器、审计器和分析器,无需分叉 Bomly:
bomly plugins install github:bomly-dev/[email protected]
bomly plugins enable bomly.examples.detector.bun-lock
bomly plugins verify bomly.examples.detector.bun-lock
请参阅插件,了解如何安装和信任插件;请参阅插件编写,了解如何编写插件。
文档
- 快速入门 — 安装 Bomly 并运行首次扫描
- 教程 — 从首次扫描到在真实项目中设置 CI 门禁
- 使用场景 — PR 门禁、SBOM、分类处理、许可证和离线扫描的操作指南
- 常见问题 — 关于隐私、账户和工具差异的快速解答
- 扫描目标 和 Monorepos — Bomly 可以扫描哪些内容
- 输出格式 和 SBOM 格式 — text、JSON、SARIF、SPDX、CycloneDX
- CI 集成 和 Bomly Guard — 流水线和 GitHub Action
- MCP 服务 — 将 Bomly 连接到 Claude Code、Cursor、VS Code 或其他 MCP 客户端
- 可达性 — 根据代码是否能触达漏洞进行实验性分类处理
- 插件 — 外部检测器、匹配器、审计器和分析器
- 发布说明 — 各版本的变更内容
- 全部文档 — 完整索引
贡献者设置说明见 CONTRIBUTING.md。架构详情见 docs/ARCHITECTURE.md。
问题与赞助
如有问题、想法或需要帮助,请使用 Bomly Discussions。请使用此仓库的 issues 报告已确认的 Bug、回归问题和具体的实现工作。
如果 Bomly 对你有帮助,可以为仓库加星、分享反馈、参与贡献,或赞助持续维护。
许可证
Bomly CLI 根据 Apache License 2.0 授权。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。