The in-process Linux VM runtime behind SquadVM and NeurodeskAppX.
Desktop downloads and releases are available from tinyrange/crumblecracker.
This is an independent production codebase, condensed from cc. It contains the two desktop apps, their shared frontend, and the runtime needed to boot Linux images, preserve user storage, share files, run guest commands, and present the desktop. Apple Silicon GPU acceleration uses the first-party VirGL renderer and shared OpenGL textures.
The experimental runtime, full daemon and worker system, interactive vmsh shell, and other frontends remain in cc. This repository has no cc submodule or dependency. There is no synchronization policy or promise of source compatibility. A standalone daemon and Python frontend are future work.
Install the Go version specified in go.mod, then run:
go run ./tools/build.goThis builds build/SquadVM and build/NeurodeskAppX (with .exe on Windows),
including Linux guest init payloads. macOS development binaries are ad-hoc signed
with the hypervisor entitlement. Supported desktop hosts are Apple Silicon macOS,
Linux amd64/arm64, and Windows amd64. Linux requires KVM; Windows requires Windows
Hypervisor Platform.
For isolated development, pass -cache-dir and -storage pointing to development
directories. Existing product settings, shared folders, persistent homes, bundle
identifiers, and image names are preserved during this source split.
NeurodeskAppX --headless starts an authenticated loopback HTTP API without an
initial window. See the integration guide and
OpenAPI contract for image/kernel progress, VM
parameters, native Glass windows, and graceful shutdown.
Commit CI runs focused product/runtime tests, native Darwin GPU tests, and builds for all four supported platform and architecture combinations. It does not download guest images or boot VMs. Image publishing and signed/notarized desktop releases are explicit workflows. Release signing credentials must be configured in the destination repository.
Before releasing a runtime change, smoke-test both apps with an isolated cache: fresh boot, a guest command, shared-folder writes, restart with persistent data, startup cancellation/retry, and window resize/close. Check GPU and software display when changing presentation. Use the existing GPU fixtures for renderer changes; long CTS runs are not part of routine commit CI.
Derived from vmsh 934c6888481dd1e58e8623f09641a34d6735e9e8 and cc
c923785e542861318c4feac15e9b3a5a0bc8d183. Original license text is retained in
LICENSE and LICENSE-CC. Gowin is a pinned Go module dependency.
A repeatable headless smoke check is also available:
go build -o build/product-smoke ./tools/smoke
# On macOS, first sign with tools/entitlements.xml, as tools/build.go does.
build/product-smoke -cache-dir build/smoke/cache -storage build/smoke/shared -image testdata/alpine-arm64.simgUse testdata/alpine.simg on amd64 hosts. The check boots a named VM, verifies
guest command deadlines and exit status, writes through the host share, then
stops and restarts the VM and checks the saved contents.