aido-vm · agent's body, sandboxed
aido-vm hands an LLM full control of a QEMU/KVM virtual machine via 29 MCP tools · screenshot, click, type, scroll, OCR, snapshot, lifecycle. Anthropic computer-use parity, plus everything the host-only spec can't do.
The agent has no limit inside the VM. The VM has no reach outside itself: KVM-isolated, snapshot-rewindable in 2 s, loopback-only by default.
$ aido-vm shot
✓ captured 1024×768 png
$ aido-vm click 460 590
✓ button{Login}
$ aido-vm type "agent@x.co"
✓ 11 chars typed
$ aido-vm wait_for_text "Welcome"
✓ "Welcome, agent"
$ aido-vm snapshot_create checkpoint
✓ saved in 1.8s
Computer-use agents are powerful and dangerous on a host. aido-vm keeps the power, neutralises the danger.
The agent is root in its own machine. It can:
The VM cannot touch the host. By default:
aido-vm exposes itself as an MCP server. Wire it directly into any MCP client · or through the AIDO orchestrator gateway alongside aido-runtime + aido-browser, for a unified 101-tool surface.
All 13 actions of computer_20250124 (screenshot · click · key · type · scroll · drag · triple-click · cursor-position · wait …) plus 16 VM-level tools the host-only spec can't have: lifecycle, snapshots, OCR, pool.
The architecture grows in 4 tiers. Shipped today: tier 0 (single body) + tier 1 (linked-clone pool). The rest is queued.
One agent, one libvirt-managed VM, virsh subprocess. 29 MCP tools, ~30 s boot, golden-snapshot revert in ~2 s. Available today.
One golden base image (qcow2 RO) + N copy-on-write overlays. aido-vmd daemon holds N VMs warm, allocates in ~200 ms. ~100 parallel agents on 32 GB RAM. Shipped v0.3.
Distributed VM hosts, gRPC API, etcd/consul catalog, snapshots in S3/MinIO, libvirt live-migration. The "compute pool" for agent fleets.
Process-level checkpoint/restore (CRIU) for sub-second state transitions. WebRTC display + audio with native cursor at < 50 ms latency for multimodal LLMs that consume video natively.
Linux, libvirt, qemu · that's it. No build deps beyond a Rust toolchain. Tested on Debian 14 + Alpine 3.21.