Skip to content

OpenShell v0.1.5

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Oct 17:28
· 41 commits to main since this release
bdb956f

OpenShell v0.1.5

Quick install

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.jsonl instead of .log, so update any collector patterns from openshell-ocsf.*.log to openshell-ocsf.*.jsonl. Old .log files 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_annotations and allowed_pod_labels settings in [openshell.drivers.kubernetes]. This affects direct API or SDK callers that set SandboxTemplate.labels or SandboxTemplate.annotations, including recovery of timed-out sandboxes; the openshell CLI and --label metadata labels are unaffected. #4497
  • The gateway now rejects annotation keys with the reserved internal.openshell.ai/ prefix on CreateSandbox and UpdateConfig. #4626
  • The Go SDK's SandboxInterface.Create() and CreateFromTemplate() now take functional options such as WithLabels(), WithAnnotations(), and WithServiceExposures() instead of a positional labels argument and the removed CreateOptions struct. Update call sites to the new options. #3198
  • External compute drivers that provision openshell-sandbox must update their bootstrap descriptor from outer_fence to provisioning_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.service once and then systemctl --user enable --now snap.openshell.user-gateway.service from 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 Error after 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_bundle setting, 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 PermissionDenied right 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 http and ws for plaintext requests in a tunnel instead of https and wss. #4397
  • L7 OCSF HTTP events now report https for 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 rustls to 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 protoc versions. #4439
  • Builds now honor the PROTOC environment 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] sets enabled = true, and you can now send traces and OCSF events to different OTLP endpoints. Existing configurations with only [openshell.gateway.otlp] endpoint behave 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 = true in [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_mode setting; host networking remains the default. #4016
  • openshell sandbox create now accepts repeatable --annotation KEY=VALUE flags. #4325
  • openshell sandbox create adds --env-from KEY[=ENVVAR] to set sandbox environment variables from the CLI's environment without putting values on the command line. The OPENSHELL_OCSF_JSON=1 gateway 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-id it can share. #4427
  • The Helm chart adds server.dataStorageSize and server.dataStorageClass to 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 create size 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 ring alongside AWS-LC. #4468
  • Sped up gateway server builds by removing async_trait from internal traits. #4619
  • Updated development and build dependencies, including setuptools, pytest, TypeScript SDK test dependencies, and GitHub Actions, and temporarily accepted build-only zip advisories. #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