Official repository of VMware open-vm-tools project – GitHub

What is the open-vm-tools project?

open-vm-tools is a set of services and modules that enable various features in VMware products for better management and seamless user interactions with guests. It includes kernel modules to improve the performance of virtual machines running Linux or other Unix guest operating systems supported by VMware.

open-vm-tools enables the following features in VMware products:

The ability

  • to perform virtual machine power operations successfully
  • .

  • Execution of user-provided or user-configured scripts on guests during various
  • power operations.

  • The ability to run programs, commands, and file system operations on guests to improve guest automation
  • .

  • Authentication for guest operations.
  • Periodic collection of guest memory, disk, and network usage information.
  • Generation of heartbeats from guests

  • to hosts so that VMware’s high availability solution can determine guest availability
  • .

  • Clock synchronization between guests and client hosts or desktops.
  • Quiescent guest file systems to allow hosts to capture filesystem-consistent guest snapshots
  • .

  • Execution of pre-freeze and post-thaw scripts while idling guest file
  • systems.

  • The ability to customize guest operating systems immediately after powering on virtual machines.
  • Enabling shared folders between host and guest file systems in VMware Workstation and VMware Fusion.
  • Copy and paste text, graphics, and files between guests and client hosts or desktops.

Can you provide more details about the actual code being released?

The following components have been released as open source software:

  • Linux, Solaris, and FreeBSD drivers for various devices and file system access
  • . The memory balloon controller to

  • retrieve memory from guests
  • . The

  • PowerOps plug-in to perform a successful power operation and run power scripts.
  • The

  • VIX plugin for running programs and commands, and performing file system operations on guests
  • . The

  • GuestInfo plugin to periodically collect various guest statistics
  • . The

  • TimeSync plug-in to perform time synchronization
  • .

  • The dndcp plugin to support drag and drop operations, and copy/paste text and files.
  • The ResolutionSet plug-in to automatically adjust guest screen resolutions based on the size of the windows.
  • The guest authentication service.
  • The toolbox command for performing disk erasure and shrinkage, managing power scripts, and time synchronization.
  • Guest SDK libraries to provide information about virtual machines to guests.
  • Client and server support for shared folders.
  • Support for multiple monitors.
  • The GTK Toolbox user interface.

Is Open-vm-tools available

with Linux distributions?

yes. Open-vm-tools packages for userspace components are available with new versions of major Linux distributions and are installed as part of the operating system installation in several cases. See the VMware KB article for more information. All major Linux vendors support open vm tools and bundle them with their products. For information about operating system support for open-vm-tools, see the VMware Compatibility Guide at Automatic installation of open-vm-tools along with operating system installation eliminates the need to separately install open-vm-tools on guests. If open-vm-tools is not installed automatically, you may be able to install it manually from the guest operating system vendor’s public repository. Installing open-vm-tools from the Linux vendor repository reduces virtual machine downtime because future open-vm-tools updates are included with operating system patches and maintenance updates. NOTE: Most Linux distributions ship two or more open-vm-tools packages. “open-vm-tools” is the core package with no dependencies on the X libraries and “open-vm-tools-desktop” is an add-on package with dependencies on the main “open-vm-tools” package and the X libraries. The “open-vm-tools-sdmp” package contains a plug-in for Service Discovery. There may be additional packages, see the documentation of the operating system vendor. Note that the open-vm-tools packages available with Linux distributions do not include Linux drivers because Linux drivers are available as part of the Linux kernel itself. Linux kernel versions 3.10 and later include all Linux drivers present in open-vm-tools except the vmhgfs driver. The vmhgfs driver was required to enable the shared folders feature, but is replaced by vmhgfs-fuse which does not require a kernel driver.

Will there be continued support for VMware Tools and OSPs?

VMware Tools will continue to be available under a commercial license. It is recommended that you use open-vm-tools for Linux distributions where open-vm-tools is available. VMware will not provide OSPs for operating systems where open-vm-tools are available.

How does this benefit other open source projects?

Under the terms of the

GPL, members of the open source community can use the open vm tools code to develop their own applications, extend it, and contribute to the community. They can also incorporate some or all of the code into their projects, as long as they comply with the terms of the GPL.

Under what license is the code published?

The code is released under GPL v2 and GPL v2 compatible licenses. To be more specific, Linux kernel modules are being released under the GPL v2, while almost all user-level components are being released under the LGPL v2.1. SVGA and mouse drivers have been available under the X11 license for quite some time. There are certain third-party components released under BSD-style licenses, to which VMware has contributed in some cases, and will continue to distribute with open vm tools.

Why did you choose these licenses?

We chose GPL v2 so that the kernel components were consistent with the Linux kernel license. We chose LGPL v2.1 for user-level components because some code is implemented as shared libraries and we don’t want to restrict linking proprietary code to those libraries. For consistency, we decided to license the rest of the user-level code under the LGPL v2.1 as well.

What are the obligations imposed by the license(s)?

Each of these licenses has different obligations. For questions about the GPL and LGPL licenses, the Free Software Foundation’s GPL FAQ page provides a lot of useful information. For questions about the other licenses such as X11, BSD licenses, the Open Source Initiative has numerous helpful resources, including mailing lists. The Software Freedom Law Center provides legal expertise and consulting for free and open source software (FOSS) developers.

Can I use all or part of this code in my proprietary software? Do I have to release the source code if I do?

Different open source licenses have different requirements regarding the release of source code. Since the code is released under various open source licenses, you will need to comply with the terms of the corresponding licenses.

Do I have to contribute to any changes I make to the code?

No, you do not need to contribute changes you make to the open-vm-tools project. However, we encourage you to do so.

Can I use all or part of this code in another open source package?

Yes, as long as you comply with the appropriate license(s).

Can I package this for my favorite operating system?

yes! Please do.

Will the commercial version (

VMware Tools) differ from the open source version (open-vm-tools)? If so, how?

Our goal is to work to make the open source version as close to the commercial version as possible. However, we currently use certain third-party licensed components, as well as components from other VMware products that are only available in binary form.

If I use the open-vm-tools project code in my project/product, can I call my project/product VMware Tools?

No, as your project/product is not a VMware project/product.

How do I build open-vm-tools?

open-vm-tools uses the GNU Automake tool to generate Makefiles to build all fonts. You can find more information about Automake here:

Project build information


The following steps will work on the latest Linux distributions

: Service Discovery

Plug-in (sdmp


To create the optional sdmp (Service Discovery) plug-in, use the -enable-servicediscovery option to invoke the

configuration script:

Open-vm-tools version 12.0.0 introduces an optional configuration script and two plugins (one

optional) Salt Minion Configuration

  • Component Manager
  • plug-in

  • ContainerInfo plugin (optional)

Salt Minion Configuration Salt support on Linux consists of a single bash script to configure

Salt Minion

in VMware virtual machines. The script requires that the “curl” and “awk” commands be available on the system.

Linux vendors that supply open-vm-tools packages are recommended to provide support for Salt Minion in a separate optional package: “open-vm-tools-salt-minion”.

To include the Salt Minion configuration in the open-vm-tools build, use the -enable-salt-minion option when invoking the configure script.

Component Manager snap-in


The Component Manager manages a preconfigured set of components available in VMware that may be available in the Linux guest. Currently, the only component that can be managed is the Salt Minion configuration.

ContainerInfo plugin (containerInfo)

The optional containerInfo plugin retrieves a list of containers running on a Linux guest and publishes the list to the guest variable “guestinfo.vmtools.containerinfo” in JSON format. The containerInfo plugin communicates with the containerized daemon using gRPC to retrieve the desired information. For Docker-managed containers, the plugin uses libcurl to communicate with the Docker daemon and get the container names.

Since this plugin requires additional build and runtime dependencies, Linux vendors are recommended to publish it in a separate optional package: “open-vm-tools-containerinfo”. This avoids unnecessary dependencies for clients who do not use the feature.

Canonical, Debian, Ubuntu Linux

Build Dependencies Runtime libcurl4-openssl-dev curl protobuf-compiler protobuf libprotobuf-dev grpc++ protobuf-compiler-grpc libgrpc++-dev golang-github-containerd-containerd-dev golang-github-gogo-protobuf-dev

Fedora, Red Hat Enterprise Linux, …

Build Dependencies Runtime libcurl-devel curl protobuf-compiler protobuf protobuf-devel grpc-cpp grpc-plugins grpc-devel containerd-devel

Build configuration for the

ContainerInfo plugin

The configure script compiles ContainerInfo by default when all required dependencies are available. ContainerInfo will not compile if dependencies are missing. Invoke the configure script with -enable-containerinfo=no to explicitly inhibit plugin creation.

If the configure script

is given the -enable-containerinfo=yes option and any required dependencies are not available, the configure script will end with an error.


configuration options and


If you are looking for help or additional options for creating this project, the following configure command will display a list of help options

: When using configure in the

previous steps, you only need to call ./configure once, unless there is a problem after the first invocation.

How can I participate today?

You can get involved today in several different ways:

  • Start using open-vm-tools today and give us feedback

  • .

  • Suggest feature improvements

  • .

  • Identify and submit errors in the issues section:

  • Start porting the code to other operating systems. Here is the list of operating systems with open-vm-tools:

    Red Hat Enterprise Linux 7.0 and later SUSE Linux Enterprise 12 and later Ubuntu 14.04 and later CentOS 7 and later Debian 7.x and later Oracle Linux 7 and later

    • Fedora 19
    • and later

    • openSUSE 11.x
    • and later
    • Flatcar Container Linux, all
    • versions Rocky 8 and later

    • AlmaLinux OS 8 and later
    • Will

external developers be allowed to become committers of the project?

Yes. Initially, VMware engineers will be the only committers. As we implement our development infrastructure, we will also look to add external committers to the project.

How can I submit code changes such as bug fixes, patches, new features to the project?

Initially, you can send bug fixes, patches, and new features to the project development mailing list as email attachments or bug reports. To contribute the source code, you will need to complete a contribution agreement form as part of the submission process. We will have more details on this process shortly.

What is the governance model for managing this as an open source project?

VMware will continue to define the roadmap and feature schedules for the open-vm-tools project. Initially, VMware engineers will be the only approved committers. We will review incoming submissions to determine their suitability to merge with the project. We will seek to add community committers to the project based on their demonstrated contributions to the project. Finally, we also plan to establish a process for improvement proposals, establish sub-projects, etc.

Will you submit code that contributes to VMware products? If so, will I get credit for my contributions?

Contributions accepted in the main source tree of the open-vm-tools project will likely be part of VMware Tools. We also recognize the value of attribution and value your contributions. Accordingly, we will recognize community contributions that are distributed with VMware products.

Do I need to sign anything before making a contribution?

yes. We have a standard contribution agreement that covers all contributions made to the project. It gives VMware and you joint copyright interests in the code you are contributing. The agreement also gives VMware flexibility with licensing and also helps avoid any copyright/licensing issues that may arise in the future. In order for us to include your contribution in our source tree, we ask that you send us a signed copy of the agreement. You can do this in one of two ways: Fax to +1.650.427.5003, Attn: Product & Technology Law Group Scan and email it to Agreement:

My Linux version is not recognized. How do I add my Linux name to the known list?

The open-vm-tools source contains a table that maps the name of the guest distribution to the officially recognized short name. Do not send pull requests that alter this table and associated code. Any changes here must be accompanied by additional changes to the VMware host. Values that are not recognized by the VMware host will be ignored.

Use the appropriate generic Linux designation when configuring a virtual machine for your version of Linux. The available selection will vary depending on the version of virtual hardware being used.

Other 5.x or later Linux (64-bit) Other 5.x or later Linux (32-bit) Other 4.x Linux (64-bit) Other 4.x Linux (32-bit) Other 3.x Linux (64-bit) Other 3.x Linux (32-bit) Other Linux (

  • 64-bit
  • )

  • Other Linux (32-bit
  • )
  • What

operating systems support


The Guest OS customization support matrix provides details about the guest operating systems supported for customization.

What versions of open-vm-tools are compatible with other VMware products?

The VMware Product Interoperability Matrix provides details about the compatibility of different versions of VMware Tools (including open vm tools) and other VMware products.

What languages are supported?

Open-VM-Tools supports the following languages


  • English
  • French
  • German Spanish Italian
  • Japanese
  • Korean
  • Simplified Chinese Traditional
  • Chinese



Please send an email to one of these mailing lists based on the nature of your question.

  • Development-related questions :
  • Miscellaneous questions:
  • General project announcements:

Contact US