
Repositório TrustedRouter.com para proxy seguro de LLMs.
Pare de se preocupar com quem pode ver seus prompts. Diga ao seu agente de programação para migrar seu projeto, escolha o nível de privacidade que deseja, escolha um modelo, insira uma chave — pronto. Mesma API, mais de 30 modelos, uma chave. O gateway roda em enclaves de hardware e você pode verificar criptograficamente que ele nunca registra seus dados.
Cole isto no Codex, Claude Code ou Cursor — ele faz a migração para você:```text Migrate this project to TrustedRouter, a privacy-first LLM router (https://trustedrouter.com). Repoint my LLM client to base_url "https://api.trustedrouter.com/v1" (or "https://api.trustedrouter.com" for the Anthropic SDK), read the key from the TRUSTEDROUTER_API_KEY env var, and keep all my existing calls working.
For a hard provider-side confidential-compute and end-to-end-encryption requirement, add {"provider": {"min_privacy": "confidential"}}. TrustedRouter fails closed when the selected model or provider cannot satisfy both controls.
Then tell me to sign up at trustedrouter.com, add a card, and paste my sk-tr key into TRUSTEDROUTER_API_KEY.
Depois:
1. **Escolha o seu nível de privacidade ou região** — use
`{"provider": {"min_privacy": "zdr"}}` para um limite rígido de retenção zero, ou
`{"provider": {"min_privacy": "confidential"}}` para o limite mais forte de
computação confidencial + E2EE. Os aliases convenientes `trustedrouter/zdr` e
`trustedrouter/e2e` (`trustedrouter/confidential`) selecionam esses
pools. Use `trustedrouter/eu` com
`https://api-europe-west4.quillrouter.com/v1` para encaminhamento focado na UE.
2. **Escolha um modelo** — qualquer um entre centenas, ou `trustedrouter/auto` para
fallback automático quando a amplitude de fornecedores importa mais do que o filtro
de privacidade mais rigoroso.
3. **Registe-se, adicione um cartão, obtenha a sua chave** em https://trustedrouter.com.
4. **Ponha em produção** — os seus prompts passam agora por um caminho que pode verificar.
<details>
<summary>Prefere configurá-lo manualmente?</summary>```bash
# Codex
export OPENAI_BASE_URL="https://api.trustedrouter.com/v1"
export OPENAI_API_KEY="sk-tr-v1-..."
# Claude Code
export ANTHROPIC_BASE_URL="https://api.trustedrouter.com"
export ANTHROPIC_API_KEY="sk-tr-v1-..."
# Any OpenAI SDK
client = OpenAI(base_url="https://api.trustedrouter.com/v1", api_key="sk-tr-v1-...")
O gateway do TrustedRouter é executado dentro do GCP Confidential Space. A plataforma assina uma medição do binário em execução; você compara esse hash com este repositório. Se corresponderem, você sabe — não assume — que o código que processa os seus prompts é o código que pode ler aqui, e que nunca grava os seus prompts no disco.
Verifique você mesmo em 60 segundos, sem conta:```bash NONCE=$(openssl rand -hex 16) curl -s "https://api.trustedrouter.com/attestation?nonce=$NONCE" | jq .
| | modelo de confiança |
|---|---|
| OpenRouter, provedores hospedados | "Não registramos." Uma política que você não pode verificar. |
| Portkey, Cloudflare AI Gateway | Registra tudo para observabilidade. |
| LiteLLM | Auto-hospedado, mas o proxy em execução não é verificado. |
| **TrustedRouter** | **Código aberto + atestação de hardware. Verifique o caminho do código; ele não registra nada.** |
Escopo honesto: a atestação prova que o binário em execução é o binário publicado em
hardware que você pode desafiar com um nonce. Isso não derrota um estado-nação com
acesso físico ao host, e não prova que o binário de código aberto está livre de bugs.
A âncora de confiança é a cadeia de atestação com suporte de hardware do Google Confidential Computing. Os provedores upstream tratam os prompts de acordo com
suas próprias políticas — a postura de cada provedor é publicada nas páginas dos modelos.
</details>
---
## Estrutura do repositório
Este repositório implementa o contrato do plano de controle: cobertura de rotas, gerenciamento de autenticação/chaves, semântica do livro-razão de cobrança, metadados de uso, proibições de registro de prompt/saída, scrubbers do Sentry e abstrações de provedores. A implementação do gateway atestado fica em `quill-cloud-proxy`.
Limite de confiança: `api.trustedrouter.com` é o caminho de prompt atestado e deve
terminar o TLS dentro do Confidential Space. `trustedrouter.com` é o plano de
controle e nunca deve servir um fallback de inferência de produção.
`api.quillrouter.com` permanece um alias funcional permanente (mesmo gateway
atestado e certificado), para que as integrações existentes continuem funcionando sem migração.
## Local```bash
uv sync
uv run pytest
uv run uvicorn trusted_router.main:app --reload
Smoke end-to-end contra uma instância em execução:```bash TR_SMOKE_BASE_URL=http://127.0.0.1:18080/v1 uv run python scripts/smoke_e2e.py
Para produção, defina `TR_SMOKE_BASE_URL=https://api.trustedrouter.com/v1` e
`TR_SMOKE_INTERNAL_TOKEN` se as rotas internas do gateway estiverem protegidas por token.
Defina as chaves locais de operador/provedor em:```text
/Users/jperla/claude/.quill_cloud_keys.private
Esse arquivo nunca é commitado. Espera-se que esteja no estilo dotenv:```text ANTHROPIC_API_KEY=... OPENAI_API_KEY=... GEMINI_API_KEY=... CEREBRAS_API_KEY=... DEEPSEEK_API_KEY=... MISTRAL_API_KEY=... STRIPE_SECRET_KEY=... STRIPE_WEBHOOK_SECRET=... SENTRY_DSN=...
O script de deploy também aceita aliases locais já usados em alguns arquivos de operador: `CLAUDE_API_KEY` para Anthropic, `CHATGPT_API_KEY` para OpenAI e `STRIPE_KEY` para `STRIPE_SECRET_KEY`.