diff --git a/src/mcqemu/server.py b/src/mcqemu/server.py index 1ced3c6..792b644 100644 --- a/src/mcqemu/server.py +++ b/src/mcqemu/server.py @@ -15,8 +15,16 @@ INSTRUCTIONS = """\ mcqemu manages QEMU virtual machines on this host. Typical flows: -- Fresh VM: image_create -> launch_vm(disks=[...], iso=...) -> watch serial log - -> stop_vm -> relaunch without iso. +- Disposable sandbox: sandbox_vm(base_image=...) does overlay + launch + + wait-for-agent in one call; sandbox_destroy cleans everything up. The base + image is never modified. +- Fresh VM: image_create -> launch_vm(disks=[...], iso=...) -> drive the + installer visually -> stop_vm -> relaunch without iso. +- See & drive: vm_screenshot returns the display as a PNG; vm_send_keys / + vm_type_text / vm_click inject input at the scancode level (works in BIOS + menus, bootloaders, and GUIs — no guest software needed). Loop + screenshot -> act -> screenshot; guests need time to react, so re-check + rather than assuming. - Inspect: list_vms / vm_info. VMs survive MCP server restarts (they are daemonized QEMU processes). - Inside the guest: guest_exec / guest_file_read / guest_file_write — these @@ -24,6 +32,9 @@ Typical flows: - Existing QEMU processes started outside this server can be managed after attach_vm(name, qmp_socket=...). +Port forwards: "2222:22" (explicit, collision-checked), "auto:22" or "22" +(free host port picked; result reports the choice). + KVM acceleration is automatic when the guest arch matches the host; other architectures run under TCG emulation (works, but much slower). """