feat(sdk/go): add Go SDK foundation and core clients (1/3)#2225
Open
rhuss wants to merge 1 commit into
Open
Conversation
Add the OpenShell Go SDK with core client implementations for sandbox management, command execution, file operations, SSH tunneling, TCP forwarding, provider management, service discovery, and network policy management. Key components: - Gateway client with CLI config auto-discovery and gRPC transport - Type-safe sub-clients for all OpenShell API domains - Proto-to-SDK type converters with deep copy at boundaries - Refreshable OAuth2 token authentication - Comprehensive unit tests (250 tests, all passing) Module path: github.com/NVIDIA/OpenShell/sdk/go Minimum Go version: 1.24 Part 1 of 3 for issue NVIDIA#2044. Merge this PR first, then PRs 2/3 and 3/3. Signed-off-by: Roland Huß <roland@jolokia.org> Assisted-By: 🤖 Claude Code
This was referenced Jul 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Context
This is a large contribution and I want to be upfront about that. What you're looking at is the handover of a prototype Go SDK that I built to explore the API surface described in #2044. The good news: it's complete. The SDK covers the full OpenShell gRPC API, follows
client-goconventions, and includes 250+ passing unit tests. The not-so-good news: that completeness means a lot of code to review.To make this manageable, I've split the contribution into three PRs. This split was designed to help both human reviewers and AI review agents work through the changes incrementally:
Each PR builds on the previous one. Once PR 1/3 is merged, the diff for PR 2/3 will auto-update to show only the incremental changes. PR 1/3 is self-contained: it compiles and all tests pass independently.
Spec-driven development
This SDK was built using Speckit, a spec-driven development workflow. Every design decision, from the type hierarchy to the converter patterns to the error mapping, started as a specification that was reviewed and refined before implementation. The specs live in a separate PR on my fork and include detailed design documents, research notes, and task breakdowns.
I'd like to raise a question for the maintainers: would you be interested in keeping design specs alongside the SDK code? The Speckit workflow works well as a sub-project within a monorepo, where specs sit next to the code they describe (e.g.,
sdk/go/specs/). But it also works fine with specs kept externally. I have a fourth PR with the specs ready, but whether to include them is entirely up to you. I'm happy either way.What's in this PR
sdk/go/go.mod(modulegithub.com/NVIDIA/OpenShell/sdk/go, Go 1.24+).pb.go(committed, no protoc needed to build)types/package with all SDK structs, errors, options, interfacesinternal/converter/(proto-to-SDK) andinternal/grpc/(connection management)AuthProviderinterface, refreshable token wrapperResolves #2044