返回更新列表
已更新Aug 1, 2026

quill-router — 已更新!

TrustedRouter.com 仓库,用于安全的 LLM 代理

分享

TrustedRouter

CI Deploy Prod smoke Trust drift Status Verifiable trust JavaScript SDK Python SDK License: BUSL-1.1

端到端加密的大语言模型。一个 API。可验证的隐私。

不必再担心谁能看到你的提示词。让你的编码智能体帮你迁移项目,选择你想要的隐私级别,挑选一个模型,填入密钥——搞定。同一个 API,30+ 个模型,一个密钥。网关运行在硬件安全飞地中,你可以通过密码学方式验证它从不记录你的数据。

用一条提示词迁移你的项目

把下面这段粘贴到 Codex、Claude Code 或 Cursor 中——它会替你完成迁移:

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.

然后:

  1. 选择你的隐私级别或区域 — 使用 {"provider": {"min_privacy": "zdr"}} 设定硬性零保留下限,或 使用 {"provider": {"min_privacy": "confidential"}} 设定更严格的硬性 机密计算 + E2EE 下限。便捷的 trustedrouter/zdr 和 trustedrouter/e2e(trustedrouter/confidential)别名会选择这些 池。使用 trustedrouter/eu 搭配 https://api-europe-west4.quillrouter.com/v1 可实现以欧盟为中心的路由。
  2. 选择模型 — 数百个模型任选,或使用 trustedrouter/auto 在提供商覆盖范围比最严格的隐私 过滤器更重要时自动回退。
  3. 注册、添加银行卡、获取你的密钥,网址为 https://trustedrouter.com。
  4. 发布 — 你的提示词现在会经过一条你可以验证的路径运行。
更愿意手动配置?
# 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-...")

面向技术爱好者:隐私如何得到可证明的保障

TrustedRouter 的网关运行在 GCP Confidential Space 内。该平台会对运行中的容器进行度量并签名。请验证该签名证据,并将其镜像摘要与已发布的版本度量值进行比对。源代码审查与发布构建来源可确立该被度量镜像的行为;仅凭摘要匹配并不能证明不存在缺陷或日志记录。

无需账户即可检查 GCP 证据:

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.

保存或解码 JWT 并不等于验证。请使用来自经过审查的 quill-cloud-proxy 检出目录中的 attestation verifier 来验证签发者/签名、新鲜 nonce、TLS 证书/exporter 绑定以及预期的发布度量值。 对于 GCP 端点,请从该检出目录运行:

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"

验证器会在其验证的 TLS 连接上获取最新证据。该检查并不能证明之后独立的 curl 或 SDK 连接。这些示例使用已发布的美国中部 GCP 主机名来选择 GCP 证据格式。全局端点可以选择其他云;请使用其云特定的验证策略以及来自信任站点的测量值。

信任模型
OpenRouter、托管提供商“我们不记录日志。”一条你无法核查的策略。
Portkey、Cloudflare AI Gateway为可观测性记录一切。
LiteLLM自托管,但运行中的代理未经验证。
TrustedRouter开源 + 硬件证明。验证代码路径;它不记录任何日志。

诚实的范围说明:证明只能证明运行中的二进制文件是已发布的二进制文件,且运行在你可以用 nonce 挑战的硬件上。它无法抵御拥有物理主机访问权限的国家级攻击者,也无法证明开源二进制文件没有缺陷。信任锚点是 Google Confidential Computing 的硬件支持证明链。上游提供商按其自身策略处理提示词——每个提供商的立场都发布在模型页面上。


仓库布局

本仓库实现控制平面契约:路由覆盖、认证/密钥管理、计费账本语义、用量元数据、提示词/输出日志记录禁令、Sentry 清理器以及提供商抽象。经证明的网关实现位于 quill-cloud-proxy。

信任边界:api.trustedrouter.com 是经证明的提示词路径,必须在 Confidential Space 内终止 TLS。trustedrouter.com 是控制平面,绝不能提供生产推理回退。

api.quillrouter.com 仍然是永久可用的别名(相同的经证明网关和证书),因此现有集成无需迁移即可继续工作。

本地

uv sync
uv run pytest
uv run uvicorn trusted_router.main:app --reload

针对运行中实例的端到端冒烟测试:

TR_SMOKE_BASE_URL=http://127.0.0.1:18080/v1 uv run python scripts/smoke_e2e.py

在生产环境中,请设置 TR_SMOKE_BASE_URL=https://api.trustedrouter.com/v1,如果内部网关路由受令牌保护,还需设置 TR_SMOKE_INTERNAL_TOKEN。

在以下位置设置本地操作员/提供商密钥:

/Users/jperla/claude/.quill_cloud_keys.private

该文件永远不会被提交。它应当是 dotenv 风格的:

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=...

部署脚本还接受一些运维文件中已在使用的本地别名:Anthropic 使用 CLAUDE_API_KEY,OpenAI 使用 CHATGPT_API_KEY,STRIPE_SECRET_KEY 使用 STRIPE_KEY。

Vertex 与其他提供商平台不同:生产环境的 GCP 部署使用 Cloud Run 或 Confidential Space 服务账号,以及来自 metadata/ADC 的短期 Google 访问令牌。对于第一方预付费 Vertex 路由,不要在此文件中放置长期有效的 Vertex 密钥;而应授予运行时服务账号 Vertex 权限。

许可证

Business Source License 1.1。源代码公开,任何人都可以阅读、构建并验证 TrustedRouter 隐私与证明声明背后的确切代码(https://trust.trustedrouter.com)——这正是它存在的目的。非生产用途(安全审查、审计、本地评估)免费。生产用途需要获得 Lore Hex Corp 的商业许可:[email protected]。每个版本在发布四年后转换为 Apache License 2.0。2026 年 7 月 3 日之前发布的代码仍保持 Apache-2.0。

安全默认值

  • 提示词和输出内容从不记录日志。普通的同步和流式推理不会保留这些内容。可选的 Batch API 会临时保留 enclave 加密的产物,最长 30 天。
  • 使用日志仅包含元数据。
  • API 密钥以加盐 SHA-256 哈希形式存储,并配有不可猜测的密钥 ID。
  • 用户提交的 BYOK 提供商密钥以信封加密的密文行存储,而不是每个密钥一个 Secret Manager 对象。在生产环境中,Cloud KMS 封装每个密钥的 DEK;外部 env://... 引用仍支持用于运维人员管理的密钥。
  • 网关授权包含用于加密 BYOK 信封的非机密 byok_cache_key。经证明的网关使用它进行短 TTL、仅内存的解密密钥缓存;BYOK 轮换会更改密钥,删除操作会停止返回该信封。
  • BYOK 原始密钥仅作为一次性输入;公共/控制平面响应仅暴露简短的首/尾密钥提示和加密引用元数据,绝不暴露明文。
  • 生产配置在缺少内部网关令牌、已签名的 Stripe webhook 密钥和非内存存储后端时会失败关闭。
  • 生产控制平面应用不注册 /chat/completions、/messages、/responses 或 /embeddings;这些属于经证明的 API 平面。
  • Sentry 仅限控制平面使用,并会清除请求体、认证头、API 密钥、BYOK 密钥、提示词消息和输出文本。客户端 Sentry 洪泛门控会按指纹限制重复问题,并按进程/窗口限制总事件数,以免单个嘈杂的集成再次消耗整个错误预算。
  • 经证明的 enclave 中不应包含任何 Sentry 配置。

广播可观测性

工作区所有者可以在 /v1/broadcast/destinations 或控制台的 Broadcast 下配置广播目标。支持的目标是 PostHog 和 OTLP JSON webhook。广播默认仅包含元数据:模型、提供商、token 计数、延迟、成本、路由类型、区域和自定义追踪元数据。仅当目标显式启用 include_content 时才导出提示词/输出内容;这些启用了内容导出的加密目标仅返回给经证明的网关,而不会出现在普通管理响应中。仅元数据的投递会先写入持久化广播发件箱,然后由 /internal/broadcast/drain 异步排空,因此 PostHog/webhook 故障不会阻塞推理,也不会在进程重启时丢失已结算的元数据。

固定路由层级

这些别名使用显式排序的模型池:首选第一个成员,其余为回退。它们每次尝试运行一个模型,不进行合成、编排或隐式隐私下限。需要时请显式设置 provider.min_privacy。实时 /v1/models 目录会在 auto_candidates 中发布每个模型池。

分类