A Jennifer client for the vSphere Automation
REST API of vCenter (/api, vCenter 7.0 U2 and newer). get, post,
put, patch and delete reach every endpoint; typed verbs cover the
inventory (VMs, hosts, clusters, datacenters, datastores, networks, folders,
resource pools), creating, cloning, deploying and deleting VMs, tasks,
guest customization, CPU, memory, disks and NICs, tags, VM power, the
guest's addresses, and running programs in the guest. A standalone ESXi host
serves only the SOAP API and is not supported.
jvc add @deckyard/vmwareOr unpack src/ from a release archive (deckyard-vmware-<version>.tar.gz)
into vendor/deckyard/vmware/.
use io;
import "@deckyard/vmware/" as vmware;
def c as vmware.Client init vmware.client("vcenter.example.com");
$c = vmware.withCaCert($c, fs.readBytes("vmca-root.pem"));
$c = vmware.login($c, "automation@vsphere.local", os.getEnv("VC_PASSWORD"));
def f as vmware.VmFilter;
$f.powerStates = [vmware.POWERED_OFF];
for (def vm in vmware.vms($c, $f)) {
io.printf("%s %s\n", $vm.vm, $vm.name);
}
vmware.powerOn($c, vmware.vmByName($c, "web01").vm);
$c = vmware.logout($c);
Jennifer 0.25.0 or newer and the default jennifer binary: the deck needs
the net capability, which jennifer-tiny lacks.
tools/check-all.sh # the full gate, as CI runs it
jennifer test src/vmware_test.j # the test overlay, offline
tools/check-docs.sh # docs against the code
tools/pack.sh dist # build the release archiveThe tests answer from a fake server on a loopback port. The examples need a real vCenter; see their headers.
LGPL-3.0-only, see LICENSE. Copyright (C) 2026 mplx <mplx@jennifer-lang.dev>.
VMware, vSphere, vCenter and ESXi are trademarks of Broadcom. This deck is not affiliated with or endorsed by Broadcom.