Skip to content
This repository has been archived by the owner on Jan 14, 2020. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

WARNING: Photon Controller is no longer actively maintained by VMware.

VMware has made the difficult decision to stop driving this project and therefore we will no longer actively respond to issues or pull requests. If you would like to take over maintaining this project independently from VMware, please let us know so we can add a link to your forked project here.

The Photon OS project will proceed in fully supported and maintained form.

Thank You.

Photon Controller

Photon Controller is an open-source system for managing hardware, containers, and clusters at scale.

Photon Controller is designed to support:

  • High Scale: Manage tens of thousands of compute nodes in one deployment.
  • High Churn: Handle thousands of concurrent API requests.
  • Multiple Tenants: Allocate and manage resources for many users and groups in a single deployment.
  • Container Frameworks: Easily spin up instances of Kubernetes, Mesos, and Docker Swarm in seconds.


If you'd like to become a part of the Photon Controller community, here are some ways to connect:

If you're looking to play with the code, keep reading.


The product is arranged in a single repository, with subdirectories arranged by language. See the individual READMEs for instructions on building the code.

  • Devbox: Devbox uses Vagrant to create a small standalone deployment of Photon Controller for test purposes.
  • Java: Most of the Photon Controller management plane is written in Java, with many individual services implemented on top of the Xenon framework.
  • Python: The ESX agent and its test and analysis collateral are implemented in Python.
  • Ruby: The Photon Controller CLI is implemented in Ruby, as are the integration tests for the product.
    • Note: The Ruby CLI will soon be replaced with a Golang version.
  • Thrift: Photon Controller uses Apache Thrift for RPC communication between the management plane and the agent.


If you'd like to make changes to Photon Controller, you can submit pull requests on GitHub.

If you have not signed our contributor license agreement (CLA), our bot will update the issue when you open a Pull Request. For any questions about the CLA process, please refer to our FAQ.

All pull requests satisfy the following criteria:

  1. Pass unit tests according to the instructions in the appropriate language-specific README file.
  2. Pass integration tests according to the instructions for Devbox.

We will run any changes through our own validation process which ensures that both conditions are met, but it's in everyone's interest if you take care of this on your own first.

Thanks, and enjoy!