Skip to content


Repository files navigation


This is the Cockpit user interface for virtual machines.


  • libvirt-dbus for enumerating machines, getting status update notifications, and operations such as start/stop/delete
  • virt-install and virt-xml for creating and modifying machine definitions; both part of the virt-manager project

Development dependencies

On Debian/Ubuntu:

$ sudo apt install gettext nodejs make

On Fedora:

$ sudo dnf install gettext nodejs make

Getting and building the source

These commands check out the source and build it into the dist/ directory:

git clone
cd cockpit-machines


sudo make install installs the package in /usr/local/share/cockpit/. This depends on the dist target, which generates the distribution tarball.

You can also run make rpm to build RPMs for local installation.

In production mode, source files are automatically minified and compressed. Set NODE_ENV=production if you want to duplicate this behavior.

Development instructions

See for details about how to efficiently change the code, run, and test it.

Automated release

The intention is that the only manual step for releasing a project is to create a signed tag for the version number, which includes a summary of the noteworthy changes:


- this new feature
- fix bug #123

Pushing the release tag triggers the release.yml GitHub action workflow. This creates the official release tarball and publishes as upstream release to GitHub.

The Fedora and COPR releases are done with Packit, see the packit.yaml control file.

Automated maintenance

It is important to keep your NPM modules up to date, to keep up with security updates and bug fixes. This is done with the npm-update bot script which is run weekly or upon manual request through the npm-update.yml GitHub action.

Similarly, translations are refreshed every Tuesday evening (or manually) through the weblate-sync-po.yml action. Conversely, the PO template is uploaded to weblate every day through the weblate-sync-pot.yml action.