Skip to main content
Mount Thor provides bare-metal Apple Silicon Macs and macOS virtual machines. Use the mthr CLI for the standard workflow.

Sign Up

Request access to Mount Thor. We review and approve access within 24 hours. You can complete account configuration while we review.

Install the CLI

Homebrew is also supported:

Sign in

mthr login opens your browser for single sign-on and stores a short-lived session on your workstation. The CLI keeps that session fresh automatically, so you rarely sign in again during a work session. If your identity can reach more than one customer or tenant, add --customer and --tenant; otherwise the CLI resolves them from your account. Use Account to confirm the active customer and tenant. For automation, use an API key, or workload identity for CI that can issue OIDC tokens.

Create a virtual machine

List available images:
Replace IMAGE_NAME with a name from the list:
Create asks you to confirm a prepaid hold before committing; pass -y to skip the prompt. Check funds and readiness with mthr billing account. Release the VM when finished:
See Virtual machines for desktop access, port forwarding, and direct Kubernetes use.

Allocate a bare-metal Mac

After the machine reaches Ready, connect over SSH:
Release it when finished:
Replace MACHINE_NAME with the name chosen during allocation. See Bare metal for explicit class and image selection.

Use kubectl

The compute guides include the supported Kubernetes resource shapes.

Observe lifecycle

--wait holds a CLI operation until the resource is ready or the timeout expires. Without it, create and delete commands return after acceptance. For automation, add --json to data commands. A successful command writes one JSON document to stdout and exits 0. Errors write to stderr: 2 usage, 3 not found, 4 authentication, 5 conflict, 6 API, 7 network, 8 tenant not ready, and 9 billing setup. For controllers, trust status when status.observedGeneration matches metadata.generation. Bare metal is usable in Ready; a VM is usable in Running. In both cases, status.readyForAccess must be true. Failed is terminal. Other phases are in progress. Delete and recreate a resource to change its spec. Deletion is complete when a read returns 404 Not Found.