# Zenml

> ZenML — ML pipeline orchestration. Connect ML tools (MLflow, W&B, Airflow, Kubeflow) into portable pipelines. Caching, versioning, and cloud-agnostic stack management for production ML workflows.

- Skill: `mkurman/zenml` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mkurman/zenml`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mkurman/zenml/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: mkurman (https://skillmd.com/u/mkurman)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mkurman/zenml

---

## Overview

ZenML is an MLOps framework for portable, reproducible ML pipelines. It provides a standardized pipeline abstraction with built-in tracking, caching, artifact management, and integration with major ML and cloud tools.

## Installation

```bash
uv pip install zenml
```

## Basic Pipeline

```python
from zenml import pipeline, step

@step
def load_data() -> dict:
    return {"data": [1, 2, 3], "labels": [0, 1, 0]}

@step
def train_model(data: dict) -> str:
    return f"Trained on {len(data['data'])} samples"

@pipeline
def training_pipeline():
    data = load_data()
    model = train_model(data)

training_pipeline()
```

## Caching

```python
# Steps are automatically cached — rerunning only changes
@step(enable_cache=True)
def preprocess(raw: dict) -> dict:
    return {"features": [x * 2 for x in raw["data"]]}

# Changing parameters invalidates cache
@step
def train_with_params(data: dict, lr: float = 0.01) -> str:
    return f"Trained with lr={lr}"
```

## Stack and Deploy

```bash
zenml stack register my_stack -o default -a default
zenml stack set my_stack
zenml deploy
```

## References
- [ZenML docs](https://docs.zenml.io/)
- [ZenML GitHub](https://github.com/zenml-io/zenml)
