别再担心谁能看到你的提示词。告诉你的编程智能体把项目迁移过来,选择你想要的隐私级别,选一个模型,填入密钥——搞定。同一个 API,30+ 个模型,一个密钥。网关运行在硬件隔离区中,你可以通过密码学方式验证它从不记录你的数据。
把这段内容粘贴到 Codex、Claude Code 或 Cursor 中——它会替你完成迁移:```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.
然后:
1. **选择你的隐私级别或区域** — 使用
`{"provider": {"min_privacy": "zdr"}}` 作为硬性零保留底线,或
`{"provider": {"min_privacy": "confidential"}}` 作为更强的硬性
机密计算 + 端到端加密底线。便捷的 `trustedrouter/zdr` 和
`trustedrouter/e2e`(`trustedrouter/confidential`)别名会选择这些
池。使用 `trustedrouter/eu` 搭配
`https://api-europe-west4.quillrouter.com/v1` 进行面向欧盟的路由。
2. **选择模型** — 数百个模型任选,或使用 `trustedrouter/auto` 在
提供商广度比最严格的隐私过滤更重要时自动回退。
3. **注册、添加卡片、获取你的密钥**,网址为 https://trustedrouter.com。
4. **发布** — 你的提示词现在通过一条你可以验证的路径运行。
<details>
<summary>更想手动配置?</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-...")
TrustedRouter 的网关运行在 GCP Confidential Space 内。平台会对运行中的二进制文件进行度量并签名;你将 该哈希值与此仓库进行比对。如果它们匹配,你就知道——而非假设——处理你提示词的代码 正是你在此处可以阅读的代码,并且它绝不会将你的提示词写入磁盘。
无需账户,60 秒内自行验证:```bash NONCE=$(openssl rand -hex 16) curl -s "https://api.trustedrouter.com/attestation?nonce=$NONCE" | jq .
| | 信任模型 |
|---|---|
| OpenRouter、托管提供商 | “我们不记录日志。”一项你无法核查的政策。 |
| Portkey、Cloudflare AI Gateway | 为可观测性记录一切。 |
| LiteLLM | 自托管,但运行中的代理未经证实。 |
| **TrustedRouter** | **开源 + 硬件证明。验证代码路径;它不记录任何日志。** |
诚实的范围说明:证明可证实运行中的二进制文件就是已发布的二进制文件,且运行在你可用 nonce 挑战的硬件上。它无法抵御拥有物理主机访问权限的国家级攻击者,也无法证明开源二进制文件没有漏洞。信任锚点是 Google Confidential Computing 的硬件支持证明链。上游提供商按其自身政策处理提示词——每个提供商的姿态都发布在模型页面上。
</details>
---
## 仓库布局
本仓库实现控制平面契约:路由覆盖、认证/密钥管理、计费账本语义、用量元数据、提示词/输出日志记录禁令、Sentry 清理器以及提供商抽象。经证明的网关实现位于 `quill-cloud-proxy`。
信任边界:`api.trustedrouter.com` 是经证明的提示词路径,必须在 Confidential Space 内终止 TLS。`trustedrouter.com` 是控制平面,绝不能提供生产推理回退。
`api.quillrouter.com` 仍然是永久可用的别名(相同的经证明网关和证书),因此现有集成无需迁移即可继续工作。
## 本地```bash
uv sync
uv run pytest
uv run uvicorn trusted_router.main:app --reload
针对运行中实例的端到端冒烟测试:```bash 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`。
在以下位置设置本地操作员/提供商密钥:```text
/Users/jperla/claude/.quill_cloud_keys.private
该文件永远不会被提交。它预期为 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=...
部署脚本还接受一些运维文件中已使用的本地别名: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 下配置 Broadcast 目标。支持的目标为 PostHog 和 OTLP JSON webhook。Broadcast 默认仅包含元数据:模型、提供商、token 计数、延迟、成本、路由类型、区域和自定义追踪元数据。仅当目标显式启用 `include_content` 时才会导出提示词/输出内容;这些启用内容的加密目标仅返回给经过证明的网关,而不会出现在普通管理响应中。仅元数据的投递会先写入持久化 Broadcast 发件箱,并由 `/internal/broadcast/drain` 异步排空,因此 PostHog/webhook 中断不会阻塞推理,也不会在进程重启时丢失已结算的元数据。
## 合成监控
TrustedRouter 有一个独立的合成监控平面用于公共正常运行时间。合成 worker 在 enclave 外部运行,向公共经过证明的 API 发送微小的真实请求,并且仅存储元数据。监控模型别名为:
- `trustedrouter/free`:OpenRouter 风格的免费池。对用户有用,但不是 SLA 信号。
- `trustedrouter/cheap`:具有提供商多样性的最便宜付费池。
- `trustedrouter/eu`:以欧盟为重点的提供商池。它优先选择欧洲、可部署在欧盟区域以及注重隐私的提供商,尤其是在与 `https://api-europe-west4.quillrouter.com/v1` 搭配使用时。这是一种路由策略,而非全面的数据驻留保证。
- `trustedrouter/monitor`:用于 PONG 和回退检查的内部正常运行时间池。它出于透明度目的在目录中可见,但授权需要配置的 `TR_SYNTHETIC_MONITOR_API_KEY`;普通 API 密钥会收到 403。
Worker 应从 `us-central1` 和 `europe-west4` 运行,使用专用的 `trustedrouter-synthetic-monitoring` 工作区/密钥,并设置硬性支出上限和自动充值。原始样本是仅追加的 Bigtable 行;公共状态页面读取通过 `/status`、`/status.json` 和 `/status/history?window=5m|24h|daily` 暴露的紧凑汇总。合成生成使用 `TrustedRouter Synthetic` 应用标签,并被排除在客户/应用分析之外。