Every modern application pulls in hundreds — sometimes thousands — of third-party packages. Each dependency carries its own dependency tree, licenses, and potential vulnerabilities. Without visibility into what ships inside your software, you cannot answer basic questions: Does our container include Log4j? Which packages use the GPL license? When was this component last updated?
The answer is a Software Bill of Materials (SBOM) — an inventory of every component in your software supply chain. In 2026, SBOMs are no longer optional. Executive Order 14028, the EU Cyber Resilience Act, and ISO/IEC 5962 all require or strongly recommend SBOM generation.
This guide covers the three leading open-source tools for SBOM generation and dependency tracking, how to self-host them, and how to build a complete supply chain security pipeline.
Why Self-Host Your SBOM Pipeline?
SBOM data is sensitive. It reveals your full dependency tree, internal component versions, and potential attack surfaces. Sending this information to a third-party SaaS platform creates risks:
- Data exposure — Your dependency graph tells attackers exactly which libraries and versions you run, making targeted exploits trivial.
- Regulatory compliance — Many frameworks (SOC 2, FedRAMP, ISO 27001) require that security assessment data remain under your control.
- Offline access — CI/CD pipelines and air-gapped environments need SBOM tooling that works without internet access.
- Cost — Commercial SBOM platforms charge per project or per scan. Self-hosted tools scale with your infrastructure, not your vendor’s pricing model.
- Integration flexibility — Self-hosted tools integrate directly with your existing CI/CD, ticketing, and monitoring systems without API rate limits or vendor lock-in.
Understanding the SBOM Ecosystem
Before diving into tools, it helps to understand how SBOM standards and tools fit together:
SBOM Formats:
- CycloneDX — Lightweight, security-focused format supporting components, vulnerabilities, licenses, and services. Widely adopted by OWASP projects.
- SPDX — ISO/IEC 5962 standard format. Strong on license compliance, widely used in enterprise environments.
Tool Categories:
- SBOM Generators — Scan your code, containers, or filesystems and produce an SBOM document (Syft, Trivy, CycloneDX CLI).
- SBOM Analyzers — Ingest SBOM documents, correlate with vulnerability databases, and surface risk (Dependency-Track).
- Policy Engines — Enforce rules about allowed licenses, banned components, or maximum vulnerability severity.
The tools covered in this article span both categories, giving you a complete self-hosted SBOM workflow.
OWASP Dependency-Track: The SBOM Analysis Platform
Dependency-Track is an intelligent component analysis platform that ingests SBOMs and continuously monitors your components against vulnerability databases. It is the gold standard for self-hosted dependency tracking.
Key Features
- Continuous monitoring — Automatically re-checks components against NVD, GitHub Advisory Database, OSV, and Snyk when vulnerability databases update.
- Multi-format support — Accepts CycloneDX and SPDX SBOMs in JSON and XML formats.
- Vulnerability correlation — Maps components to known CVEs with severity scores, CVSS vectors, and remediation advice.
- License risk analysis — Flags copyleft, permissive, and proprietary licenses with customizable policy rules.
- API-first design — Full REST API and OpenAPI specification for CI/CD integration.
- Project hierarchy — Organize SBOMs by team, product line, or environment with parent/child project relationships.
- Policy management — Create automated policies (e.g., “block any component with CVSS ≥ 9.0” or “reject GPL-licensed libraries”).
Installation with docker Compose
Dependency-Track requires a database backend. postgresqlended setup uses PostgreSQL:
| |
For the web frontend, use the dedicated frontend image:
| |
Access the API at http://localhost:8080 and the frontend at http://localhost:8081. Default credentials are admin / admin — change them immediately.
Uploading Your First SBOM
Once Dependency-Track is running, you can upload SBOMs via the web UI, REST API, or CI/CD integration:
| |
The autoCreate=true flag automatically creates the project if it does not exist, making it ideal for CI/CD pipelines.
Configuring Vulnerability Sources
Dependency-Track pulls vulnerability data from multiple sources. Configure them under Administration → Analyzers:
- Internal Analyzer (NVD) — Enabled by default. Fetches CVE data from the National Vulnerability Database.
- GitHub Advisory — Connect with a GitHub token for broader coverage including npm, Maven, and PyPI advisories.
- OSV — Google’s Open Source Vulnerabilities database. Covers Go, Rust, and additional ecosystems.
- Snyk — Premium integration (requires Snyk API key) for curated vulnerability data with fix guidance.
Enable the sources you need and configure the analysis interval. A daily update cycle is recommended for most teams.
Syft: Fast SBOM Generation
Syft by Anchore is the leading SBOM generation tool. It scans container images, filesystems, and archives to produce detailed CycloneDX or SPDX documents. Syft excels at breadth — it detects packages across 20+ ecosystems from a single scan.
Key Features
- Multi-source scanning — Container images (Docker, Podman, OCI), local filesystems, tar archives, and SBOM files.
- Wide ecosystem coverage — Detects packages from npm, PyPI, RubyGems, Go modules, Rust crates, Java JARs, .NET, Alpine, Debian, RPM, and more.
- Multiple output formats — CycloneDX (JSON/XML), SPDX (JSON/Tag-Value), GitHub dependency snapshot, and Syft’s own table format.
- Speed — Written in Go with parallel cataloging. A typical container image scan completes in 2–10 seconds.
- Attestation support — Generates SLSA and in-toto attestations for supply chain verification.
- CI/CD friendly — Single static binary, no runtime dependencies, exit codes for policy enforcement.
Installation
| |
Basic Usage
| |
Advanced Scanning Configuration
For production use, tune Syft’s behavior through its configuration file:
| |
| |
Integrating Syft with Dependency-Track
The most powerful workflow combines Syft’s scanning with Dependency-Track’s analysis:
| |
This pipeline generates an SBOM for every build, uploads it to Dependency-Track, and lets the platform continuously monitor for newly discovered vulnerabilities.
CycloneDX CLI: The Swiss Army Knife
The CycloneDX CLI tool provides a comprehensive suite of commands for working with CycloneDX SBOMs. While Syft generates SBOMs and Dependency-Track analyzes them, the CycloneDX CLI operates on SBOM documents directly — merging, diffing, validating, and converting them.
Key Features
- Merge — Combine multiple SBOMs into a single document (e.g., merge frontend and backend SBOMs).
- Diff — Compare two SBOMs to identify added, removed, and updated components between releases.
- Validate — Verify SBOM documents against the CycloneDX JSON Schema.
- Convert — Transform between CycloneDX JSON, XML, and Protocol Buffers.
- Analyze — Perform local vulnerability analysis without a server, using built-in databases.
- Modify — Add, remove, or update components in existing SBOMs programmatically.
Installation
| |
Practical Commands
| |
Release Comparison Workflow
The diff command is particularly valuable for release management. It produces structured output showing exactly which components changed between versions:
| |
This enables automatic changelog generation, security review gates, and compliance audits.
Comparison Table
| Feature | Dependency-Track | Syft | CycloneDX CLI |
|---|---|---|---|
| Primary role | SBOM analysis & monitoring | SBOM generation | SBOM manipulation |
| SBOM formats | CycloneDX, SPDX | CycloneDX, SPDX, Syft | CycloneDX (JSON/XML/PB) |
| Vulnerability sources | NVD, GitHub, OSV, Snyk | Via Grype integration | Built-in OSV (limited) |
| Continuous monitoring | Yes (scheduled re-analysis) | No (single scan) | No (single analysis) |
| Policy enforcement | Yes (customizable rules) | Limited (exit codes) | No |
| Merge SBOMs | No | No | Yes |
| Diff SBOMs | Via API comparison | No | Yes |
| CI/CD integration | REST API | CLI binary | CLI / Docker |
| Database required | Yes (PostgreSQL/H2) | No | No |
| Web UI | Yes (full-featured) | No | No |
| Language | Java | Go | .NET |
| Docker image size | ~500 MB | ~80 MB | ~150 MB |
| Best for | Centralized SBOM management | Fast SBOM generation in CI | SBOM transformation & auditing |
Building a Complete Self-Hosted SBOM Pipeline
Here is a production-ready architecture that combines all three tools:
Architecture
| |
Step 1: Set Up the Infrastructure
| |
Step 2: CI/CD Integration (GitHub Actions)
| |
Step 3: Automated Alerting
Dependency-Track supports webhook notifications. Configure alerts under Administration → Alerts:
- New vulnerability alert — Webhook to Slack, Discord, or your incident management system.
- Policy violation — Email or webhook when a new component violates license or security policies.
- BOM consumption — Notification when a new SBOM is processed.
Example webhook payload for Slack integration:
| |
Step 4: SBOM Diffing for Release Reviews
Before each production release, generate an SBOM diff to understand what changed:
| |
Advanced: License Compliance Automation
Dependency-Track can enforce license policies across all projects. Create license groups under Administration → License Groups:
- Allowed licenses — MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC
- Review required — LGPL-2.1, LGPL-3.0, MPL-2.0, CDDL-1.0
- Denied licenses — GPL-2.0, GPL-3.0, AGPL-3.0, SSPL-1.0
Then create a policy that fails the build when denied licenses are detected:
| |
This approach prevents GPL-licensed code from accidentally shipping into proprietary products and creates an auditable compliance trail.
Performance and Scaling Considerations
For organizations managing hundreds of projects:
- PostgreSQL tuning — Increase
shared_buffersto 25% of RAM, seteffective_cache_sizeto 75%. Dependency-Track benefits significantly from proper PostgreSQL configuration. - Memory allocation — The Java API server needs at least 4 GB heap for moderate workloads. Set
-Xmx8ginJAVA_OPTSfor 500+ projects. - Vulnerability source sync — Stagger analyzer schedules to avoid simultaneous database fetches. NVD sync at 2 AM, GitHub Advisory at 4 AM, OSV at 6 AM.
- Horizontal scaling — Run multiple Dependency-Track API server instances behind a reverse proxy. They share the same PostgreSQL database and coordinate via the database lock mechanism.
- SBOM retention — Configure automated project version cleanup to remove old SBOMs. Retain the last 10 versions per project to manage database growth.
Conclusion
A complete self-hosted SBOM pipeline gives you full visibility and control over your software supply chain:
- Syft generates detailed SBOMs quickly across 20+ package ecosystems — ideal for CI/CD integration.
- Dependency-Track provides continuous vulnerability and license monitoring with a powerful web interface, policy engine, and REST API — the central hub for SBOM analysis.
- CycloneDX CLI handles SBOM manipulation — merging microservice SBOMs, diffing releases, and validating documents against the specification.
Together, these tools form a production-grade supply chain security platform that costs nothing in licensing, runs entirely on your infrastructure, and keeps your dependency data under your control. With increasing regulatory requirements around software transparency in 2026, implementing this stack is both a security best practice and a compliance necessity.
Start with Syft to generate SBOMs for your most critical applications, connect them to Dependency-Track for continuous monitoring, and use CycloneDX CLI to automate release reviews. Your future self — and your security auditor — will thank you.
Frequently Asked Questions (FAQ)
Which one should I choose in 2026?
The best choice depends on your specific requirements:
- For beginners: Start with the simplest option that covers your core use case
- For production: Choose the solution with the most active community and documentation
- For teams: Look for collaboration features and user management
- For privacy: Prefer fully open-source, self-hosted options with no telemetry
Refer to the comparison table above for detailed feature breakdowns.
Can I migrate between these tools?
Most tools support data import/export. Always:
- Backup your current data
- Test the migration on a staging environment
- Check official migration guides in the documentation
Are there free versions available?
All tools in this guide offer free, open-source editions. Some also provide paid plans with additional features, priority support, or managed hosting.
How do I get started?
- Review the comparison table to identify your requirements
- Visit the official documentation (links provided above)
- Start with a Docker Compose setup for easy testing
- Join the community forums for troubleshooting