
quill-router — Actualizado!
Repositorio de TrustedRouter.com para proxy seguro de LLM.
TrustedRouter
LLMs cifrados de extremo a extremo. Una API. Privacidad con pruebas.
Deja de preocuparte por quién puede ver tus prompts. Dile a tu agente de programación que migre tu proyecto, elige cuánta privacidad quieres, elige un modelo, introduce una clave — listo. La misma API, más de 30 modelos, una sola clave. La pasarela se ejecuta en enclaves de hardware y puedes verificar criptográficamente que nunca registra tus datos.
Migra tu proyecto con un solo prompt
Pega esto en Codex, Claude Code o Cursor — hace la migración por ti:
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.
Luego:
- Elige tu nivel de privacidad o región — usa
{"provider": {"min_privacy": "zdr"}}para un límite estricto de retención cero, o{"provider": {"min_privacy": "confidential"}}para el límite más estricto de computación confidencial + E2EE. Los prácticos aliastrustedrouter/zdrytrustedrouter/e2e(trustedrouter/confidential) seleccionan esos grupos. Usatrustedrouter/euconhttps://api-europe-west4.quillrouter.com/v1para un enrutamiento centrado en la UE. - Elige un modelo — cualquiera de los cientos disponibles, o
trustedrouter/autopara un respaldo automático cuando la amplitud de proveedores importa más que el filtro de privacidad más estricto. - Regístrate, añade una tarjeta y obtén tu clave en https://trustedrouter.com.
- Despliega — tus prompts ahora se ejecutan a través de una ruta que puedes verificar.
¿Prefieres configurarlo manualmente?
# 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-...")
- Obtener una clave / darme tu dinero: https://trustedrouter.com
- Pruébalo primero (sin registro): https://trustedrouter.com/chat
- Los detalles técnicos (para los nerds): https://trustedrouter.com/security
- Generar imágenes: docs/image-generation.md
- Generar video: docs/video-generation.md
- Por qué lo construimos: https://jperla.com/blog/attestation-is-all-you-need
Para los nerds: cómo la privacidad es demostrable
La puerta de enlace de TrustedRouter se ejecuta dentro de GCP Confidential Space. La plataforma firma una medición del contenedor en ejecución. Verifica esa evidencia firmada y compara su digest de imagen con la medición de la versión publicada. La revisión del código fuente y la procedencia de la compilación de la versión establecen qué hace esa imagen medida; un digest coincidente por sí solo no demuestra la ausencia de errores ni de registro.
Inspecciona la evidencia de GCP, sin cuenta:
NONCE=$(openssl rand -hex 16)
curl --fail --silent --show-error \
"https://api-us-central1.quillrouter.com/attestation?nonce=$NONCE" \
--output attestation.jwt
# GCP returns a raw Google-signed JWT, not a JSON response.
# Decoded claims include eat_nonce and submods.container.image_digest.
# GCP evidence has no pcrs field; PCRs belong to AWS Nitro evidence.
Guardar o decodificar un JWT no es verificación. Utiliza el
verificador de atestación
desde una copia revisada de quill-cloud-proxy para verificar el emisor/firma,
el nonce fresco, el certificado TLS/vinculación del exportador y la medición de versión esperada.
Para un endpoint de GCP, ejecuta desde esa copia:
DIGESTS=$(curl --fail --silent --show-error \
https://trust.trustedrouter.com/trust/accepted-image-digests-gcp.txt)
test -n "$DIGESTS" && uv run --script tools/verify-attestation.py \
--api-host api-us-central1.quillrouter.com --expect-digest "$DIGESTS"
El verificador obtiene evidencia fresca sobre la conexión TLS que verifica. Esa comprobación no certifica una conexión curl o SDK posterior y separada. Estos ejemplos usan el nombre de host publicado de GCP US Central para seleccionar el formato de evidencia de GCP. El endpoint global puede seleccionar otra nube; use su política de verificación específica de la nube y las mediciones de el sitio de confianza.
| modelo de confianza | |
|---|---|
| OpenRouter, proveedores alojados | "No registramos." Una política que no puedes comprobar. |
| Portkey, Cloudflare AI Gateway | Registrarlo todo para observabilidad. |
| LiteLLM | Autoalojado, pero el proxy en ejecución no está verificado. |
| TrustedRouter | Código abierto + atestación de hardware. Verifica la ruta del código; no registra nada. |
Alcance honesto: la atestación demuestra que el binario en ejecución es el binario publicado sobre hardware que puedes desafiar con un nonce. No derrota a un estado-nación con acceso físico al host, y no demuestra que el binario de código abierto esté libre de errores. El ancla de confianza es la cadena de atestación respaldada por hardware de Google Confidential Computing. Los proveedores upstream gestionan los prompts según sus propias políticas — la postura de cada proveedor se publica en las páginas de los modelos.
Estructura del repositorio
Este repositorio implementa el contrato del plano de control: cobertura de rutas, gestión de auth/keys, semántica del libro mayor de facturación, metadatos de uso, prohibiciones de registro de prompts/salidas, depuradores de Sentry y abstracciones de proveedores. La implementación del gateway atestado reside en quill-cloud-proxy.