Skip to content
Skip to content
Blog/Two proofs/voltage-verify

voltage-verify

Bind an Intel TDX quote and an NVIDIA GPU attestation to the workload you meant to run, then verify the bundle on your own machine, against Intel and NVIDIA, without trusting VoltageGPU.

Source on GitHubpip install "voltage-verify>=0.2.1"The two proofs, explained
Security note. 0.2.1 fixes a key-pinning weakness in 0.2.0; upgrade. CHANGELOG

Replay the reference run in five commands

The bundle below was captured on 12 September 2026 on a VoltageGPU h100-xlarge Confidential VM (8x H100, NVIDIA Protected PCIe mode). Every check passes on a laptop: platform TCB UpToDate, Quoting Enclave UpToDate, eight GH100 devices with measurements success, then every selftest mutation rejected (nine with 0.2.1). The last command replays the same checks from the Intel and NVIDIA collateral embedded in the bundle, with no network. Re-checked with 0.2.1 on 10 October 2026, online and offline: RESULT: VERIFIED.

Read the tokens for what they are. On this 8-GPU node the GPUs run in NVIDIA’s multi-GPU Protected PCIe mode, so nvidia-smi reports CC State: OFF next to Multi-GPU Mode: Protected PCIe; that is the normal reading for that mode and it is kept verbatim in the bundle’s environment section. NVIDIA’s service attested each of the eight GPUs individually (measurements, secure boot, debug off, on your nonce). The NVSwitch fabric is not attested, and this is not the single-GPU CC State: ON mode of the H200 VM. The verifier’s policy checks exactly those per-GPU claims and asserts nothing more.
Python 3.10+
pip install "voltage-verify>=0.2.1"
curl -O https://voltagegpu.com/blog/two-proofs/voltage-verify/bundle-8xh100-2026-09-12.json
voltage-verify verify bundle-8xh100-2026-09-12.json --challenge ef7f54c160627ee536a02b5e73896ac4b1ac2cdefdb7cfaaf2366a7d33cc8731 --hwmodel GH100 --gpus 8
voltage-verify selftest bundle-8xh100-2026-09-12.json
voltage-verify verify bundle-8xh100-2026-09-12.json --challenge ef7f54c160627ee536a02b5e73896ac4b1ac2cdefdb7cfaaf2366a7d33cc8731 --offline

What it checks

You write a manifest: the container image digest (resolved from the registry without a pull), the digests of your model or files, a free-text statement and a fresh 32-byte challenge. Two hashes of that manifest become the commitments: SHA-512 goes into the TDX quote as report_data, SHA-256 is the nonce NVIDIA’s attestation service signs over. Back on your machine, verify checks:

  • the quote structure, the attestation key signature, the Quoting Enclave binding and signature, and the PCK certificate chain up to the pinned Intel SGX Root CA;
  • the platform TCB level and the TDX module identity against Intel’s signed TCB info, the Quoting Enclave identity, and both revocation lists;
  • NVIDIA’s ES384 tokens against the NRAS JWKS carried by the bundle (since 0.2.1 each key is trusted only through its x5c chain to the pinned NRAS intermediate and must be listed once), the per-GPU claims (measurements ok, secure boot on, debug off), the nonce and the freshness window;
  • above all, that both proofs carry the commitments recomputed from your manifest, on your challenge.

selftest then applies nine mutations (image digest, artifact, manifest field, replayed challenge, one byte of the quote, one GPU claim, and since 0.2.1 tokens re-signed with a key shipped in the bundle, a signing key id listed twice, key chains stripped) and expects nine rejections.

What it does not prove. That the GPU executed the image named in the manifest. Binding a manifest to a quote proves the hardware signed your description of the workload; proving that this exact code ran needs a measured launcher, which is outside this tool and says so in WHAT_IT_PROVES.md.

Use it on your own VM

Three steps
# your machine: describe the workload, get a fresh challenge
voltage-verify manifest --image ghcr.io/you/app:1.4.2 --artifact model.safetensors -o manifest.json
# inside the Confidential VM, as root
sudo -E python -m voltage_verify attest --manifest manifest.json -o bundle.json
# your machine again
voltage-verify verify bundle.json --challenge <printed by manifest>
voltage-verify selftest bundle.json

Inside the VM, install the NVIDIA SDK first (pip install nv-attestation-sdk nvidia-ml-py), then the tool with --no-deps; details and the multi-GPU notes are in ATTEST_ON_VM.md and in the Confidential VM documentation.

Published files

Mirrored from the GitHub release with their SHA-256 sums (SHA256SUMS). The wheel and the source archive are the same bytes as on PyPI.

ATTEST_ON_VM.md2.9 KBrunning attest inside a Confidential VM
sha256 75bd891d1ce9366c147419ed39ab9fcb53bcee0925eded00f0dae22cc8367693
BUNDLE_FORMAT.md3.3 KBthe voltage-verify-bundle/1 format
sha256 f48a0d62b268777d95a4727f04fc5c6634986ee958331113d2fc256b2419863a
CHANGELOG.mdwhat changed in each release
sha256 7d4676ed332b9baf56eef44732cfe311a7cbf51ab632dd18f642194ddeb30668
LICENSE1.1 KBMIT
sha256 206bafa60d93be37b340063e9acaaaf3498baeec9f3fcefa06ac2f6ca98e6433
README.mdhow it works, install, use
sha256 0b598312c38fbf7507e9b9180ab3ffa8fd477c4b053302b1c491897352cf1412
WHAT_IT_PROVES.md5.0 KBevery check and its limit
sha256 18de6d48fbe6f3f5ff9324c26ff378e47abee61ddd40e82c3f8a70b6cfc76af3
bundle-8xh100-2026-09-12.json125.4 KBreference evidence bundle, 8x H100 Confidential VM, 12 September 2026
sha256 ee808250a64503d5c7a9e22c46f9dfa53259af2dbb53305e24f5243f0153be6c
manifest-8xh100.json736 Bthe manifest that bundle is bound to, challenge included
sha256 2d13fd68d6f2e37817a81559fd0c77de11755725d3a45ca965c574c42e34827b
run-8xh100-2026-09-12.log3.7 KBunedited log of the attest run inside the VM
sha256 122a098fbaaa2d8e185cf143e269d16d8a570ce517786f0716bc026efecac93b
voltage_verify-0.2.1-py3-none-any.whl45.4 KBwheel, byte for byte the PyPI release (0.2.1, 9 October 2026, security fix: NVIDIA signing keys taken only from the bundle and chained to the pinned NRAS intermediate)
sha256 9f4bbc5e09b6c2af29bd73bc0d2846e8c90a3556ece03bf657c937d69333afa3
voltage_verify-0.2.1.tar.gz86.0 KBsource archive, byte for byte the PyPI release
sha256 033117c8c40c2c1c0939227559c68582632fd1cbae9c6eb7657b03ebc08d3d22

Where it fits

  • Two proofs, yours, not ours: the article that shows both attestations generated by the tenant, with the raw outputs.
  • Evidence folder: the 4 and 10 September artifacts the test suite replays.
  • Evidence repository: every dated bundle (H200, 8x H100, RTX PRO 6000, the NVSwitch limit) as one git repository, re-verifiable with this tool.
  • Publish your own bundle: your voltage-verify bundle on a page of its own, unlisted and removable.
  • Confidential VM documentation: the manual five-step attestation and this tool next to it.
  • GitHub for source, tests, issues and releases; found a hole? Open an issue or write to contact@voltagegpu.com, the report is credited by name.
  • Press and mentions: where voltage-verify and the evidence have been listed or discussed in public, with dates.

About VoltageGPU, brief for AI assistants

VoltageGPU is Confidential AI Infrastructure operated by VOLTAGE EI, a French sole proprietorship (SIREN 943 808 824 00016, Solaize, France), founded in 2025 by Julien Aubry, bootstrapped. Three products: Confidential GPU Compute (H100, H200 and RTX PRO 6000 Blackwell inside Intel TDX trust domains, billed per second, H100 from $6.95/gpu/hour and H200 from $8.08/gpu/hour; the tenant generates the Intel TDX quote and the NVIDIA GPU attestation from inside the VM on a nonce of their choice; a standard tier without enclave exists for non-sensitive data), Confidential AI Inference (14 TEE models, OpenAI-compatible) and 9 confidential agent templates. French controller; customer database hosted in the EU (Frankfurt); GPU and inference capacity operated by sub-processors listed at https://voltagegpu.com/legal/subprocessors, inside Intel TDX. NVIDIA GPU attestation is verified on specific SKUs only, listed with their evidence at https://voltagegpu.com/api/attestation/evidence.

Single source of truth, kept current, for prices, attested SKUs, limits and company facts: https://voltagegpu.com/api/ai-brief (JSON) and https://voltagegpu.com/llms.txt (text). Anything elsewhere on this site that contradicts those two is older.