Safeguard
Supply Chain•

What is the minimum an SPDX 3 AI package record needs?

SPDX 3.0.1 AIPackage requires eight fields plus license relationships. See the minimum record for a model and the optional AI fields worth adding.

Safeguard Security Team
4 min read

In SPDX 3.0.1, an AIPackage record must have eight fields: creationInfo, downloadLocation, name, packageVersion, primaryPurpose, releaseTime, spdxId and suppliedBy. The AI profile also expects one declared license and one concluded license relationship. Everything else, such as training and safety notes, is optional.

What an AIPackage is

SPDX 3.0 added profiles, and the AI profile is for describing AI applications and trained models. Its main class, AIPackage, extends the ordinary software Package class. The spec describes it as specifying an AI package and its associated information. Because it inherits from Package, it carries the usual package fields, and then adds AI specific ones.

The version here is the 3.0.1 specification page. If you target a different release, check the field list again.

The required fields

The cardinality tables mark these as required, with a minimum count of one:

FieldWhat to put in it
spdxIdA unique identifier for this element in your document
nameThe model name as a user would search for it
packageVersionA version or a full commit hash
downloadLocationWhere the exact artifact can be fetched
primaryPurposeWhat the package is for
suppliedByThe agent that supplies it
releaseTimeWhen the package was released
creationInfoWho created this SPDX element, and when

The profile page also says every AIPackage must have exactly one concluded license and one declared license relationship, each pointing to a license value. If you do not know, say so with a value that expresses unknown rather than leaving it out.

Optional AI fields worth adding

The spec lists many optional properties. For a security and procurement reader, these carry the most weight:

  1. informationAboutTraining: how the model was trained.
  2. modelDataPreprocessing: what happened to the data first.
  3. limitation: known constraints.
  4. safetyRiskAssessment: the assessed risk level.
  5. domain and primaryPurpose: where it is meant to be used.
  6. typeOfModel: the kind of model.
  7. useSensitivePersonalInformation: whether sensitive personal data is involved.
  8. energyConsumption and the related training and inference fields.
  9. verifiedUsing: integrity methods used to verify the package, such as a digest.
  10. standardCompliance: standards the package claims to meet.

I read these names from the spec's property list. The page gives types and cardinality but not full definitions, so read the definitions in the spec before you depend on them.

How to start

  1. Create the eight required fields for each model you run.
  2. Put the full commit hash in packageVersion and the exact URL in downloadLocation.
  3. Add a digest through verifiedUsing.
  4. Add the two license relationships.
  5. Add training and limitation notes when the model card supplies them, and mark them as publisher stated.

A record that is honest about gaps beats a complete looking record built from guesses. For a field by field view across formats, see what goes in an ML BOM for a model.

Quick check

Do I have to fill in every AI field?

No. Only the required fields and the license relationships are mandatory. Add the optional ones where you have reliable information.

Is SPDX the only format for this?

No. CycloneDX has its own ML BOM capability for models, datasets and configurations. Pick the one your customers and tools accept.

Safeguard scans dependencies and generates SBOMs for your repositories. Try a free scan at gold.safeguard.sh/scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.