Self-hosted service
kubeflow/kubeflow avatar
kubeflow/kubeflow

kubeflow/kubeflow Is a Gateway Repo, Not an ML Platform You Install

Machine Learning Toolkit for Kubernetes

15,870 stars2,697 forksUnknownApache-2.0

At a glance

What is it?
The kubeflow/kubeflow repository holds project metadata and points at the subprojects where code actually lives. Anyone expecting a single installable stack from this clone will be disappointed, and that is the point of the split.
Who is it for?
Adopt the Kubeflow Community Distribution only if you have a platform team that can own a Kubernetes cluster and pick subprojects deliberately; if you want a single Python package to train a model on a laptop, this is the wrong layer and a plain PyTorch or scikit-learn install is faster.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 25 days ago.
What is it written in?
GitHub does not report a main language for this repository.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What the kubeflow/kubeflow repository actually contains

The README states the repository role in one sentence: it "serves primarily as a gateway to Kubeflow subprojects and shared project metadata." That is not modesty, it is a description of the directory you get after cloning. There is no training loop, no notebook server image and no pipeline controller in this tree. Development happens in the individual subproject repositories, and this one carries the shared metadata plus the landing page that routes you outward. The problem it solves is coordination and discoverability across a set of separately versioned Kubernetes-native tools. The people it is for are AI platform teams who need one entry point to a distributed set of components, not data scientists looking for a library. If you arrived here after reading that Kubeflow is a "Machine Learning Toolkit for Kubernetes" and expected a toolkit in the sense of an installed package, the first thing to internalise is that the toolkit is assembled from elsewhere and this repo is the map.

Subprojects, Ecosystem, Packaged Distribution, Community Distribution

The README splits the project into four named layers: Kubeflow Subprojects, Kubeflow Ecosystem, Kubeflow Packaged Distribution, and Kubeflow Community Distribution. The distinction matters when you are deciding what to install. A subproject is a single component with its own repository, release cycle and maintainers. The Ecosystem layer covers Kubernetes-native projects that are not maintained as Kubeflow subprojects but are documented as part of the wider picture. The Packaged Distribution is a curated bundle, and the Community Distribution is the full assembly that the README describes as "composable, modular, portable, and scalable." Those four words are doing real work: they tell you the intended consumption model is selection, not wholesale adoption. A platform team is expected to take each subproject independently or take the whole distribution, and the README explicitly frames both as valid. The trade-off is that composability pushes integration testing onto you. Nothing in this repository guarantees that an arbitrary combination of subproject versions works together, which is precisely why the Packaged Distribution exists as a separate concept.

The AI lifecycle framing and where this repo sits in it

The README links to an architecture page titled "Kubeflow landscape in the AI lifecycle" and claims the ecosystem covers "every stage" of that lifecycle. Treat that as a scope statement rather than a feature list: it describes the union of what the subprojects address, not what any single deployment gives you. Experiment tracking, pipeline orchestration, notebook environments and model serving are separate concerns with separate repositories and separate release cadences, and the fact that one landing page mentions all of them does not mean one install produces all of them. The practical consequence is that capacity planning for a Kubeflow deployment is really capacity planning for whichever subset you chose, plus the Kubernetes control plane underneath. Nothing in the supplied material gives resource figures, minimum node counts or supported Kubernetes version ranges, so those numbers have to come from the individual subproject documentation and from the release notes of the distribution you pick. I would not size a cluster from this repository alone.

Getting started means leaving this repository

There is no install command in the README. The only concrete pointer is a link to the official documentation at kubeflow.org, specifically the introduction and architecture pages under /docs/started/. That is the honest state of things: the getting-started path for this repository is a documentation path, not a shell path. The release list shows v1.10.0 dated 2025-03-25, v1.9.2 dated 2024-10-23, and a release tagged "redirect" dated 2026-04-29 whose label is "Kubeflow Projects Releases." A release literally named redirect is worth pausing on. It suggests the release mechanism here has been repurposed to point elsewhere rather than to ship artifacts from this tree, which is consistent with the gateway role. If you are scripting an install, do not expect to pin a manifest from kubeflow/kubeflow at v1.10.0 and get a working platform. Read the v1.10.0 release notes, then follow the installation instructions for the distribution or for the individual subproject you actually need. The homepage at kubeflow.org is the entry point, and the README treats it as the primary documentation surface.

Governance is the most concrete thing in the README

Where the README is specific, it is specific about people and process. Kubeflow is described as community-led and maintained by the Kubeflow Working Groups, under the guidance of three named bodies: the Kubeflow Outreach Committee, the Kubeflow Distribution Committee, and the Kubeflow Steering Committee. Each links to a numbered anchor on the governance page. For an organisation evaluating adoption, this is the section to read carefully, because it tells you where a change request goes and who decides what lands in the Community Distribution. The existence of a separate Distribution Committee is the structural answer to the composability problem: somebody has to decide what the bundle contains. The README also links to contributing guidance and to community channels, including Slack. What it does not provide is a support contract, an SLA, or a compatibility matrix. Community-led means exactly that, and the maintenance burden of keeping a multi-component deployment healthy sits with your platform team rather than with any vendor behind this repository.

Where this is the wrong tool, and what to use instead

If your workload is a single model trained on one machine, or a small team running notebooks with occasional batch jobs, the Kubernetes-native model is overhead you will pay for without return. The Community Distribution assumes you already run a cluster and have someone who can operate it. A simpler alternative in that situation is to skip orchestration entirely and use the framework directly: PyTorch or scikit-learn installed in a virtual environment, with cron or a workflow runner for scheduling. The difference in approach is not a matter of maturity, it is a matter of where state lives. Here, scheduling, isolation and resource limits are delegated to Kubernetes objects, and every component is a controller or an operator watching those objects. In a plain framework setup, the scheduler is your shell and the isolation boundary is the process. That is a real reduction in capability once you need multi-tenant quotas or reproducible multi-step pipelines, and a real reduction in operational surface when you do not. The topics list on this repository includes minikube and google-kubernetes-engine, which signals that local and managed cluster paths are both contemplated. Neither of those is a substitute for having a cluster to begin with.

Licence, upgrades and the cost of a moving target

The repository is Apache-2.0. That is a permissive licence and it permits commercial use and modification, but it is worth checking the licence of each subproject separately rather than assuming the whole distribution is uniform, because the components live in different repositories with their own files. This is not legal advice; if you are redistributing a modified distribution, have counsel review the notices you ship. On upgrades, the release cadence visible here is roughly one minor release per year at the distribution level, with patch releases in between: v1.9.2 in October 2024, v1.10.0 in March 2025. That is slow enough that you cannot rely on upstream to absorb Kubernetes API deprecations for you. Every cluster upgrade becomes a compatibility exercise across whichever subprojects you installed, and the gateway repository will not tell you which of them are ready. The maintenance cost is therefore front-loaded into your own test environment, and the honest way to budget for it is to treat each subproject as a dependency you own rather than a service you consume.

Editorial conclusion

Adopt the Kubeflow Community Distribution only if you have a platform team that can own a Kubernetes cluster and pick subprojects deliberately; if you want a single Python package to train a model on a laptop, this is the wrong layer and a plain PyTorch or scikit-learn install is faster. Before committing, open the v1.10.0 release notes and the architecture page, confirm which subprojects that version pins, and check whether the manifests you intend to apply are still maintained in their own repositories rather than in this one.

Official sources

  1. kubeflow/kubeflow on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes