MLflow
An open-source platform that records training runs, keeps a registry of versioned models with aliases, packages models for serving, and, since 2024, traces and evaluates LLM apps and agents.
Linux Foundation project- What it is
- Model serving and MLOps
- Used for
- Observability
- Type
- Open source
- Made by
- Linux Foundation (created by Databricks)
- Foundation
- The Linux Foundation. A series of LF Projects, LLC, since June 2020
- License
- Apache 2.0
- Facts checked
- 23 October 2026
What it is
MLflow started as a tracker for machine learning experiments, and that is still its core. Code wrapped in mlflow.start_run() logs parameters, metrics and files such as model weights, and mlflow.autolog() does it automatically for libraries such as scikit-learn, XGBoost, PyTorch, Keras and Spark. Runs are grouped into experiments and compared in a web UI. A tracking server sits in front of two stores: a backend store for metadata, which is a SQLite file, mlflow.db, unless you point it at PostgreSQL, MySQL or SQL Server, and an artifact store for large files, such as a local folder, Amazon S3 or Azure Blob Storage. The old file-based mlruns store is in maintenance mode.
A logged model is saved in MLflow’s own format, with “flavors” that say how to load it, for example as scikit-learn or as a generic Python function. The Model Registry, which needs a database-backed store, gives a model a name and numbered versions, plus tags and mutable aliases: code loads models:/churn@champion, and promoting a new version means moving the alias. mlflow models serve runs a model as a local REST server, mlflow models build-docker builds an image, and the same model can be deployed to Amazon SageMaker AI, Azure Machine Learning or Kubernetes.
Since version 2.14 (June 2024) and MLflow 3 (June 2025), much of the work has been for LLM apps and agents. Tracing records the inputs, outputs and metadata of every step, is OpenTelemetry-compatible, and is turned on with one line such as mlflow.openai.autolog(), with autologging for OpenAI, Anthropic, LangChain, LlamaIndex, DSPy, Pydantic AI and others. mlflow.genai.evaluate runs a dataset through your app and scores the answers with built-in or custom LLM judges. The Prompt Registry versions prompt templates with immutable versions and aliases, and the AI Gateway puts one OpenAI-compatible API in front of several model providers, with fallbacks, traffic splitting, budgets and guardrails. MLflow is a Linux Foundation project; Databricks, Amazon SageMaker AI and Azure Machine Learning offer it as a managed service. The latest release is 3.17.2, from October 2026.
Why teams pick it
- Works with almost any library and runs anywhere, from a laptop with SQLite to a shared server on PostgreSQL and S3, and the same client code talks to managed MLflow on Databricks, SageMaker AI or Azure Machine Learning
- A registry with aliases: clients load
models:/name@champion, so promotion and rollback are a pointer change, not a code change - One tool for classic models and LLM apps: experiment tracking, a model registry, OpenTelemetry-compatible tracing, LLM-judge evaluation and prompt versioning
- Apache 2.0 under the Linux Foundation, with a large contributor base and frequent releases
Watch out for
- A self-hosted server is yours to secure and run: authentication and role-based permissions must be configured, and database schema upgrades need all writers stopped, since mixed-version rolling upgrades are not supported
- It records and packages models but doesn’t scale them:
mlflow models serveis a single server, and production serving is left to SageMaker AI, Azure Machine Learning, Kubernetes or a serving framework - The feature set has grown fast and moved toward GenAI, and some features first appear on Databricks: MLflow 3’s new evaluation suite was Databricks-only at launch
- Older models saved as pickles can run code when loaded; recent releases add
MLFLOW_ALLOW_PICKLE_DESERIALIZATIONguards to more flavors, so load only models you trust
Alternatives
What all model serving and mlops have in common →Compare side by side →How it fits with other technologies
Track a run, register a model, load it by alias, and trace LLM calls · python
import mlflow
mlflow.set_tracking_uri("http://localhost:5000") # started with `uvx mlflow server`
mlflow.set_experiment("churn")
with mlflow.start_run():
mlflow.log_param("max_depth", 6)
mlflow.log_metric("val_auc", 0.91)
mlflow.sklearn.log_model(sk_model=model, name="model",
registered_model_name="churn") # -> version N
client = mlflow.MlflowClient()
client.set_registered_model_alias("churn", "champion", "3")
model = mlflow.pyfunc.load_model("models:/churn@champion")
mlflow.openai.autolog() # every OpenAI call becomes a trace: inputs, outputs, tokensSee it in a real stack
No architecture uses MLflow yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2018–2026
Matei Zaharia and Cyrielle Simeone of Databricks announced MLflow on June 5, 2018. The post named four problems: there were countless ML tools, experiments were hard to track, results were hard to reproduce, and there was no standard way to deploy a model. The alpha had three parts: Tracking for parameters, metrics and files, Projects for packaging code with an MLproject file, and Models, a format with several “flavors” so different deployment tools could load the same model.
MLflow 1.4 added a Model Registry in beta in October 2019. On June 25, 2020 Databricks moved the project to the Linux Foundation, which counted more than 200 contributors and over 2 million downloads a month, to give it a vendor-neutral home. Cloud platforms adopted its API: Azure Machine Learning workspaces act as MLflow tracking servers, and SageMaker AI hosts managed MLflow.
With large language models the focus moved to apps and agents. MLflow 2.14 added tracing in June 2024. MLflow 3, on June 11, 2025, made the logged model a first-class object rather than a file attached to a run, and added GenAI evaluation, prompt optimization and more tracing integrations. By 2026 the project described itself as an “AI engineering platform for agents, LLMs, and ML models”, with an AI Gateway and an Agent Server next to the original tracking and registry.
Why it’s built this way
- Open interfaces instead of a closed platform
- Teams try many ML libraries and deploy to many places, so a platform tied to one set of tools doesn’t fit. MLflow was designed to work “with any ML library, algorithm, deployment tool or language”, through REST APIs and simple file formats.
- Flavors: one model, several ways to load it
- A model saved once should be usable by many tools. Each flavor records how to load it, and the generic Python function flavor lets any MLflow model be served the same way.
- Aliases instead of fixed stages
- Early registries moved versions through fixed stages such as Staging and Production. Named, mutable aliases such as
championlet teams define their own steps and point clients at a role rather than a version number. - Tracing built on OpenTelemetry
- LLM apps are chains of model calls, retrievals and tool calls, and teams already had tracing systems. Following OpenTelemetry and its GenAI conventions lets MLflow exchange traces with other observability tools.
Timeline
- 2018
Databricks announces MLflow in alpha (June 5)
- 2019
Model Registry in beta in MLflow 1.4 (October)
- 2020
MLflow joins the Linux Foundation (June 25)
- 2022
MLflow 2.0 (November)
- 2024
MLflow Tracing in 2.14 (June)
- 2025
MLflow 3: logged models, GenAI evaluation, prompt optimization (June 11)
- 2026
MLflow 3.17 (October)
- Databricks blog: Introducing MLflow (June 5, 2018)
- GitHub: MLflow 1.4.0 release notes (Model Registry beta, Oct 2019)
- Linux Foundation: The MLflow Project Joins Linux Foundation (June 25, 2020)
- GitHub: MLflow 2.0.1 release notes (Nov 2022)
- GitHub: MLflow 2.14.0 release notes (MLflow Tracing, June 2024)
- MLflow: MLflow 3 release (June 11, 2025)
- GitHub: mlflow/mlflow README (AI engineering platform, features)
Sources15 · facts checked 23 October 2026
- GitHub: mlflow/mlflow README (features, quick start, Apache 2.0)
- MLflow: homepage (feature areas, Linux Foundation)
- MLflow docs: Tracking (runs, autolog, tracking server, stores)
- MLflow docs: Backend stores (SQLite default, file store in maintenance mode, supported databases)
- MLflow docs: Model Registry (versions, aliases, tags)
- MLflow docs: Model Registry tutorial (log_model, set_registered_model_alias)
- MLflow docs: Deployment (models serve, build-docker, SageMaker, Azure ML)
- MLflow docs: Tracing (OpenTelemetry, autolog integrations)
- MLflow docs: Evaluation and monitoring (mlflow.genai.evaluate, LLM judges)
- MLflow docs: Prompt Registry (immutable versions, aliases)
- MLflow docs: AI Gateway (providers, fallbacks, traffic splitting, budgets, guardrails)
- GitHub: MLflow 3.17.0 release notes (permissions, database upgrade, pickle guard)
- GitHub: MLflow 3.17.2 release (Oct 21, 2026)
- AWS docs: Managed MLflow on SageMaker AI
- Microsoft Learn: MLflow and Azure Machine Learning