Release evidence for connected-device manufacturers

Every release. One defensible record.

SBOMFlow is the system of record for connected-device release evidence. It turns the build you actually ship into one portable, reviewable record — what shipped, what changed, which risks matter, what remains unverified, and who approved it.

v0.5.0 · private tester build Deterministic Offline by default Human-reviewed Open formats AI evidence · in development
release-evidence/ offline
$ sbomflow audit ./firmware-build
 scan     components · dependencies · file hashes
 sbom     cyclonedx · spdx  (validated)
 vulns    matched offline  · context recorded, never a verdict
 cra      Annex I · VII · Art. 14  (2024/2847)
 review   queue · sign-off · approvals
 gate     you decide what blocks a release
 bundle   portable, hash-verified handoff
 observed evidence — pending human review
Illustrative run · sample data labelled non-real human review required
Built on open standards and published sources CycloneDX SPDX OSV NVD CISA KEV FIRST EPSS Debian tracker Alpine secdb OpenVEX CSAF SARIF CRA 2024/2847

The problem

The proof of a release is scattered everywhere except the release.

Build data lives in CI. SBOMs and supplier files live somewhere else. Vulnerabilities live in scanners and trackers. Models and AI services often aren't recorded at all. Approvals live in tickets and spreadsheets. Then a regulator, auditor, or customer asks — and the evidence is assembled by hand, under deadline pressure, with little of it tracing back to the exact build that shipped or the person who accepted it.

A scanner answers what is in a build. The question at release is what you knew, who decided, and whether you can produce the same answer in two years — SBOMFlow keeps that record, and a person makes every decision in it.

Illustrative brand animation · synthetic · not product UI Follows your scroll · still under reduced motion

Why now

The dates are fixed. The evidence is what takes time.

These are the dates the official sources currently state — not our reading of them. Reporting obligations arrive first, and they land on releases you have already shipped.

  1. 10 Dec 2024 In force Regulation (EU) 2024/2847 entered into force.
  2. 11 Sep 2026 Reporting begins Article 14 reporting obligations apply from this date. ENISA’s single reporting platform is scheduled to be operational from it — confirm its current status with the official sources before you rely on it.
  3. 11 Dec 2027 Main obligations Secure-by-design, vulnerability handling, technical documentation and conformity assessment apply across the market.

Verify against the primary sources: European Commission — Cyber Resilience Act ↗ European Commission — CRA reporting ↗ Regulation (EU) 2024/2847 (EUR-Lex) ↗

SBOMFlow prepares the engineering evidence and exposes the gaps. It never files a report and never decides whether you meet the regulation — what that means in practice.

How it works

Two kinds of evidence. Five steps. One record.

Everything a release ships — conventional and AI-enabled — lands in the same record, under the same review discipline, with its real status labelled throughout.

Illustrative brand animation · synthetic · not product UI Many layers leave a release; one record holds them
Build & CI output Supplier SBOMs Scanner results Trackers & tickets Approvals Model files
Available today

Connected-product evidence

  • Software & firmware composition from real builds — validated CycloneDX & SPDX
  • Container images, supplier SBOMs, and embedded ecosystems as first-class inputs
  • Vulnerability correlation with exploitation context, reachability, and VEX as inputs for human triage
  • CRA-oriented coverage against a versioned model of the regulation
In development

AI-enabled product evidence

  • Model files identified from their bytes and listed on every analysis run — never executed
  • What you declare about your AI and what the run observed stay side by side; a disagreement stays visible and is never resolved for you
  • The same review, gate, and drift discipline extended to AI components — opt-in, off by default
  • CycloneDX ML-BOM & SPDX AI-profile output — opt-in, available in 0.5.0
Evidence statesobserved is never confused with reviewed
Human reviewrecorded decisions, approvals, waivers
Policy gatesexplainable, enforced only when you choose
Release memorycontent-addressed history and drift
Shareable proofportable, hash-verified, redactable — optionally signed, verifiable offline
01

Point it at a real release

Run SBOMFlow against the actual product or firmware build you ship, plus any SBOMs and evidence you already have.

your first offline audit

productexample gateway (sample)
release2.4.1
root./firmware-build
pinned identity
02

Gather and connect the evidence

Components, dependencies, and file hashes become validated SBOMs; every piece of evidence traces to the exact bytes it came from.

composition & SBOMs

componentsinventoried
hashesrecorded per file
sbomcyclonedx · spdx (validated)
observed, not assumed
03

Add vulnerability, AI, and regulatory context

Advisory correlation with exploitation context, model-file evidence, and CRA-oriented coverage — inputs for human judgment, never automatic rulings.

vulnerability context · CRA readiness

findingCVE-SAMPLE-OPENSSL-001 · high
contextKEV · EPSS · reachability
coverageAnnex I map · gaps recorded
context, never verdicts
04

Put people in control of review and gates

A review queue, multi-role approvals with separation of duties, and an explainable release gate you configure. Observed never becomes accepted on its own.

review & gates

queueobserved items awaiting review
decidea named reviewer records the decision
recordreviewer identity · audit chain
observed ≠ accepted
05

Keep a portable record across releases

Release memory, drift between any two releases, shareable bundles a recipient can verify offline — and post-market continuity (experimental preview) when new advisories arrive.

release memory · post-market

gateinformational until you enforce a policy
enforcedblocks, with the reason recorded
bundleportable · hash-verified
your policy decides

Stage states are synthetic samples, drawn from the same pinned fixture as the walkthrough below.

See it

Inspect what one offline run actually produces.

Real output from a pinned sample run, read the way a reviewer would — or open the full walkthrough.

Interactive product walkthrough · illustrative sample data · advisory data labelled non-real (CVE-SAMPLE-*) · human review required

One offline sbomflow audit of the sample gateway release (Example Embedded Linux Gateway 2.4.1) observes 22 components, matches 2 sample advisory findings (CVE-SAMPLE-OPENSSL-001, CVE-SAMPLE-BUSYBOX-001), maps evidence to the CRA Annex I model, records 7 evidence gaps, and leaves 6 observed items awaiting human review. The release gate stays informational until you enforce a policy — with gap enforcement switched on, the same run blocks and records the reason.

The interactive view needs JavaScript. Everything in it also exists as plain files: see evidence outputs and your first offline audit.

The release story

One release, in three beats.

Scroll at your own pace, or jump between stages. Every stage visual is illustrative and synthetic.

Stage 1 · The release

A connected product ships.

Example GatewayRelease 2.4.1Synthetic demonstration

Stage 2 · Human review

Observed evidence — a person decides.

observedrecorded, nothing accepted yet
decisionmade by a named reviewer
recordkept in a hash-chained audit log

Acceptance, VEX status, and the release call belong to your reviewers. Nothing promotes itself — the open connection stays open until a person closes it.

Stage 3 · The record

Every release, remembered the same way.

bundleidentity · SBOMs · findings · decisions · approvals · gate
verifyhashes travel with the evidence
memorynext release, drift reports what changed

The boundary

Not a scanner. Not a compliance chatbot. Not a certifier.

SBOMFlow keeps the record. The boundaries below don't depend on trust — they are built into the engine.

The engine runs to the edge of a decision and then stops. It has no way to go further on its own — not a policy choice, a boundary. Everything below the line waits for a person.

  1. observedCVE-SAMPLE-OPENSSL-001 in openssl 3.0.11
  2. matchedconfidence high · KEV no · reachability not observed
  3. statusobserved — recorded, not accepted

the engine stops here

No decision has been made, and none will be. A reviewer records one — with their name on it.

Illustrative · sample advisory labelled non-real (CVE-SAMPLE-*) · the buttons stand in for a recorded reviewer decision

  • Nothing leaves by default — network access happens only on explicit, named opt-ins.
  • Observed is not reviewed — what the engine sees never becomes acceptance on its own.
  • People own the consequential decisions — VEX status, evidence acceptance, the release call.
  • Evidence is portable and inspectable — plain files you own, with hashes that travel with them.
  • Planned features are never presented as live — every capability carries its real status: available, experimental, in development, or planned.
  • SBOMFlow prepares evidence and exposes gaps — it makes no conformity claim, and it never files a report.

The full picture — data flows, network opt-ins, secret handling, testing assurance, residual risks — lives in the trust centre.

Checkable facts — and what is not established

Every figure here traces to running code.

0
Required runtime dependencies
→ a smaller trust surface to audit
20,100+
Deterministic offline tests
→ re-run them yourself; a skipped test is never counted as a pass
14
Mandatory evidence artifacts
→ written by every successful analysis run, so nothing is assembled by hand; more when the inputs call for them
500+
Stable, documented warning codes
→ nothing fails silently; uncertainty is stated, never swallowed
15
Build and package families
→ 7 embedded and firmware build systems, 6 language ecosystems, containers and generic manifests — read in one run

Drift guards fail the build when the figures on this page and the engine disagree. The 500+ documented warning codes are how the engine refuses to fail silently. The full verification pipeline is public: Testing & trust. What is not established: the recorded adversarial-laboratory run on the accuracy scorecard was produced by 0.4.0, and no run for 0.5.0 is published yet.

Evidence Assurance Benchmark

NO QUALIFIED CANONICAL RECEIPT — NO PUBLIC SCORE

We built a frozen, adversarial benchmark to score our own evidence handling. A score appears only when a qualified, independently re-verified receipt exists; nothing weaker gets published, so no score is shown today. How the score works →

What one run reads

Embedded builds, not just package managers.

A connected product is not a web app with firmware attached. One run reads 15 build and package families across 22 manifest formats, including the embedded build systems general-purpose SBOM tooling tends to skip.

Embedded & firmware

Yocto · Buildroot · Zephyr (west) · PlatformIO · Arduino · CMake · vcpkg

Language ecosystems

Python · npm · Cargo · Go · Maven · Gleam

Containers & images

Dockerfile · Compose · OCI image evidence (opt-in)

Whatever else you ship

Product, firmware and host manifests as first-class inputs — an unrecognised file is warned about, never silently dropped

Every family above is a supported manifest in the engine’s own input catalogue, not a marketing list — the inputs reference names each one.

Before you ask

The three answers people want first.

Does this make us compliant?

No, and no tool can. SBOMFlow prepares engineering evidence and shows you the gaps in it. Whether that satisfies the regulation is a judgement for your people, your assessor, and where required a notified body.

Does anything leave our network?

Not by default. The engine is offline unless you name an opt-in — every network-capable path is an explicit flag or config key, and there is no telemetry to switch off.

Is it finished?

No. v0.5.0 is a certified private tester build with no known release-blocking defects, subject to documented restrictions — which is not the same as error-free. Status is stated per capability, never in general: available, experimental, in development, or planned.

The longer list — accuracy, IP exposure, what you need to run it, whether it replaces your review — is answered on the trust centre.

What is coming

In development.

v0.5.0 is what you can run today. The next release is a focused, backward-compatible improvement train, planned in the open. Nothing below has shipped, and none of it changes an existing artifact’s shape — that is what “backward-compatible” is holding us to.

Illustrative brand image, synthetic: a fanned stack of blank cards, the front three sharp and the back three softening into the paper, with a single brass rule laid across them
Some of it is finished; some of it is not yet — illustrative brand image · synthetic
  • Vulnerability evidence

    Which source said what, field by field

    Every enriched field on a finding will name the feed it came from and carry that feed’s own 2026 vocabulary verbatim — NVD’s SSVC and affected-status data, KEV’s required action and CWE list, OSV 1.9 severity sources. Recorded as supplied, never re-derived.

  • CRA currency

    Pinned sources, brought to September 2026

    The regulatory ground moved: a delegated-act repeal, new ETSI enquiry drafts, a revised Single Reporting Platform FAQ. The pinned source set is being re-verified against what those documents say now, not what they said when they were pinned.

  • AI evidence

    Model containers that currently slip past

    A compressed or archive-wrapped model container can vanish from the AI inventory while the walk still reports itself complete. That silence is the defect. The refused-format catalogue is being extended so an unreadable container is reported, never skipped.

  • Article 14

    Reconciled against the real portal

    The Single Reporting Platform is a manual portal with no API. The draft model is being reconciled against how it actually launches — the re-verification tooling now, observation of the live portal once it exists. SBOMFlow still never files.

  • Retention

    Still provable in five years

    One tested journey, over commands that already exist, proving a stored release can produce its complete verifiable record years after the build machine, the CI job and the reviewer have all gone.

  • Interoperability

    Every BOM family, and what each one loses

    A census of every BOM family against the engine, with a binding loss report: when a format cannot carry something, the conversion says so instead of quietly dropping it.

Planned work, not shipped capability. The scope record and its kill criteria are public in the board that drives them — a card only becomes buildable when the ready queue says so, and only reaches this page when it runs.

Next step

Help shape the release-evidence system for connected products.

v0.5.0 is a private tester build: certified with no known release-blocking defects, subject to documented restrictions — which is not the same as error-free. We're inviting a small number of design partners across three tracks: connected-device release evidence, post-market / PSIRT evidence continuity (experimental preview), and AI-enabled product evidence (in development). A first engagement starts from your real build and ends with a reviewer-ready evidence pack — and a straight answer on fit.

SBOMFlow is built by Amzat Karim, a London-based software engineer working on deterministic release evidence for connected products. A person reads hello@sbomflow.com and will answer yes, no, or not yet. Who is behind SBOMFlow

Release-evidence design partners · Post-market (PSIRT) design partners · AI evidence design partners · Advisors · No spam

Once you have the tester build

One command detects the project, scaffolds a config it refuses to overwrite, and runs a fully offline audit. It discloses the scan root, the detected inputs and its network posture before the first write — nothing happens to your tree that you have not been shown first.

$ sbomflow quickstart .
Your first offline audit, step by step