SlateVM

official

Native Apple-silicon VM platform with 45 MCP tools to create, observe and operate macOS, Linux, and Windows 11 ARM guests.

What can you do with SlateVM MCP?

  • Create and configure VMs — Ask to create_vm a macOS, Linux, or Windows guest with CPU, memory, disk, and network settings, then adjust hardware or resize_disk as needed.
  • Observe guest state — Use capture_screen, read_console_text, or wait_for_text to see the VM's display, serial output, or OCR'd interface and confirm what's happening.
  • Send input and run commands — Direct keyboard, pointer, or text via send_input, or execute bounded commands with run_in_guest over a provisioned SSH identity.
  • Manage lifecycle and jobsstart_vm, stop_vm, suspend_resume_vm, or delete_vm, and track progress with job_status or wait_for_state.
  • Diagnose and inspect — Pull get_diagnostics, tail_log, or networking_status to troubleshoot VM health, logs, and network connectivity.
  • Handle storage and media — Add or remove shared_folders, apply_guest_tools, or set_installer_media to manage guest resources.

Documentation

A real virtual machine an LLM can see, understand, and operate.

SlateVM gives compatible MCP clients 45 structured functions across creation, provisioning, lifecycle, console interaction, networking, diagnostics, configuration, and guest execution. Minting the VM is only the start: the agent can observe the guest, understand its state, then act and verify across every supported guest platform.

Automation with evidence at every step.

Observe the machine

Read exact lifecycle and job state, capture the framebuffer, OCR visible interfaces, read the headless Linux serial stream, inspect logs, or discover guest networking.

Act through the right channel

Send keyboard, pointer, scrolling, or text input; provision a dedicated per-VM SSH identity; run bounded commands; and update supported VM configuration.

Verify the result

Wait for state or text, capture the changed screen, read serial output, collect diagnostics, and continue from what the VM actually reports.

Not a shell wrapper. Not UI scripting.

The stateless slatevm-mcp adapter speaks SlateVM’s versioned protocol over a local Unix-domain socket. SlateControlServer dispatches each request through SlateControlHub, where the SwiftUI interface and AI control path converge on the same VMStore, networking service, window manager, and lifecycle owners. SlateVM—not the adapter—remains the authority for VM state and policy.

SwiftUI Human control

SlateControlHub Shared application control plane

LLM + MCP Structured control

45 functions available to an LLM.

This catalog reflects the tool manifest registered by the bundled slatevm-mcp implementation and its corresponding local or application-side dispatch path.

Application, discovery, and jobs

launch_app

Launches SlateVM visibly and reports whether its local control endpoint is ready.

quit_app

Closes SlateVM gracefully or, when explicitly requested, forces the application to quit.

app_status

Reports whether SlateVM is running, its process identifier, control-socket reachability, and the running app's version and build (read live from its bundle, so it stays correct after an auto-update).

host_capabilities

Returns host virtualization capability, nested virtualization, macOS version, entitlement state, and free disk information.

list_images

Lists readable installation images visible in SlateVM’s caches and Downloads, with inferred guest type and size.

list_restore_images

Lists macOS restore images known to SlateVM for use in a macOS creation workflow.

job_status

Returns a background job’s state, latest stage, result, or structured error.

job_wait

Waits for a background job to finish or reach a bounded timeout, then returns its current result.

list_jobs

Lists recent background jobs and their current states.

VM inventory and lifecycle

list_vms

Lists every VM with its identity, runtime state, and hardware summary.

get_vm

Returns the complete persisted configuration and current details for one VM.

create_vm

Creates a macOS, Linux, or Windows VM from required OS, CPU, memory, disk, image, and network inputs, with optional unattended install, account credentials, NAT or LAN-bridge networking, and x86-64 (Rosetta) support for Linux guests.

start_vm

Starts a selected VM and opens its visible console window.

stop_vm

Stops a running VM with graceful shutdown as the default and an explicit force option.

suspend_resume_vm

Toggles a running VM between suspended and resumed states.

wait_for_state

Waits for running or stopped state and returns the result with available error context.

delete_vm

Moves a confirmed VM bundle to the Trash through SlateVM’s coordinated deletion path.

reveal_vm

Reveals the selected VM bundle in Finder.

Configuration, storage, and integration

set_hardware

Updates only the supplied CPU, memory, network, nested-virtualization, x86-64 (Rosetta), or Linux network-driver settings.

resize_disk

Grows a VM disk to a confirmed larger size while preserving the existing virtual disk.

set_installer_media

Repoints a stopped VM to accessible installer media and persists a fresh scoped reference.

finish_install

Marks installation complete and removes installer media from the next-boot configuration.

add_shared_folder

Adds a host folder to a macOS or Linux VM with a mount name and optional read-only access.

remove_shared_folder

Removes a selected shared-folder record from a VM configuration.

set_shared_folder_readonly

Changes a shared folder between read-only and writable access.

apply_guest_tools

Stages or applies SlateVM’s guest-tools disc for the selected VM.

set_attach_linux_guest_tools

Controls whether a desktop Linux VM attaches the SlateVM Tools disc.

set_console_window_size

Sets the selected VM console window’s width and height in Mac display points.

set_display_resolution

Sets the next-boot display resolution for a headless Linux server guest.

set_linux_network_path

Selects native Apple NAT or SlateVM’s service-backed NAT path for a Linux VM.

Diagnostics, console, and input

get_diagnostics

Collects VM state, configuration, media access, disk information, networking health, logs, and the latest structured error.

tail_log

Returns recent VM log lines for a selected time window with an optional text filter.

capture_screen

Captures the guest console as an MCP image or host file, with format, crop, and scaling controls.

read_console_text

Returns guest console text, optionally filtered by a case-insensitive pattern. Headless Linux servers read the exact serial stream (no OCR); other guests use framebuffer OCR.

wait_for_text

Polls the console until a requested pattern appears or a bounded timeout is reached — the serial stream for headless servers, framebuffer OCR otherwise.

send_input

Sends guest-scoped pointer, text, or key actions and can capture the result in the same call. On headless servers, text/key go to the serial console — capitals, symbols, and Ctrl chords all work.

Networking service and guest commands

networking_status

Reports whether SlateVM’s networking service is installed, reachable, and healthy.

networking_install

Opens the signed macOS installer for one-time administrator approval of the networking service.

networking_repair

Reinstalls the networking service through the administrator-approved package workflow.

networking_uninstall

Opens the administrator-approved uninstaller for the networking service.

guest_network

Discovers candidate guest IP addresses from the VM’s MAC using host DHCP and ARP information.

provision_ssh

Creates or returns the dedicated per-VM SSH public key and guest-side installation command.

ssh_status

Reports whether a VM has a dedicated LLM SSH key and returns its public key.

revoke_ssh

Removes the host-side dedicated SSH identity so it can be rotated or retired.

run_in_guest

Runs a bounded SSH command and returns exit code, output, errors, timeout, and connection status.