{"library":"qemu-qmp","title":"QEMU Monitor Protocol Library","description":"qemu.qmp is a Python library, built on asyncio, for interacting with QEMU emulators via the QEMU Monitor Protocol (QMP). It enables sending QMP messages to control and query QEMU instances, including the QEMU Guest Agent (QGA) and QEMU Storage Daemon (QSD). The library currently stands at version 0.0.6 and has a release cadence tied to the QEMU project's development, as it was originally split from the QEMU source tree.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install qemu.qmp"],"cli":null},"imports":["from qemu.qmp import QMPClient","from qemu.qmp import ProtocolError","from qemu.qmp import ExecuteError","from qemu.qmp import ExecInterruptedError"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import asyncio\nimport os\nfrom qemu.qmp import QMPClient\n\nasync def main():\n    # Replace '127.0.0.1' and '1234' with your QEMU QMP socket address and port.\n    # For a UNIX socket, use a path string like '/tmp/qemu-monitor.sock'.\n    # Ensure QEMU is started with a QMP monitor, e.g., \n    # qemu-system-x86_64 -qmp tcp:127.0.0.1:1234,server,nowait -enable-kvm ...\n    # or\n    # qemu-system-x86_64 -qmp unix:/tmp/qemu-monitor.sock,server,nowait -enable-kvm ...\n    qmp_host = os.environ.get('QEMU_QMP_HOST', '127.0.0.1')\n    qmp_port = int(os.environ.get('QEMU_QMP_PORT', '1234'))\n    qmp_socket_path = os.environ.get('QEMU_QMP_UNIX_SOCKET', None)\n\n    qmp = QMPClient('my_vm_instance')\n\n    try:\n        if qmp_socket_path:\n            print(f\"Connecting to QMP UNIX socket: {qmp_socket_path}\")\n            await qmp.connect(qmp_socket_path)\n        else:\n            print(f\"Connecting to QMP TCP socket: {qmp_host}:{qmp_port}\")\n            await qmp.connect((qmp_host, qmp_port))\n\n        print(\"Connected to QEMU QMP.\")\n\n        # Example: Execute 'query-status' command\n        status_response = await qmp.execute({'execute': 'query-status'})\n        print(f\"QEMU Status: {status_response}\")\n\n        # Example: Execute 'query-version' command\n        version_response = await qmp.execute({'execute': 'query-version'})\n        print(f\"QEMU Version: {version_response}\")\n\n    except Exception as e:\n        print(f\"Error connecting or executing QMP command: {e}\")\n    finally:\n        if qmp.is_connected():\n            await qmp.disconnect()\n            print(\"Disconnected from QEMU QMP.\")\n\nif __name__ == '__main__':\n    asyncio.run(main())\n","lang":"python","description":"This quickstart demonstrates how to connect to a running QEMU instance via its QMP interface (either TCP or UNIX socket) and execute a simple 'query-status' and 'query-version' command. Remember to start your QEMU VM with a QMP monitor enabled (e.g., `-qmp tcp:127.0.0.1:1234,server,nowait`). Environment variables `QEMU_QMP_HOST`, `QEMU_QMP_PORT`, or `QEMU_QMP_UNIX_SOCKET` can be used to configure the connection.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"0.0.6","pypi_latest":"0.0.6","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.5,"avg_import_s":0.2,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"qemu.qmp","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.1,"mem_mb":4.3,"disk_size":"18.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"qemu.qmp","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.06,"mem_mb":4.3,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"qemu.qmp","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.16,"mem_mb":5.3,"disk_size":"20.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"qemu.qmp","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.15,"mem_mb":5.3,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"qemu.qmp","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.36,"mem_mb":8.3,"disk_size":"12.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"qemu.qmp","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.33,"mem_mb":8.3,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"qemu.qmp","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.4,"mem_mb":8.8,"disk_size":"11.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"qemu.qmp","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.33,"mem_mb":8.8,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"qemu.qmp","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.08,"mem_mb":4.3,"disk_size":"17.7M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"qemu.qmp","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.07,"mem_mb":4.3,"disk_size":"18M"}]}}