This page covers Lume’s advanced capabilities: disk resizing, Metal GPU capability unlock, SIP management, the HTTP API server, the MCP server, the lumier Docker interface, and running agents like OpenClaw inside a VM.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/trycua/cua/llms.txt
Use this file to discover all available pages before exploring further.
Expanding VM disk size
Lume can increase the total disk capacity of a stopped VM. Shrinking is not supported. For macOS VMs, Lume relocates the paired RecoveryOS partition, grows the APFS container into the freed space, and creates a rollback copy before making any changes.Preview the change without modifying the disk
Expand the disk
--keep-backup to retain the rollback files after success, or --no-backup only when you have a separate verified copy of the VM.For Linux VMs, Lume can increase the image size, but the guest is responsible for growing its partition and filesystem after the resize. The exact commands depend on the partition table and filesystem type.
How disk expansion works
A standard Lume macOS disk has this layout:diskutil to grow the main APFS container:
GPU passthrough for Metal workloads
Lume VMs use Apple’s paravirtualized GPU bridge. A stock macOS guest can report conservative Metal capability values, causing applications to skip newer GPU code paths even when the paravirtualized device can execute them. The Metal capability shim changes selected capability answers for a single process without patching the host or guest kernel.Enable the host capability path
Stop the VM, set the host preference, then restart the VM so the graphics device is recreated with the requested feature level:
Build the capability shim
Clone the Cua repository on your Apple Silicon Mac and build the shim:The output is written to
dist/:Run a workload with the shim injected
Injection is per-process — only the target workload and its children see the changed capability answers:
| Variable | Default | Effect |
|---|---|---|
LUME_METAL_APPLE_FAMILY_MAX | Required | Answer supportsFamily: through this Apple-family ceiling. Tested value: Apple 9 (1009). |
LUME_METAL_MAX_THREADGROUP_MEMORY | 65536 | Raise maximum threadgroup memory to at least this many bytes. |
LUME_METAL_RECOMMENDED_WORKING_SET_SIZE | Unchanged | Raise the reported working-set size only when explicitly set. |
SIP management in VMs
System Integrity Protection (SIP) on an Apple silicon VM is stored in a signed LocalPolicy — it cannot be changed by editing the disk image. Lume useslume sip to change SIP by running csrutil inside the VM’s paired Recovery environment and verifying the result after a normal boot.
The
lume sip command requires vncdotool. Install it before running SIP commands:Disable SIP
The VM must be stopped and must have a working administrator account with Remote Login enabled. VMs created with the--unattended preset meet these requirements by default.
Enable SIP
Create a reusable SIP-disabled VM
Change SIP on a seed VM, then clone it for workers:How it works
lume sip coordinates three VM sessions:
- A normal boot verifies the administrator account works over SSH.
- A Recovery boot runs
csrutil enableorcsrutil disableover a temporary VNC session. - A final normal boot runs
csrutil statusover SSH to confirm the change.
enabled. or disabled.) and rejects customized multi-component policies.
Running the Lume HTTP API server
lume serve starts a local HTTP API that exposes all VM management operations over HTTP. The standard installer starts this service automatically at login.
localhost by default (port 7777). Verify it is running:
Using Lume as an MCP server
Lume can expose VM management tools through the Model Context Protocol (MCP). The MCP server uses stdio — the client starts one Lume process and communicates with it directly.Add the MCP server to your client configuration
Add this entry to your MCP client’s configuration file, replacing the command path with the output from the previous step:
lumier: Docker-compatible interface
lumier is a Docker image that runs a Lume VM from inside a container. It starts the VM, serves its display over noVNC on port 8006, and connects to the Lume HTTP API on the host viahost.docker.internal.
Run a macOS Sequoia VM with lumier:
http://localhost:8006 in a browser to access the VM display via noVNC. lumier is useful for container-based CI/CD workflows or any environment that manages infrastructure through Docker Compose or Kubernetes.
Default VM configuration (overridable via environment variables):
| Variable | Default | Description |
|---|---|---|
VERSION | ghcr.io/trycua/macos-sequoia-vanilla:latest | OCI image to pull and run |
RAM_SIZE | 8192 | VM memory in MB |
CPU_CORES | 4 | Number of vCPU cores |
DISK_SIZE | 100 | Disk size in GB |
DISPLAY | 1024x768 | VM display resolution |
VM_NAME | lumier | Name for the created VM |
HOST_SHARED_PATH | (empty) | Host path to share with the guest |
Running agents inside a Lume VM
Lume VMs make excellent sandboxes for AI agents that need access to a macOS desktop. The isolation means an agent can have full control of the guest without risk to the host.OpenClaw
OpenClaw is a macOS agent gateway. Run it inside a dedicated Lume VM to keep it separate from your daily environment:Install OpenClaw in the guest