Ask your agent to verify TrustedRouter

Use https://trust.trustedrouter.com to verify https://trustedrouter.com with fresh, TLS-bound attestation. Trace the running build to published source and build provenance. Separate router protections from model-provider privacy claims. Report verified evidence, failures, and anything you cannot verify.

Trust boundary

Verify that the hosted API runs the published open-source workload.

api.trustedrouter.com is the prompt path (api.quillrouter.com is a permanent alias to the same attested endpoint). Public TLS terminates inside the measured GCP Confidential Space workload. The TrustedRouter control plane does not serve production inference routes and does not receive prompt or output bodies.

Clients can fetch live attestation, verify issuer/audience/digest, and compare the measured image digest with the release data published here.

Client Verification

  • OKFetch https://api.trustedrouter.com/attestation over normal public TLS.
  • OKVerify the JWT issuer is https://confidentialcomputing.googleapis.com.
  • OKVerify the audience is quill-cloud.
  • OKCompare the attested image digest with the accepted measured digests on this page. During a rolling release, the old and new measured workloads are both listed.
  • OKCheck the TLS certificate fingerprint is bound into the attestation nonce.

Published Files

image-digest-gcp.txt

accepted-image-digests-gcp.txt

image-reference-gcp.txt

accepted-image-references-gcp.txt

gcp-release.json

aws-release.json · pcr0-aws.txt

azure-release.json · hostdata-azure.txt

Every file above is published with a matching .bundle.

Retractions — measurements we published that were wrong.

DNS Requirement

api.trustedrouter.com (and its api.quillrouter.com alias) must remain DNS-only or TCP-passthrough. TLS termination by a CDN would break the hosted-code trust claim because the prompt path certificate key must remain inside the measured workload.

GCP · Confidential Space

Measures the container image. Compare image_digest in gcp-release.json against a live attestation JWT from confidentialcomputing.googleapis.com with audience quill-cloud.

https://api.trustedrouter.com/attestation

AWS · Nitro Enclaves

Measures the enclave image file into PCR0 (SHA-384). Compare pcr0 in aws-release.json against PCR0 in a live attestation document. Rebuild it yourself with tools/verify-pcr0.sh.

This plane obtains a Let's Encrypt certificate via ACME dns01 inside the enclave, so WebPKI chain validation works normally. The certificate's SHA-256 and the TLS exporter value are also bound into the attestation's user_data, so the connection you are on is the connection that was attested.

https://api-aws.trustedrouter.com/attestation

Azure · Confidential Containers

Measures the SEV-SNP hostdata, which is sha256 over the decoded CCE policy. Compare it against x-ms-sevsnpvm-hostdata in a live MAA token. Each serving region runs its own MAA instance, so accept any issuer listed in azure-release.json.

https://api-azure.trustedrouter.com/attestation

Checking this page rather than believing it

These files are static so that reading them costs the serving enclaves nothing. The attestation endpoints above are the authority, and they are there for when you want to check a plane deliberately — not on every page view.

Every published file carries a .bundle signed with cosign keyless. The signature binds the file to the GitHub Actions identity that produced it and records it in the Sigstore transparency log, so the timing and the immutability come from a third party rather than from us. Verify one without trusting this page:

cosign verify-blob \
  --bundle aws-release.json.bundle \
  --certificate-identity https://github.com/Lore-Hex/quill-cloud-proxy/.github/workflows/publish-trust-aws.yml@refs/heads/main \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  aws-release.json

Pin the exact identity, not a pattern. Each plane is signed by its own workflow file, and the workflow path is embedded in the certificate, so those are three cryptographically distinct signers. A regex over the repository would accept any workflow here and hand every plane the same authority — which is precisely the property this arrangement exists to avoid. Each record names its own identity in its transparency block, so the record tells you what to pin even if you are reading it from an email months from now.

A signature proves authorship, not recency. To confirm you have the newest record rather than an older one replayed at you, search the transparency log for that identity; the log is append-only, so a newer entry cannot be hidden from you. The bundle carries a Signed Entry Timestamp but no inclusion proof, so confirming log membership means querying Rekor rather than trusting the bundle alone.

What the image digest does not cover. Confidential Space allows a launch to override an allowlisted set of environment variables at a fixed image digest, and that allowlist includes QUILL_API_HOST, QUILL_TLS_MODE, TR_CONTROL_PLANE_BASE_URL and the ACME settings. So the digest pins the code, not every parameter the code was started with. We are telling you because a verifier who discovers it themselves is entitled to wonder what else went unmentioned. The AWS plane bakes its equivalents into the image, where they are covered by PCR0; the Azure plane pins them in the CCE policy, which is what hostdata measures.

And the log cannot tell you whether a measurement is still what is running. A deployment unchanged for months should carry a months-old signature, so age is not drift. Only comparing a published record against a live attestation distinguishes the two — which is what our own twice-daily check does, and what you can do yourself with the endpoints above.

The whole verifier runs from a URL, with no clone and no install:

uv run https://raw.githubusercontent.com/Lore-Hex/quill-cloud-proxy/main/tools/verify-attestation.py --help

User-provided models

Requests to trustedrouter/user-* models leave the attested boundary for a community-operated HTTPS endpoint chosen by the model owner. The enclave still terminates the caller's TLS, never logs prompts, decrypts owner credentials only inside the enclave, and connects only to public addresses under a measured, IP-pinned egress policy that refuses redirects. It sends only the allowlisted OpenAI request body plus a TR-Signature.

The owner's endpoint is not attested and is not covered by TrustedRouter's zero-data-retention promise. User-provided models are not yet served from the AWS region.

No Prompt Logs

Prompt/output storage is disabled. Generation content endpoint returns a compatible content_not_stored response.

Hosted Open Source

Lore-Hex/quill-router

Control plane, billing, keys, compatibility routes, dashboard, and trust page.

Lore-Hex/quill-cloud-proxy

Attested prompt gateway, release digest, and Confidential Space verification path.

Lore-Hex/quill-cloud-infra

Cloud deployment scripts, measured workload bringup, and trust publication flow.

Lore-Hex/quill

Open-source Quill client, device, bootstrap, and attestation-facing code.

Lore-Hex/trusted-router-py

Python SDK repository for attestation-aware client helpers.

Lore-Hex/trusted-router-js

JavaScript SDK repository for browser and Node integrations.

Fail Closed

If attestation, billing authorization, or the gateway contract is unavailable, the prompt path should fail rather than silently downgrade to a non-attested route.

Legal Packet

Procurement teams can review the named entity, draft DPA/BAA terms, subprocessors, and machine-readable checkpoint at trustedrouter.com/legal.

SOC 2 Readiness

Readiness documentation is prepared, but no SOC 2 report has been obtained yet. Review the current packet at SOC 2 readiness.

HIPAA Readiness

PHI workloads require a signed BAA and approved route policy. Review the current packet at HIPAA readiness.

Machine-readable release

{
  "accepted_image_digests": [
    "sha256:9e095bf5809b0ac6694e6a059b4253faee74beec8dd40165f1535d275073ff48"
  ],
  "accepted_image_references": [
    "us-central1-docker.pkg.dev/quill-cloud-proxy/quill/enclave-multi:gcp-release-a2e9659"
  ],
  "api_base_url": "https://api.trustedrouter.com/v1",
  "attestation_audience": "quill-cloud",
  "attestation_issuer": "https://confidentialcomputing.googleapis.com",
  "commit": "a2e9659",
  "compliance": {
    "hipaa_readiness": "https://trustedrouter.com/legal/hipaa-readiness",
    "hipaa_status": "readiness_documentation_prepared_baa_required_for_phi",
    "legal_packet": "https://trustedrouter.com/legal",
    "procurement_json": "https://trustedrouter.com/legal/procurement.json",
    "soc2_readiness": "https://trustedrouter.com/legal/soc2-readiness",
    "soc2_status": "readiness_documentation_prepared_report_pending",
    "subprocessors": "https://trustedrouter.com/legal/subprocessors"
  },
  "data_policy": {
    "client_telemetry_content_free": true,
    "client_telemetry_disclosure": "https://trustedrouter.com/docs/telemetry",
    "control_plane_prompt_access": false,
    "prompt_output_storage": false
  },
  "image_digest": "sha256:9e095bf5809b0ac6694e6a059b4253faee74beec8dd40165f1535d275073ff48",
  "image_reference": "us-central1-docker.pkg.dev/quill-cloud-proxy/quill/enclave-multi:gcp-release-a2e9659",
  "platform": "gcp-confidential-space",
  "receipts": {
    "accepted_specs": [
      "inference-receipt/1"
    ],
    "algorithms": [
      "EdDSA"
    ],
    "delivery": {
      "non_streaming": "x-inference-receipt response header (compact JWS)",
      "streaming": "final chat.completion.chunk inference_receipt (flattened JWS)"
    },
    "documentation": "https://trustedrouter.com/docs/receipts",
    "key_commitment": "attestation",
    "key_log": "https://trustedrouter.com/.well-known/inference-receipt-keys",
    "spec": "inference-receipt/1"
  },
  "release_state": "current",
  "released_by": "github-actions:deploy-enclave-gcp",
  "source_commit": "a2e9659",
  "source_repo": "https://github.com/Lore-Hex/quill-cloud-proxy",
  "source_repositories": {
    "attested_gateway": "https://github.com/Lore-Hex/quill-cloud-proxy",
    "cloud_infra": "https://github.com/Lore-Hex/quill-cloud-infra",
    "control_plane": "https://github.com/Lore-Hex/quill-router",
    "javascript_sdk": "https://github.com/Lore-Hex/trusted-router-js",
    "python_sdk": "https://github.com/Lore-Hex/trusted-router-py",
    "quill": "https://github.com/Lore-Hex/quill"
  },
  "tls": {
    "hostname": "api.trustedrouter.com",
    "mode": "acme-inside-confidential-space"
  }
}