The Lume HTTP API is a REST server for managing macOS and Linux virtual machines programmatically. Any HTTP client —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.
curl, Python, TypeScript, or your CI system — can call these endpoints.
Documented against Lume 0.5.3.
Starting the server
Base URL
The Lume HTTP API has no authentication by default. It listens on localhost only. Exposing it on a public interface is not recommended without additional network-level controls.
VM Management
List all VMs
List all virtual machines managed by the local Lume instance.GET /lume/vms
Query parameters:
Filter results by named storage location.
- curl
- Python
- TypeScript
200 Success — 400 Bad request
Get a VM
Get detailed information about a specific virtual machine.GET /lume/vms/:name
Path parameters:
Name of the virtual machine.
VM storage location to use.
- curl
- Python
- TypeScript
200 Success — 400 VM not found or invalid request
Create a VM
Create a new virtual machine.POST /lume/vms
Request body:
Name for the new virtual machine.
Operating system:
macOS or linux.Number of CPU cores.
Memory size, e.g.
8GB.Disk size, e.g.
50GB.Display resolution, e.g.
1024x768.Path to IPSW file or
'latest' (macOS VMs only).VM storage location to use.
- curl
- Python
- TypeScript
200 Created — 400 Invalid request or creation failed
Update a VM
Update CPU, memory, disk size, or display resolution for a stopped VM.PATCH /lume/vms/:name
Path parameters:
Name of the VM to update.
New CPU core count.
New memory size, e.g.
16GB.New total disk size (increase only).
New display resolution.
VM storage location.
Skip the macOS rollback backup. Default:
false.Keep rollback files after success. Default:
false.Validate resize plan without modifying the disk. Default:
false.- curl
- Python
- TypeScript
200 Updated — 400 Invalid settings or update failed
Delete a VM
Delete a virtual machine and all associated files.DELETE /lume/vms/:name
Path parameters:
Name of the VM to delete.
VM storage location.
- curl
- Python
- TypeScript
200 Deleted — 400 Not found or deletion failed
Clone a VM
Create a copy of an existing virtual machine.POST /lume/vms/clone
Name of the source VM.
Name for the cloned VM.
Source VM storage location.
Destination VM storage location.
- curl
- Python
- TypeScript
200 Cloned — 400 Clone failed
Start a VM
Start (boot) a virtual machine.POST /lume/vms/:name/run
Name of the VM to start.
Run without opening a display. Default:
false.Directories to share with the VM.
Boot in macOS recovery mode. Default:
false.VM storage location.
Enable bidirectional clipboard sync via SSH. Default:
false.- curl
- Python
- TypeScript
202 Start initiated (async) — 400 Invalid request or VM not found
Stop a VM
Stop a running virtual machine.POST /lume/vms/:name/stop
Name of the VM to stop.
VM storage location.
- curl
- Python
- TypeScript
200 Stopped — 400 Stop failed
Image Management
List cached images
List available VM images from the local cache.GET /lume/images
Organization to list images for.
- curl
- Python
- TypeScript
200 Success — 400 Failed to list images
Get IPSW URL
Get the latest macOS restore image (IPSW) URL for the current hardware.GET /lume/ipsw
- curl
- Python
- TypeScript
200 Success — 400 Failed to get IPSW URL
Pull an image
Pull a VM image from an OCI-compatible container registry.POST /lume/pull
Image reference in
name:tag format.Name for the resulting VM.
Container registry URL.
Organization to pull from.
VM storage location.
- curl
- Python
- TypeScript
200 Pulled — 400 Pull failed
Push an image
Push a local VM image to a container registry.POST /lume/vms/push
Name of the local VM to push.
Base name for the image in the registry.
List of tags to push, e.g.
["latest", "v1.0"].Container registry URL.
Registry organization.
VM storage location.
Upload chunk size in MB.
202 Push initiated (async) — 400 Invalid request
Prune cached images
Remove cached images to free up disk space.POST /lume/prune
- curl
- Python
- TypeScript
200 Pruned — 400 Prune failed
Configuration
Get configuration
Get current Lume configuration.GET /lume/config
- curl
- Python
- TypeScript
200 Success — 400 Failed to get config
Update configuration
Update Lume configuration settings.POST /lume/config
VM home directory path.
Cache directory path.
Enable or disable image caching.
200 Updated — 400 Invalid request
Storage Locations
List storage locations
GET /lume/config/locations
Response codes: 200 Success — 400 Failed
Add a storage location
POST /lume/config/locations
Storage location name.
Path to the storage directory.
200 Added — 400 Already exists or invalid
Remove a storage location
DELETE /lume/config/locations/:name
Name of the storage location to remove.
200 Removed — 400 Not found or cannot remove
Set default storage location
POST /lume/config/locations/default/:name
Name of the location to set as default.
200 Set — 400 Not found
Logs
Retrieve server logs
GET /lume/logs
Log type:
info, error, or all.Number of lines to return from the end of the log file.
- curl
- Python
- TypeScript
200 Success — 400 Failed to read logs