The release record

One record, built stage by stage.

This is the core of SBOMFlow: one deterministic, portable record for every release — what was built, what the engine observed, and what a named person decided. A run reads the build you actually ship and builds that record through eight stages, from collecting the evidence to handing it over. Every other offering adds its evidence to this same record.

Available today Limited preview · experimental In development Planned

The engine behind this page is verified by 24,200+ deterministic offline tests — testing & trust. The current build is v0.5.0, available to approved private testers; what changed in it is in what’s new, and the capability matrix in the docs — its AI rows generated from the code — wins any disagreement with this page.

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. That question is not particular to devices, and it is not particular to any one regulation: it is asked by a customer's security review, a supplier questionnaire, an incident two years later, and an auditor — long before any regulator asks it.

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

The record at a glance

Two kinds of evidence. 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

Software & 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
  • Preserved test and runtime artifacts, held by their exact bytes and joined to the release that produced them
  • Regime views on request — a CRA-oriented map against a versioned model of the regulation, or no regime at all
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 memoryevery release remembered, and what changed
Shareable proofportable, hash-verified, redactable — optionally signed, verifiable offline

The lifecycle

Eight stages. One record.

Every stage adds to the same record. Nothing is copied between tools, nothing is re-keyed by hand, and nothing downstream can quietly upgrade what an earlier stage observed into a decision.

01

Collect

Available today

SBOMFlow reads the release as it shipped: firmware trees from Yocto, Buildroot and Zephyr, container images, lockfiles across the common and embedded ecosystems, and the SBOMs your suppliers send. Every file is hashed and every fact keeps its source. An input it recognises but does not read is named, never dropped.

Automatic: identity pinning, file hashing, provenance on every record, input recognition. Yours: what counts as a product, a release and a variant; which inputs are in scope. Outcome: a release named exactly and read from the bytes that shipped, so a result can be reproduced from the same inputs under the pinned timestamp, long after the release.
02

Normalise

Available today

What was collected becomes one composition, with stable identities, dependencies and licences, and from it validated, reproducible CycloneDX and SPDX. Supplier claims stay separate from what your build shows, and anything missing is shown as missing, never invented.

Automatic: composition, dependency edges, licence evidence, SBOM validation. Yours: what a supplier claim is worth. Outcome: SBOMs you can hand over, diff, and regenerate byte for byte from the same inputs.
03

Assess

Available today

Components are checked against vulnerability advisories offline, with OSV and NVD only when you opt in. Every finding shows how confident the match is and where it came from. A match the engine cannot settle goes to a person, and a supplier’s “not affected” never closes your finding.

If you choose a requirement regime, the same evidence is mapped to it. Today that is the EU Cyber Resilience Act, with SBOM field checks against the NTIA 2021 minimum elements and BSI TR-03183-2. It is an engineering gap assessment, never a conformity conclusion — choose no regime and this step does not run.

Automatic: matching, confidence labelling, exploitation context, coverage mapping when a regime is declared, gap lists. Yours: triage outcomes, what a finding means for your product, and the conformity judgment — with your assessor, notified body, or counsel. Outcome: findings with confidence and provenance, and a coverage map that says where evidence exists and where it does not. Zero findings never means no vulnerability.
04

Record

Available today

Every stage writes into one release record: an evidence pack, provenance for every fact, and an append-only audit trail designed to expose later changes. There is no hidden state, and the record reproduces byte for byte from the same inputs.

A local store keeps every release, so you can compare any two — new and resolved findings, component changes, support dates — and see your whole portfolio at once. That is what makes SBOMFlow a system of record rather than a scanner.

Automatic: artifact writing, provenance, audit chaining, history, drift computation, portfolio rollups. Yours: what a change means, and whether it blocks a release — drift is context, and it never closes a finding by itself. Outcome: a record you can reproduce, and a memory that answers “what changed since the last approved release?”
Illustrative brand animation · synthetic · not product UI Follows your scroll · still under reduced motion
05

Review

Available today

Everything the engine observed waits for a person, marked observed and never accepted. Reviewers accept or reject evidence, set VEX status from their own decisions, and record waivers that surface before they expire.

Automatic: queueing, decision recording, waiver-expiry surfacing, merge-conflict reporting. Yours: every acceptance, every VEX status, every waiver. Outcome: a queue where every decision carries a name — observed status never becomes acceptance on its own.
06

Approve

Available today

Sign-off is multi-role, with separation of duties: nobody approves their own work, and every approval binds to the exact artifacts it covers. The release gate informs until you enforce a policy, then blocks and records exactly why.

Automatic: gate evaluation, quorum accounting, reason codes, policy-pack validation. Yours: every approval, every enforced policy, what is acceptable. Outcome: an explainable pass/fail with the policy, the reason and the sign-off state. Exit 0 with no policy enforced is informational, not a pass.
07

Verify

Available today Passport experimental

A record is only worth handing over if the recipient can check it. Every output validates offline, audit trail included, and the evidence bundle carries the hash of everything in it, with an optional attestation and signature. A per-release assurance passport is available as an experimental preview.

Automatic: structural validation, hash attestation, recipient-side verification in both directions. Yours: which key signs, and whose signatures you trust. Outcome: a recipient can prove nothing was altered without installing anything and without taking your word for it.
08

Export

Available today

The record leaves in the formats the people around you already use: CycloneDX and SPDX; OpenVEX, CycloneDX VEX and CSAF; SARIF and CSV; and annotations on pull and merge requests in GitHub Actions, GitLab and Jenkins. Findings sync to GitHub, Jira, ServiceNow and Dependency-Track — dry-run by default, applied only when you say so.

For importers, distributors and customers, a redaction-audited sharing pack and a no-install auditor package cover the handoff, and a published contract says exactly what is protected.

Automatic: exports, annotations, dry-run previews, redaction audit. Yours: every apply, every token, what is shared, with whom, and what stays internal. Outcome: evidence that drops into CI, trackers and customer handoffs without anyone re-keying it.

Beyond the eighth stage

The same record, for evidence the stages do not produce.

Three offerings add evidence under different conditions — when the evidence is a captured file rather than something the engine can read, when a new advisory lands on a release you already shipped, and when the release carries models, services and agents as well as packages. Each has its own page and its real status.

RT

Runtime & test evidence

Available · experimental

Soak-test logs, rig traces, acceptance captures and core dumps kept beside the release by their exact bytes, with a named reviewer’s decision bound to them. The engine never interprets what the files contain, and they never move the release gate.

PM

Post-market & PSIRT cases

Limited preview · experimental

When a new advisory arrives after you ship, a case finds which shipped releases may be exposed — candidates, never automatic “affected” verdicts — and records every triage, fix, risk acceptance and communication with the name of the person behind it. SBOMFlow never files, publishes or sends anything.

AI

AI Evidence

In development · design-partner programme

Models, datasets, prompts, services and agents in the same record. An ordinary run already identifies shipped model files from their bytes — never executing them — and can compare what you declare about your AI with what it found. The stage stays in development as a whole; each link in the chain carries its own status on the AI Evidence page.

What you get

Outputs you can read, diff, and hand to a reviewer.

Plain files you own — no database, no dashboard, no black box. Each one is observed evidence pending human review, never proof of conformity.

SBOMs
Component inventories in CycloneDX 1.6 and SPDX 2.3 — validated and reproducible. AI/ML BOMs are separate, opt-in outputs: CycloneDX 1.6 ML-BOM and the SPDX 3.0.1 AI profile.
Evidence pack
One structured, machine-readable record of components, findings, coverage, and provenance — with a generated front door that lists everything the run produced.
Assessment report
A human-readable view that separates observed evidence from reviewed evidence.
Requirement coverage
Where evidence maps to the requirements of the regime the run declared — the EU CRA today — and where gaps remain. A run that declares no regime writes no coverage file, and every surface then reads not assessed rather than zero gaps.
Preserved-artifact index
The captured test and runtime artifacts declared for this release: one row per SHA-256, the record verbatim, what each check proves, and the named decision applied to it. Never analysed, never part of the gate or the approval digest.
Release gate & approvals
A pass/fail decision with the exact policy, reason, and sign-off state — informational unless you enforce it.
Reviewer console & bundles
A single-file static reviewer console you open in a browser, a portable verifiable handoff, a redactable importer/distributor pack, and a no-install auditor package.
Audit trail & drift
A tamper-evident, hash-chained run record and a release-to-release comparison.
SARIF · CSV · VEX · traceability
VEX in OpenVEX, CycloneDX, and CSAF 2.0, plus SARIF, CSV, and a cross-entity index — so evidence drops into the tools and trackers you already run.

With inputs and run context pinned, release artifacts are reproducible; timing measurements are excluded from determinism checks. Many outputs are optional, and any draft declaration is clearly marked unsigned and incomplete for a person to finish. Full inventory: evidence outputs · artifact schemas.

What comes next

Not yet available

v0.5.0 is what you can run today. The next release is a focused, backward-compatible improvement: sharper provenance on every finding, wider format coverage, and records that stay provable for years. Nothing here has shipped, and an evidence pack written today will still read afterwards.

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

The same discipline, before it ships

  • Nothing is listed as available until an operator can reach it in a shipped build.
  • Planned work is never shown as live, and a status label cannot quietly improve itself.
  • Direction is not a commitment and implies no delivery date.

What the next release is

  • The release after v0.5.0, and deliberately a small one — a focused improvement train rather than a new product surface.
  • Backward-compatible. No existing artifact changes shape, so an evidence pack written today still reads afterwards.
  • Work that would break that, or that is still speculative, is held out of the release with the reason written down rather than quietly carried along.

How to shape it

  • Bring one real release. What your build does that the engine does not yet understand is the most useful input we get.
  • Design partners see each improvement as it lands, with its real status, before it reaches this page.
  • An item only moves here from the plan when it is running, and only moves to available when it ships.

Engineering continues under that discipline. The way to influence what comes next is the design-partner programme.

See it on your own build, not a demo repo.

A first audit runs offline on a laptop and writes the full artifact set from your real firmware or software build — a record of what was observed, not a claim that your evidence is sufficient. v0.5.0 is available to approved private testers.