NVIDIA / NVIDIA/OpenShell

feat(sdk): expose curated gateway resource capabilities

Open
#3,011 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

state:stale
Dominant language
Rust
Stars
8.7k
Forks
1.3k
Avg merge
2d 11h
Merged PRs (30d)
253

Description

User Story

As an OpenShell SDK user, I want a curated gateway-capabilities API so that I can determine which portable CPU, memory, and GPU requests a gateway’s compute drivers support without depending on generated protobuf types.

Problem Statement

Issue #2902 adds static resource capability fields to the compute-driver and gateway protobuf APIs. Rust callers can already access them through OpenShellClient::raw_grpc() and openshell_sdk::raw::proto, but the curated SDK surface has no typed gateway-info method or capability models.

Impact / Why This Matters

Consumers that need an idiomatic SDK API must currently use generated wire types and direct gRPC calls. That is workable but makes application code depend on protobuf details and produces inconsistent ergonomics across SDKs.

Proposed Design

Expose gateway information and per-driver resource capabilities through each curated SDK surface. Preserve absence when a driver does not report capabilities, and document that capability flags describe static implementation support rather than live inventory or available capacity.

Acceptance Criteria

  • The Rust SDK exposes a curated gateway-info method and types for CPU, memory, and GPU resource capabilities.
  • The TypeScript, Python, and Go SDKs expose equivalent capability information where they provide curated gateway APIs.
  • SDK tests cover populated capability fields and unreported capabilities.
  • SDK documentation explains the static semantics and raw-protobuf fallback.

Alternatives Considered

Keep the new fields available only through generated protobuf clients. This preserves wire-level access but leaves users to manage generated types directly and does not provide a consistent SDK-level experience.

Agent Investigation

The Rust SDK re-exports generated protobufs through openshell_sdk::raw::proto; protobuf bindings are regenerated from the full proto/ tree by openshell-core during Rust builds. This follow-up is therefore curated API work rather than a prerequisite for protocol access.

Related to #2902 and draft PR #3010.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the curated Rust SDK surface and compare it with the TypeScript, Python, and Go SDK gateway APIs; raw access is available through OpenShellClient::raw_grpc() and openshell_sdk::raw::proto. Check how protobuf bindings are regenerated from the proto/ tree by openshell-core. Done means equivalent capability information, tests for populated and absent fields, and documentation of static semantics and the raw-protobuf fallback.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, python, rust, typescript
Domain
api, backend-api-design, documentation, testing
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.