An open API service indexing awesome lists of open source software.

https://github.com/akesson/vm

For handling Parallels host - vm workflows in Claude
https://github.com/akesson/vm

Last synced: about 9 hours ago
JSON representation

For handling Parallels host - vm workflows in Claude

Awesome Lists containing this project

README

          

# vm

Run commands in Parallels VMs against a synced copy of the current repo — one
tool, installed on the host **and** in every guest.

```sh
vm run --os windows -- cargo nextest run -p my-windows-crate
vm exec lin -- cargo clippy --fix --writeback
vm ls
```

## Model

- **The host working tree is the single source of truth.** Before every exec,
the dirty working tree (staging area untouched) is snapshotted as a git
commit object and pushed over ssh to a per-guest native checkout under the
guest's `work_root`. The guest resets to it and the tree hash is verified —
guests always run exactly what is on the host's disk.
- **Builds happen on guest-local disk.** No shared folders: no cross-platform
`target/` conflicts, native file watching and locking, native speed.
- **One-way by default.** Guests cannot corrupt the host tree; `--writeback`
explicitly returns source changes made in the guest (e.g. `clippy --fix`).
- **ssh is the transport, prlctl does what only it can**: VM lifecycle,
IP discovery, screenshots, snapshots, and first-time bootstrap.
- `vm run --os ` runs **natively** when the host already
is that OS — the same mise task works on a dev Mac, inside a VM, and on CI.

## Setup

Host config lives at `~/.config/vm/config.toml`:

```toml
[vm.win]
parallels_name = "Windows 11"
os = "windows"
user = "henrik"
work_root = 'C:\work'

[vm.lin]
parallels_name = "Ubuntu 24.04"
os = "linux"
user = "parallels"
work_root = "~/work"
```

`vm doctor` checks host and guests; `vm deploy ` builds and installs
the agent inside a guest.