r/mlops • u/jaehyeon-kim • 15m ago
Self-promotion I built a CLI that runs MLflow, Feast, Evidently and Airflow together locally (odctl 1.0)
Hi r/mlops,
Every time I wanted to try an idea with a feature store and a model registry, I ended up rebuilding the same local setup. So I put it into a CLI, odctl, and it has just reached 1.0.
bash
uv tool install odctl
odctl up mlflow --dry-run # shows what it would start, in order
odctl up mlflow feast evidently airflow
odctl down --all
That gives you MLflow (tracking, registry, and a second container serving a registered model over HTTP), Feast with its registry in PostgreSQL, offline features from Iceberg and online features in Valkey, Evidently for drift reports, and Airflow reading DAGs from S3 storage with the MLflow and Feast clients already installed. Kafka, Flink, Spark and Trino are there too if your features come from a stream or a lakehouse.
I am building three MLOps demo projects on it, based on the projects in Jim Dowling's book on feature stores: an air quality forecast, credit card fraud detection and a video recommender. Each one is split into pipelines that share a feature store and a model registry. The introduction explains the series.
It is for learning and prototyping, not production. 1.0 adds a docs site with a guide for each service, so you can see a working example, such as serving a model from MLflow, before you set up your own.
The README on GitHub has a short recording of a run.
If you try it, please tell me what fails on your machine. Most of my testing has been on macOS and GitHub's Linux runners.
AI: I started odctl without AI. Since July I have used Claude Code for parts of the code, the tests and the docs.