ninjasignal
The Python client for Ninja Labz predictive threat intelligence.
Ninja Labz tracks the ransomware ecosystem on live data and publishes what it predicts next — surging groups, new entrants, sectors in the crosshairs, and calibrated forward calls. ninjasignal puts that in three lines of Python.
pip install ninjasignal
import ninjasignal as ns
ns.surging() # groups accelerating right now
ns.predict("qilin") # what the lab predicts for a group
ns.groups() # active groups + victim counts, top sector/country, origin
ns.recent(limit=20) # latest claimed victims (date, group, sector, country)
Zero runtime dependencies. Talks only to the public feeds over HTTPS. Pandas is an optional convenience, never required.
Why
Ransomware intel is everywhere; predictive ransomware intel, published openly, is not. Ninja Labz runs an AI-native lab that scans dated victim activity, scores the ecosystem, and calls what's next — then publishes it. This library is how you consume it from a notebook, a pipeline, or a terminal.
CLI
Installs ninja (and ninjasignal):
ninja surging # groups accelerating now
ninja predict qilin # the lab's calls for a group
ninja groups # active groups
ninja recent --limit 20 --sector Healthcare
ninja report # latest monthly stats
ninja risk --sector Healthcare # exposure concentration (descriptive)
Add --json to any command for raw output, --base URL to point at a mirror.
API
| Call | Returns |
|---|---|
ns.groups() |
active ransomware groups: name, victims, top_sector, top_country, origin, sanctioned |
ns.group(slug) |
one group's full dossier data (sectors, countries, recent, aliases) |
ns.recent(limit=, group=, sector=, country=) |
recent claimed victims, newest first |
ns.monthly() |
per-month totals + top groups (the trend series) |
ns.predictions(kind=) |
the lab's predictions: type, subject, statement, confidence, basis |
ns.surging() |
predictions of type rising_group |
ns.predict(group) |
predictions matching a group |
ns.risk(sector=, country=) |
a transparent exposure-concentration score (see note) |
Use a Client directly to set caching / host:
from ninjasignal import Client
nl = Client(cache_ttl=600)
nl.frame(nl.groups()) # a pandas DataFrame if pandas is installed, else a list
Note on
risk()— this is a simple, transparent descriptive measure (a sector's share of recent claims, scaled 0–100). It is not a probabilistic forecast and not the lab's model. For the model's forward calls, usepredictions().
Data & provenance
All data comes from the public feeds under https://ninjalabz.io/feeds/, documented at https://ninjalabz.io/feeds/. The monthly Predictive Intel Report lives at https://ninjalabz.io/intel-report/.
- Data license: Creative Commons Attribution 4.0 (CC BY 4.0). Attribute "Ninja Labz — ninjalabz.io".
- This client's code: Apache License 2.0.
Intellectual property
This client library embodies none of Ninja Labz's predictive methods — it only reads already-published outputs. The models, correlation/inference algorithms, and systems that produce those outputs are proprietary to Ninja Labz and patent-pending. Neither the Apache-2.0 code license nor the CC-BY data license grants any right to those methods. See NOTICE.
Contributing & security
Issues and PRs welcome for the client itself. Please report security concerns privately via GitHub Security Advisories — see SECURITY.md.
Built by Ninja Labz — the name in predictive threat intelligence.
Metadata
Release files for ninjasignal 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 | Actions |
|---|---|---|---|---|
| ninjasignal-0.1.0.tar.gz | 13.3 kB | Without provenance | Details for ninjasignal-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ninjasignal-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for ninjasignal-0.1.0-py3-none-any.whl |
Total release size: 27.0 kB
Release files / ninjasignal-0.1.0.tar.gz
| Download URL | ninjasignal-0.1.0.tar.gz |
|---|---|
| Size | 13.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
15f0905a29252783d25e3993be40a3bb3d1b112094df15c0224671fd304a5de6
|
|
BLAKE2b-256 checksum How to use checksums |
390c2bb146d5c28d585481ca2977d37bdbd7cf5db67f8ff924b3c2aa2578db49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.0
|
Release files / ninjasignal-0.1.0-py3-none-any.whl
| Download URL | ninjasignal-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7a856073d51884984e83baeca5bea216102df37e508a67d59087a9103240ba72
|
|
BLAKE2b-256 checksum How to use checksums |
8a53b8241cb1af07146528727b25e251c12766b69510094cc32d22ca72b4a37a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.0
|
Security for ninjasignal 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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.