CRA reporting obligations are live since 11 September 2026

Know exactly what ships.

bomwerk turns your repository, and for C/C++ your real build, into an SBOM you can defend in an audit. And it tells you plainly what it could not check.

  • C/C++
  • C#/.NET
  • Python
  • JS/TS
  • Rust
  • Go
  • Java
  • Open source, Apache-2.0
  • Runs offline, no telemetry
  • CycloneDX 1.6 and SPDX 3.0.1
bomwerk 0.1.0 · bomwerk/nightmare · abridged
$ bomwerk scan . --cpe-fallback --html report.html
warning: submodule 'third_party/openssl' not initialized
components: 55 · 44 matchable by an advisory database
✗ pkg:generic/zlib@1.2.11 (third_party/zlib): CVE-2022-37434 (9.8 Critical) … [cpe-fallback, lower confidence] report: report.html (self-contained HTML)

A vendored zlib with no manifest, found and matched. The uninitialized submodule is reported, not silently skipped.

Reporting obligations Active since 11 Sep 2026
Early warning deadline 24 hours after awareness
All CRA obligations apply 11 Dec 2027
What the CRA asks of you
The problem

An SBOM is only as useful as its evidence.

Dependency evidence is spread across manifests, build files, vendored source and linked artifacts. A useful inventory makes those limits visible instead of hiding them.

no lockfile

C/C++ evidence is scattered.

There is no universal lockfile. Vendored source, submodules and prebuilt archives hold components a manifest-only inventory never sees.

24-hour clock

The reporting clock is running.

Manufacturers in scope send an early warning within 24 hours of becoming aware of an actively exploited vulnerability, through the ENISA Single Reporting Platform.

penalties

€15M or 2.5%.

Breaching the CRA's essential requirements or reporting obligations can cost up to €15 million or 2.5% of worldwide annual turnover, whichever is higher.

How it works

From repository to evidence in three steps.

The open-source CLI does the work on your machine. No server to run, nothing uploaded.

  1. 1Scan the repository
    $ bomwerk scan .

    Reads lockfiles, manifests, vendored source and git submodules across npm, Python, Go, Rust, Java, .NET, PHP, Ruby, Dart, Conan, vcpkg and CMake. Matches components against OSV.

    SBOM + a coverage line showing what was not checked
  2. 2Prove it with the buildC/C++
    $ bomwerk observe -- make

    Records what your compiler and linker really touched. Then trim flags components the build never used and binscan reads the binaries it produced.

    An inventory backed by the real build
  3. 3Hand it over
    $ bomwerk scan . -f spdx

    CycloneDX 1.6 or SPDX 3.0.1 JSON, plus a self-contained HTML report that works offline and prints to PDF. The same input always gives the same bytes.

    Files an auditor or customer can check

See the full build-evidence workflow

Pro

After you ship: monitor, triage, report.

The commercial extension keeps watching the releases you registered. It is in preview and not yet generally available. Talk to us if you want early access.

  1. Registereach product release and its SBOM
  2. MonitorOSV and CISA KEV for new advisories
  3. Triagerecord affected or not, as VEX
  4. Draftthe CRA report that your team reviews and submits

Status, honestly: steps 1 to 3 are in preview: on the main branch, tested and usable from source, with no tagged release yet. Signed prebuilt binaries are planned. What is shipped, preview and planned

Open to scrutiny

Don't take our word for it. Try to break it.

bomwerk/nightmare is a small C project built to defeat manifest-only scanners: a vendored library with a known CVE, an uninitialized submodule, a forked dependency, prebuilt binaries with no manifest. Its hand-written ground truth lists the answer a correct scanner should give, and bomwerk is scored against it too, misses included.

  • Every command on this siteis checked against the CLI's own --help by an automated site check.
  • Every open-source capabilitycites the test behind it in the public capability ledger.
  • Every gapstays visible in the output as "not checked", never as a reassuring zero.
Works alongside

Keep the tools you have. Add the evidence they were not built to collect.

bomwerk replaces none of these. Each answers a different question. bomwerk answers one: what is inside the product you ship, and how sure can you be?

GitHub Dependabot alerts
Built forAlerts on dependencies that GitHub's dependency graph finds in a GitHub repository.
bomwerk addsA CycloneDX or SPDX file per release that you keep, produced wherever you build, including vendored C/C++ code and submodules.
SonarQube
Built forQuality and security analysis of the code your team writes.
bomwerk addsAn inventory of the third-party code that ships with it. Different question, same pipeline.
Wazuh
Built forSecurity monitoring of the hosts and systems you operate.
bomwerk addsA description of the product you build and place on the market, which is what the CRA asks about.
Syft or Trivy
Built forOpen-source SBOM generation and vulnerability scanning across many ecosystems and container images.
bomwerk addsC/C++ evidence without a lockfile: vendored source, pinned submodules, prebuilt archives and an observed build.

"Built for" summarises what each tool is documented to do. It is not a test result, and we have not yet published a head-to-head benchmark. The fair comparison is on your own repository: run your current tool and bomwerk on the same code, or ask us to do it with you. If bomwerk adds nothing, the result will say so.

Data control

Your source code is not the price of the assessment.

  • No telemetry. The CLI never reports on you, your machine or your usage.
  • Works air-gapped. --offline answers from the local cache and contacts nothing.
  • Every host, listed. Only package identifiers are sent, never source. The allowlist is enforced in the network layer, not just documented.
  • Sharing is your call. For an assisted scan we agree how your code is handled before anything moves.

This website is separate from the product: "no telemetry" and "contacts nothing" above describe the CLI, not this page. The site uses Plausible for cookie-free analytics and Formspree for the form below — submitting that form keeps your enquiry on file for up to 90 days. Privacy notice.

bomwerk 0.1.0 · abridged
$ bomwerk --endpoints
bomwerk makes outbound HTTPS requests to these hosts, and to no others.

api.osv.dev advisory matching, default
services.nvd.nist.gov --cpe-fallback only
crates.io · pypi.org · rubygems.org --license-fallback only

There are no inbound ports and no telemetry.
Free checklist

Is your team ready for the CRA? Find out in 15 minutes.

A two-page self-assessment for teams shipping C/C++ and mixed-language products into the EU. Each unchecked box is a gap worth closing.

  1. Visibility Do you know what is inside each product?
  2. Monitoring Would you notice a new exploited vulnerability?
  3. Response Could you send an early warning within 24 hours?
  4. Documentation Could you show your evidence to an auditor?
  5. Ownership Who is actually driving this?
Download the checklist (PDF)

No email address required. Educational material, not legal advice.

Free scan

Request a free scan of one repo.

Tell us what you want to understand. We agree how the repository is handled, run the assessment, and explain both the result and its limits.

Optional and unchecked by default. Ticking this just tags your enquiry so a person can add you to our updates list by hand — we don't have automated marketing email yet.

We reply within one working day. Or write to info@bomwerk.com.

What happens next

  1. You send a link or a note. No source code or secrets in the form.
  2. We agree how the code is handled. Shared with us, or run by you on your own hardware.
  3. You get the result. A standards-based inventory, the evidence gaps, a short CRA action list and a call to walk through it.

Formspree stores the submission and delivers it to our mailbox. We use it only to answer your enquiry and delete it 90 days after the enquiry closes. Privacy notice.

FAQ

Straight answers.

Does my code leave my machines?
It does not have to. bomwerk runs on hardware you control and sends only package identifiers to OSV, or nothing at all with --offline. If you ask us to assess a repository you share, that transfer is deliberate and agreed first. The website form should never contain source code or secrets.
Which ecosystems can you assess?
bomwerk reads supported evidence from npm/Yarn/pnpm, Python, Go, Rust, JVM, .NET, PHP, Ruby and Dart projects, plus C/C++ sources such as Conan, vcpkg, CMake and git submodules. Coverage depends on the files and build context present. C/C++ is where build and binary evidence adds depth beyond the repository inventory.
How is this different from Syft, Trivy or Dependabot?
They are good tools and you should keep them. bomwerk focuses on what they were not built for: C/C++ components without a lockfile, and checking the inventory against a real build. See how it works alongside them, then compare the tools on your own code.
Can I try it myself, today?
Yes. The scanner is open source (Apache-2.0) and builds from source on Linux and macOS. Get started takes you from clone to a first SBOM. There are no prebuilt binaries yet. Monitoring, triage and CRA report drafts are part of the commercial Pro extension, which is not yet generally available.
Is the assessment free?
The initial assessment of one repository is currently free on request. Continued monitoring and operational support are commercial services scoped with your team.
Does bomwerk file CRA reports for us?
No. Pro prepares report drafts. A person at the manufacturer reviews, completes and submits them through the ENISA Single Reporting Platform. bomwerk has no interface to ENISA and never submits anything on your behalf.
Why work on this now?
CRA vulnerability-reporting duties are active since 11 September 2026, and the rest of the regulation applies from 11 December 2027. A usable inventory and a decided response path are much easier to build before an incident than during one.