Depgraph
FreeNot checkedDependency risk visualizer — Scorecard + OSV + typosquat + maintainer signals
About
Dependency risk visualizer — Scorecard + OSV + typosquat + maintainer signals
README
DEPGRAPH
Offline dependency-risk auditor — Scorecard heuristics + OSV matching + typosquat detection
PyPI CI ports License: COCL 1.0 Suite
Developer / Supply Chain — grade your dependencies, match them against 262k real OSV advisories, catch impostor packages — 100% offline.
pip install "git+https://github.com/cognis-digital/depgraph.git"
depgraph audit requirements.txt # grade every dependency A–F
depgraph enrich requirements.txt # + cross-reference 262k real OSV vulns, offline
depgraph is a single-purpose, zero-network, dependency-free supply-chain risk
auditor. Point it at a requirements.txt, package.json, or Pipfile and it grades
every package A–F using maintainer/age/typosquat heuristics (in the spirit of
ossf/scorecard) and matches pinned versions
against an OSV-style advisory database with real semantic
version-range checks. It never sends your manifest anywhere — the entire
262k-record vulnerability corpus ships inside the package.
🔎 Example output
Real, reproducible output from the tool — runs offline:
$ depgraph-emit --version
depgraph 2.1.0
$ depgraph-emit --help
usage: depgraph [-h] [--version] {audit,advisories,enrich,vulndb,feeds} ...
Offline dependency-risk scorer + OSV-style vulnerability matcher. Grades
pip/npm/Pipfile manifests A-F. Defensive use only.
positional arguments:
{audit,advisories,enrich,vulndb,feeds}
audit Audit a dependency manifest and grade every package.
advisories List the bundled OSV-style advisory database.
enrich Audit a manifest AND cross-reference every package
against the bundled 262k-record offline OSV database.
vulndb Query the bundled offline OSV database directly (no
network).
feeds List the edge/air-gap intelligence-feed catalog (CISA
KEV / EPSS / OSV / NVD / GHSA). Refresh is online-opt-
in only.
options:
-h, --help show this help message and exit
--version show program's version number and exit
$ depgraph-emit feeds
35 edge/air-gap feed(s) in the catalog
------------------------------------------------------------
cisa-kev vuln [json] CISA Known Exploited Vulnerabilities
epss vuln [json] FIRST EPSS exploit-probability scores
osv vuln [json] OSV.dev vulnerability query
nvd-cve vuln [json] NIST NVD CVE API 2.0
attack-enterprise threat-intel [stix] MITRE ATT&CK Enterprise (STIX 2.1)
feodo-c2 threat-intel [json] abuse.ch Feodo Tracker C2 IP blocklist
threatfox threat-intel [json] abuse.ch ThreatFox recent IOCs
urlhaus threat-intel [json] abuse.ch URLhaus recent malware URLs
sslbl threat-intel [csv] abuse.ch SSL/JA3 blacklist
oscal-800-53-rev5-catalog compliance [oscal] NIST SP 800-53 rev5 catalog (OSCAL)
attack-nist-mappings compliance [json] ATT&CK <-> NIST 800-53 control mappings
disa-stig-library compliance [html] DISA STIG downloads (index)
ofac-sdn osint [csv] US Treasury OFAC SDN list
gdelt osint [text] GDELT 2.0 global event stream
opensky-states osint [json] OpenSky Network live aircraft states
aws-ip-ranges cloud [json] AWS public IP ranges
gcp-ip-ranges cloud [json] Google Cloud IP ranges
github-advisories vuln [json] GitHub Security Advisory DB (GHSA)
circl-cve vuln [json] CIRCL CVE / vulnerability-lookup
kev-mirror vuln [json] CISA KEV (cisagov GitHub mirror)
osv-pypi-bulk vuln [zip] OSV bulk export (PyPI all)
spamhaus-drop threat-intel [text] Spamhaus DROP (don't-route-or-peer)
tor-exit-nodes threat-intel [text] Tor Project exit-node bulk list
sslbl-ja3 threat-intel [csv] abuse.ch SSLBL JA3 fingerprint blacklist
urlhaus-recent threat-intel [json] abuse.ch URLhaus recent (full)
attack-mobile threat-intel [stix] MITRE ATT&CK Mobile (STIX 2.1)
attack-ics threat-intel [stix] MITRE ATT&CK
Blocks above are real
depgraphoutput — reproduce them from a clone.
Contents
Why · What it really does · Quick start · Worked example · OSV enrichment · Querying the DB · Edge / air-gap · Output formats · Polyglot ports · Install · Scope & safety · AI stack · Related
Why depgraph?
Most dependency scanners phone home: they upload your dependency list to a SaaS API
to look up vulnerabilities. depgraph does the opposite — the database comes to
you. That makes it usable in CI without secrets, on disconnected/air-gapped/edge
gear, and on code you can't legally exfiltrate.
- Offline by construction. No API key, no network, no telemetry. The bundled
cognis_vulndb.jsonl.gzcarries ~262,000 real OSV advisories across PyPI, npm, Go, Maven, RubyGems, crates.io, and NuGet. - Three signals, one grade. OSV version-range vuln matching + Scorecard-style maintainer/age health + Levenshtein typosquat detection, rolled into a 0–10 score and an A–F letter per package and per project.
- CI-native. Exit codes,
--min-severity, and--fail-gradegates; JSON for any pipeline.
What it really does
| Capability | Detail |
|---|---|
| Manifest parsing | pip requirements.txt (name==, ~=, unpinned), package.json (dependencies + devDependencies, range operators stripped to concrete versions), Pipfile ([packages] / [dev-packages]). |
| OSV-style matching | Curated high-signal advisories with precise introduced/fixed ranges (introduced ≤ v < fixed, multi-range aware) + PEP440/semver-lite version comparison. |
| OSV enrichment | depgraph enrich cross-references every package against the full bundled 262k-record OSV corpus, attaching every real advisory id/CVE/GHSA that names it. |
| Typosquat detection | Levenshtein edit-distance to a curated popular-name list, with homoglyph and same-charset transposition heuristics (colourama → colorama, lodahs → lodash). |
| Health heuristics | Deprecated/abandoned, very-new (<6mo), and single-maintainer signals from a bundled maintenance table. |
| Edge data feeds | depgraph feeds lists a 35-source keyless intel catalog (CISA KEV, EPSS, OSV, NVD, GHSA, MITRE ATT&CK, …) with disk-cache + air-gap snapshot import/export. |
Quick start
# audit a manifest (table by default)
depgraph audit requirements.txt
# read from stdin
cat requirements.txt | depgraph audit
# enrich with the full 262k OSV corpus
depgraph enrich requirements.txt
# look a CVE up directly in the bundled DB (offline)
depgraph vulndb --cve CVE-2021-44228
# CI gate: fail when the project grade drops to C or below
depgraph audit requirements.txt --fail-grade C || exit 1
Worked example
Given requirements.txt:
requests==2.28.0
urllib3==1.25.0
pillow==8.4.0
colourama==0.4.6
numpy
cryptography==42.0.0
$ depgraph audit requirements.txt
DEPGRAPH audit of requirements.txt
============================================================
GRADE NAME VERSION SCORE WORST FINDINGS
-----------------------------------------------------------
F colourama 0.4.6 2.0 CRITICAL 3
F pillow 8.4.0 3.5 CRITICAL 1
C urllib3 1.25.0 6.0 HIGH 1
B requests 2.28.0 7.5 MEDIUM 1
B numpy - 8.5 MEDIUM 1
A cryptography 42.0.0 10.0 NONE 0
FINDINGS
------------------------------------------------------------
colourama 0.4.6 [F]
- [CRITICAL] 'colourama' is 1 edit(s) from popular 'colorama' — possible typosquat / impostor package.
- [MEDIUM] 'colourama' is very new (2 mo old) — low track record, common cover for malicious uploads.
- [LOW] 'colourama' has a single maintainer — bus-factor and account-takeover risk.
pillow 8.4.0 [F]
- [CRITICAL] GHSA-h5c8-rqwp-cp95 (CVE-2022-22817) affects pillow 8.4.0 — Pillow arbitrary code execution via ImageMath.eval.
urllib3 1.25.0 [C]
- [HIGH] GHSA-9wx4-h78v-vm56 (CVE-2021-33503) affects urllib3 1.25.0 — urllib3 ReDoS via malformed authority in URL.
requests 2.28.0 [B]
- [MEDIUM] GHSA-j8r2-6x86-q33q (CVE-2023-32681) affects requests 2.28.0 — requests leaks Proxy-Authorization header on cross-host redirect.
project: C score=6.25 deps=6 vulns=3 findings=7
--format json emits the same data as a machine-readable document with per-finding
kind/severity/penalty/advisory_id and a project rollup — pipe it into CI,
SARIF tooling, or an agent.
OSV enrichment — the full 262k corpus, offline
depgraph audit uses a small, hand-curated advisory set with exact version ranges.
depgraph enrich layers the entire bundled OSV database on top, attaching every
real advisory that names each package:
$ depgraph enrich requirements.txt
DEPGRAPH OSV enrichment of requirements.txt
============================================================
bundled OSV records: 262351 | packages with OSV refs: 4 | total references: 31
pypi:requests (13 OSV advisories)
- [MEDIUM] GHSA-j8r2-6x86-q33q (CVE-2023-32681) Unintended leak of Proxy-Authorization header in requests
- [HIGH] GHSA-9hjg-9r4m-mvj7 (CVE-2024-47081) Requests .netrc credentials leak via malicious URLs
...
Enrichment is conservative and additive: bundle records don't carry machine-comparable ranges, so a hit is reported as an advisory reference ("this package has N known OSV advisories"), never a fabricated "you are vulnerable" verdict. It never overrides the curated version-range matches and never changes a package's grade.
Querying the bundled DB directly
depgraph vulndb --count # 262351 bundled OSV records
depgraph vulndb --cve CVE-2021-44228 # resolve Log4Shell (and its GHSA)
depgraph vulndb --package lodash # every advisory naming lodash
depgraph vulndb --package django --ecosystem PyPI
depgraph vulndb --search "deserialization" --limit 10
From Python:
from depgraph import VulnDB, lookup_cve, enrich_result, audit_text
VulnDB().count() # 262351
lookup_cve("CVE-2021-44228") # -> [records...] (Log4Shell, real)
enrich_result(audit_text(open("requirements.txt").read(), "requirements.txt"))
Edge / air-gap refresh
The bundled DB is the offline baseline. To extend or freshen it on the edge,
depgraph.datafeeds fetches a keyless intel catalog over HTTPS, caches it to disk,
and can sneakernet a snapshot into a disconnected enclave:
depgraph feeds # list the catalog (offline)
python -m depgraph.datafeeds update cisa-kev epss # fetch + cache (online, opt-in)
python -m depgraph.datafeeds get osv --offline # serve from cache, never network
python -m depgraph.datafeeds snapshot-export feeds.tar.gz # for air-gap transfer
python -m depgraph.datafeeds snapshot-import feeds.tar.gz # on the air-gapped side
Sources include CISA KEV, FIRST EPSS, OSV.dev, NIST NVD CVE 2.0, and GitHub GHSA for vulnerabilities, plus MITRE ATT&CK and NIST OSCAL 800-53 for control mapping. Online refresh is strictly opt-in; everything else is offline.
Output formats & CI gates
| Flag | Effect |
|---|---|
--format table |
Human-readable graded table + findings detail (default). |
--format json |
Machine-readable document (audit + optional osv_enrichment block). |
--min-severity LOW|MEDIUM|HIGH|CRITICAL |
Non-zero exit only when a finding ≥ this severity exists. |
--fail-grade A|B|C|D|F |
Non-zero exit when the project grade is at/below this letter. |
Forward findings to STIX/MISP/Sigma/Splunk/Elastic/Slack via the optional
depgraph-emit bridge (pip install ".[connect]"). See INTEGRATIONS.md.
Polyglot ports
The portable scoring core (pip parsing + typosquat + version-range matching, same JSON shape) is ported to JavaScript, Go, Rust, and POSIX Shell under ports/. Each has a smoke test and is built/tested on every push by the ports.yml workflow:
node ports/javascript/index.js requirements.txt
cd ports/go && go run . ../../requirements.txt
cd ports/rust && cargo run -- ../../requirements.txt
sh ports/shell/depgraph.sh requirements.txt
Install — every way, every platform
pip install "git+https://github.com/cognis-digital/depgraph.git" # pip
pipx install "git+https://github.com/cognis-digital/depgraph.git" # isolated CLI
uv tool install "git+https://github.com/cognis-digital/depgraph.git" # uv
pip install cognis-depgraph # PyPI (when published)
docker run --rm ghcr.io/cognis-digital/depgraph:latest --help # Docker
git clone https://github.com/cognis-digital/depgraph && cd depgraph && pip install -e .
| Linux | macOS | Windows | Docker | Cloud |
|---|---|---|---|---|
scripts/setup-linux.sh |
scripts/setup-macos.sh |
scripts/setup-windows.ps1 |
docker run ghcr.io/cognis-digital/depgraph |
DEPLOY.md |
Runs on Linux / macOS / Windows, Python 3.10+, standard library only — no runtime dependencies.
Scope, authorization & safety
depgraph is a passive, offline, defensive tool. It reads dependency manifests
and consults a bundled database — it does not execute dependency code, perform any
active network scanning, or contact registries during an audit. Online feed refresh
(datafeeds update) is the only network path and is strictly opt-in.
- No fabricated CVEs or advisories — every record is real OSV data.
- No exploit payloads, no remote probing, no telemetry.
- Use it on code and projects you are authorized to assess.
Use it from any AI stack
- MCP server —
depgraph mcp(Claude Desktop, Cursor, Cognis.Studio) - JSON — pipe
depgraph audit . --format jsoninto any agent or LLM - LangChain · CrewAI · AutoGen · LlamaIndex — wrap the CLI/JSON as a tool
- CI / scripts — exit codes for non-AI pipelines
Related Cognis tools
- secretsweep — repo secret scanner + auto-rotator
- pipewatch-pro — CI/CD supply-chain auditor
- ossaudit — OSS license compliance auditor
Explore the suite → 🗂️ all tools · 🔗 cognis-sources · 🧠 engram
Interoperability
depgraph composes with the Cognis suite — JSON in/out and a shared
OpenAI-compatible /v1 backbone. See INTEROP.md for the suite map
and composition patterns.
Contributing
PRs, new rules, ports, and demo scenarios are welcome under the collaboration-pull model — see CONTRIBUTING.md and SECURITY.md.
⭐ If
depgraphsaved you time, star it — it genuinely helps others find it.
License
Source-available under the Cognis Open Collaboration License (COCL) v1.0 — free for personal, internal-evaluation, research, and educational use; commercial / production use requires a license ([email protected]). See LICENSE.
Installing Depgraph
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/cognis-digital/depgraphFAQ
Is Depgraph MCP free?
Yes, Depgraph MCP is free — one-click install via Unyly at no cost.
Does Depgraph need an API key?
No, Depgraph runs without API keys or environment variables.
Is Depgraph hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Depgraph in Claude Desktop, Claude Code or Cursor?
Open Depgraph on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Depgraph with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
