Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

0.6 prerelease checklist: stabilize guest-agent API and SDKs

未关闭
#1,094 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
42/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃

调研方向

先从此检查清单中未勾选的 SDK 和版本化 API 项开始,然后阅读 docs/guest-api-v1.md、docs/guest-api-v0.md 以及 #1124 中尚未完成的工作。检查剩余的 SDK 发布和每个 SDK 的文档任务、opaque JSON 字段名以及 protobuf 字节表示。完成的标准是:已更改的 SDK 以 0.6.0 发布、v1 schema 得到修正,并且参考文档已重新生成。

由索引模型根据 Issue 内容生成。

描述

Objective

Ship dstack 0.6 with a stable, versioned guest-agent API and consistent Go, JavaScript/TypeScript, Python, and Rust SDKs. Existing 0.5.x clients must continue to work against a 0.6 agent.

Compatibility

  • Keep the unversioned API fully compatible with 0.5.x, verified with v0.5.10 generated clients and SDKs. — #1121 runs the released SDK suites against the current agent in CI. The pinned tags are v0.5.8 and v0.5.11, not v0.5.10: v0.5.10:sdk and v0.5.11:sdk are the same tree object, so running both bought nothing. Note the limit — old JSON clients ignore unknown keys, so this job catches breaking changes to the frozen surface but not additive ones; the shape freeze in frozen_surface is what covers additions.
  • Keep GetQuote unchanged: the v0.5 response fields and semantics remain the complete contract. Cross-platform attestation is exposed through Attest, not GetQuote.
  • Keep GetKey wire- and behavior-compatible. Publish a normative specification for path, purpose, supported algorithms, defaults, output encoding, and signature-chain verification. — spec in #1123 (docs/guest-api-v0.md), byte-level: HKDF salt, what enters the KDF vs only the claim, both chain-link preimages, all three signing modes, and the hazard that algorithm does not domain-separate.
  • Make EmitEvent return 404 with informative error message (deprecated method)
  • Unknown algorithms must be rejected.

Attestation

  • Make Attest the single API for platform and GPU attestation

SDKs

  • Release all changed SDKs as 0.6.0 and apply semantic versioning consistently.
  • Expose the same TlsKeyOptions fields and defaults in every SDK. usage_server_auth defaults to true; remove the unused path option. — #1120
  • Represent the TLS private key as PEM and provide an explicit toPkcs8Der() conversion. Remove ambiguous byte-conversion APIs. — resolved differently, deliberately. The ambiguous accessor is gone from v1 (#1120) and no toPkcs8Der() replaced it: v1 returns PEM and nothing else. The accessor existed to feed the key into the blockchain adapters, v1 has no chain-flavored surface, and DER is one standard-library call away for anyone who wants it. v0 keeps the accessor, because the adapters are v0-typed and that surface is frozen. Reopen this if a v1 caller turns up who needs DER from the SDK itself.
  • Represent protobuf byte fields as bytes in Rust, not hex strings. — #1124 (open), and in every SDK rather than Rust alone: eleven response fields plus report_data, with the decode_* helpers deleted. The JSON wire is unchanged.
  • Make all SDKs report non-2xx responses consistently, including the server error and HTTP status. — #1120, pinned by tests in #1120 that assert the exact status an image without nvattest answers.
  • Regenerate and review the protobuf, HTTP, and SDK reference documentation. — v1 and v0 both have written specs now (docs/guest-api-v1.md, docs/guest-api-v0.md) and sdk/curl/api.md was corrected, but the per-SDK reference docs have not been regenerated.

Versioned API (future)

  • Introduce the long-term API under a versioned URL/service namespace such as /prpc/v1/... and protobuf package dstack.guest.v1. API selection must not depend on request headers. — #1116; selection is by URL path alone.
  • Use *Request and *Response consistently for new messages. Keep the method name Attest.
  • Give opaque JSON fields explicit *_json names in v1, or use typed messages where the schema is stable. — not done. InfoResponse still carries app_compose, vm_config and key_provider_info as bare string fields whose comments say they are JSON documents passed through unparsed. v1 is unreleased, so this is still cheap to change.

Signing (future)

  • Provide Sign with an explicit key specification containing path, purpose, and algorithm. — v1 has no Sign; the frozen v0 Sign is now specified in docs/guest-api-v0.md.
  • Add GetSigningKey to return the corresponding public key and certification chain without signing a message. — v1 GetKey returns public_key and signature_chain alongside the key, which covers the use case but not as a separate method.
  • Provide signature verification as SDK functionality rather than an agent RPC. — #1110. v0's Verify RPC is still served for 0.5.x clients and is documented as frozen.
  • Specify the exact Ed25519 and secp256k1 message and prehashed modes. — done for the frozen v0 surface in #1123, including secp256k1_prehashed requiring the caller to supply the digest. v1 has no signing surface to specify.
主要语言
Rust
星标
555
派生
97
平均合并
1 天 3 小时
30 天内合并 PR
199

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Dstack-TEE/dstack 的其他 Issue

查看 Dstack-TEE/dstack 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。