Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/workflows/release-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -768,6 +768,9 @@ jobs:
openshell-x86_64-unknown-linux-musl.tar.gz \
openshell-aarch64-unknown-linux-musl.tar.gz \
openshell-aarch64-apple-darwin.tar.gz \
openshell-driver-vm-x86_64-unknown-linux-gnu.tar.gz \
openshell-driver-vm-aarch64-unknown-linux-gnu.tar.gz \
openshell-driver-vm-aarch64-apple-darwin.tar.gz \
*.deb \
openshell-*.rpm \
*.whl > openshell-checksums-sha256.txt
Expand All @@ -782,6 +785,15 @@ jobs:
openshell-sandbox-aarch64-unknown-linux-gnu.tar.gz > openshell-sandbox-checksums-sha256.txt
cat openshell-sandbox-checksums-sha256.txt

- name: Generate Homebrew formula
run: |
set -euo pipefail
python3 tasks/scripts/release.py generate-homebrew-formula \
--release-tag dev \
--release-dir release \
--output release/openshell.rb
cat release/openshell.rb

- name: Attest VM driver artifacts
uses: actions/attest@v4
with:
Expand Down Expand Up @@ -879,6 +891,7 @@ jobs:
release/openshell-driver-vm-aarch64-unknown-linux-gnu.tar.gz
release/openshell-driver-vm-aarch64-apple-darwin.tar.gz
release/*.whl
release/openshell.rb
release/openshell-checksums-sha256.txt
release/openshell-gateway-checksums-sha256.txt
release/openshell-sandbox-checksums-sha256.txt
Expand Down
13 changes: 13 additions & 0 deletions .github/workflows/release-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -772,6 +772,9 @@ jobs:
openshell-x86_64-unknown-linux-musl.tar.gz \
openshell-aarch64-unknown-linux-musl.tar.gz \
openshell-aarch64-apple-darwin.tar.gz \
openshell-driver-vm-x86_64-unknown-linux-gnu.tar.gz \
openshell-driver-vm-aarch64-unknown-linux-gnu.tar.gz \
openshell-driver-vm-aarch64-apple-darwin.tar.gz \
openshell_*.deb \
openshell-*.rpm \
*.whl > openshell-checksums-sha256.txt
Expand All @@ -786,6 +789,15 @@ jobs:
openshell-sandbox-aarch64-unknown-linux-gnu.tar.gz > openshell-sandbox-checksums-sha256.txt
cat openshell-sandbox-checksums-sha256.txt

- name: Generate Homebrew formula
run: |
set -euo pipefail
python3 tasks/scripts/release.py generate-homebrew-formula \
--release-tag "${RELEASE_TAG}" \
--release-dir release \
--output release/openshell.rb
cat release/openshell.rb

- name: Attest VM driver artifacts
uses: actions/attest@v4
with:
Expand Down Expand Up @@ -847,6 +859,7 @@ jobs:
release/openshell-driver-vm-aarch64-unknown-linux-gnu.tar.gz
release/openshell-driver-vm-aarch64-apple-darwin.tar.gz
release/*.whl
release/openshell.rb
release/openshell-checksums-sha256.txt
release/openshell-gateway-checksums-sha256.txt
release/openshell-sandbox-checksums-sha256.txt
Expand Down
9 changes: 5 additions & 4 deletions architecture/custom-vm-runtime.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,10 +323,11 @@ run `cargo build --release -p openshell-driver-vm`. The macOS driver is
cross-compiled via osxcross (no macOS runner needed for the binary build —
only for the kernel build).

macOS driver binaries produced via osxcross are not codesigned. Local
development builds are signed automatically by `tasks/scripts/gateway-vm.sh`
(registered as `mise run gateway:vm`). Release tarball users on macOS must
ad-hoc sign `openshell-driver-vm` before running VM sandboxes.
macOS driver binaries produced via osxcross are not codesigned. Development
builds are signed automatically by `tasks/scripts/gateway-vm.sh`
(registered as `mise run gateway:vm`) and by the generated Homebrew formula
when `install-dev.sh` installs the selected release on Apple Silicon macOS. A
packaged release needs signing in CI.

## Rollout Strategy

Expand Down
8 changes: 7 additions & 1 deletion crates/openshell-driver-vm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,11 +182,17 @@ On Linux amd64 and arm64, `install-dev.sh` installs the Debian package from the
selected `OPENSHELL_VERSION` release tag. That package includes
`openshell-gateway` and `openshell-driver-vm`.

On Apple Silicon macOS, `install-dev.sh` installs the generated `openshell.rb`
formula from the selected release. Homebrew installs `openshell`,
`openshell-gateway`, and `openshell-driver-vm`, ad-hoc signs the driver with
the Hypervisor entitlement in `post_install`, and owns the `brew services`
gateway lifecycle.

## Relationship to `openshell-vm`

`openshell-vm` is a separate, legacy crate that runs the **whole OpenShell gateway inside a single VM**. It remains in the repository for later deprecation or removal, but is excluded from normal workspace builds and release paths. `openshell-driver-vm` is the active compute driver called by a host-resident gateway to spawn **per-sandbox VMs**. The driver vendors its own rootfs handling and runtime loader so `openshell-server` never has to link libkrun.

## TODOs

- The gateway still configures the driver via CLI args; this will move to a gRPC bootstrap call so the driver interface is uniform across backends. See the `TODO(driver-abstraction)` notes in `crates/openshell-server/src/lib.rs` and `crates/openshell-server/src/compute/vm.rs`.
- macOS local builds are codesigned by `tasks/scripts/gateway-vm.sh`; release tarball users must ad-hoc sign `openshell-driver-vm` before running VM sandboxes.
- macOS local builds are codesigned by `tasks/scripts/gateway-vm.sh`; the generated Homebrew formula signs the release tarball driver for local installs.
Loading
Loading