Technology

An MCP server inside the hypervisor layer.

SlateVM is one product on three host operating systems. The same control plane serves people in the app and AI agents over MCP; every VM runs in its own process with its own window; and each host runs guests on its own native virtualization.

System architecture

One control plane, every host.

Human actions and AI tool calls enter the same place: SlateVM’s VM manager. It owns the VM library, starts one process per running VM, and hands each guest to the host’s native engine.

flowchart TB
  HUMAN["Person · SlateVM app"] --> CORE
  AGENT["AI agent · any MCP client"] -->|"local channel"| MCP["MCP server · 46 tools"]
  MCP --> CORE["SlateVM core · VM library + lifecycle"]
  CORE --> P1["VM process + window"]
  CORE --> P2["VM process + window"]
  CORE --> P3["VM process + window"]
  P1 --> ENG{"Host's native engine"}
  P2 --> ENG
  P3 --> ENG
  ENG -->|"Mac"| MACE["macOS virtualization"]
  ENG -->|"Windows"| WINE["Windows built-in hypervisor"]
  ENG -->|"Linux"| LINE["Linux kernel hypervisor"]
People and agents converge on one core; each running VM is its own process; the engine is whatever the host provides natively.

Per-VM processes

A process and a window for every machine.

A running VM is owned by its own SlateVM process. It keeps running when you close its window or quit the library, it can be opened straight from a desktop shortcut, and only SlateVM itself can talk to it.

sequenceDiagram
  participant You as You or your agent
  participant Lib as SlateVM library
  participant VM as VM process (one per VM)
  You->>Lib: Start "linux-dev" (button or start_vm)
  Lib->>VM: Launch the VM's own process
  VM-->>You: Its own window (or headless)
  You->>VM: Open from a desktop shortcut later
  VM-->>You: Same running VM, brought forward
  Lib-->>Lib: Quit library — VMs keep running
The library manages machines; each VM process owns one machine for its whole run.

Mac host

Apple silicon. macOS, Linux, and Windows guests. macOS host →

Configuration and lifecycle

Create with intent. Refine as needs change.

Name, OS and media, CPU, memory, disk, display, and network are validated against the host before the VM bundle is created; later edits return to the same record.

sequenceDiagram
  participant Caller as App or AI agent
  participant Core as SlateVM core
  participant Store as VM library
  participant Engine as Host engine
  Caller->>Core: create_vm (OS, ISO, CPU, RAM, disk, network)
  Core->>Core: Validate against this host
  Core->>Store: Create the VM bundle
  Caller->>Core: start_vm
  Core->>Engine: Boot (unattended install if requested)
  Engine-->>Caller: Live state · screen · console
  Caller->>Core: set_hardware / stop_vm / delete_vm
The same steps, the same tools, on every host.