https://tee.redpill.ai forces confidential routing, but a base URL alone does not verify the
TEE from your machine. A verified client checks the workload attestation before sending model
traffic, binds TLS to a key in the attested keyset, and verifies the signed receipt for the exact
request and response bytes.
Agent tools, MCP servers, browser automation, and telemetry remain separate trust boundaries.
Node and Bun
/runtime export selects the pinned transport.
connectAci() verifies the attestation before sending model traffic and pins TLS to a key in the
attested workload keyset. Pass aci.fetch only to the client that uses this gateway; it records the
exact request and response wire digests. verifyReceipt() fetches the matching signed receipt,
verifies those digests, and verifies the cited upstream session. Audit a response before treating
its serving path as verified.
Release policy
The SDK does not check whether the gateway runs a production or development dstack OS image. The deprecatedrequireProductionOs option is ignored. For OS-image assurance, verify the same
quote, event log, and VM configuration with an independent
dstack verifier and require
is_valid: true.
Without acceptedComposeHashes, the client verifies that the measured compose ran in a genuine
TDX workload; it does not claim that RedPill reviewed that release.
For reviewed-release enforcement, load accepted hashes from authenticated release metadata and pair
compose appraisal with the independent OS verification above. Never copy a compose hash from the
endpoint and trust it on first use.
What a passing audit proves
- the TDX quote binds the fresh challenge, workload keyset, and measured compose;
- the model request used hostname-validated TLS bound to an attested SPKI;
- the signed receipt binds the exact request and response bytes to that workload; and
- a required confidential upstream was verified and its cited session is valid.
Inspect the artifacts by hand
Thecurl and jq commands inspect artifacts; they do not verify hardware quotes, receipt signatures,
or the actual TLS channel. Before sending sensitive data, use connectAci() above or
Private AI Proxy, with the release policy your
application requires.
Get your API key from the dashboard. These examples use plain TLS
and save the exact request and response bytes before formatting them with jq.
1
Fetch the attestation with your own nonce
Fetch the gateway’s attestation report before sending a request.
Generate a fresh 64-character lowercase hex nonce:
2
Send a request and save the receipt id
Choose a current model from the catalog.
The TEE-only endpoint requires verified, channel-bound serving.
3
Fetch the receipt
4
Follow the receipt to its session
Extract the successful Keep the full
upstream.verified event’s session_id, then fetch the full record:session.json for verification; the printed summary omits fields. See the
session reference for field meanings and
claims for how to appraise the evidence.