Skip to content

Artifacts reference

The generated SBOM is CycloneDX 1.6 JSON. An SPDX 2.3 JSON copy, converted from the final CycloneDX BOM, is produced by --spdx during a CLI scan or on demand from the results screen in the UI. Both paths run the same conversion and give the same file. CycloneDX remains the primary format, and CycloneDX-only data (vulnerabilities, bomlens:* properties) is not carried over.

The filename is {Project}_{Version}_bom.json (e.g. MyApp_1.0.0_bom.json).

Output files

File When generated Description
{Project}_{Version}_bom.json always SBOM (CycloneDX 1.6)
{Project}_{Version}_bom.spdx.json --spdx / --all, or Export as SPDX 2.3 in the UI SBOM (SPDX 2.3, converted from the CycloneDX output)
{Project}_{Version}_NOTICE.txt / .html --notice / --all / risk report default open-source notice
{Project}_{Version}_security.json / .md / .html --security / --all / risk report default Trivy security report
{Project}_{Version}_risk-report.md / .html default (all modes) — omit with --no-report open-source risk report
{Project}_{Version}_conformance.json / .md / .html --analyze format conformance report, with a regulatory crosswalk roll-up for every SBOM (EU CRA via BSI TR-03183-2, NTIA minimum elements — reference only, no compliance determination). For an AI SBOM it also carries the G7 checks and, for each advisory element still missing, the CycloneDX fragment that would satisfy it. See a rendered example
{Project}_{Version}_ai-profile.json / .md AI SBOM (--model, or --analyze on an SBOM with a model component) AI compliance profile: G7 rollup, the closable gaps with their reference links, license-flagged components, regulatory crosswalk, and the model risk assessment (riskAssessment: per-model ok/conditional/caution/review verdicts with conditions, reasons and the usage scenario; guidance, not legal advice). The same rollup opens the conformance HTML, so there is no separate HTML profile
{Project}_{Version}_scancode.json --deep-license raw scancode result
{Project}_{Version}_bom.json.sig --sign cosign signature (with --spdx, a _bom.spdx.json.sig is produced too)

{P} = project name, {V} = version (special characters are normalized to _).

The conditions above are the CLI flags. In the web UI and the desktop app the same choices are the generation options on the New scan screen — Notice and Security report — and every file produced is listed in the Artifacts section of the results, downloadable per format or as one ZIP. SPDX is not a scan option there: the SBOM card in that section has an Export as SPDX 2.3 button that converts the finished BOM whenever you need it, and the converted file joins the artifact list and the ZIP. The UI has no signing, so an SPDX exported that way is unsigned; use --spdx --sign in the CLI when you need a signature. See Web UI and desktop app.

SBOM structure

bomFormat          "CycloneDX"
specVersion        "1.6"
metadata
  ├── timestamp    generation time (ISO 8601)
  └── component    project info (name, version, type)
components[]
  ├── type         "library" | "framework" | "application"
  ├── name         component name
  ├── version      version
  ├── purl         Package URL (unique identifier)
  └── licenses[]   license info (SPDX ID)

For the per-language PURL format, see Supported ecosystems.