OpenShell v0.1.7
Quick install
curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | OPENSHELL_VERSION=v0.1.7 sh
Upgrade notes
- Breaking: OpenShell now emits native OCSF 1.8.0 records only, so deployments that relied on 1.1 or 1.3 records now receive 1.8.0. The
ocsf_schema_version setting, the gateway schema_version fields, Helm server.ocsfLog.schemaVersion, and OPENSHELL_OTLP_OCSF_SCHEMA_VERSION are deprecated and ignored, and setting them logs a warning. #5036
- The Podman-only
[openshell.drivers.podman].additional_ca_bundle setting from v0.1.5 still works, but it is deprecated in favor of the new [openshell.supervisor.network].additional_ca_bundle. The old key is only honored when Podman is the active compute driver. #5155
- On the MicroVM driver, sandboxes from registry images and rootfs tars now run as the image's
sandbox account, as documented, instead of always running as 1000:1000. New sandboxes from images whose sandbox account isn't UID 1000 now run under that UID, and requesting the image's own UID with run_as_user now works. #5131
config preflight and gateway startup now reject an [openshell.gateway.supervisor_pool] table when the selected driver doesn't use shared supervision, and they reject a pool recovery timeout shorter than member failure detection. #4988
Bug fixes
- Shared-pool sandboxes whose supervisor stays gone past the 60-second recovery deadline now show as
Stopped, and sandbox start runs them again. #5076
- When the shared supervisor pool can't place a sandbox,
sandbox create now says why: the pool isn't ready, no replica is attached, no replica has room, or placement failed. #4985
- VM sandboxes now start when the gateway runs with a restrictive umask, such as the packaged
UMask=0077. #5099
- For direct connections, address selection from policy DNS now goes through the same destination checks as endpoint decisions. #5004
- The gateway now accepts a supervisor's full 200-line reconnect log backlog instead of silently dropping half of it. #5049
- OCSF events from the supervisor and gateway now pass validation against the official OCSF 1.8.0 schema. #4288, #5020
- Vulnerable Rust dependencies are updated, including
zip (GHSA-m665-v7pm-7grj), russh and pageant (open Dependabot alerts), and pulldown-cmark, and the unmaintained rustls-pemfile parser is replaced. #5026, #5030, #5122, #5123
Features
- Kubernetes sandboxes can now update their image, command, environment, and metadata without being recreated or losing persistent storage. Updates require operator activation and a stopped sandbox, and stopping a completed, failed, or timed-out sandbox now moves it to
Stopped while keeping its exit code or timeout diagnosis. #4873
- Sandboxed agents can send OpenTelemetry traces to your collector without an egress rule: add
[openshell.gateway.otlp.agent] with enabled = true to gateway.toml, and the supervisor tags each span with the sandbox id before forwarding it. #4276
- OTLP export can now use OTLP/HTTP: set
protocol = "http/protobuf" on [openshell.gateway.otlp] or any of its signal tables, with gRPC remaining the default. An OTLP endpoint that includes a query string is now a configuration error. #5082
- OTLP collectors that require authentication or routing headers are now supported through
headers or headers_file on [openshell.gateway.otlp] or a signal table. Supervisors and the agent trace relay send them too, so MLflow can ingest relayed agent traces directly with x-mlflow-experiment-id. #5083
- OTLP collectors can use a private CA and mutual TLS: set
ca_file, and optionally cert_file and key_file, on [openshell.gateway.otlp] or a signal table. The agent trace relay and OTLP/HTTP export now also support https:// collectors. #5084
- Sandbox egress can now trust private PKI through
[openshell.supervisor.network].additional_ca_bundle, which adds a PEM bundle on top of the default roots for every first-party compute driver. #3292
- A new opt-in supervisor TLS listener lets declared HTTP and WebSocket sandbox services take application traffic directly, without going through the gateway. It is disabled by default. #4936
- When several gateways share a Kubernetes cluster, ingress, and wildcard certificate, you can set
service_hostname_format = "hashed" under [openshell.gateway] to give each exposed service a unique hostname. The default readable format is unchanged. #4842
- The Rust, Go, Python, and TypeScript SDKs now send exec calls straight to the gateway replica that owns the sandbox when replica routing is enabled. Go also routes port-forward and SSH tunnel calls this way, and TypeScript routes port-forward. #4790, #4852, #4918, #4877
- CLI browser login now works when the CLI runs inside a container: set
OPENSHELL_CALLBACK_PORT to fix the callback port and OPENSHELL_CALLBACK_BIND_ADDRESS to change the bind address. The defaults are unchanged. #5065
- The Python gRPC bindings now ship typed sync and async stubs, so editors and type checkers know the concrete request and response types. #5040
- Embedders can opt into a system-OpenSSL crypto backend; AWS-LC remains the default. #4843
Other
- The Podman container gateway docs now give a tested mTLS procedure and list every cause of the
--tls-cert is required when TLS is enabled startup error. #4977, #5001
- The service expose example in the docs now uses an image that includes Python. #4197
- Stable release publication can now be retried safely without overwriting published artifacts, each release publisher can be dispatched on its own, and Release Dev keeps publishing when a snap upload or Go SDK tag fails. #4986, #4987, #5018
- The temporary v0.1.6 protobuf compatibility exception was removed from release qualification. #4978
- OCSF tests now validate events against the JSON Schemas exported by the OCSF schema server. #5019
- The conformance suites moved onto testkit and now run through the new test runner, including on tmachine and in the host E2E lanes. #4773, #4774, #5078
- Feature tests can now use services started by the test environment, beginning with Keycloak. #4891, #5089
- E2E fixes: the shared supervisor harness now works with gateway TLS, and kind now gets its Calico images through the runner mirror. #4984, #5178
- The Gator agent launcher can run on Kubernetes gateways with reusable tooling images, and it now applies manifest settings to the launched sandbox only. #4744, #4888
- Build fixes: worktree builds no longer rebuild
openshell-core every time, Windows lint passes again, and local image builds send a smaller build context. #4947, #5021
- Dependency updates: OpenTelemetry 0.33 and rustls 0.23.46 in the test and example crates. #5081, #4994, #4996, #4997, #4998
- Divesh Chowdary (@FrostGod) joined the OpenShell maintainers. #5175