Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Depgraph

FreeNot checked

Dependency risk visualizer — Scorecard + OSV + typosquat + maintainer signals

GitHubEmbed

About

Dependency risk visualizer — Scorecard + OSV + typosquat + maintainer signals

README

DEPGRAPH

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 depgraph output — 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.gz carries ~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-grade gates; 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 serverdepgraph mcp (Claude Desktop, Cursor, Cognis.Studio)
  • JSON — pipe depgraph audit . --format json into 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

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 depgraph saved 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.


Cognis Digital · part of the Cognis Neural Suite · Making Tomorrow Better Today

from github.com/cognis-digital/depgraph

Installing Depgraph

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/cognis-digital/depgraph

FAQ

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

Compare Depgraph with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs