Self-hosted service
microsoft/pai avatar
microsoft/pai

OpenPAI: Microsoft's On-Premises AI Cluster Manager, Now in Read-Only Mode

Resource scheduling and cluster management for AI

2,690 stars554 forksJavaScriptMIT

At a glance

What is it?
OpenPAI is a full-stack resource scheduler and cluster manager for shared GPU and FPGA hardware, built on Kubernetes. Its README states that after v1.8.1 the project entered stable mode with no major feature release planned, and the repository was set to read-only, so the decision to adopt it is really a decision about operating a frozen platform.
Who is it for?
Adopt OpenPAI if you run on-premises GPU or FPGA hardware that several teams must share, you want job orchestration, storage and monitoring in one stack, and you are willing to own a codebase that the README says is in stable mode with no major feature release planned. Do not adopt it if you need a scheduler that tracks new Kubernetes releases, new accelerator types, or new training frameworks as they ship, because the repository is read-only and v1.8.0 dates from July 2021.
Can I use it commercially?
Yes. MIT 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 8 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

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 OpenPAI is for: sharing an accelerator farm across teams

The README lists four situations where the project is meant to apply. An organization needs to share powerful AI computing resources, described as a GPU or FPGA farm, among teams. It needs to share and reuse common AI assets such as models, data and environments. It needs an IT operations platform for AI work. Or it wants to run a complete training pipeline in one place. Those four cases describe a specific buyer: the operator of a physical cluster, not an individual data scientist and not a team that already rents capacity from a cloud provider. The README also states that OpenPAI supports on-premises, hybrid and public cloud deployment, and that it supports single-box deployment, so the intended range runs from one machine under a desk to a multi-tenant installation. The architecture diagram in the README places the platform above a Kubernetes cluster and below a web portal, a VS Code extension, an SDK and an HTTP API, which is a fair summary of the product: a management layer that sits between raw Kubernetes and the people who want to submit training jobs.

The architecture the README draws: FrameworkController, HiveD, and a runtime layer

The component diagram is the most informative part of the repository front page. Four named projects sit inside OpenPAI. Job orchestration is handled by microsoft/frameworkcontroller. Job scheduling is handled by microsoft/hivedscheduler. Job runtime comes from microsoft/openpai-runtime. Job error analysis is drawn as a separate box without a linked repository in the README. Around those, the diagram shows user authentication, user and group management, storage management, and cluster and job monitoring as platform services, with a web portal, a VS Code extension and an SDK as the client surfaces. The data flow implied by that layout is conventional for a Kubernetes-based batch system: a user submits a job through the portal, the API or the SDK, the request reaches the orchestration layer, the gang scheduler places the pods, and the runtime container handles the environment inside each pod. Splitting orchestration from scheduling is the interesting choice. FrameworkController deals with the lifecycle of a job as a unit, while HiveD is described in the README only as job scheduling, with no further detail on its topology or gang semantics. That separation is what allows the platform to treat a distributed training job as one schedulable object rather than as a set of independent pods, but the README does not document the mechanism, and the linked repositories are where you would have to read to understand it.

Deployment: what the README actually gives you

The README splits its getting-started section into two audiences, cluster administrators and cluster users, which matches how the product is sold: somebody installs and operates it, and somebody else consumes it. Beyond that split, the front page does not print the installation commands. It points to https://openpai.readthedocs.io, and the deployment detail lives there rather than in the repository root. This is worth stating plainly because it changes the evaluation process. You cannot judge the installation experience from the README alone; you have to open the readthedocs site and follow the administrator path. What the README does confirm is the deployment target: Kubernetes cluster management is drawn as a layer directly beneath the OpenPAI services, and CPU, GPU, FPGA and InfiniBand are drawn beneath that. So the prerequisite is a working Kubernetes cluster with the hardware you intend to share, and OpenPAI is the layer you add on top. The README also advertises a marketplace repository, microsoft/openpaimarketplace, as part of the ecosystem, which is where reusable assets such as models and environments are meant to be published and consumed.

The limitation that dominates every other consideration

The README carries a notice that changes how the project should be evaluated. After the release of v1.8.1, it says, OpenPAI has entered stable mode with no major feature release planned, and to save maintenance efforts the repository was changed to read-only mode, with collaboration directed to the repository admin. The release list supplied with the repository ends at v1.8.0 from July 2021, which is consistent with that notice: the last tagged release predates the stable-mode announcement. The practical consequence is that the platform is frozen. New Kubernetes API versions, new accelerator models, new distributed training frameworks and new Python or CUDA base images will not be absorbed upstream. In a cluster manager this matters more than in a library, because the components it depends on, Kubernetes itself above all, keep moving. A frozen scheduler is not automatically a broken one, and the README's claim that the design has a track record in Microsoft's production environment suggests the core is not experimental. But any operator adopting it is adopting the maintenance burden as well, and the README offers no upgrade path beyond the documentation site.

Where a plain Kubernetes setup is the better answer

The honest alternative for many readers is not another AI platform but Kubernetes with a batch scheduler bolted on. The difference in approach is a matter of scope. OpenPAI is a full stack: it ships authentication, user and group management, storage management, monitoring, a web portal, an SDK and a VS Code extension alongside the scheduler. A team that already has an identity provider, an object store and a monitoring stack has already built most of that, and adding OpenPAI means running a second set of services that overlap with what exists. The reverse trade-off is also real. Assembling the same capability from Kubernetes primitives means writing the job abstraction, the gang scheduling policy and the user-facing submission path yourself, and those are exactly the pieces the README points at FrameworkController and HiveD to provide. The choice is between operating a frozen integrated stack and maintaining a smaller set of components you control. Neither is obviously correct, and the deciding factor is usually whether the cluster is shared by many teams with different levels of Kubernetes knowledge. If it is, the portal and the SDK have value. If it is one team of engineers, they will probably prefer kubectl.

Licence, maintenance cost and what read-only means in practice

The repository is MIT licensed, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are preserved. That is a permissive licence, and it means the read-only status is not a legal barrier: you can fork the project, patch it and run your fork internally. It is a practical barrier instead. The cost of running OpenPAI is not the licence fee, it is the engineering time to keep a multi-service platform working against a Kubernetes cluster that receives security updates. Every Kubernetes upgrade is a compatibility question for FrameworkController, HiveD and the OpenPAI services, and after v1.8.1 there is no upstream release to move to. The README directs collaboration requests to the repository admin, which suggests the maintainers remain reachable but are not committing to feature work. Budget for at least one engineer who can read the JavaScript services and the Go components and apply patches, or accept that the cluster will lag behind Kubernetes releases. This is not legal advice; check the MIT terms and your own compliance requirements before forking.

Verifying fitness before you commit hardware

Because the README defers installation to the documentation site and the repository is read-only, the evaluation sequence should start with compatibility rather than features. Confirm which Kubernetes versions the v1.8.0 release notes and the readthedocs administrator guide claim to support, then compare that against the version your cluster runs or the version you are willing to pin. Check whether the accelerator models in your farm appear anywhere in the documentation, since the README names GPU, FPGA and InfiniBand as supported categories without listing specific hardware. Read the FrameworkController and HiveD repositories directly, because the README describes them only as orchestration and scheduling and does not document their APIs, and those APIs are what your job submission path will depend on. Finally, decide in advance who owns the fork. If no one does, the platform will drift out of step with the cluster underneath it, and that drift, not any missing feature, is what ends these installations.

Editorial conclusion

Adopt OpenPAI if you run on-premises GPU or FPGA hardware that several teams must share, you want job orchestration, storage and monitoring in one stack, and you are willing to own a codebase that the README says is in stable mode with no major feature release planned. Do not adopt it if you need a scheduler that tracks new Kubernetes releases, new accelerator types, or new training frameworks as they ship, because the repository is read-only and v1.8.0 dates from July 2021. Before committing, verify three things: that the deployment path in the quick-start guide still works against your Kubernetes version, that the frameworkcontroller and hivedscheduler components are at versions your cluster supports, and that you have engineers who can patch the JavaScript services themselves, since upstream will not.

Official sources

  1. License: MIT
  2. microsoft/pai on GitHub
  3. Project website
  4. README
  5. Releases
Community notes

Community notes