Add your description here
Project description
mlops-monitor
Lightweight MLOps monitoring toolkit with a web UI, metric logging, drift detection, and run management (inspired by Weights & Biases).
Features
- Log metrics, hyperparameters, and feature distributions from any Python ML script
- Automatic run metadata capture (host, platform, Python version, command, etc.)
- Console output capture (stdout/stderr) into run logs
- Data drift and concept drift detection (C‑backed helpers)
- Web UI: Projects → Runs → Metrics graphs (live and historical)
- SQLite storage, FastAPI + HTMX + Alpine.js + Chart.js frontend
Installation
As a dependency in your project (pip / uv)
# using uv
uv add mlops-monitor
# using pip
pip install mlops-monitor
Editable install for local development / demo
From the repo root:
uv build
# then in your project:
uv add --path ../path/to/mlops-monitor --editable
Or inside the demo/ folder (already configured):
cd demo
uv sync # uses the editable path defined in pyproject.toml
Quick start
0. Configure project (first time)
uv run monitor edit-config
This will ask:
- Whether to isolate the project (use local DB instead of global)
- Whether to enable email alerts
- Your email address(es) for alerts
1. In your training script
from mlops_monitor import init, log_metrics, capture_output, end
async def main():
monitor = init("my-project", "run-1")
capture_output() # capture prints into run logs
run_id = await monitor.start()
for epoch in range(20):
# train your model ...
await log_metrics({
"accuracy": acc,
"loss": loss,
}, step=epoch)
# ...
await end() # marks run as completed
if __name__ == "__main__":
import asyncio
asyncio.run(main())
2. Launch the UI
uv run monitor ui
# opens at http://localhost:8000
3. Open the UI
/– Projects list/project/{id}– Project overview, run list, and multi‑run metric charts/project/{id}/runs/{run_id}– Run details, summary, per‑run charts, and captured logs
Development
git clone ...
cd Cproject
uv sync
uv build # builds sdist + wheel
uv run monitor ui # start local UI
The demo/ folder contains a full example using scikit‑learn.
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 mlops_monitor-0.1.0.tar.gz.
File metadata
- Download URL: mlops_monitor-0.1.0.tar.gz
- Upload date:
- Size: 49.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6a55e1fea759d2ba19174fec8c9d1ae6b9812420ae2889a189e76d17b0af227
|
|
| MD5 |
d385e98216b394a28c3f63e52225862d
|
|
| BLAKE2b-256 |
39691d978dba39d0ec4c3881f51a30595d0d18965eaa7e53fb71eee99fa372db
|
File details
Details for the file mlops_monitor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mlops_monitor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 58.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e5bf18943e0e4fa81936abeffcb86047de59535c524a88b1264db069f6e1028
|
|
| MD5 |
c31b0d845c84a05fd4f30e0c9d558972
|
|
| BLAKE2b-256 |
657fb5b77d7d75b06a7d0e5b36a8be3b6ce20699178e5e6bbf6013e7a4a27dd8
|