kcli
Provisioner/Manager for Libvirt/Vsphere/Aws/Gcp/Hcloud/Kubevirt/Ovirt/Openstack/IBM Cloud and containers
What it is and what it does
kcli is a unified command-line tool for provisioning and managing virtual machines across multiple virtualization platforms. It abstracts away provider-specific differences, letting you define infrastructure in YAML plan files and deploy to libvirt, KubeVirt, oVirt, OpenStack, vSphere, AWS, Azure, GCP, IBM Cloud, or Hcloud using a single interface. You can create, list, SSH into, stop, delete, and modify VMs; manage disks and network interfaces; and apply cloud-init or Ignition configuration.
The tool is built around YAML-based "plans" that describe VMs, networks, and deployment parameters, with Jinja templating support for customization. It includes predefined profiles for common VM configurations and can deploy entire products (like Kubernetes or OpenShift clusters) from pre-made plans. Dependencies include argcomplete for shell completion, PyYAML for plan parsing, prettytable for output formatting, jinja2 for templating, and libvirt-python for local virtualization access.
Use it for:
- Deploy and manage test VMs across multiple cloud providers from a single CLI without learning each provider's native tools.
- Define multi-VM infrastructure in YAML and deploy identical setups to different providers (dev on libvirt, prod on AWS).
- Automate VM lifecycle operations (create, configure, destroy) using plan files with parameters and templating.
- Provision Kubernetes or OpenShift clusters using pre-built plans across different virtualization backends.
- Manage local KVM/libvirt VMs alongside cloud instances using a unified command set.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
kcli is a command-line provisioning and management tool for virtual machines across multiple virtualization providers (libvirt, KubeVirt, oVirt, OpenStack, VMware vSphere, AWS, Azure, GCP, IBM Cloud, Hcloud) using YAML plan files and cloud images.
Yes, if you manage VMs across multiple providers or need to automate VM provisioning from YAML. The active maintenance, low install friction, and broad provider support make it a solid choice for multi-cloud or hybrid virtualization workflows. However, verify Python version compatibility and system-level libvirt dependencies before installing, and clarify the license treatment if you need legal certainty for commercial use.
Install
kcli on PyPI
pip
pip install kcliuv
uv add kclipoetry
poetry add kcliInstalling kcli
Before you install
Low install friction with a pure Python wheel distribution. The package has active maintenance with a release on 2026-08-14 and 649 repository stars, indicating ongoing development and community engagement.
License in practice
Licensed under ASL (Apache Software License), which is permissive for commercial and private use; however, the license treatment is marked unclear in the metadata, so you may want to verify the exact license terms before relying on it in a commercial context.
Quickstart
pip install kcli
kcli create vm -i centos8stream myvm
kcli list vm
kcli ssh myvm
Requires libvirt-python, which depends on system libvirt libraries; some providers (AWS, Azure, GCP, etc.) may require additional cloud provider credentials and configuration.
Verify before relying
- Minimum Python version requirement not specified in metadata; verify compatibility with your Python environment.
- Whether cloud provider credentials (AWS, Azure, GCP, IBM Cloud, Hcloud) are required for all operations or only when targeting those providers.
- System-level dependencies beyond libvirt-python (e.g., libvirt daemon, qemu) needed for local virtualization.
Package facts
| License | ASL (unclear) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — argcomplete, PyYAML, prettytable, jinja2, libvirt-python |
| Maintenance | actively maintained — 0 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 134,747/month — #11,463 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: kcli-99.0.202608141013-py3-none-any.whl
Tags
More Distributed Computing packages
gRPC Python is an HTTP/2-based RPC framework…
permissive · top 100 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
cloudpickleCloudpickle extends Python's standard pickle…
permissive · top 1,000 on PyPI
smart-openProvides a unified, open()-compatible Python…
permissive · top 1,000 on PyPI
portalockerPortalocker provides cross-platform file…
permissive · top 1,000 on PyPI
rayRay is a distributed computing framework that…
permissive · top 1,000 on PyPI
aiven-clientOfficial command-line client for Aiven's…
permissive · top 15,000 on PyPI
azure-cliAzure CLI is a command-line tool for managing…
permissive · top 5,000 on PyPI
libvirt-pythonProvides Python bindings to the libvirt…
copyleft · top 15,000 on PyPI
vmware-vcenterProvides Python bindings to VMware vCenter…
permissive · top 15,000 on PyPI
cotCOT edits and deploys Open Virtualization…
permissive · top 15,000 on PyPI
oslo.vmwareoslo.vmware provides a library for common…
permissive · top 15,000 on PyPI
cudo-computeA Python client library for the Cudo Compute…
permissive · top 15,000 on PyPI
pyvmomiPython SDK for VMware vSphere Management API…
permissive · top 5,000 on PyPI
python-magnumclientPython bindings and command-line tool for the…
permissive · top 15,000 on PyPI
hcloudHcloud is the official Python client library…
permissive · top 15,000 on PyPI