Skip to main content

mlops-dev

Python SDK and CLI for MLOps.dev — deploy, monitor, and manage ML models on edge devices at scale.

PyPI License Discord

Install

pip install mlops-dev

Authenticate

export MLOPS_API_KEY=mlops_live_xxxx

Get your API key at mlops.dev/dashboard → Settings.

Quick start — Python

import mlops_dev as mlops

client = mlops.Client()  # reads MLOPS_API_KEY from env

# Push a model
v = client.models.push("./model.onnx", name="defect-detector", tag="v1.0")
print(f"Pushed {v.name}:{v.tag}  {v.size_mb}MB  sha={v.sha256[:8]}...")

# Push TensorRT engine for Jetson Orin
v = client.models.push(
    "./model_orin_int8.engine",
    name="defect-detector",
    tag="v1.0",
    format="tensorrt",
    variant="jetson_orin",
    metadata={"accuracy": "0.942", "input_shape": "[1,3,224,224]"},
)

# Deploy to one device (blocks until done)
dep = client.deploy("defect-detector:v1.0", target="jetson-prod-01")
dep.wait()
print(dep.status)  # completed

# Staged canary rollout across a mixed fleet
dep = client.deploy(
    "defect-detector:v2.0",
    target="all",
    stages=[
        {"hw_class": "jetson_orin", "count": 1},    # 1 pilot device
        {"hw_class": "jetson_orin", "pct": 100},    # all Jetson Orins
        {"hw_class": "jetson_nano", "pct": 25},     # 25% of Nanos
        {"hw_class": "all",         "pct": 100},    # full fleet
    ],
    health_gate={
        "accuracy_delta": -0.03,   # halt if accuracy drops > 3%
        "latency_delta":  0.20,    # halt if latency rises > 20%
    },
    stage_interval="30m",
)

def log_stage(stage, status, dep):
    print(f"Stage {stage}/{dep.total_stages}: {status}")

dep.wait(poll_interval=10, on_stage=log_stage)

if dep.status == "failed":
    client.rollback(to="defect-detector:v1.0")

# Fleet status
for device in client.devices.list():
    print(f"{device.id:20}  {device.status.value:8}  drift={device.drift_score:.3f}")

# Drift monitoring
report = client.drift.report()
print(f"{report.drifting}/{report.total_devices} drifting  avg_kl={report.fleet_avg_kl:.3f}")

for alert in client.drift.alerts():
    print(f"  [{alert.severity}] {alert.device_id}  KL={alert.kl_score:.3f}  {alert.monitor}")

# Reset drift baseline after a planogram change
client.drift.reset_baseline("jetson-prod-01")

# Rollback
client.rollback(device_id="jetson-prod-01", to="defect-detector:v1.0")
client.rollback()  # entire fleet

# Audit log (for FDA/ISO compliance)
log = client.audit(device_id="jetson-prod-01", since="2025-01-01", format="csv")

Quick start — CLI

# Fleet status
mlops status

# List all devices
mlops devices list
mlops devices list --status drift --hw-class jetson_orin

# Get one device
mlops devices get jetson-prod-01

# Device logs
mlops devices logs jetson-prod-01 --limit 50 --level error

# Push a model
mlops models push ./model.onnx --name defect-detector --tag v1.0
mlops models push ./model_orin_int8.engine --name defect-detector --tag v1.0 \
    --format tensorrt --variant jetson_orin

# Deploy
mlops deploy defect-detector:v1.0 --target jetson-prod-01
mlops deploy defect-detector:v2.0 --target all \
    --stage hw_class=jetson_orin,count=1 \
    --stage hw_class=jetson_orin,pct=100 \
    --stage hw_class=all,pct=100 \
    --health-gate accuracy_delta=-0.03 \
    --stage-interval 30m

# Rollback
mlops rollback --to defect-detector:v1.0
mlops rollback --device jetson-prod-01 --to defect-detector:v1.0

# Drift monitoring
mlops drift report
mlops drift alerts
mlops drift reset jetson-prod-01

# Audit log
mlops audit --device jetson-prod-01 --since 2025-01-01 --format csv -o audit.csv

Model formats

Format Best for Install on
ONNX All ARM devices pip install onnxruntime
TFLite CPU-only ARM, low-power Built into agent
TensorRT Jetson GPU (max throughput) Requires CUDA + TRT

Note: TensorRT engines are device-specific. Always set variant= when pushing .engine files. Push one version per hardware class — the agent selects automatically.

Enterprise / on-premise

# Point SDK at your on-premise control plane
client = mlops.Client(
    api_key="your-key",
    base_url="https://mlops.yourcompany.internal/api/v1",
)

License

Apache 2.0 — see LICENSE

Author

Raghunathareddy GR — CEO & Founder, MLOps.dev hello@mlops.dev | Bengaluru, India

Metadata

Release files for mlops-dev 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mlops-dev 0.7.0
File Size Uploaded Provenance Actions
mlops_dev-0.7.0.tar.gz 29.5 kB Without provenance Details for mlops_dev-0.7.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mlops-dev 0.7.0
File Interpreter ABI Platform Actions
mlops_dev-0.7.0-py3-none-any.whl Python 3 none any Details for mlops_dev-0.7.0-py3-none-any.whl

Total release size: 60.3 kB

Release files / mlops_dev-0.7.0.tar.gz

Download URL mlops_dev-0.7.0.tar.gz
Size 29.5 kB
Tags Source
SHA-256 checksum
How to use checksums
2528a80e37a3af725cd2f95206f819859864b0f3070b30fc61cea462d1aebcac
BLAKE2b-256 checksum
How to use checksums
21bc7057023230b2cf03010ee0c7fa655fca2fea5e64556395732e302d305e0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / mlops_dev-0.7.0-py3-none-any.whl

Download URL mlops_dev-0.7.0-py3-none-any.whl
Size 30.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
620aa4f3d379278bcb36cb83450dfce592fd55fc03cfeba42d2db185ea340edf
BLAKE2b-256 checksum
How to use checksums
1d86fb7fa8a54b79334fe8f715b46728f27463b9c4b2c6a174631ca40dba0951
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Security for mlops-dev 0.7.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.

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page