Privacy
Verification
How your browser verifies a trusted execution environment (TEE) before each chat of the private lane, and what the verification proves.
In the private lane, your browser does not take the word of Thinkr. Before each chat, it verifies that the enclave runs the published code on genuine hardware, and only then encrypts your message to it.
Trusted execution environments
A trusted execution environment (TEE) is hardware that runs a workload apart from its host and proves what runs inside it. The CPU encrypts the memory of the enclave with keys that never leave the CPU, so the people and the software that run the server see only ciphertext.
| Part | In the private lane |
|---|---|
| CPU | AMD SEV-SNP or Intel TDX |
| GPU | NVIDIA, in confidential computing mode |
| Memory | Encrypted by the CPU |
| CPU to GPU | Encrypted transfers |
| Hypervisor access | None |
| Disk | Nothing written |
The GPU must pass the attestation of NVIDIA before the server starts.
Remote attestation
A TEE proves what runs inside it with remote attestation. The hardware measures the code and the model weights that the enclave loads, and signs a report of those measurements with a key that chains to the root key of AMD, Intel, or NVIDIA.
The code of the enclave is open source. Each release is signed and recorded in Sigstore, a public transparency log, so anyone can match a measurement to the source it came from.
What your browser verifies
Before each chat, your browser takes these steps. The page Verify of the app shows each one, with its result.
- It fetches the digest of the current release of the enclave code.
- It verifies that the release is signed in the Sigstore transparency log.
- It verifies the attestation report of the enclave, signed by AMD or Intel.
- It compares the measurement in the report with the measurement of the signed release.
- It verifies that the encryption key of the enclave is bound to that report.
If any step fails, the app sends nothing, and the label of the chat reads "Private · Not verified".
The enclave that your browser verifies routes each chat to the enclave of its model. It verifies that enclave the same way, model weights included, before it forwards the chat.
Encryption to the enclave
After the verification, your browser encrypts each message with Hybrid Public Key Encryption (HPKE, RFC 9180), to the key that the attestation binds to the enclave. The enclave generates that key, and it never leaves the enclave.
| Layer | Standard |
|---|---|
| Connection | TLS 1.3 |
| Content | HPKE, RFC 9180 |
| Key exchange | X25519 |
| Cipher | AES-256-GCM |
TLS 1.3 ends at the edge of Cloudflare and at Thinkr's proxy. Inside it, they find only HPKE ciphertext, which neither of them can decrypt. The enclave decrypts your message, writes the answer, and encrypts the answer for your browser.
What Thinkr sees
In the private lane, Thinkr's proxy carries ciphertext and never sees your messages or the answers. For each request, it sees:
- the time and the size of the request;
- the model that you picked;
- your IP address, which it does not store;
- after the answer, the number of tokens and their cost.
The provider of confidential computing that runs the enclaves receives each request from Thinkr's proxy, not from you, so it does not see your IP address.
Limits
A TEE lowers the risk that anyone reads your data, but it does not remove every risk.
- The time, the size, and the model of each request stay visible on the path.
- The verification rests on the root keys of AMD, Intel, and NVIDIA.
How privacy works on the site shows the whole architecture in diagrams.