Skip to content

v0.8.0

Choose a tag to compare

@benvinegar benvinegar released this 02 Nov 17:29
· 83 commits to master since this release

A big release: headless VMs, two new experimental backends, background jobs, and much better MCP support.

Highlights

  • Headless VMs. boxery new NAME --headless (or vm_manage new {headless: true}) builds from the stock Ubuntu image without a desktop, and needs no build-base. Desktop VMs are still the default (#55).
  • Background jobs. Use boxery run --bg, jobs, logs, wait, kill and jobs --prune, or the vm_jobs tool in MCP and pi. Jobs survive disconnects and report real exit codes (#28, #36).
  • VM shapes. Pick a named size with --shape small|standard|large. You can define your own in ~/.config/boxery/shapes.json on the host (#29).
  • boxery resize changes a VM's CPUs, memory or disk after it's created (#26).
  • Host upgrades. boxery upgrade-host updates a host in place. It checks the result and rolls back if the checks fail. boxery version warns when the host is behind the controller (#66).
  • Live desktop in chat. In MCP Apps clients, the vm_view tool shows a VM's desktop inline, and you can take control of it (#56).

New backends (experimental)

  • exe.dev: run VMs on exe.dev from any machine with ssh, a Mac included (#30). ls now reports tunnel state, and the docs explain how to set up an always-on host (#45, #65).
  • cloud-hypervisor: Linux + KVM without libvirt. Each VM gets its own network isolation (#25).

Agent tools

  • vm_manage adds start, stop, resize, snap-rm, images, new --from, and size parameters (#33).
  • vm_lease lets MCP and pi agents lease VMs from the shared pool. Leases renew while the session is active and are released when it ends (#34).
  • vm_info is a new read-only tool, so clients that support annotations don't ask for approval on lookups (#35).
  • MCP progress notifications and structured output, sent only to clients that support them (#35).
  • vm_edit is atomic and checks for conflicts. It no longer needs Python in the guest (#44).
  • vm_copy streams transfers with bounded memory and cleans up properly when cancelled (#32).

Reliability

  • Host lifecycle operations are serialized, and work left behind by a crash is recovered. New: boxery-host reconcile (#24).
  • boxery-host has been rewritten from bash to Node (#48–#52).
  • Fixed a hang on Lima hosts when an operation started a VM (#26).
  • Screenshots fail with a clear error, instead of returning NaN sizes, when the desktop isn't ready yet (#63).

Upgrading

Stop running boxery-host processes before you upgrade from 0.7.0. The old locks don't coordinate with the new SQLite-based ones (#24).