Repository navigation
Releases
Releases · zcsizmadia/OpenShell.Net
OpenShell.Net 0.1.7
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 itsoidc_token.json. - Resilience: retries for reads, with deadlines respected. Typed
OpenShellExceptionerrors carrygoogle.rpcdetails. Streams renew credentials once onUnauthenticated. Owner-replica routing. - Observability: OpenTelemetry tracing and metrics, plus
ILoggerlogging. - 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
DefaultTimeoutapplies only to single request/response calls. Exec (includingExec.RunAsync), file transfers, watches, forwards and SSH tunnels are streams and are not bounded by it. Bound them withExecOptions.Timeoutor aCancellationToken.- Pinned CA certificates replace the system roots. With
CaCertificates, or a registered gateway'smtls/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
RefreshableTokenandClientCredentialsAuthyourself; the client doesn't. - File transfer runs
tarover exec, so the sandbox image needstarandsh.