
How I Rebuilt zenml.io in a Week with Claude Code
I rebuilt zenml.io — 2,224 pages, 20 CMS collections — from Webflow to Astro in a week using Claude Code and a multi-model AI workflow. Here's how.
Discover how ZenML offers a flexible, easy-to-use alternative to Metaflow for orchestrating your machine learning pipelines. While Metaflow provides a straightforward way to build and manage data science workflows, ZenML delivers a more comprehensive MLOps framework that seamlessly integrates with various tools and platforms. Compare ZenML's extensive workflow management capabilities and customization options against Metaflow's opinionated, standalone approach. Learn how ZenML can accelerate your ML initiatives with its adaptable architecture, collaborative features, and robust monitoring capabilities, while still maintaining the simplicity and usability you appreciate in Metaflow.
Feature-by-feature comparison
| MLOps Coverage | Comprehensive MLOps framework covering the entire ML lifecycle | Primarily focused on workflow management and pipeline orchestration |
| Customization | Highly customizable and extensible to fit specific ML workflow requirements | More opinionated and rigid workflow structure |
| Integration Flexibility | Seamlessly integrates with various ML tools, platforms, and infrastructure | Limited integration options beyond the Metaflow ecosystem |
| Collaboration | Enables collaboration through shared pipelines, version control, and experiment tracking | Lacks built-in collaboration features and relies on external tools |
| Scalability | Supports distributed computing and various compute backends for effortless scaling | Can handle large workloads providing you follow its recommended setup & hardware suggestions. |
| Monitoring | Provides robust monitoring, logging, and alerting features for production pipelines | Basic monitoring capabilities, requiring external tools for advanced monitoring |
| Ease of Use | Intuitive API and familiar Python syntax for defining pipelines | Simple and straightforward pipeline definition using Python decorators |
| Community | Growing community with active support and contributions | Established community and support from Netflix |
| Portability | Portable pipelines that can run across different environments and platforms | Pipelines are more tightly coupled to the execution environment |
| Deployment Options | Flexible deployment options, including serverless and containerized environments | Limited deployment options, primarily focused on AWS Batch |
Code comparison
from zenml import pipeline, step
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
@step
def ingest_data():
return pd.read_csv("data/dataset.csv")
@step
def train_model(df):
X, y = df.drop("target", axis=1), df["target"]
model = RandomForestRegressor(n_estimators=100)
model.fit(X, y)
return model
@step
def evaluate_model(model, df):
X, y = df.drop("target", axis=1), df["target"]
rmse = mean_squared_error(y, model.predict(X)) ** 0.5
print(f"RMSE: {rmse}")
@pipeline
def ml_pipeline():
df = ingest_data()
model = train_model(df)
evaluate_model(model, df)
ml_pipeline() from metaflow import FlowSpec, step, IncludeFile
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
class MLFlow(FlowSpec):
data = IncludeFile("dataset.csv")
@step
def start(self):
self.df = pd.read_csv(self.data.path)
self.next(self.train_model)
@step
def train_model(self):
X, y = self.df.drop("target", axis=1), self.df["target"]
self.model = RandomForestRegressor(n_estimators=100)
self.model.fit(X, y)
self.next(self.evaluate)
@step
def evaluate(self):
X, y = self.df.drop("target", axis=1), self.df["target"]
self.rmse = mean_squared_error(y, self.model.predict(X)) ** 0.5
self.next(self.end)
@step
def end(self):
print(f"RMSE: {self.rmse}")
if __name__ == "__main__":
MLFlow()
ZenML provides a complete MLOps solution, covering the entire ML lifecycle from experimentation to deployment and monitoring, while Metaflow primarily focuses on workflow management and pipeline orchestration.
ZenML's modular architecture allows for extensive customization and integration with your preferred tools and platforms, whereas Metaflow offers a more opinionated and rigid workflow structure.
ZenML enables collaboration among team members through shared pipelines, version control, and experiment tracking, while Metaflow lacks built-in collaboration features and relies on external tools.
With ZenML's support for distributed computing and various compute backends, you can scale your ML workflows effortlessly, whereas scaling in Metaflow requires manual configuration and is more limited in scope.
ZenML provides comprehensive monitoring, logging, and alerting features for production pipelines, ensuring their reliability and performance, while Metaflow offers basic monitoring capabilities and requires external tools for advanced monitoring.
Expand Your Knowledge

I rebuilt zenml.io — 2,224 pages, 20 CMS collections — from Webflow to Astro in a week using Claude Code and a multi-model AI workflow. Here's how.


Agentic RAG without guardrails spirals out of control. Here's how ZenML's dynamic pipelines give you fan-out, budget limits, and lineage without limiting the LLMs.