Skip to main content
Using 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

Node 20.18+ and Bun 1.4+ share the same API; the /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 deprecated requireProductionOs 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.
It does not prove that a release was reviewed unless an independently obtained compose allowlist was enforced.

Inspect the artifacts by hand

The curl 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

See the receipt fields and transparency events for how to read it.
4

Follow the receipt to its session

Extract the successful upstream.verified event’s session_id, then fetch the full record:
Keep the full session.json for verification; the printed summary omits fields. See the session reference for field meanings and claims for how to appraise the evidence.
The verification checklist covers the checks a verifier must perform on these artifacts.

Attestation report

Receipts

Attested sessions

ACI verifier source