---
title: "AI Bill of Materials: CycloneDX vs SPDX"
canonical: https://wavect.io/blog/ai-bill-of-materials-cyclonedx-spdx-2026/
language: en
description: "Compare CycloneDX ML-BOM and SPDX AI profiles, learn what an AI Bill of Materials records, and implement a signed AIBOM in two sprints."
image: "https://wavect.io/img/blog/headers/header_ai-bill-of-materials-cyclonedx-spdx-2026.png"
---

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

8 min read · 24 Aug 2026 Last reviewed August 24, 2026

[**Next**](/blog/eu-data-act-connected-product-api-2026/)

# AI Bill of Materials: CycloneDX vs SPDX Implementation Guide

TL;DR

An AI Bill of Materials inventories the software, models, datasets, services, licenses, provenance, evaluations, and deployment relationships behind an AI system. CycloneDX is often the better fit for product-security and SBOM operations; SPDX is often stronger for detailed provenance, licensing, and artifact graphs. Keep one format-neutral internal source, generate and sign the chosen standard in the release pipeline, and test it with a real upstream incident.

**An AI Bill of Materials is a machine-readable inventory of the software, models, datasets, services, licenses, provenance, and relationships that make an AI system. Choose CycloneDX when product-security and operational SBOM workflows are primary. Choose SPDX when detailed provenance, licensing, and graph relationships across AI and software artifacts are primary. Both can work if one internal inventory is authoritative.**

An AIBOM is evidence infrastructure, not a compliance badge. It should answer which model and dataset affected a release, where they came from, what terms apply, which evaluations passed, and which deployed systems need action when an upstream component changes.

## CycloneDX or SPDX?

| Decision factor | CycloneDX | SPDX |
| --- | --- | --- |
| **Primary orientation** | Product security and BOM operations | Provenance, licensing, and artifact relationships |
| **AI representation** | ML-BOM capability with model and dataset components | AI profile composed with software and other profiles |
| **Team fit** | Existing CycloneDX/SBOM and vulnerability pipeline | Existing SPDX, legal, research, or supply-chain graph pipeline |

## What should an AIBOM record?

Inventory stable identifiers and versions first, then add provenance and policy. Include the base model, adapters, prompts or policy packages when they alter behavior, training and evaluation datasets, serving runtime, retrieval indexes, external APIs, licenses, hashes, suppliers, evaluations, and deployment relationships.

- Identify artifacts with immutable hashes or registry digests, not display names such as latest.
- Distinguish trained-on, fine-tuned-with, evaluated-on, retrieved-from, and served-by relationships.
- Store sensitive dataset details in access-controlled evidence and expose only safe references in distributable BOMs.
- Link every production deployment to the exact AIBOM revision used for its release.

## How do you choose without locking in?

Define a format-neutral internal schema for identity, provenance, relationship, license, evaluation, and deployment. Generate the external standard from that source. This prevents two inventories from drifting and makes a future customer requirement a mapping exercise rather than a rebuild.

- Prototype the hardest artifact, usually a fine-tuned model with several datasets and a hosted inference dependency.
- Validate generated documents with official schemas and stable example fixtures.
- Round-trip one release and compare whether any decision-critical fields disappear.

## Where should AIBOM generation run?

Generate and sign it in the release pipeline after artifacts are immutable but before deployment approval. Enrich it from model registries, dataset catalogs, dependency scanners, evaluation results, and infrastructure manifests. Runtime discovery should detect drift, not replace declared build provenance.

- Fail the release for missing identity, prohibited licenses, unapproved models, or absent evaluations.
- Publish an access-appropriate customer version and retain a richer internal evidence version.
- Trigger impact analysis when a vulnerability, license, supplier, or model advisory changes.

## A two-sprint AIBOM pilot

1. Select one deployed AI feature and enumerate every model, dataset, service, runtime, and software dependency.
2. Define identifiers, relationship vocabulary, disclosure tiers, and ownership.
3. Encode the same system in CycloneDX and SPDX, then score completeness, tooling, validation, and buyer fit.
4. Choose one external format while keeping the internal record format-neutral.
5. Generate, validate, sign, store, and attach the AIBOM to the release artifact.
6. Run an upstream-model incident drill and measure time to identify affected deployments.

## AI Bill of Materials FAQ

### Is an AIBOM the same as an SBOM?

No. An SBOM inventories software components. An AIBOM extends the view to models, datasets, AI services, evaluations, provenance, and AI-specific relationships while still including the software stack.

### Does CycloneDX support machine-learning BOMs?

Yes. CycloneDX documents an ML-BOM capability that represents models, datasets, services, dependencies, and related metadata.

### Does SPDX support AI artifacts?

Yes. SPDX 3 includes an AI profile that can be combined with other profiles to describe AI and software supply chains.

### Should customers receive the complete internal AIBOM?

Usually not. Define disclosure tiers so customers receive useful identity, provenance, license, and risk information without exposing personal data, secrets, or security-sensitive internals.

## Final thoughts

Choose the format your downstream users and controls can operate, but keep one authoritative internal graph. The success metric is not a valid JSON file. It is faster, more accurate impact analysis for a real deployed AI system.

## Primary sources

1. [OWASP CycloneDX ML-BOM capability](https://www.cyclonedx.org/capabilities/mlbom/). Official model, dataset, service, and relationship coverage
2. [SPDX 3 profiles](https://spdx.dev/understanding-spdx-profiles/). Official overview of the AI profile and profile composition
3. [SPDX specifications](https://spdx.dev/use/specifications/). Current specification and model resources

## You may also like..

[**AI vendor security questionnaire** Turn AIBOM evidence into concrete procurement and supplier-control questions.](/blog/ai-vendor-security-questionnaire-eu/) [**Wavect vs development agencies** Compare partners for production AI architecture and governance.](/compare/wavect-vs-dev-agencies/)

AI governance and regulation

## Continue through this cluster

Security, policy, compliance and operating controls for responsible AI adoption.

[Start with the cornerstone**EU AI Act Cost for a 5-Person Startup**](/blog/eu-ai-act-compliance-cost-startup/)

- [Cyber Resilience Act Reporting: 24-Hour Playbook](/blog/cyber-resilience-act-reporting-playbook-2026/)
- [EU Product Liability for Software: Evidence Checklist](/blog/eu-product-liability-software-evidence-2026/)
- [LLM Pseudonymization Gateways: Does the Prompt Leave GDPR Scope?](/blog/llm-pseudonymization-gateway-gdpr-2026/)
- [Semantica Review 2026: Can It Explain Every AI Agent Decision?](/blog/semantica-ai-agent-decision-provenance/)
- [AI Agent Contract Signing: eIDAS QES Integration Guide](/blog/ai-agent-eidas-signature-integration/)

Inbox, without the noise

## Follow the work that matters to you

Get a short email when we publish something new. Follow the whole blog or only the problems you care about.

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

8 min read · 24 Aug 2026 Last reviewed August 24, 2026

[**Next**](/blog/eu-data-act-connected-product-api-2026/)

New posts by email ×

×

Get new posts by email

A short email when we publish. Free, no tracking.

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/blog/ai-bill-of-materials-cyclonedx-spdx-2026/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-08-24",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-08-24",
      "url": "https://wavect.io/blog/ai-bill-of-materials-cyclonedx-spdx-2026/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "An AI Bill of Materials inventories the software, models, datasets, services, licenses, provenance, evaluations, and deployment relationships behind an AI system. CycloneDX is often the better fit for product-security and SBOM operations; SPDX is often stronger for detailed provenance, licensing, and artifact graphs. Keep one format-neutral internal source, generate and sign the chosen standard in the release pipeline, and test it with a real upstream incident.",
  "articleBody": " Blog overview/Business and regulation/AI governance and regulation AI Bill of Materials: CycloneDX vs SPDX Implementation Guide TL;DR An AI Bill of Materials inventories the software, models, datasets, services, licenses, provenance, evaluations, and deployment relationships behind an AI system. CycloneDX is often the better fit for product-security and SBOM operations; SPDX is often stronger for detailed provenance, licensing, and artifact graphs. Keep one format-neutral internal source, generate and sign the chosen standard in the release pipeline, and test it with a real upstream incident. An AI Bill of Materials is a machine-readable inventory of the software, models, datasets, services, licenses, provenance, and relationships that make an AI system. Choose CycloneDX when product-security and operational SBOM workflows are primary. Choose SPDX when detailed provenance, licensing, and graph relationships across AI and software artifacts are primary. Both can work if one internal inventory is authoritative. An AIBOM is evidence infrastructure, not a compliance badge. It should answer which model and dataset affected a release, where they came from, what terms apply, which evaluations passed, and which deployed systems need action when an upstream component changes. CycloneDX or SPDX? Decision factorCycloneDXSPDX Primary orientationProduct security and BOM operationsProvenance, licensing, and artifact relationshipsAI representationML-BOM capability with model and dataset componentsAI profile composed with software and other profilesTeam fitExisting CycloneDX/SBOM and vulnerability pipelineExisting SPDX, legal, research, or supply-chain graph pipeline What should an AIBOM record? Inventory stable identifiers and versions first, then add provenance and policy. Include the base model, adapters, prompts or policy packages when they alter behavior, training and evaluation datasets, serving runtime, retrieval indexes, external APIs, licenses, hashes, suppliers, evaluations, and deployment relationships. Identify artifacts with immutable hashes or registry digests, not display names such as latest.Distinguish trained-on, fine-tuned-with, evaluated-on, retrieved-from, and served-by relationships.Store sensitive dataset details in access-controlled evidence and expose only safe references in distributable BOMs.Link every production deployment to the exact AIBOM revision used for its release. How do you choose without locking in? Define a format-neutral internal schema for identity, provenance, relationship, license, evaluation, and deployment. Generate the external standard from that source. This prevents two inventories from drifting and makes a future customer requirement a mapping exercise rather than a rebuild. Prototype the hardest artifact, usually a fine-tuned model with several datasets and a hosted inference dependency.Validate generated documents with official schemas and stable example fixtures.Round-trip one release and compare whether any decision-critical fields disappear. Where should AIBOM generation run? Generate and sign it in the release pipeline after artifacts are immutable but before deployment approval. Enrich it from model registries, dataset catalogs, dependency scanners, evaluation results, and infrastructure manifests. Runtime discovery should detect drift, not replace declared build provenance. Fail the release for missing identity, prohibited licenses, unapproved models, or absent evaluations.Publish an access-appropriate customer version and retain a richer internal evidence version.Trigger impact analysis when a vulnerability, license, supplier, or model advisory changes. A two-sprint AIBOM pilot Select one deployed AI feature and enumerate every model, dataset, service, runtime, and software dependency.Define identifiers, relationship vocabulary, disclosure tiers, and ownership.Encode the same system in CycloneDX and SPDX, then score completeness, tooling, validation, and buyer fit.Choose one external format while keeping the internal record format-neutral.Generate, validate, sign, store, and attach the AIBOM to the release artifact.Run an upstream-model incident drill and measure time to identify affected deployments. Explore the service path: RAG and AI architecture See it in production: Twinsoft AI Decide it first: How to choose a tech stack for an MVP AI Bill of Materials FAQ Is an AIBOM the same as an SBOM? No. An SBOM inventories software components. An AIBOM extends the view to models, datasets, AI services, evaluations, provenance, and AI-specific relationships while still including the software stack. Does CycloneDX support machine-learning BOMs? Yes. CycloneDX documents an ML-BOM capability that represents models, datasets, services, dependencies, and related metadata. Does SPDX support AI artifacts? Yes. SPDX 3 includes an AI profile that can be combined with other profiles to describe AI and software supply chains. Should customers receive the complete internal AIBOM?",
  "articleSection": "Engineering",
  "author": {
    "@id": "https://wavect.io/team/kevin-riedl/#person",
    "@type": "Person",
    "name": "Kevin Riedl",
    "sameAs": [
      "https://www.wikidata.org/wiki/Q139796365",
      "https://www.linkedin.com/in/wsdt",
      "https://github.com/wsdt"
    ],
    "url": "https://wavect.io/team/kevin-riedl/"
  },
  "citation": [
    {
      "@type": "WebPage",
      "name": "OWASP CycloneDX ML-BOM capability",
      "url": "https://www.cyclonedx.org/capabilities/mlbom/"
    },
    {
      "@type": "WebPage",
      "name": "SPDX 3 profiles",
      "url": "https://spdx.dev/understanding-spdx-profiles/"
    },
    {
      "@type": "WebPage",
      "name": "SPDX specifications",
      "url": "https://spdx.dev/use/specifications/"
    }
  ],
  "dateModified": "2026-08-24",
  "datePublished": "2026-08-24",
  "description": "An AI Bill of Materials inventories the software, models, datasets, services, licenses, provenance, evaluations, and deployment relationships behind an AI system. CycloneDX is often the better fit for product-security and SBOM operations; SPDX is often stronger for detailed provenance, licensing, and artifact graphs. Keep one format-neutral internal source, generate and sign the chosen standard in the release pipeline, and test it with a real upstream incident.",
  "headline": "AI Bill of Materials: CycloneDX vs SPDX",
  "image": "https://wavect.io/img/blog/headers/header_ai-bill-of-materials-cyclonedx-spdx-2026.svg",
  "inLanguage": "en",
  "keywords": "AI Bill of Materials, CycloneDX, SPDX",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/blog/ai-bill-of-materials-cyclonedx-spdx-2026/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/blog/ai-bill-of-materials-cyclonedx-spdx-2026/",
  "wordCount": 1012
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/",
      "name": "Home",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/overview/",
      "name": "Blog overview",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/topics/business-regulation/",
      "name": "Business and regulation",
      "position": 3
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/clusters/ai-governance/",
      "name": "AI governance and regulation",
      "position": 4
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/ai-bill-of-materials-cyclonedx-spdx-2026/",
      "name": "AI Bill of Materials: CycloneDX vs SPDX | ",
      "position": 5
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. An SBOM inventories software components. An AIBOM extends the view to models, datasets, AI services, evaluations, provenance, and AI-specific relationships while still including the software stack."
      },
      "name": "Is an AIBOM the same as an SBOM?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. CycloneDX documents an ML-BOM capability that represents models, datasets, services, dependencies, and related metadata."
      },
      "name": "Does CycloneDX support machine-learning BOMs?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. SPDX 3 includes an AI profile that can be combined with other profiles to describe AI and software supply chains."
      },
      "name": "Does SPDX support AI artifacts?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Usually not. Define disclosure tiers so customers receive useful identity, provenance, license, and risk information without exposing personal data, secrets, or security-sensitive internals."
      },
      "name": "Should customers receive the complete internal AIBOM?"
    }
  ]
}
```
