DepGate detects and prevents dependency confusion and supply-chain risks. (Hard fork of Apiiro's Dependency Combobulator)
Project description
DepGate — Dependency Supply‑Chain Risk & Confusion Checker
DepGate is a modular CLI that detects dependency confusion and related supply‑chain risks across npm, Maven, PyPI, and NuGet projects. It analyzes dependencies from manifests, checks public registries, and flags potential risks with a simple, scriptable interface.
DepGate is a fork of Apiiro's "Dependency Combobulator", maintained going forward by cognitivegears. See Credits & Attribution below.
Features
- Multiple ecosystems: npm, PyPI, Maven, NuGet
- Pluggable analysis: compare, heuristics, policy, and linked levels
- Repository verification: Discovers and validates upstream source repositories
- OpenSourceMalware integration: Optional malicious package detection
- Flexible inputs: Single package, manifest scan, or list from file
- Structured outputs: Human-readable logs plus CSV/JSON exports for CI
- Designed for automation: Predictable exit codes and quiet/log options
Quick Start
Option 1: Run without installation (using uvx):
# Single package (npm)
uvx depgate scan -t npm -p left-pad
# Scan a project directory (Maven)
uvx depgate scan -t maven -d ./my-project
# Heuristics analysis with JSON output
uvx depgate scan -t pypi -a heur -o results.json
Option 2: Install first (using pipx or pip):
# Install
pipx install depgate
# or: pip install depgate
# Then use depgate directly
depgate scan -t npm -p left-pad
depgate scan -t maven -d ./my-project
depgate scan -t pypi -a heur -o results.json
Installation
Requirements
- Python 3.10+
- Network access for registry lookups (when running analysis)
- OpenSourceMalware API token (optional, for malicious package detection)
Install
Using uv (development):
uv venv && source .venv/bin/activate
uv sync
From PyPI:
# Install globally
pip install depgate
# Install in isolated environment
pipx install depgate
# Run without installation (requires uv)
uvx depgate --help
Note: After installation via pip or pipx, you can use depgate directly. Without installation, use uvx depgate.
Basic Usage
Input Methods
-
Single package (
-p, --package): Analyze one packagedepgate scan -t npm -p left-pad depgate scan -t maven -p org.apache.commons:commons-lang3
-
Directory scan (
-d, --directory): Scan project for dependenciesdepgate scan -t npm -d ./my-project depgate scan -t pypi -d ./my-project
-
File list (
-l, --load_list): Analyze packages from a filedepgate scan -t npm -l packages.txt
See Supported Package Managers for format details and examples.
Analysis Levels
compare(orcomp): Basic presence and metadata checksheuristics(orheur): Adds scoring and risk signalspolicy(orpol): Declarative rule-based evaluationlinked: Repository linkage verification
See Analysis Levels for detailed explanations.
Supported Package Managers
| Package Manager | Language | Manifest Files |
|---|---|---|
| npm | JavaScript/TypeScript | package.json |
| PyPI | Python | requirements.txt, pyproject.toml |
| Maven | Java/Kotlin/Scala | pom.xml |
| NuGet | .NET/C# | .csproj, packages.config, project.json |
See Supported Package Managers for complete details, lock file support, package formats, and examples.
Major Modes
CLI Scan Mode (Primary)
The primary mode for dependency analysis:
depgate scan -t <ecosystem> -p <package> -a <level> -o <output>
MCP Server Mode (Experimental)
DepGate includes an MCP server that exposes analysis capabilities via three tools:
Lookup_Latest_Version- Resolve latest stable versionsScan_Project- Analyze project dependenciesScan_Dependency- Analyze single dependencies
See MCP Server for setup, tools, and client examples.
Output Formats
DepGate supports multiple output formats:
- stdout: Human-readable logs (default)
- JSON: Structured data for programmatic use
- CSV: Tabular format for spreadsheets
depgate scan -t npm -p left-pad -a heur -o results.json
depgate scan -t npm -p left-pad -a heur -o results.csv
See Output Formats for complete schema and field descriptions.
Configuration
DepGate supports configuration via YAML files, environment variables, and CLI arguments. Configuration can customize:
- Registry URLs
- HTTP behavior
- Heuristics weights
- Policy rules
- OpenSourceMalware settings
See Configuration for details and examples.
Additional Features
OpenSourceMalware Integration
Optional malicious package detection via OpenSourceMalware.com API:
DEPGATE_OSM_API_TOKEN=token depgate scan -t npm -p package-name -a heur
See OpenSourceMalware Integration for setup and usage.
Policy Rules
Declarative rule-based evaluation with allow/deny decisions:
depgate scan -t npm -d ./project -a policy -c policy.yml
See Policy Configuration for schema and examples.
Repository Discovery
Automatic discovery and validation of upstream source repositories:
depgate scan -t npm -p left-pad -a linked
See Repository Discovery for discovery sources and version matching.
Version Resolution
Ecosystem-aware version resolution with strict prerelease policies. See Version Resolution for details per ecosystem.
CLI Options
Main Options
-t, --type {npm,pypi,maven,nuget}: Package manager-p/‑d/‑l: Input source (mutually exclusive)-a, --analysis {compare,comp,heuristics,heur,policy,pol,linked}: Analysis level-o, --output <path>: Output file path-f, --format {json,csv}: Output format (auto-detected from extension)-c, --config <path>: Configuration file (YAML/JSON/YML)--set KEY=VALUE: Override configuration values--loglevel {DEBUG,INFO,WARNING,ERROR,CRITICAL}: Logging level--logfile <path>: Log to file-q, --quiet: Suppress stdout output-r, --recursive: Recursively scan directories--error-on-warnings: Exit with non-zero code if risks detected
OpenSourceMalware Options
--osm-disable: Disable OpenSourceMalware checks--osm-api-token <token>: API token--osm-token-command <cmd>: Command to retrieve token--osm-base-url <url>: Override API URL--osm-cache-ttl <seconds>: Cache TTL--osm-auth-method {header,query}: Authentication method--osm-max-retries <count>: Maximum retries
Run depgate scan --help for complete option list.
Exit Codes
0: Success (no risks or informational only)1: File/IO error (or policy denial, or linked analysis failure)2: Connection error3: Risks found and--error-on-warningsset
Note: For -a linked, exits with 0 only when all packages are linked; otherwise 1.
Documentation
Detailed Guides
- Supported Package Managers - Complete package manager reference
- Analysis Levels - Understanding analysis types
- Configuration - YAML config and environment variables
- Policy Configuration - Policy rules and schema
- OpenSourceMalware - Malicious package detection
- Repository Discovery - Repository discovery and version matching
- Version Resolution - Ecosystem-specific resolution semantics
- MCP Server - MCP server setup and tools
- Output Formats - CSV and JSON schemas
Contributing
See AGENTS.md for repository layout, development commands, and linting guidelines.
Lint:
uv run pylint src
Credits & Attribution
DepGate is a fork of "Dependency Combobulator" originally developed by Apiiro and its contributors: https://github.com/apiiro/combobulator - see CONTRIBUTORS.md.
Licensed under the Apache License 2.0. See LICENSE and NOTICE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file depgate-0.9.1.tar.gz.
File metadata
- Download URL: depgate-0.9.1.tar.gz
- Upload date:
- Size: 216.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
144ce8db7f02998b5fa1ee499021c09621a55c51b4ee29dce2e20f68b47508bc
|
|
| MD5 |
a8b2f92362a631a500421e73bda0ac3d
|
|
| BLAKE2b-256 |
6920c30d35bf691cd8ad3c7b4817b41a7439e2d93c9d17f0aba0e0a19c432f06
|
Provenance
The following attestation bundles were made for depgate-0.9.1.tar.gz:
Publisher:
release.yml on cognitivegears/depgate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
depgate-0.9.1.tar.gz -
Subject digest:
144ce8db7f02998b5fa1ee499021c09621a55c51b4ee29dce2e20f68b47508bc - Sigstore transparency entry: 707796518
- Sigstore integration time:
-
Permalink:
cognitivegears/depgate@a6328fed83c84f59a4a629ca9fb9f91ff5b38c78 -
Branch / Tag:
refs/tags/v0.9.1 - Owner: https://github.com/cognitivegears
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a6328fed83c84f59a4a629ca9fb9f91ff5b38c78 -
Trigger Event:
release
-
Statement type:
File details
Details for the file depgate-0.9.1-py3-none-any.whl.
File metadata
- Download URL: depgate-0.9.1-py3-none-any.whl
- Upload date:
- Size: 178.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5c8ddceadd28f9bcdd1a9585bc0dd0f4fd8ada851ebc60ee91f3c4d546261fa
|
|
| MD5 |
0d9cd4ebccdf389712f3de6bd1b6d7a6
|
|
| BLAKE2b-256 |
039c03cbec511ee88d9e1c58f3188c93f59bee4e97002c47998e9b8cb3e73021
|
Provenance
The following attestation bundles were made for depgate-0.9.1-py3-none-any.whl:
Publisher:
release.yml on cognitivegears/depgate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
depgate-0.9.1-py3-none-any.whl -
Subject digest:
e5c8ddceadd28f9bcdd1a9585bc0dd0f4fd8ada851ebc60ee91f3c4d546261fa - Sigstore transparency entry: 707796522
- Sigstore integration time:
-
Permalink:
cognitivegears/depgate@a6328fed83c84f59a4a629ca9fb9f91ff5b38c78 -
Branch / Tag:
refs/tags/v0.9.1 - Owner: https://github.com/cognitivegears
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a6328fed83c84f59a4a629ca9fb9f91ff5b38c78 -
Trigger Event:
release
-
Statement type: