Uber just open sourced Michelangelo, the ML platform that has been running 5,000 plus production models and 30 million predictions per second since 2016. The announcement came during a keynote at KubeCon NA 2026 in Salt Lake City on November 11. If you have been stitching together MLflow, Kubeflow, and a custom serving layer to run ML in production, you now have a credible alternative that was tested at a scale most teams will never reach.
What Was Released
The open source release includes the core platform: the Uniflow pipeline framework, API server, controller, local sandbox, and CLI. There is also MA Studio, a no-code UI for standard ML workflows. You can run the whole thing on a laptop or deploy it to any existing Kubernetes cluster via Helm.
Uniflow is the centrepiece. It lets you define ML workflows with plain Python and two decorators. Michelangelo handles distributed execution, data passing between tasks, and result caching. Task code runs in containers on Kubernetes using Ray or Spark clusters. Experiment tracking is pluggable: MLflow or Comet both work out of the box.
The Scale Numbers Are Real
Uber has been running Michelangelo internally since 2016. The numbers are not benchmark theatre:
- 25,000 plus model trainings per month
- 5,300 models in production simultaneously
- 30 million predictions per second (peak: 45 million)
- P95 latency of 5-10 milliseconds at 1 million queries per second
- Use cases: Uber Eats recommendations, ETAs, surge pricing, fraud detection, self-driving car pipelines
When a platform has been absorbing that load for nearly a decade without being replaced, you can safely assume the architecture decisions are sound.
Getting Started in 30 Minutes
Prerequisites: Docker, kubectl, k3d, Helm, Python 3.11 or 3.12, and Poetry. macOS users on Colima need to allocate enough resources first, then clone, install, and launch the sandbox. The first run takes 30 to 60 minutes due to image pulls; subsequent recreations take 5 to 10 minutes. Once the sandbox is up, the UI is at localhost port 8090. The docs include 12 example projects covering XGBoost, BERT, GPT fine-tuning, and batch inference.
What You Get Beyond Pipelines
Michelangelo is not just a pipeline runner. The full release includes:
- Palette feature store: 20,000 plus features, dual-store lambda architecture for offline training and low-latency online serving
- Model Registry: versioning, lineage, canary releases, traffic splitting, automatic rollback
- Serving layer: online inference via NVIDIA Triton plus batch predictions; Horovod handles distributed training across TensorFlow and PyTorch
- Monitoring: drift detection, alerting, observability baked in
Stop Stitching Your ML Stack Together
The honest pitch for Michelangelo is this: most engineering teams running ML in production have a fragmented toolchain. MLflow for experiment tracking, Kubeflow for orchestration, a custom REST wrapper around their models, and a monitoring setup that is perpetually a sprint away from being good. Each piece works, but integration debt compounds over time.
Michelangelo replaces all of that with one platform that has already proven it can handle production load. MLflow is tracking-only. Kubeflow requires a running cluster even when no jobs are running, which gets expensive. Metaflow gives you pipelines but no serving. Michelangelo covers the entire lifecycle in a single system.
The catch, as always with battle-tested internal platforms, is that this was built for Uber infrastructure patterns. How well it fits your stack depends on how Kubernetes-native your existing setup already is. That is worth evaluating before you start a migration.
The GitHub repo is at github.com/michelangelo-ai/michelangelo. Start with the sandbox setup guide and run ma sandbox create to get a full ML platform running locally in under an hour.

