Free tool

Create an SBOM from your source code

Drop your project folder and get a CycloneDX or SPDX software bill of materials in seconds. The analysis runs in this page - your code never leaves your computer.

Drop a project folder or a .zip here

Lock files, manifests and vendored C/C++ libraries are recognised. Nothing is uploaded.

Private by design. Your files are read by JavaScript in this browser tab. The page is not allowed to send data anywhere (Content-Security-Policy connect-src 'none') - check it in your browser's developer tools, or disconnect from the network before you drop the folder.

Options

What it reads

The generator reads the files your package managers already write. Lock files give exact versions and the whole dependency tree; a manifest alone gives only the direct dependencies.

EcosystemFiles
JavaScript / TypeScriptpackage-lock.json, npm-shrinkwrap.json, yarn.lock (v1, berry), pnpm-lock.yaml, bun.lock, deno.lock, deno.json, package.json
Pythonuv.lock, poetry.lock, Pipfile.lock, requirements*.txt, pyproject.toml, environment.yml
Gogo.mod
RustCargo.lock, Cargo.toml
Java / Kotlin / Scalapom.xml, gradle.lockfile, libs.versions.toml, build.gradle(.kts), build.sbt
.NETpackages.lock.json, *.csproj, packages.config, Directory.Packages.props
PHPcomposer.lock, composer.json
RubyGemfile.lock
Swift / iOSPackage.resolved, Package.swift, Podfile.lock, Cartfile.resolved
Dart / Flutterpubspec.lock, pubspec.yaml
Elixir / Erlangmix.lock, rebar.lock
Haskell, Julia, R, Lua, Zig, OCaml, Perlcabal.project.freeze, stack.yaml.lock, *.cabal, Manifest.toml, Project.toml, renv.lock, DESCRIPTION, *.rockspec, build.zig.zon, *.opam, cpanfile
C/C++ package managersconan.lock, conanfile.txt, conanfile.py, vcpkg.json, meson .wrap, MODULE.bazel
Embeddedplatformio.ini, idf_component.yml, dependencies.lock (ESP-IDF), west.yml (Zephyr), library.properties, library.json
Nixflake.lock
C/C++ (vendored)headers of 60 common libraries (zlib, OpenSSL, mbedTLS, wolfSSL, SQLite, lwIP, FreeRTOS, cJSON, curl, fmt, littlefs, ...) recognised by their version macros; .gitmodules
Build files (no lock file)CMake (find_package, pkg_check_modules, target_link_libraries, FetchContent, CPM), Makefile -l flags, qmake, meson, autoconf; well-known #include headers. Listed without versions.
Web pagesCDN links (unpkg, jsDelivr, cdnjs, esm.sh, code.jquery.com, ...) and bundled jQuery, Bootstrap, Vue, pdf.js and other libraries recognised by their banner
ContainersDockerfile base images (FROM)

Libraries copied into the project are found too: every folder in third_party/, vendor/, external/, deps/ and every name-1.2.3 folder, named and versioned from its own files. Folders such as node_modules, .git, target, build trees and virtual environments are skipped, and test, docs and example projects count as development dependencies. Nothing is executed and no package registry is contacted, so the result depends only on the files in the folder.

Desktop and CI tool

The same generator as a single program for Windows, macOS and Linux - for large repositories, scripts and build pipelines. It gives the same result as this page.

Windows

Source code

Everything both tools are built from: the JavaScript of this page, the C++ program, the rules and the tests. Apache-2.0.

The binaries are not code-signed yet. Compare the SHA-256 checksum after downloading. Windows SmartScreen may ask you to confirm (More info > Run anyway); on macOS run xattr -d com.apple.quarantine kernwatch-sbom once. SHA256SUMS · Version 0.2.0

Usage

kernwatch-sbom ./my-product --name my-product --version 2.4.0 -o my-product.cdx.json
kernwatch-sbom ./my-product --format spdx -o my-product.spdx.json
kernwatch-sbom --help

In your build pipeline

Generate the SBOM on every release build and send it straight to your Kernwatch workspace with an API key (Settings > API keys):

# GitHub Actions step (secret KERNWATCH_API_KEY = a key with the SBOM upload scope)
- name: SBOM to Kernwatch
  env:
    KERNWATCH_API_KEY: ${{ secrets.KERNWATCH_API_KEY }}
  run: |
    curl -fsSLo kernwatch-sbom https://kernwatch.com/downloads/kernwatch-sbom/0.2.0/kernwatch-sbom-0.2.0-linux-x86_64
    chmod +x kernwatch-sbom
    ./kernwatch-sbom . --name my-product --version "$GITHUB_REF_NAME" -o sbom.cdx.json \
      --upload https://kernwatch.com/rest/v1/cra/sbom/kernwatch_db

The generator is open source (Apache-2.0). Source code (.zip)

Questions

Is my source code uploaded?

No. In the browser the files are read by JavaScript in your own tab, and the page's Content-Security-Policy forbids it to send data. The desktop tool works offline; it only connects to the network when you ask it to upload the SBOM to Kernwatch.

Which SBOM formats does it create?

CycloneDX 1.6 JSON and SPDX 2.3 JSON, the two widely used machine-readable formats. Both validate against the official schemas and can be imported by Kernwatch and other SBOM tools.

Is this SBOM enough for the Cyber Resilience Act?

The CRA asks for an SBOM in a commonly used, machine-readable format covering at least the top-level dependencies, kept with the technical documentation. A lock-file based SBOM covers that and more. The CRA also requires you to handle the vulnerabilities that later appear in those components - that is what Kernwatch monitors.

Why do some components have no exact version?

Because the folder has only a manifest (such as package.json, pom.xml or a .csproj) without a lock file. The generator never guesses: it records the declared range and says so. Commit your lock file, or enable Gradle dependency locking, to get exact versions and transitive dependencies.

Does it scan binaries or firmware images?

No. It reads source trees: lock files, manifests and the headers of vendored C/C++ libraries. Declare libraries that you only ship as binaries in your Kernwatch release by hand.

Claim your free Kernwatch account

The free plan covers one product and needs no credit card. Paid plans add more products, users and the full reporting workflow - upgrade whenever you need it.

  • Free plan for 1 product
  • No credit card

37 days since CRA reporting started · 419 days until all CRA requirements apply

Free plan · 1 product · no credit card

Start free →

Free plan for 1 product · No credit card