CyberXYZ Vulnerability Scanner CLI — real-time vulnerability intelligence, XYZ scoring, EPSS and depalert scores
Project description
cyberxyz-scanner
CyberXYZ Security CLI. Real-time supply-chain protection for npm, PyPI, Go and .NET (NuGet) on macOS, Linux and Windows.
The CLI pairs with the CyberXYZ platform to give you per-machine package inventory, proxy
enforcement on every npm install / pip install, and CI/CD gating on flagged
dependencies. It is the implementer's interface to a platform that also exposes the same
controls in a web dashboard.
Install
The package is published on PyPI as cyberxyz-scanner. The CLI binary it installs is named
xyz.
With pip
pip install cyberxyz-scanner
With uv
uv pip install cyberxyz-scanner
Verify the install:
xyz --help
Quick start (one-time per machine)
# 1. Browser-based login. Stores a JWT in ~/.xyz/config.json
xyz login
# 2. Enroll this machine. Single command does all of:
# - Registers the device server-side
# - Writes the proxy token to ~/.npmrc
# - Configures pip's global index URL
# - Installs the OS service for dashboard "Scan now" support
# (LaunchAgent on macOS, systemd --user on Linux, Task Scheduler on Windows)
xyz proxy setup --machine-name "Alex's MacBook"
That's it. Every subsequent npm install and pip install on this device is checked
through the CyberXYZ proxy, and the dashboard's "Scan now" button can trigger a fresh
inventory audit on demand.
For environments that should not run a long-running background process (CI build agents,
sealed builds), pass --no-install-daemon.
Audit installed packages
Each command below audits the matching ecosystem on this machine, runs the CyberXYZ watchlist + deep check on suspect packages, and uploads the full inventory to the platform.
xyz audit npm # local + global node_modules
xyz audit python # active Python environment via pip
xyz audit go # $GOPATH module cache
xyz audit nuget # packages.lock.json files under cwd
xyz audit # npm + python + go back-to-back
By default each command uses the watchlist pre-filter for speed (~25-40s on a typical
machine). Pass --full to skip the pre-filter and deep-check every package (slower but
covers advisory-only matches at scan time).
Other useful commands
# One-off safety check on a single package + version
xyz check axios 1.14.1 -e npm
# CI/CD gate. Drops a non-zero exit on flagged packages.
xyz depalert scan --package-lock package-lock.json --fail-on block
xyz depalert scan --requirements requirements.txt --fail-on quarantine
xyz depalert scan -p axios@1.14.1 -p lodash@4.17.21
# SBOM upload (CycloneDX or SPDX)
xyz inventory upload ./my-app
xyz inventory upload --sbom syft.json
# Diagnostic / housekeeping
xyz proxy status # show current npm + pip proxy config
xyz proxy whoami # what (org, machine) does my token resolve to
xyz proxy remove # restore default registries on this machine
xyz scans list # history of recent scans for your org
xyz upgrade # pull the latest release from PyPI
CI/CD integrations
Drop one of the templates below into your repo, set XYZ_API_KEY as a secret, and any
push or PR that pulls in a malicious or vulnerable package will fail the build with a
clear reason.
- GitHub Actions:
.github/workflows/xyz-depalert.yml(template in theXYZ-APT-Scannerrepo) - Azure DevOps Pipelines:
integrations/azure-pipelines/cyberxyz-supply-chain.yml
Both run the same xyz depalert scan engine your laptops use.
Re-enroll, rotate, remove
To rotate the proxy token on a device, just re-run xyz proxy setup --machine-name "...".
The platform revokes the old token and writes a fresh one. The daemon picks it up at next
restart.
To remove a device cleanly, delete it from the dashboard Fleet view. The deletion sweeps proxy_install_log, proxy_tokens, cli_scans, customer_inventory_uploads, customer_package_inventory and scan_jobs in one transaction. Re-enroll with the same command above.
Platform
- Dashboard: https://app.cyberxyz.io
- Documentation: https://cyberxyz.io
License
Proprietary. See LICENSE.
Contact
Email: amro@cyberxyz.io
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 cyberxyz_scanner-1.4.17.tar.gz.
File metadata
- Download URL: cyberxyz_scanner-1.4.17.tar.gz
- Upload date:
- Size: 75.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86e5434e958b69913c4cc47ebb4dd2965e7476800019ea1d0343f2014be16d3f
|
|
| MD5 |
0a6a5beedb404b641b41b9f540104e37
|
|
| BLAKE2b-256 |
a011c4687aa470bdf1d0a536c4792cc4574582c34b02649dcb9fdf8edd3bad37
|
Provenance
The following attestation bundles were made for cyberxyz_scanner-1.4.17.tar.gz:
Publisher:
publish-to-pypi.yml on CyberXYZSecurity/XYZ-Exploitability-Scanner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cyberxyz_scanner-1.4.17.tar.gz -
Subject digest:
86e5434e958b69913c4cc47ebb4dd2965e7476800019ea1d0343f2014be16d3f - Sigstore transparency entry: 1454238956
- Sigstore integration time:
-
Permalink:
CyberXYZSecurity/XYZ-Exploitability-Scanner@17101359b680cbaa83d1e1b37d6c301e5fb8ef74 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/CyberXYZSecurity
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@17101359b680cbaa83d1e1b37d6c301e5fb8ef74 -
Trigger Event:
push
-
Statement type:
File details
Details for the file cyberxyz_scanner-1.4.17-py3-none-any.whl.
File metadata
- Download URL: cyberxyz_scanner-1.4.17-py3-none-any.whl
- Upload date:
- Size: 65.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c321e38f4c381e0aab8bca69156db5f03a0d14e54a963e3952bd87802799851
|
|
| MD5 |
140bfe32ad6629e77d2f0da96615467d
|
|
| BLAKE2b-256 |
ddfde394be5bf06e77f477bceb3339fbf17d6e6558642ac4d61cc3b557525e7f
|
Provenance
The following attestation bundles were made for cyberxyz_scanner-1.4.17-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on CyberXYZSecurity/XYZ-Exploitability-Scanner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cyberxyz_scanner-1.4.17-py3-none-any.whl -
Subject digest:
6c321e38f4c381e0aab8bca69156db5f03a0d14e54a963e3952bd87802799851 - Sigstore transparency entry: 1454239015
- Sigstore integration time:
-
Permalink:
CyberXYZSecurity/XYZ-Exploitability-Scanner@17101359b680cbaa83d1e1b37d6c301e5fb8ef74 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/CyberXYZSecurity
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@17101359b680cbaa83d1e1b37d6c301e5fb8ef74 -
Trigger Event:
push
-
Statement type: