Tutorial 5 of 6
Import your own SBOMs, lockfiles and asset lists
Beginner 7 min
Bring in CycloneDX and SPDX SBOMs, package-lock.json or requirements.txt, and long lists of images, packages, CVEs and domains in one paste — then run them as a batch.
1. Generate an SBOM
Most build tools can write a CycloneDX or SPDX SBOM, for example:
npm sbom --sbom-format cyclonedx > app.cdx.json(npm 10+)syft dir:. -o cyclonedx-json > app.cdx.jsonorsyft <image> -o spdx-jsoncyclonedx-py environment -o app.cdx.jsonfor a Python environment
Provenance reads CycloneDX JSON and XML, and SPDX 2.x JSON and tag-value. The SBOM Explorer (components, dependency tree, vulnerabilities via OSV.dev) reads JSON; the SBOM License Checker reads all four.
2. Import
Choose File → Import assets (paste or file)… (key I). Paste the text or press Open a file…. The dialog tells you what it recognised before anything changes:
- an SBOM → one SBOM asset,
package.json,package-lock.json,requirements.txt,go.mod,Cargo.lockorcomposer.lock→ one dependency asset,- a Provenance project file → opens it,
- anything else is read line by line.
3. Asset lists
One asset per line is the fastest way to add a fleet:
gcr.io/distroless/static-debian12:nonroot
quay.io/prometheus/prometheus:v2.45.0
npm:express@4.21.1
pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1
expressjs/express
CVE-2024-3094
shop.example.net
Image references, npm: / pypi: / cargo: / maven: / go: prefixes, pkg: URLs, owner/repo or GitHub URLs, CVE/GHSA/OSV ids, domains and OAuth consent links are recognised. Lines that match nothing are listed and skipped.
4. Run a batch
Select assets with the checkboxes in the list, then Run selected — or Run all checks. Run → Run checks that are new or out of date only runs checks whose input changed since the last result. If a check fails (for example a registry that refuses anonymous requests), the asset's card shows the reason in a sentence and a Retry button.
5. From another app
Other premium apps can hand an SBOM (JSON) or a text list to Provenance through Open in another app…; it arrives in the same import dialog, and nothing changes until you press Add to project.
Ready to try it?