Installing COT

System requirements

  • COT requires either Python 2.7 or Python 3.3 or later.
  • COT is tested to work under Mac OS X and Ubuntu Linux and similar distros.
  • COT now has limited support for CentOS and related distros as well.

Installing COT using pip

Since COT is written in Python, it can be installed like any other Python package using the pip tool. For most users this is the recommended installation method.

sudo pip install cot

or, to install for the current user only (typically installing to ~/.local/):

pip install --user cot

If you have already installed COT and wish to update to the latest available version:

sudo pip install --upgrade cot


pip install --user --upgrade cot

Installing optional features

COT has a number of optional Python package dependencies that enable optional features. If you want to use these features, you can instruct pip to install them as part of the COT installation process, or you can install them separately after the fact.

  • Tab-completion of COT CLI parameters in bash, enabled with the argcomplete package.

    sudo pip install cot[tab-completion]


    sudo pip install argcomplete


    After installing argcomplete by either method, you must configure your bash environment to enable it. Refer to the argcomplete documentation for the required steps.

Installing COT from source

If you wish to install bleeding-edge unreleased code or make code contributions of your own, you can install COT from source as described below.

Downloading COT

You can download COT via Git or using HTTP.

git clone git://
cd cot


wget -O cot.tgz
tar zxf cot.tgz
cd cot-master


curl -o cot.tgz
tar zxf cot.tgz
cd cot-master

Install the COT libraries and script

sudo python install


"ValueError: Expected version spec"

If you get an error like

ValueError: ('Expected version spec in', 'enum34; python_version < "3.4"', 'at', '; python_version < "3.4"')

then you may need to update your version of pip and/or setuptools:

sudo pip install --upgrade pip setuptools

Installing helper programs

Certain COT features require helper programs - you can install these as part of the COT installation process, or they can be installed as-needed by COT:

  • COT uses qemu-img as a helper program for various operations involving the creation, inspection, and modification of hard disk image files packaged in an OVF.
  • The cot add-disk command requires either qemu-img (version 2.1 or later) or vmdktool as a helper program when adding hard disks to an OVF.
  • The cot inject-config command requires mkisofs (or its fork genisoimage) and/or xorriso to create ISO (CD-ROM) images for platforms that use ISOs to package the configuration.
  • Similarly, for platforms using hard disks for bootstrap configuration, cot inject-config requires fatdisk to format hard disk images.
  • The cot deploy ... esxi command requires ovftool to communicate with an ESXi server. If ovftool is installed, COT's automated unit tests will also make use of ovftool to perform additional verification that OVFs and OVAs created by COT align with VMware's expectations for these file types.

COT can attempt to install these tools using the appropriate package manager for your platform (i.e., MacPorts for Mac OS X, and either apt-get or yum for Linux).


Unfortunately, VMware requires a site login to download ovftool, so if you need this tool, you will have to install it yourself. COT cannot install it for you at present.

To let COT attempt to pre-install all of the above helpers, you can optionally run:

cot install-helpers

See here for more details.

If you skip this step, then when you are running COT, and it encounters the need for a helper that has not been installed, COT will prompt you to allow it to install the helper in question.