OpenShell v0.1.5
Quick install
:::bash
curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | OPENSHELL_VERSION=v0.1.5 sh
Upgrade notes
- Supervisor OCSF log files are now named
openshell-ocsf.YYYY-MM-DD.jsonlinstead of.log, so update any collector patterns fromopenshell-ocsf.*.logtoopenshell-ocsf.*.jsonl. Old.logfiles are not migrated and may be cleaned up, so collect any history you need before upgrading. #4263 - On Kubernetes, sandbox templates that set pod annotations or labels are now rejected unless an operator allowlists those keys with the new
allowed_pod_annotationsandallowed_pod_labelssettings in[openshell.drivers.kubernetes]. This affects direct API or SDK callers that setSandboxTemplate.labelsorSandboxTemplate.annotations, including recovery of timed-out sandboxes; theopenshellCLI and--labelmetadata labels are unaffected. #4497 - The gateway now rejects annotation keys with the reserved
internal.openshell.ai/prefix onCreateSandboxandUpdateConfig. #4626 - The Go SDK's
SandboxInterface.Create()andCreateFromTemplate()now take functional options such asWithLabels(),WithAnnotations(), andWithServiceExposures()instead of a positional labels argument and the removedCreateOptionsstruct. Update call sites to the new options. #3198 - External compute drivers that provision
openshell-sandboxmust update their bootstrap descriptor fromouter_fencetoprovisioning_evidence; drivers that use their own isolation backend are unaffected. This release also publishes the versioned Sandbox Protocol for independently implemented backends. #3898 - The snap no longer enables the user gateway service for every user; the install script enables it only for the user who ran it. After a direct snap install, or if an older snap revision enabled it globally, run
sudo systemctl disable --global snap.openshell.user-gateway.serviceonce and thensystemctl --user enable --now snap.openshell.user-gateway.servicefrom the single account that should run the gateway. #4615
Bug fixes
- Hostname-based network policy is now bound to supervisor-controlled DNS, while sandbox host aliases still require explicit IP validation or a trusted gateway pin. #4602
- Stopping a MicroVM sandbox no longer discards recent writes, because the guest now flushes its filesystem before shutdown. #4195
- You can now stop a sandbox stuck in
Errorafter a startup failure and start it again, without deleting it or its persistent workspace. #4231 - OTLP export with gzip compression or an
https://endpoint no longer fails at startup. #4399 - Podman deployments can trust a private CA for inspected HTTPS egress with the new
additional_ca_bundlesetting, without rebuilding the supervisor image. The CA is trusted for all destinations by both the supervisor and the workload. #3996 - The Helm chart now installs in namespaces that enforce the Restricted Pod Security standard, and the certgen hook security context can be overridden with
pkiInitJob.securityContext. #3340 - GitHub App OAuth token refresh now works, because the gateway asks for a JSON response. #4530
- A deleted provider that sandboxes still reference no longer blocks gateway startup; the gateway logs a warning instead. #4661
- In Kubernetes operator workspace mode, labeled workspaces are no longer rejected with
PermissionDeniedright after gateway startup. #4527 - Kubernetes PVC mounts can no longer overlap driver-managed runtime and control paths. #4522
- The sandbox network broker now denies operations when it cannot verify a descriptor, instead of falling back to native handling. #4494
- VM guest startup is hardened so the packaged sandbox keeps its expected executable identity. #4539
- Seccomp notification probe failures now report the actual kernel error instead of a generic "notification launcher disappeared" message. #4051
- e2fsprogs preflight checks no longer fail when Linux briefly reports a newly installed executable as busy. #4315
- Middleware now sees
httpandwsfor plaintext requests in a tunnel instead ofhttpsandwss. #4397 - L7 OCSF HTTP events now report
httpsfor TLS-terminated requests. #4684 - OCSF events now include the required
device.os.type_id, so they validate against the OCSF 1.8 schema. #4677 - Mutation-lock metrics from the gateway's startup reconciliation are no longer dropped. #4524
- Updated
rustlsto 0.23.46 to address RUSTSEC-2026-0346 through RUSTSEC-2026-0349. #4568 - The RPM-installed Python SDK now imports correctly, and its stubs can be generated with older
protocversions. #4439 - Builds now honor the
PROTOCenvironment variable, so distribution builds can use their system protobuf compiler. #4441
Features
- Supervisors can now receive configuration changes pushed over their gateway session by setting
config_delivery_mode = "push", so policy and setting changes reach sandboxes in about 100 ms instead of up to 10 seconds. Polling remains the default in this release. #4320 - The gateway and sandbox supervisors can export OCSF events as OTLP log records when
[openshell.gateway.otlp.ocsf]setsenabled = true, and you can now send traces and OCSF events to different OTLP endpoints. Existing configurations with only[openshell.gateway.otlp] endpointbehave as before. #4500, #4545 - The gateway now emits OCSF Authentication events for rejected requests, including the authentication mechanism, a reason category, the peer address, and the request ID. #4632, #4655, #4673
- MicroVM sandboxes can mount host directories through virtiofs after an operator sets
enable_bind_mounts = truein[openshell.drivers.vm]. You can use up to 3 mounts on x86_64 or 32 on aarch64, and QEMU-backed and GPU launches do not support mounts. #3463 - The Docker supervisor can now use bridge networking with the new
supervisor_network_modesetting; host networking remains the default. #4016 openshell sandbox createnow accepts repeatable--annotation KEY=VALUEflags. #4325openshell sandbox createadds--env-from KEY[=ENVVAR]to set sandbox environment variables from the CLI's environment without putting values on the command line. TheOPENSHELL_OCSF_JSON=1gateway audit sink is also now available on all platforms. #4106- When a dynamic token grant is refused, sandbox reads now show a bounded cause and recovery action, while the workload gets an HTTP 502 with an
x-openshell-request-idit can share. #4427 - The Helm chart adds
server.dataStorageSizeandserver.dataStorageClassto configure the gateway data PVC. #3854 - Gateway mutation locks are now scoped per workspace and sandbox, with bounded waits, so bursts of supervisor reconnects no longer queue behind a single fleet-wide lock. #4147
Other
- Added documentation for the Port Forwarding IPv6 loopback example,
sandbox createsize limits, Kubernetes managed workspace setup, and new Observability overview and Traces pages. #2449, #4447, #4622, #4560 - Removed the grpcurl walkthrough from the README. #4585
- Added an RFC that proposes a sandbox service exposure architecture. #4267
- Introduced a backend-neutral cryptography interface while keeping AWS-LC as the production backend and preserving existing credential formats and TLS defaults. #3351
- The CLI and gateway no longer link
ringalongside AWS-LC. #4468 - Sped up gateway server builds by removing
async_traitfrom internal traits. #4619 - Updated development and build dependencies, including setuptools, pytest, TypeScript SDK test dependencies, and GitHub Actions, and temporarily accepted build-only
zipadvisories. #4711, #4713, #4712, #4710, #2625, #3002, #4552 - Reworked the release pipeline to separate prerelease publication from qualification, promote qualified prereleases to stable, generate PR-based release notes, retry Helm chart pushes, and improve Slack notifications. #4419, #4420, #4611, #4654, #4747, #4578, #4605, #4719
- Improved CI reliability and coverage, including restored default E2E coverage, Kubernetes conformance readiness, paginated required-gate lookups, Determinate Nix setup, and stricter compatibility-review risk acceptance. #4424, #4676, #4663, #4593, #4601, #4595
- Added and stabilized tests for OCI image identities, Landlock descriptor limits, CLI port forwarding, and Kubernetes 1.29 conformance. #4521, #4457, #4570, #4463
- tmachine can now build local Debian and RPM artifacts from a checkout. #4598, #4651
- Updated contributor tooling with triage duty workflows, explicit frozen labels for stale issues, and earlier Gator sandbox name validation. #3082, #4534, #4660