v4.0.1 -- post-v4.0.0 fixes - install.bat: skip install loop when every broker already has its base/terminal64.exe. Without this guard, v4.0.0's loop set NEEDS_REBOOT=1 once per boot (root cause unclear -- install_one's skip path logs "already installed" but :wait_done still fires), triggering an infinite reboot loop. Genuine first-installs still enter the loop because any missing terminal64.exe forces ALL_INSTALLED=0. - start.bat: switched API_TOKEN load from `for /f` over the helper to a tempfile read. The for/f form was occasionally returning empty (python crash / pyyaml fallback install / stdout buffering through the cmd subshell). Tempfile path is robust. - run.sh: added SKIP_KVM_CHECK env escape hatch for hosts that proxy KVM differently (CI, nested virt setups). - config_helper.py + run.sh: new `port_list` subcommand that prints individual ports space-separated. The existing `ports` subcommand collapses to a min-max range for the docker-compose port mapping; run.sh's per-port iteration needs the explicit list.