feat(install-vm): install gateway + vm driver, add --driver-dir resolution#887
Merged
feat(install-vm): install gateway + vm driver, add --driver-dir resolution#887
Conversation
…ution install-vm.sh now bootstraps a working VM-driver gateway end-to-end: downloads openshell-gateway from the dev release and openshell-driver-vm from vm-dev, installs them into distinct directories, codesigns the driver on macOS, and prints the start command. The gateway gains --driver-dir / OPENSHELL_DRIVER_DIR (default ~/.local/libexec/openshell) so operators can keep helper binaries out of their PATH directory. resolve_compute_driver_bin now searches the explicit override, then the driver dir, then the sibling-of-exe fallback used by local dev builds, with an error message that names every searched path.
The previous start command was missing --ssh-handshake-secret, --grpc-endpoint, and a way to locate the driver binary, so pasting it into a shell produced configuration errors. Use --vm-compute-driver-bin with the absolute path we just installed so the command works against every released gateway (including the current dev build, which predates --driver-dir).
TaylorMutch
approved these changes
Apr 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reworks
install-vm.shto bootstrap a working VM-driver gateway end-to-end, and teaches the gateway how to find helper binaries in a dedicated driver directory so they don't have to sit onPATH. Running the script now leaves you with everything needed to start a gateway that auto-detects the VM compute driver.Related Issue
N/A — maintenance / install UX.
Changes
install-vm.shopenshell-gatewayfrom the rollingdevrelease →OPENSHELL_INSTALL_DIR(default~/.local/bin).openshell-driver-vmfrom the rollingvm-devrelease →OPENSHELL_DRIVER_DIR(default~/.local/libexec/openshell), which matches the gateway's new default.openshell-driver-vmon macOS (it's the process that runs libkrun; the gateway doesn't need the entitlement).openshell-vm/OPENSHELL_VM_INSTALL_DIRnaming.openshell-gateway --drivers vm …command to start the gateway at the end; omits--driver-dirwhen the default is in use so the one-liner stays short.crates/openshell-server--driver-dir/OPENSHELL_DRIVER_DIRflag onopenshell-gateway, default$HOME/.local/libexec/openshell.VmComputeConfiggains adriver_dir: Option<PathBuf>with adefault_driver_dir()helper.resolve_compute_driver_binnow searches in order:--vm-compute-driver-binoverride.{driver_dir}/openshell-driver-vm.cargo runstill works).Testing
mise run pre-commitpassescompute::vm::testsManual verification:
cargo test -p openshell-server --lib compute::vm::tests→ 6/6 pass.OPENSHELL_INSTALL_DIR=/tmp/x OPENSHELL_DRIVER_DIR=/tmp/y sh install-vm.sh→ both binaries downloaded, checksummed, codesigned on macOS, installed to the requested dirs, and the correct start command is printed../target/debug/openshell-gateway --helpshows the new--driver-dirflag.Checklist