Skip to content

Releases

OpenShell.Net 0.1.7

Choose a tag to compare

@github-actions github-actions released this 09 Nov 17:21
6146eb3

OpenShell.Net 0.1.7 is the first release of the .NET SDK for the NVIDIA OpenShell gateway, built from NVIDIA OpenShell v0.1.7.

Community project; not affiliated with or supported by NVIDIA.

Packages

Package Purpose
OpenShell.Net The client
OpenShell.Net.DependencyInjection AddOpenShell / AddOpenShellClient, named clients, health checks
OpenShell.Net.Testing FakeGateway and FakeOpenShellClient for unit tests

Targets net8.0 and net10.0 (apps on .NET 11 use the net10.0 build). Trimming and Native AOT compatible. Symbol packages and Source Link included.

Highlights

  • Full gateway coverage: all 67 user-facing RPCs plus SandboxUpdates, behind a curated async API. Covers sandboxes (lifecycle, waits, suspend/resume, updates), exec (run, stream, interactive, Python), file transfer and rootfs staging, TCP forwarding, SSH and services, providers and profiles, policy and configuration, workspaces, watch and logs.
  • Authentication:
    • static and refreshable tokens;
    • OIDC: client credentials, browser with PKCE, device code;
    • mTLS with a pinned CA;
    • Cloudflare Access with an automatic edge tunnel.
  • CLI interop: gateways registered with the OpenShell CLI connect through GatewayClient.Connect, sharing its oidc_token.json.
  • Resilience: retries for reads, with deadlines respected. Typed OpenShellException errors carry google.rpc details. Streams renew credentials once on Unauthenticated. Owner-replica routing.
  • Observability: OpenTelemetry tracing and metrics, plus ILogger logging.
  • Testing: unit-tested against an in-memory gateway and integration-tested against a real v0.1.7 gateway. See feature parity.

Documentation: https://zcsizmadia.github.io/OpenShell.Net/

Behaviour worth knowing

  • DefaultTimeout applies only to single request/response calls. Exec (including Exec.RunAsync), file transfers, watches, forwards and SSH tunnels are streams and are not bounded by it. Bound them with ExecOptions.Timeout or a CancellationToken.
  • Pinned CA certificates replace the system roots. With CaCertificates, or a registered gateway's mtls/ca.crt, the server certificate must chain to a pinned root. Intermediates the server sends are used to complete the chain.
  • Auth providers belong to the caller. Dispose RefreshableToken and ClientCredentialsAuth yourself; the client doesn't.
  • File transfer runs tar over exec, so the sandbox image needs tar and sh.