๐ vet
๐ Enterprise grade open source software supply chain security
Download โข Quick Start โข Documentation โข Community
๐ฏ Why vet?
70-90% of modern software constitute code from open sources โ How do we know if it's safe?
vet is an open source software supply chain security tool built for developers and security engineers who need:
โ
Next-gen Software Composition Analysis โ Vulnerability and malicious package detection โ
Policy as Code โ Express opinionated security policies using CEL โ
Real-time malicious package detection โ Powered by SafeDep Cloud active scanning โ
Multi-ecosystem support โ npm, PyPI, Maven, Go, Docker, GitHub Actions, and more โ
CI/CD native โ Built for DevSecOps workflows with support for GitHub Actions, GitLab CI, and more โ
MCP Server โ Run vet
as a MCP server to vet open source packages from AI suggested code
โก Quick Start
Install in seconds:
# macOS & Linux
brew install safedep/tap/vet
or download a pre-built binary
Scan your project:
# Scan current directory
vet scan -D .
# Scan a single file
vet scan -M package-lock.json
# Fail CI on critical vulnerabilities
vet scan -D . --filter 'vulns.critical.exists(p, true)' --filter-fail
# Fail CI on OpenSSF Scorecard requirements
vet scan -D . --filter 'scorecard.scores.Maintained < 5' --filter-fail
# Fail CI if a package is published from a GitHub repository with less than 5 stars
vet scan -D . --filter 'projects.exists(p, p.type == "GITHUB" && p.stars < 5)' --filter-fail
๐ Key Features
๐ต๏ธ Code Analysis
Unlike dependency scanners that flood you with noise, vet
analyzes your actual code usage to prioritize real risks. See dependency usage evidence for more details.
๐ก๏ธ Malicious Package Detection
Integrated with SafeDep Cloud for real-time protection against malicious packages in the wild. Free for open source projects. Fallback to Query Mode when API key is not provided. Read more about malicious package scanning.
๐ Policy as Code
Define security policies using CEL expressions to enforce context specific security requirements.
# Block packages with critical CVEs
vet scan \
--filter 'vulns.critical.exists(p, true)'
# Enforce license compliance
vet scan \
--filter 'licenses.contains_license("GPL-3.0")'
# Enforce OpenSSF Scorecard requirements
# Require minimum OpenSSF Scorecard scores
vet scan \
--filter 'scorecard.scores.Maintained < 5'
๐ฏ Multi-Format Support
- Package Managers: npm, PyPI, Maven, Go, Ruby, Rust, PHP
- Container Images: Docker, OCI
- SBOMs: CycloneDX, SPDX
- Binary Artifacts: JAR files, Python wheels
- Source Code: Direct repository scanning
๐ฅ See vet in Action
๐ Production Ready Integrations
๐ฆ GitHub Actions
Zero config security guardrails against vulnerabilities and malicious packages in your CI/CD pipelinewith your own opinionated policies:
- uses: safedep/vet-action@v1
with:
policy: '.github/vet/policy.yml'
See more in vet-action documentation.
๐ง GitLab CI
Enterprise grade scanning with vet CI Component:
include:
- component: gitlab.com/safedep/ci-components/vet@main
๐ณ Container Integration
Run vet
anywhere, even your internal developer platform or custom CI/CD environment using our container image.
docker run --rm -v $(pwd):/app ghcr.io/safedep/vet:latest scan -D /app
๐ Table of Contents
- ๐ฏ Why vet?
- โก Quick Start
- ๐ Key Features
- ๐ต๏ธ Code Analysis
- ๐ก๏ธ Malicious Package Detection
- ๐ Policy as Code
- ๐ฏ Multi-Format Support
- ๐ฅ See vet in Action
- ๐ Production Ready Integrations
- ๐ฆ GitHub Actions
- ๐ง GitLab CI
- ๐ณ Container Integration
- ๐ Table of Contents
- ๐ฆ Installation Options
- ๐บ Homebrew (Recommended)
- ๐ฅ Direct Download
- ๐น Go Install
- ๐ณ Container Image
- โ๏ธ Verify Installation
- ๐ฎ Advanced Usage
- ๐ Scanning Options
- ๐ฏ Policy Enforcement Examples
- ๐ง SBOM Support
- ๐ Query Mode & Data Persistence
- ๐ Reporting
- ๐ Report Formats
- ๐ฏ Report Examples
- ๐ค MCP Server
- ๐ก๏ธ Malicious Package Detection
- ๐ Quick Setup
- ๐ฏ Advanced Malicious Package Analysis
- ๐ Security Features
- ๐ Privacy and Telemetry
- ๐ Community & Support
- ๐ Join the Community
- ๐ก Get Help & Share Ideas
- โญ Star History
- ๐ Built With Open Source
๐ฆ Installation Options
๐บ Homebrew (Recommended)
brew tap safedep/tap
brew install safedep/tap/vet
๐ฅ Direct Download
See releases for the latest version.
๐น Go Install
go install github.com/safedep/vet@latest
๐ณ Container Image
# Quick test
docker run --rm ghcr.io/safedep/vet:latest version
# Scan local directory
docker run --rm -v $(pwd):/workspace ghcr.io/safedep/vet:latest scan -D /workspace
โ๏ธ Verify Installation
vet version
# Should display version and build information
๐ฎ Advanced Usage
๐ Scanning Options
๐ Directory Scanning ๐ Manifest Files
|
๐ GitHub Integration ๐ฆ Artifact Scanning
|
๐ฏ Policy Enforcement Examples
# Security-first scanning
vet scan -D . \
--filter 'vulns.critical.exists(p, true) || vulns.high.exists(p, true)' \
--filter-fail
# License compliance
vet scan -D . \
--filter 'licenses.contains_license("GPL-3.0")' \
--filter-fail
# OpenSSF Scorecard requirements
vet scan -D . \
--filter 'scorecard.scores.Maintained < 5' \
--filter-fail
# Popularity-based filtering
vet scan -D . \
--filter 'projects.exists(p, p.type == "GITHUB" && p.stars < 50)' \
--filter-fail
๐ง SBOM Support
# Scan a CycloneDX SBOM
vet scan -M sbom.json --type bom-cyclonedx
# Scan a SPDX SBOM
vet scan -M sbom.spdx.json --type bom-spdx
# Generate SBOM output
vet scan -D . --report-cdx=output.sbom.json
# Package URL scanning
vet scan --purl pkg:npm/[email protected]
๐ Query Mode & Data Persistence
For large codebases and repeated analysis:
# Scan once, query multiple times
vet scan -D . --json-dump-dir ./scan-data
# Query with different filters
vet query --from ./scan-data \
--filter 'vulns.critical.exists(p, true)'
# Generate focused reports
vet query --from ./scan-data \
--filter 'licenses.contains_license("GPL")' \
--report-json license-violations.json
๐ Reporting
vet generate reports that are tailored for different stakeholders:
๐ Report Formats
๐ For Security Teams |
|
๐ For Developers |
|
๐ข For Compliance |
|
๐ฏ Report Examples
# Multi-format output
vet scan -D . \
--report-json=report.json \
--report-sarif=report.sarif \
--report-markdown=report.md
# Focus on specific issues
vet scan -D . \
--filter 'vulns.high.exists(p, true)' \
--report-json=report.json
๐ค MCP Server
vet can be used as an MCP server to vet open source packages from AI suggested code.
# Start the MCP server with SSE transport
vet server mcp --server-type sse
For more details, see vet MCP Server documentation.
๐ก๏ธ Malicious Package Detection
Malicious package detection through active scanning and code analysis powered bySafeDep Cloud. vet
requires an APIkey for active scanning of unknown packages. When API key is not provided, vet
willfallback to Query Mode which detects known malicious packages from SafeDepand OSV databases.
- Grab a free API key from SafeDep Platform App or use
vet cloud quickstart
- API access is free forever for open source projects
- No proprietary code is collected for malicious package detection
- Only open source package scanning from public repositories is supported
๐ Quick Setup
Malicious package detection requires an API key for SafeDep Cloud.
# One-time setup
vet cloud quickstart
# Enable malware scanning
vet scan -D . --malware
# Query for known malicious packages without API key
vet scan -D . --malware-query
Example malicious packages detected and reported by SafeDep Cloudmalicious package detection:
- MAL-2025-3541: express-cookie-parser
- MAL-2025-4339: eslint-config-airbnb-compat
- MAL-2025-4029: ts-runtime-compat-check
- MAL-2025-2227: nyc-config
๐ฏ Advanced Malicious Package Analysis
๐ Scan packages with malicious package detection enabled
|
๐ญ Specialized Scans
|
๐ Security Features
- โ Real-time analysis of packages against known malware databases
- โ Behavioral analysis using static and dynamic analysis
- โ Zero day protection through active code scanning
- โ Human in the loop for triaging and investigation of high impact findings
- โ Real time analysis with public analysis log
๐ Privacy and Telemetry
vet
collects anonymous usage telemetry to improve the product. Your code and package information is never transmitted.
# Disable telemetry (optional)
export VET_DISABLE_TELEMETRY=true
๐ Community & Support
๐ก Get Help & Share Ideas
- ๐ Interactive Tutorial - Learn vet hands-on
- ๐ Complete Documentation - Comprehensive guides
- ๐ฌ Discord Community - Real-time support
- ๐ Issue Tracker - Bug reports & feature requests
- ๐ค Contributing Guide - Join the development
โญ Star History
๐ Built With Open Source
vet stands on the shoulders of giants:
OSV โข OpenSSF Scorecard โข SLSA โข OSV-SCALIBR โข Syft
โก Secure your supply chain today. Star the repo โญ and get started!
Created with โค๏ธ by SafeDep and the open source community