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 to prevent supply-chain attacks. It works with:
- PyPI via:
ubel-pip - npm via:
ubel-npmorubel-pnpmorubel-bunorubel-yarn - Linux distributions via:
ubel(Ubuntu-based, Debian-based, RHEL, AlmaLinux, Rocky-Linux, and Alpine) - Docker via:
ubel-docker(if the image is based on one the mentioned Linux distros above)
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/kernal-level/Docker-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
If you are on Linux, you need to:
- setup a virtual envirenment:
python3 -m venv venv - run enable the virtual envirenment
source venv/bin/activate - then run:
pip install ubel
Ubel exposes binaries:
ubel(Linux package scanning and OS-level operations: Ubuntu-based , Debian-based, Red Hat, Almalinux, Rocky-Linux, and Alpine )ubel-pip(Python ecosystem)ubel-npm(Node.js ecosystem)ubel-pnpm(Node.js ecosystem)ubel-bun(Node.js ecosystem)ubel-yarn(Node.js ecosystem)ubel-docker(Docker)
🚀 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 ...]
usage: ubel-pnpm [-h] {check,install,health,init,allow,block} [extra_args ...]
usage: ubel-bun [-h] {check,install,health,init,allow,block} [extra_args ...]
usage: ubel-yarn [-h] {check,install,health,init,allow,block} [extra_args ...]
docker CLI
usage: ubel-docker [-h] {health} <docker_image>
🧠 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 packages
- OS-level packages (Ubuntu-based/Debian-based/RHEL/AlmaLinux/Rocky-Linux/Alpine)
- Docker-level packages (Ubuntu-based/Debian-based/RHEL/AlmaLinux/Rocky-Linux/Alpine)
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 projectsubel-pnpm→ Node.js, npm, package.json projectsubel-bun→ Node.js, npm, package.json projectsubel-yarn→ Node.js, npm, package.json projectsubel-docker→ Docker
Ubel – Secure every dependency, before it reaches production.
Metadata
Release files for ubel 0.6.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 | |
|---|---|---|---|---|
| ubel-0.6.0.tar.gz | 26.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ubel-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 54.4 kB
Release files / ubel-0.6.0.tar.gz
| Download URL | ubel-0.6.0.tar.gz |
|---|---|
| Size | 26.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
219aae924dc54d220398dab8368b3a157bec022fc5a83316b63d20b72e497600
|
|
BLAKE2b-256 checksum How to use checksums |
75e2c5b4a381f655eced168e455b704cf37a0bae053ccc77cbce72ee25f10f68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / ubel-0.6.0-py3-none-any.whl
| Download URL | ubel-0.6.0-py3-none-any.whl |
|---|---|
| Size | 28.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2a574f8f7df0f09093e106c2d7891894da0431f6a24ae9dd8c04d23ad8e11277
|
|
BLAKE2b-256 checksum How to use checksums |
cd044a02ac49bb4d96502d16f9f40e16f8d3b353e6b3ee06fa18cb95e3afb2d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for ubel 0.6.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.