Free dependency vulnerability scanner. Like Snyk, but open. Powered by OSV.dev.
Project description
pinaka-scan
Free dependency vulnerability scanner. Like Snyk, but open.
Powered by OSV.dev — no API key, no signup, no limits.
Install
pip install pinaka-scan
Usage
# Auto-detect manifest in current directory
pinaka-scan
# Scan a specific file
pinaka-scan requirements.txt
pinaka-scan package.json
pinaka-scan go.mod
# Verbose output (show descriptions)
pinaka-scan -v
# JSON output (for CI pipelines)
pinaka-scan --json
# Only fail on critical/high severity
pinaka-scan --fail-on high
# Override ecosystem detection
pinaka-scan lockfile.txt -e PyPI
Recursive Scanning
Scan all manifest files in a project tree (monorepos, polyglot repos):
pinaka-scan --recursive
pinaka-scan --recursive -d /path/to/project
Automatically skips node_modules/, .git/, venv/, .venv/ and other junk directories.
SARIF Output
Generate SARIF v2.1.0 output for GitHub Security tab integration:
pinaka-scan --sarif > results.sarif
Ignoring Vulnerabilities
Create a .pinaka-ignore file to suppress accepted vulnerabilities (one ID per line):
# Accepted risk: low severity, no fix available
CVE-2021-34141
GHSA-5cpq-8wj7-hf2v
# Uses .pinaka-ignore by default
pinaka-scan
# Custom ignore file path
pinaka-scan --ignore-file my-ignore-list.txt
Ignored vulnerabilities are excluded from output and do not affect exit codes.
CI/CD Integration
Basic
- name: Scan dependencies
run: |
pip install pinaka-scan
pinaka-scan --fail-on high
GitHub Security Tab (SARIF)
Upload scan results to the GitHub Security tab:
- name: Scan dependencies
run: |
pip install pinaka-scan
pinaka-scan --sarif > results.sarif
continue-on-error: true
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
Exit codes:
0— no vulnerabilities (or none above--fail-onthreshold)1— vulnerabilities found2— scan error
Supported Ecosystems
| Ecosystem | Files |
|---|---|
| Python (PyPI) | requirements.txt, Pipfile.lock |
| Node.js (npm) | package.json, package-lock.json, yarn.lock |
| Go | go.mod, go.sum |
| Rust (crates.io) | Cargo.toml, Cargo.lock |
| Ruby (RubyGems) | Gemfile.lock |
| PHP (Packagist) | composer.json, composer.lock |
How It Works
- Reads your dependency manifest
- Parses package names + versions
- Batch-queries OSV.dev (Google's open vulnerability database)
- Displays results with severity, CVE IDs, and fix versions
No data is stored. No telemetry. Runs entirely on your machine.
All Flags
| Flag | Description |
|---|---|
file |
Path to manifest file (auto-detected if omitted) |
-e, --ecosystem |
Override ecosystem detection |
-v, --verbose |
Show vulnerability summaries in table |
-d, --dir |
Directory to scan (default: .) |
--json |
Output results as JSON |
--sarif |
Output results as SARIF v2.1.0 |
--recursive |
Scan all manifest files in directory tree |
--ignore-file |
Path to ignore file (default: .pinaka-ignore) |
--fail-on |
Exit 1 only if vulns at this severity or above (default: any) |
--version |
Show version |
Built by
License
MIT
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 pinaka_scan-0.3.0.tar.gz.
File metadata
- Download URL: pinaka_scan-0.3.0.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6487792abe772caecd4dad59694ccf1d0eb76e1ace5bc8259673cc296d55f0de
|
|
| MD5 |
22d2dd0142c42153f3d98419482bd255
|
|
| BLAKE2b-256 |
d15100a3b7a6cd79e87c1f28ed1c30517263dbec8e1de7709b7123cea25a7e6d
|
File details
Details for the file pinaka_scan-0.3.0-py3-none-any.whl.
File metadata
- Download URL: pinaka_scan-0.3.0-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8968d8bdd8aae9fb0775ad8ebc544c262aae83b131c45d81ee4ee62031109301
|
|
| MD5 |
2765a37755064141893c0fc868c83512
|
|
| BLAKE2b-256 |
b06aa8a79f0d2a1dea477573dfad283d81162ab062a21037ab179113204bb688
|