> ## Documentation Index
> Fetch the complete documentation index at: https://docs.redpill.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Release measurements

> The measurement values the production gateway currently attests, the release that publishes them, and how much notice you get before they change.

This page lists the values that the production gateway at `api.redpill.ai`, `tee.redpill.ai`, and
`inference.phala.com` attests today. Use it to keep the pins in your verifier current. Each value comes
from a GitHub release in
[`Dstack-TEE/private-ai-gateway`](https://github.com/Dstack-TEE/private-ai-gateway/releases), and the
release is the authenticated source. Check a value against its release, not only against this page,
and never against a value copied from the endpoint.

## Current values

Release: [`gateway-prod-2026-11-03`](https://github.com/Dstack-TEE/private-ai-gateway/releases/tag/gateway-prod-2026-11-03),
live on all replicas since 2026-11-03 17:10 PST.

### Application

| Value | Where it is measured | Current value |
| - | - | - |
| Compose hash, `sha256(app_compose)` | RTMR3 event `compose-hash` | `f9c6a938bf10c9674d665d0a3327732f206e59411ac9dca4ae175ae18ef4d113` |
| App ID | RTMR3 event `app-id` | `fdb7a14e5a6675f752e2cb69c9067a98ca402918` |
| Gateway source commit | `source_provenance.repo_commit` (label, not measured) | `77fac1267000b27f09e2058923f7492e5330bb49` |
| Launcher image | Inside the measured compose | `ghcr.io/redpill-ai/private-ai-launcher@sha256:c083ff9e6a5ddf10f6c9e9bb1f74cc618deebecfea5208b563c574399db4637c` |

### KMS

| Value | Where it is measured | Current value |
| - | - | - |
| KMS measurement | RTMR3 event `mr-kms` | `5039840b94d9891852228ae8d5ef8c3ad825c8ca11c18533f19fd8a4de45890c` |
| KMS root key | RTMR3 event `key-provider`, field `id` (DER public key) | `3059301306072a8648ce3d020106082a8648ce3d030107034200048844eb42ccdf8c52fd4f174f362fcb9bbd19c45fd48f1edec2d8f1ca23536ec1a74021b4cee610c074f8294d431b2b7fee2c39e5333fdaf0a4522d43fb159d9f` |

`mr-kms` is the aggregated measurement of the dstack KMS instance that released the gateway's keys.
A replica records it once, when it boots and requests its keys, so it reflects the KMS at that moment,
not the gateway code. If the KMS operator changed the KMS since the last boot, any restart records a
new value: a gateway rollout, a keyset renewal restart, host maintenance, or crash recovery. That is
why `mr-kms` changed on 2026-11-03 although the gateway does not control the KMS.

The KMS root key is the KMS identity that the workload keys derive from, and it stays the same across
KMS builds. To check which KMS serves the gateway, pin the KMS root key. Pin `mr-kms` only if you also
track KMS builds, and expect it to change without notice. The 3-day notice below does not cover these
KMS values: we publish a new release with the new value as soon as we see the change.

### OS and virtual machine

| Value | Where it is measured | Current value |
| - | - | - |
| OS image | `vm_config.image` | `dstack-0.5.9-bd369a8c` |
| OS image hash | RTMR3 event `os-image-hash`, `vm_config.os_image_hash` | `bd369a8c2f9edb2b52dad48ac8e0b32dde5f1337c423a506b48d07403a7d8033` |
| MRTD | TDX quote | `f06dfda6dce1cf904d4e2bab1dc370634cf95cefa2ceb2de2eee127c9382698090d7a4a13e14c536ec6c9c3c8fa87077` |
| RTMR0 | TDX quote | `46a83f6bbbeaa274aaf04861ef47d7e8898d4e699126b642f72f582e8d7f5349cb266a188bbabf619940d4fece06594b` |
| RTMR1 | TDX quote | `07e6f51aa763abfe75c3ddfbf4f425fe3f0ceff66d807a75e049303dce9addf68e7218729bd419638af63a370f65878c` |
| RTMR2 | TDX quote | `df67e467e60edc1737bcf8e682d48131bfb427f523226aa7f197a7608e9b3784783fa759ef5b28191fa12f9ddb36b858` |

RTMR0 depends on the VM configuration as well as the image: 32 vCPUs and 32 GiB of memory.

### TLS keys

The keyset in each attestation lists these SPKI pins. The keys are derived from the KMS, so every
replica serves the same ones.

| Domain | SPKI SHA-256 |
| - | - |
| `tee.redpill.ai` | `951885459fbd27cad038c40a198e6a1fb63f4d18dd5d5a24d408d5d951488ffe` |
| `api.redpill.ai` | `8a90181d3d9e5a0538e1c753b9459b385d9f064567c60abd086a2ee8d9fa30c8` |
| `inference.phala.com` | `32a2825658a7377a37d6b6e854627dd16bdd8abd82353259884eac7866229ea7` |

Do not pin `instance-id`, `report_data`, RTMR3 itself, or `workload_keyset_digest`. They differ
between replicas or change when the keyset renews.

## Scheduled changes

None scheduled.

## Notice before a change

* At least 3 days before a gateway rollout that changes the compose hash, app ID, OS image, MRTD,
  RTMR0-2, or TLS keys, we create a prerelease
  `gateway-prod-<date>` in
  [`Dstack-TEE/private-ai-gateway`](https://github.com/Dstack-TEE/private-ai-gateway/releases) with
  the new values and the planned rollout window, and list it under
  [Scheduled changes](#scheduled-changes) and in the [changelog](https://docs.redpill.ai/changelog.md).
* Add the new values to your allowlist next to the current ones. `acceptedComposeHashes` takes a
  list for this reason. During a rollout, replicas switch one at a time, so both sets are served
  until the last replica is done.
* KMS values (`mr-kms`, KMS root key) are the exception described under [KMS](#kms): they are
  published when they change, without advance notice.
* An urgent security fix can ship with less notice. Its release states why.
* When every replica runs the new release, we mark the release as rolled out and update
  [Current values](#current-values). Remove the old values after that.

To get notified, subscribe to the changelog RSS feed at `https://docs.redpill.ai/changelog/rss.xml`, or
watch the repository's releases on GitHub (Watch, Custom, Releases).

## Check a release yourself

Each release attaches the exact `app_compose.json` the workload measures. Recompute the compose hash
from that file and compare it with both the release notes and the live attestation:

```bash theme={null}
TAG=gateway-prod-2026-11-03
curl -fsSLO "https://github.com/Dstack-TEE/private-ai-gateway/releases/download/$TAG/app_compose.json"
sha256sum app_compose.json
```

The digest must equal the published compose hash. `docker_compose_file` inside that JSON shows the
launcher image, the gateway commit, and every sidecar image, each pinned by digest. For the OS values,
run the [dstack verifier](https://github.com/Dstack-TEE/dstack/tree/next/dstack/verifier) on the quote,
event log, and VM configuration, as described in
[Verify a response](https://docs.redpill.ai/guides/verify-a-response.md#release-policy).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.