Using vmctl

vmm is OpenBSD's native hypervisor, which allows multiple virtual machines to run inside a single physical server (a dedicated server). A virtual machine is a guest which lives inside the host.

You will need to connect to the host which runs the hypervisor. Normally, you administer the guest virtual machine by logging in directly to the virtual machine's IP address. In order to change the virtual machine's parameters, however, it is necessary to login to the host. The hostname may be of the form host.example.com. Check your email or contact your network admin if you are uncertain.

  1. NOTE: The host machine (host.example.com) is NOT the guest virtual machine (username.host.example.com). You have root access inside your guest machine, but not the host machine.
  2. NOTE: The host is not your personal virtual machine (VM). Your personal VM is a guest inside the host. Because the guest runs inside the host, to obtain serial console access to the guest, you must first log in to the host.

Manage the Virtual Machine

Virtual machine management is handled with vmctl(8). First, login to the hypervisor:

$ ssh host.example.com
Last login: Fri Jul 11 20:06:23 2025 from 198.51.100.3
OpenBSD 7.7 (GENERIC.MP) #2: Sun Jun 29 09:04:02 MDT 2025
...

Next, use vmctl(8) to view the serial console:

$ vmctl console username
Connected to /dev/ttyp8 (speed 115200)

OpenBSD/amd64 (username.host.example.com) (tty00)

login: 

Once inside the host (in this example, host.example.com), you can manage your virtual machine using the following commands:

In the following examples, replace $VMNAME with your virtual machine name. It is often your username.

  1. To view the serial console, vmctl uses cu(1):
$ vmctl console $VMNAME

From there, you can install, upgrade, or repair the system:

To shutdown the VM:

$ vmctl stop $VMNAME

To boot the VM:

$ vmctl start $VMNAME

To boot the VM with serial console access:

$ vmctl start -c $VMNAME

To pause the VM:

$ vmctl pause $VMNAME

To unpause the VM:

$ vmctl unpause $VMNAME

At any time, if you want to escape the serial console, type ~. (tilde followed by a period) or ~^d (tilde followed by ctrl+d). Note: Sometimes, you may need to press enter a few times before the ~. or ~^d combination works. On some keyboards, you may need to type ~~. (two tildes followed by a period).

Install, Upgrade, Repair

Check out the guides for how to install, upgrade, reinstall, or add a new disk.

See Also

vmctl(8)VMM Install Guide