UBEL ( Unified Bill / Enforced Law ) – Multi‑Ecosystem Security & Policy Enforcement CLI
Ubel is a fast, cross‑ecosystem security engine that resolves dependencies, generates PURLs, scans them through OSV.dev, and enforces security policies during installation. It works with:
- PyPI (via
ubel-pip) - npm (via
ubel-npm) - Linux distributions (Ubuntu, Debian, RHEL, AlmaLinux)
Ubel runs in CLI, automation scripts, and CI/CD pipelines, producing clean JSON and PDF reports.
✨ Features
- Full dependency resolution across ecosystems
- OSV.dev vulnerability scanning (batch API)
- Policy engine (block/allow by severity & infection)
- Checking linux-package or node/python dependency or entire project (
checkmode) - Install‑time enforcement (
installmode) - Project‑level/Host-level scanning (
healthmode) - Catches Non-CVEs
- It is a supply-chain protection tool
- Automatic report generation (JSON + PDF)
- Extremely fast (seconds per scan)
📦 Installation
pip install ubel
Ubel exposes three binaries:
ubel(Linux package scanning and OS-level operations: Ubuntu , Debian, Red Hat, Almalinux )ubel-pip(Python ecosystem)ubel-npm(Node.js ecosystem)
🚀 Usage Overview
Main CLI
usage: ubel [-h] {check,install,health,init,allow,block} [extra_args ...]
PyPI CLI
usage: ubel-pip [-h] {check,install,health,init,allow,block} [extra_args ...]
npm CLI
usage: ubel-npm [-h] {check,install,health,init,allow,block} [extra_args ...]
🧠 Commands Explained
check
Resolve dependencies/linux-packages → generate report → exit.
Python example:
ubel-pip check
If no extra arguments are passed, Ubel will:
- Detect
requirements.txt - Resolve all packages
- Scan them
- Output PDF + JSON
npm example:
ubel-npm check flask==3.1.0
If no args are passed, it will detect package.json automatically.
install
Same as check, but enforces policies and either blocks or allows installation.
Python example:
ubel-pip install flask==3.1.0
Or auto-detect project requirements:
ubel-pip install
npm example:
ubel-npm install express@5.0.0
Or simply:
ubel-npm install
(uses package.json automatically)
health
Scan the entire machine or running project, including:
- Installed PyPI packages
- Installed npm global packages
- OS-level packages (Ubuntu/Debian/RHEL/AlmaLinux)
Example: ( for linux )
ubel health
or ( for node.js app )
ubel-npm health
or ( for python app )
ubel-pip health
This mode produces large, detailed inventories and vulnerability matrices.
init
Initialize a policy file for the project or system.
Example:
ubel init
Creates default policy:
infections: block
severity:
critical: block
high: block
medium: allow
low: allow
unknown: allow
allow / block
Override Ubel's decision from CI/CD or scripted pipelines.
The arguments can be: "low", "medium", "high", "critical".
Example:
ubel block high critical
📁 Automatic Project Detection
For npm and PyPI, when running:
installcheck
without arguments:
Ubel automatically loads:
package.json(for npm)requirements.txt(for pip)
This makes it ideal for CI/CD workflows.
📤 Output
Ubel generates:
1. JSON report
Machine‑readable, includes:
- dependency list
- purls
- vulnerabilities
- severity
- infection state
- policy decision
- Generate complete SBOM-like machine inventory
2. PDF report
Human‑readable, includes:
- summary statistics
- per‑dependency vulnerability details
- fix recommendations
- tables
- OSV reference links
- Generate complete SBOM-like machine inventory
🧩 Ecosystem Tools
ubel→ system packages, Linux distrosubel-pip→ PyPI projects, virtual environments\ubel-npm→ Node.js, npm, package.json projects
Ubel – Secure every dependency, before it reaches production.
Metadata
Release files for python-ubel 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| python_ubel-0.1.0.tar.gz | 17.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_ubel-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.9 kB
Release files / python_ubel-0.1.0.tar.gz
| Download URL | python_ubel-0.1.0.tar.gz |
|---|---|
| Size | 17.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
92bbe646dac4b398ec910d9bf0d61b05f9cf09d20669232317754c3abfa8e1ff
|
|
BLAKE2b-256 checksum How to use checksums |
0e2fafc0c6e0dcad3afa83c8fd3decd4300c37fae5f0a809bbbada8d306c35f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / python_ubel-0.1.0-py3-none-any.whl
| Download URL | python_ubel-0.1.0-py3-none-any.whl |
|---|---|
| Size | 21.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c9d06dc938d9785c0fc6f6cdfe6452f00563dede3ba7b3a151d24beab5f43506
|
|
BLAKE2b-256 checksum How to use checksums |
7a934bf5e564ccc16e0845c5dba5de20fafa4a2662a1f6962ad96e81e45ce0b7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for python-ubel 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.