## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# VM Block

The `vm` block is the top-level element in a VMFile. It defines a single virtual machine.

## Syntax

    vm "name" {
        // configuration nodes
    }

The name is a required string argument. It must be unique across all `vm` blocks in the file.

## Example

    vm "dev-server" {
        image-url "https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"
        vcpus 2
        memory 2048
        disk 20

        cloud-init {
            hostname "dev-server"
        }

        ssh {
            user "ubuntu"
        }
    }

## Name Requirements

- Must be a non-empty string.
- Must be unique within the VMFile.
- Used as the VM identifier in `vmctl list`, `vmctl ssh`, `--name` filtering, etc.
- Used as the work directory name under `~/.local/share/vmctl/vms/`.