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.3"The two proofs, explained
Security note. 0.2.3 pins NVIDIA's second NRAS intermediate (GPU Intermediate 005): with 0.2.2, a bundle signed under a 005 key fails offline. 0.2.2 refuses the quote of a TD in debug mode, whose host can read and modify its memory; 0.2.1 fixed 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.2 on 21 October 2026, online and offline: RESULT: VERIFIED, debug mode off. Every published run this tool re-verifies, with its command, is indexed at /proofs.

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.3"
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 a pinned NRAS intermediate, 004 or, since 0.2.3, 005, 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.

The quote fields behind the tdx.* lines (MRTD, RTMR0 to RTMR3, REPORTDATA, the debug bit, the TCB status and the certificate chain) are read one by one on a published bundle, each with what it proves and what it does not, in Read an Intel TDX Quote, Field by Field.

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 a056d11e7e48f40e6813ef26215598adefda9b3d74373e2d47dc3e368572ed28
LICENSE1.1 KBMIT
sha256 206bafa60d93be37b340063e9acaaaf3498baeec9f3fcefa06ac2f6ca98e6433
README.mdhow it works, install, use
sha256 b322edf42ad09d81d49ed651f87f349962b99b2d86ac6b4d77f158adb6cb615e
WHAT_IT_PROVES.md5.3 KBevery check and its limit
sha256 e4ed73314b6e82a8ca80531c87c94f2a62dbf87fc9ffb3f022600e184fc992a9
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 KBolder release: wheel, 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 KBolder release: source archive, byte for byte the PyPI release
sha256 033117c8c40c2c1c0939227559c68582632fd1cbae9c6eb7657b03ebc08d3d22
voltage_verify-0.2.2-py3-none-any.whl46.3 KBprevious release: wheel, byte for byte the PyPI release (0.2.2, 21 October 2026: the quote of a TD in debug mode is refused, check tdx.debug)
sha256 0d8ecbf4c39d9b72721c312cc3b35c539c6a80002627f282a4ead72db5e7cfb7
voltage_verify-0.2.2.tar.gz88.3 KBprevious release: source archive, byte for byte the PyPI release
sha256 4e557cf8a4fd971610167eb6333799b7f068d4a80cf41def1d60d2cb1d4a63e4
voltage_verify-0.2.3-py3-none-any.whl47.1 KBwheel, byte for byte the PyPI release (0.2.3, 22 October 2026: NVIDIA's second NRAS intermediate, GPU Intermediate 005, is pinned next to 004)
sha256 6f837f5998061750df87a58556405d5247d7ecacce0a6c237565bad453cb141d
voltage_verify-0.2.3.tar.gz93.3 KBsource archive, byte for byte the PyPI release
sha256 2eeb8bfa260977ba14a97a0eb07aa1a10c5ce307870577ce1c7c549f80bd8599

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 (10 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.