Skip to content

feat(gateway): forward framed multi-GPU evidence - #428

Open
chalabi2 wants to merge 6 commits into
akash-network:mainfrom
chalabi2:jc/multigpu-evidence-forwarding
Open

feat(gateway): forward framed multi-GPU evidence#428
chalabi2 wants to merge 6 commits into
akash-network:mainfrom
chalabi2:jc/multigpu-evidence-forwarding

Conversation

@chalabi2

@chalabi2 chalabi2 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Why

The attestation sidecar preserves each GPU report, optional CEC report, certificate chain, NVML architecture, and physical UUID, but the lease gateway otherwise drops those explicit fields and forwards only the ambiguous legacy aggregate. Trustee cannot reliably construct one device_evidence_list entry per Blackwell GPU from that response.

What changed

  • forward attestation_report, cec_report, certificate_chain, architecture, and UUID for every GPU
  • preserve the legacy report field for wire compatibility
  • reject malformed base64 before it crosses the public gRPC boundary
  • reject duplicate device indices
  • require GPU reports only for GPU TEE platforms and at least one report for those platforms
  • accept only NVML Hopper or Blackwell architecture values and canonical GPU UUIDs
  • verify explicit evidence concatenates exactly to the legacy aggregate
  • cover two distinct GPUs, identity validation, the legacy response, and malformed/cardinality failures

Stacked dependencies

This PR is stacked on #426 and depends on akash-network/chain-sdk#351. Until #351 is released, go.mod contains a clearly marked temporary replacement to the exact reviewed fork commit. Remove that replacement and update the normal pkg.akt.dev/go version before merge.

After #426 merges, rebase this branch so the final PR contains only the gateway commits.

Validation

  • full Go test suite passes with the race detector
  • full go vet passes
  • gateway identity and framing regressions pass
  • gofmt and git diff --check pass

Real two-GPU RTX PRO evidence through this optional quote endpoint still requires hardware validation. This API remains separate from the guest-to-KBS attestation flow.

chalabi2 added 2 commits July 31, 2026 23:52
Carry each GPU's attestation report, optional CEC report, and device certificate chain as separate fields while retaining the legacy aggregate. Reject malformed, duplicate, truncated, oversized, or unauthenticated helper output so downstream Trustee verification receives complete per-device evidence.

Signed-off-by: Joseph Chalabi <chalabi.joseph@gmail.com>
Signed-off-by: Joseph Chalabi <chalabi.joseph@gmail.com>
@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@chalabi2, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 1 minute

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: ec73b37b-5234-4678-8745-13d0401ca55e

📥 Commits

Reviewing files that changed from the base of the PR and between 707ab90 and f1b8f94.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (11)
  • gateway/grpc/lease_server.go
  • gateway/grpc/lease_server_test.go
  • go.mod
  • sidecar/attestation/nvml-helper/nvml_attestation.c
  • sidecar/attestation/server.go
  • sidecar/attestation/server_test.go
  • sidecar/attestation/tee/mock.go
  • sidecar/attestation/tee/nvidia_gpu.go
  • sidecar/attestation/tee/nvidia_gpu_helper_linux_test.go
  • sidecar/attestation/tee/nvidia_gpu_test.go
  • sidecar/attestation/tee/tee.go

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Collect the architecture and physical UUID from NVML in the same helper call as
each attestation report. Frame and validate that identity before exposing it to
callers.

Support Hopper and Blackwell architecture values from the NVIDIA SDK and reject
unknown architectures or malformed UUIDs.

Signed-off-by: Joseph Chalabi <chalabi.joseph@gmail.com>
@chalabi2
chalabi2 force-pushed the jc/multigpu-evidence-forwarding branch from 839e650 to 4073741 Compare August 4, 2026 20:03
Assert that a missing CEC report is omitted from sidecar JSON rather than
serialized as an empty field.

Signed-off-by: Joseph Chalabi <chalabi.joseph@gmail.com>
Carry every sidecar GPU report, optional CEC report, and certificate chain
through the public lease response. Reject malformed base64, duplicate device
indices, invalid platform cardinality, and disagreement between explicit
evidence and the legacy aggregate.

The chain-sdk replacement is temporary review plumbing for
akash-network/chain-sdk#351 and must be removed after that change is released.

Signed-off-by: Joseph Chalabi <chalabi.joseph@gmail.com>
Require every GPU report to carry a supported NVML architecture and canonical
physical UUID. Forward both fields through the public quote response.

Keep the legacy aggregate compatible once hardware identity is present and
reject missing, tenant-shaped, or malformed identity at the gateway boundary.

Signed-off-by: Joseph Chalabi <chalabi.joseph@gmail.com>
@chalabi2
chalabi2 force-pushed the jc/multigpu-evidence-forwarding branch from 4073741 to f1b8f94 Compare August 4, 2026 20:05
@chalabi2
chalabi2 marked this pull request as ready for review August 4, 2026 20:09
@chalabi2
chalabi2 requested a review from a team as a code owner August 4, 2026 20:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant