Skip to content

Software Bill of Materials (SBOM)

A Software Bill of Materials (SBOM) is a machine-readable list of every software component included in a product. It lists packages, versions, and licenses — similar to an ingredient list on food packaging.

SBOMs are increasingly required for enterprise software procurement and are mandated by frameworks like the US Executive Order 14028 and the EU Cyber Resilience Act.

Pinchy generates an SBOM automatically in CI using Syft via the anchore/sbom-action GitHub Action. The SBOM is generated from the production Docker image (Dockerfile.pinchy) and published in SPDX JSON format.

The pipeline runs on every push to main that changes pnpm-lock.yaml or Dockerfile.pinchy.

The SBOM covers the Pinchy Web Docker image, which includes:

  • Node.js runtime and system packages from the base image
  • npm packages — Next.js, React, Drizzle ORM, Better Auth, and all transitive dependencies
  • OS-level packages from the Alpine/Debian base layer

The following components run as separate containers and are not covered by Pinchy’s SBOM:

ComponentSecurity information
PostgreSQLSee postgresql.org/support/security
OpenClaw GatewaySee OpenClaw docs

The SBOM is available as a CI artifact from the GitHub Actions workflow:

  1. Go to the Pinchy GitHub repository
  2. Navigate to ActionsSBOM Generation
  3. Select the latest successful run
  4. Download the sbom artifact containing sbom.spdx.json

Feed the SBOM into vulnerability scanners like Grype:

Terminal window
grype sbom:sbom.spdx.json

Extract license information from the SBOM to verify compliance with your organization’s policies:

Terminal window
# List all unique licenses
cat sbom.spdx.json | jq -r '.packages[].licenseConcluded' | sort -u

Use the SBOM to verify that no unexpected packages were introduced between releases by diffing two SBOM files.