
Repo TrustedRouter.com per proxy sicuro di LLM
Smetti di preoccuparti di chi può vedere i tuoi prompt. Di' al tuo agente di coding di migrare il tuo progetto, scegli quanto vuoi essere privato, scegli un modello, inserisci una chiave — fatto. Stessa API, oltre 30 modelli, una sola chiave. Il gateway gira in enclave hardware e puoi verificare crittograficamente che non registra mai i tuoi dati.
Incolla questo in Codex, Claude Code o Cursor — fa la migrazione per te:```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.
Poi:
1. **Scegli il tuo livello di privacy o la tua regione** — usa
`{"provider": {"min_privacy": "zdr"}}` per un limite rigido di zero-retention, oppure
`{"provider": {"min_privacy": "confidential"}}` per il più forte limite rigido
di confidential-compute + E2EE. I comodi alias `trustedrouter/zdr` e
`trustedrouter/e2e` (`trustedrouter/confidential`) selezionano quei
pool. Usa `trustedrouter/eu` con
`https://api-europe-west4.quillrouter.com/v1` per un routing incentrato sull'UE.
2. **Scegli un modello** — uno qualsiasi tra centinaia, oppure `trustedrouter/auto` per un fallback
automatico quando l'ampiezza dei provider conta più del filtro
di privacy più rigoroso.
3. **Registrati, aggiungi una carta, ottieni la tua chiave** su https://trustedrouter.com.
4. **Distribuisci** — i tuoi prompt ora passano attraverso un percorso che puoi verificare.
<details>
<summary>Preferisci configurarlo 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-...")
Il gateway di TrustedRouter viene eseguito all'interno di GCP Confidential Space. La piattaforma firma una misurazione del binario in esecuzione; tu confronti quell'hash con questo repo. Se corrispondono, sai — non presumi — che il codice che gestisce i tuoi prompt è il codice che puoi leggere qui, e che non scrive mai i tuoi prompt su disco.
Verificalo tu stesso in 60 secondi, senza account:```bash NONCE=$(openssl rand -hex 16) curl -s "https://api.trustedrouter.com/attestation?nonce=$NONCE" | jq .
| | modello di fiducia |
|---|---|
| OpenRouter, provider ospitati | "Non registriamo log." Una politica che non puoi verificare. |
| Portkey, Cloudflare AI Gateway | Registra tutto per l'osservabilità. |
| LiteLLM | Self-host, ma il proxy in esecuzione non è verificato. |
| **TrustedRouter** | **Open source + attestazione hardware. Verifica il percorso del codice; non registra nulla.** |
Ambito onesto: l'attestazione dimostra che il binario in esecuzione è il binario pubblicato su
hardware che puoi verificare con un nonce. Non sconfigge uno stato-nazione con
accesso fisico all'host, e non dimostra che il binario open-source sia privo di bug.
L'ancora di fiducia è la catena di attestazione supportata dall'hardware di Google Confidential Computing. I provider upstream gestiscono i prompt secondo
le proprie politiche — la postura di ciascun provider è pubblicata nelle pagine dei modelli.
</details>
---
## Struttura del repository
Questo repo implementa il contratto del control-plane: copertura delle route, gestione di auth/key,
semantica del registro di fatturazione, metadati di utilizzo, divieti di logging di prompt/output, scrubber di Sentry e astrazioni dei provider. L'implementazione del gateway attestato risiede in `quill-cloud-proxy`.
Confine di fiducia: `api.trustedrouter.com` è il percorso dei prompt attestato e deve
terminare il TLS all'interno di Confidential Space. `trustedrouter.com` è il control
plane e non deve mai servire un fallback di inferenza di produzione.
`api.quillrouter.com` rimane un alias permanente funzionante (stesso gateway attestato
e certificato), così le integrazioni esistenti continuano a funzionare senza migrazione.
## Locale```bash
uv sync
uv run pytest
uv run uvicorn trusted_router.main:app --reload
Smoke end-to-end su un'istanza in esecuzione:```bash TR_SMOKE_BASE_URL=http://127.0.0.1:18080/v1 uv run python scripts/smoke_e2e.py
Per la produzione, imposta `TR_SMOKE_BASE_URL=https://api.trustedrouter.com/v1` e
`TR_SMOKE_INTERNAL_TOKEN` se le rotte del gateway interno sono protette da token.
Imposta le chiavi locali di operatore/provider in:```text
/Users/jperla/claude/.quill_cloud_keys.private
Quel file non viene mai committato. Si prevede che sia in stile 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=...
Lo script di deploy accetta anche alias locali già usati in alcuni file
operatore: `CLAUDE_API_KEY` per Anthropic, `CHATGPT_API_KEY` per OpenAI e
`STRIPE_KEY` per `STRIPE_SECRET_KEY`.