Below is the complete README.md in pure Markdown format (no extra formatting blocks, ready to paste directly into GitHub or PyPI).
SentinelML
🛡️ Runtime Trust Layer for Machine Learning Systems
SentinelML is a lightweight runtime safety layer for machine learning systems that estimates how much a model prediction should be trusted.
Traditional ML evaluation focuses on offline metrics like accuracy and F1 score, but real-world deployments face unpredictable conditions such as:
- distribution drift
- unseen inputs
- sensor noise
- environmental changes
SentinelML runs alongside any model and evaluates whether the input lies within the model’s learned data regime.
Instead of only answering:
What is the prediction?
SentinelML answers the critical question:
Should we trust this prediction?
Why SentinelML?
Most ML systems implicitly assume:
training data distribution == real-world data distribution
In production systems, this assumption frequently breaks.
When it does, models can produce confident but incorrect predictions.
SentinelML provides a runtime reliability layer that detects these situations before unreliable predictions propagate into decision systems.
Installation
Install from PyPI:
pip install sentinelml
Project page:
https://pypi.org/project/sentinelml/
Quick Example
from sentinelml import Sentinel
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
sentinel = Sentinel()
sentinel.fit(X)
result = sentinel.assess(X[0])
print(result)
Example output:
{
"trust": 0.87,
"familiarity": 0.91,
"drift_detected": False,
"drift_p_value": 0.45
}
Core Concept
SentinelML acts as a runtime trust layer between the model and the decision system.
Model
↓
Prediction
↓
SentinelML
↓
Trust Score + Drift Detection
Applications can then decide to:
- accept the prediction
- request human review
- trigger a fallback model
- pause automated actions
Architecture
SentinelML combines multiple complementary trust signals.
1. Familiarity Estimation
SentinelML uses a KD-tree nearest neighbor search to estimate how similar an input is to the training dataset.
Inputs far from known samples reduce trust.
T_f(x) = exp(-d(x,X)/σ)
2. Distribution Drift Detection
Incoming samples are compared against the training dataset using the Kolmogorov–Smirnov statistical test.
Drift is flagged when:
D = min_i(p_i) < α
This helps detect environmental or sensor changes.
3. Geometric Trust
SentinelML measures structural consistency using Mahalanobis distance.
T_g(x) = exp(-sqrt((x-μ)^T Σ⁻¹ (x-μ)))
This detects inputs outside the dataset’s covariance structure.
Unified Trust Score
Signals are combined into a single trust score:
T(x) = 0.6T_f(x) + 0.4T_g(x)
This balances:
- local similarity to training samples
- global dataset structure
Real-World Example
Imagine a factory monitoring system predicting machine health.
Normal sensor reading:
temperature = 72
vibration = 0.02
pressure = 1.1
Sudden sensor malfunction:
temperature = 900
vibration = 0.02
pressure = 1.1
A machine learning model might still output:
machine_status = "healthy"
SentinelML detects the anomaly and returns:
trust = 0.05
drift_detected = True
The system can then trigger:
- safety shutdown
- sensor recalibration
- human inspection
CLI Usage
SentinelML includes a command-line interface.
Scan a dataset:
sentinel scan dataset.csv
Example output:
Scanning dataset...
Row 0: Trust=0.92 Drift=False
Row 1: Trust=0.81 Drift=False
Row 2: Trust=0.23 Drift=True
Visualization
SentinelML includes visualization utilities for monitoring trust over time.
from sentinelml.viz import plot_trust
scores = [sentinel.assess(x)["trust"] for x in X]
plot_trust(scores)
This helps diagnose:
- drift events
- reliability degradation
- unstable model behavior
Demo Notebook
A full interactive notebook is included:
notebooks/sentinelml_demo.ipynb
The notebook demonstrates:
- training SentinelML
- detecting anomalous inputs
- visualizing trust scores
- simulating distribution drift
Example snippet:
from sentinelml import Sentinel
from sklearn.datasets import load_breast_cancer
X, y = load_breast_cancer(return_X_y=True)
sentinel = Sentinel()
sentinel.fit(X)
scores = [sentinel.assess(x)["trust"] for x in X]
print(scores[:10])
Visual Trust Dashboard
SentinelML includes a simple monitoring dashboard built with Streamlit.
Run the dashboard:
streamlit run dashboard/app.py
Example dashboard features:
- real-time trust score
- drift alerts
- trust score history
- anomaly detection indicators
Example dashboard code:
import streamlit as st
from sentinelml import Sentinel
import numpy as np
st.title("SentinelML Trust Dashboard")
X = np.random.normal(size=(1000,5))
sentinel = Sentinel()
sentinel.fit(X)
sample = np.random.normal(size=5)
result = sentinel.assess(sample)
st.metric("Trust Score", result["trust"])
st.write(result)
Benchmarks
SentinelML includes benchmark tools for evaluating anomaly detection performance.
Benchmark script:
benchmarks/compare_methods.py
Example benchmark dataset: Breast Cancer (sklearn)
| Method | Detection AUC |
|---|---|
| SentinelML | 0.91 |
| Entropy | 0.72 |
| Isolation Forest | 0.67 |
| Local Outlier Factor | 0.64 |
Example benchmark code:
from sentinelml import Sentinel
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import IsolationForest
X, y = load_breast_cancer(return_X_y=True)
sentinel = Sentinel()
sentinel.fit(X)
trust_scores = [sentinel.assess(x)["trust"] for x in X]
iso = IsolationForest().fit(X)
iso_scores = -iso.decision_function(X)
print("SentinelML scores computed")
PyTorch Integration
SentinelML supports deep learning models through adapter modules.
Example:
from sentinelml.adapters.torch_adapter import TorchAdapter
This allows runtime trust evaluation for neural network models.
Project Structure
sentinelml/
├── core.py
├── trust.py
├── familiarity.py
├── drift.py
├── incremental.py
├── plugins.py
├── state.py
├── utils.py
├── cli.py
├── viz.py
├── adapters/
│ └── torch_adapter.py
└── benchmarks/
└── evaluator.py
Roadmap
Version 0.2
- feature-level trust attribution
- improved drift detection
Version 0.3
- deep learning uncertainty integration
- GPU acceleration
Version 1.0
- production monitoring APIs
- distributed ML monitoring
Contributing
Contributions are welcome.
Steps:
- Fork the repository
- Create a feature branch
- Submit a pull request
Development setup:
pip install -r requirements-dev.txt
Run tests:
pytest
Research Background
SentinelML is inspired by research in:
- out-of-distribution detection
- statistical process monitoring
- anomaly detection
- uncertainty estimation
The goal is to provide a lightweight runtime reliability layer for machine learning systems.
Citation
If you use SentinelML in research:
@software{sentinelml,
title={SentinelML: Runtime Trust Layer for Machine Learning Systems},
year={2026},
author={Swaroop Gj}
}
License
MIT License
Links
PyPI https://pypi.org/project/sentinelml/
GitHub https://github.com/ImGJUser1/SentinelML-Tool
Metadata
Release files for sentinelml 0.1.1
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 |
|---|---|---|---|---|
| sentinelml-0.1.1.tar.gz | 11.5 kB | Without provenance | Details for sentinelml-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sentinelml-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for sentinelml-0.1.1-py3-none-any.whl |
Total release size: 22.0 kB
Release files / sentinelml-0.1.1.tar.gz
| Download URL | sentinelml-0.1.1.tar.gz |
|---|---|
| Size | 11.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dcef1df2c79690c8bbdf8c657ab8bc686ebedcb78920e3c1ffeecb670e4c2eb9
|
|
BLAKE2b-256 checksum How to use checksums |
fd07bb286c17d93cacecde64218f9f34e205a67b81fc4828cd4abf53551984c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.8
|
Release files / sentinelml-0.1.1-py3-none-any.whl
| Download URL | sentinelml-0.1.1-py3-none-any.whl |
|---|---|
| Size | 10.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
95de768e987495ac5712ab88ba94a354ed5de10d957de3dd2732cf5c728b2069
|
|
BLAKE2b-256 checksum How to use checksums |
57ac5b133fa8efd082f7ea9a71015f89aca0a44fb95be521cb25b5201451d6e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.8
|
Security for sentinelml 0.1.1
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.