From software SBOM to ML-BOM and AIBOM
You already generate an SBOM for apps and container images. An AI system still leaves two blind spots. The weight pack on disk is not a PyPI graph. The model string your agent actually calls often never appears in pip freeze either.
I treat that as three inventories, not one mash-up JSON:
- Software SBOM: train/serve packages (
cyclonedx-py/ Syft) β Grype - ML-BOM: CycloneDX
machine-learning-modelfor the pack on disk (weights, hashes, pedigree) β hash-check - AIBOM: what the running system calls: local tags, Modelfiles, cloud model IDs in config
Signing the pack and attesting the train job are separate controls. Those live in From signing containers to signing models. Do not treat this as a second signing tutorial.
Related:
