The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Bomly listing page.
Analyze Your Software DNA.
Bomly is a free, open-source CLI for dependency intelligence. It scans source trees, SBOMs, Git refs, and container images; explains why dependencies are present; enriches packages with vulnerability and license data when you ask for it; evaluates policy; and writes automation-friendly output for CI.
Free and open source, no account, no login. One binary. No service to host. No telemetry. No outbound matcher calls unless you opt in with --enrich. Network and Privacy documents every network trigger so you can audit that claim instead of taking it on faith.
Prebuilt archives and Linux packages are published from GitHub Releases. Releases include bomly (full binary with builtin Syft and Grype) and bomly-lite (smaller binary that shells out to external syft and grype).
Verify the install:
For Linux packages, Scoop, Go install, checksums, pinned versions, upgrades, and uninstall instructions, see Installation.
Bomly reads manifests, lockfiles, package-manager output, container layers, or existing SBOMs and turns them into one dependency graph. Native detectors cover Go, npm, pnpm, Yarn, Maven, Gradle, Python, Composer, Bundler, GitHub Actions, SBOM ingest, and more. Syft fills the long tail, including container images. See the Support Matrix and Scan Targets.
| Question | Command |
|---|---|
| What do we depend on? | bomly scan |
| What changed in this PR or branch? | bomly diff --base main --head HEAD |
| Why is this package here? | bomly explain lodash |
| Which findings matter to policy? | bomly scan --enrich --audit --fail-on high |
| Can CI fail on high-severity findings? | bomly scan --enrich --audit --fail-on high --format sarif |
| Can I triage reachable findings first? | bomly scan --enrich --audit --analyze --fail-on high --fail-on reachable |
For more recipes, see Getting Started and Use Cases. To review the public inputs, commands, expected results, and limitations behind important behavior claims, see Reproducible Evidence.
Open the terminal UI when you want to inspect a graph by hand:
Use it to fuzzy-find packages, inspect versions and scopes, pivot through findings, and see how a dependency entered the graph without writing a report to disk. See Interactive TUI.
By default, Bomly does not call vulnerability, license, lifecycle, or scorecard services. Add --enrich when you want external package intelligence:
Built-in enrichment uses public services such as OSV, CISA KEV, deps.dev, and OpenSSF Scorecard. --audit evaluates the vulnerability and license data already present on packages; use --enrich --audit when you want to fetch and evaluate in one run.
Reachability is experimental. It is useful for triage, but "unreachable" is not a guarantee of safety. Read Reachability before using --fail-on reachable as a CI gate.
Use explain when a transitive package shows up and you need the path:
Use diff when you need to review dependency changes across Git refs or SBOMs:
See Getting Started for the first-run walkthrough and Use Cases for PR review, upgrade review, and incident triage recipes.
Bomly can write human-readable text, JSON, SARIF, SPDX 2.3, and CycloneDX 1.7:
Exit codes are stable for scripts: 0 for clean results, 2 for policy violations, and separate values for usage, runtime, and no-supported-project failures. See Output Formats, SBOM Formats, and Exit Codes.
To gate pull requests, use the Bomly Guard action or call the CLI directly from your workflow:
See Bomly Guard and CI Integration.
Bomly can run as a local MCP server so AI agents can call the same dependency graph tools you use on the command line:
If you have not installed the CLI, the bomly-mcp npm wrapper starts the same server:
Add Bomly to an MCP-aware agent such as Claude Code, Cursor, VS Code, or a custom tool, and the agent receives structured JSON it can summarize or reason over. See MCP Server for setup recipes and the tool reference.
Bomly reads configuration from your user config, an explicitly selected
config file, BOMLY_* environment variables, and CLI flags, with later
sources taking precedence:
~/.bomly/config.yaml--config <path> or BOMLY_CONFIGBOMLY_* environment variablesRepository config files are never loaded automatically. A project may keep
its shared configuration at .bomly/config.yaml, but you must trust it
explicitly with --config .bomly/config.yaml or BOMLY_CONFIG. See the
generated Config Reference.
Managed plugins let you add detectors, matchers, and auditors without forking Bomly:
See Plugins for install, trust, and authoring guidance.
Contributor setup lives in CONTRIBUTING.md. Architecture details live in docs/ARCHITECTURE.md.
For questions, ideas, and general support, please use Bomly Discussions.
Use this repository's issues only for confirmed bugs, regressions, or actionable implementation work.
Bomly is an open-source project. If you find it useful, you can support the project by starring the repository, sharing feedback, opening issues, contributing improvements, or sponsoring ongoing maintenance.
See Support Bomly.
Bomly CLI is licensed under the Apache License 2.0.