跳到正文

Kaeso 网关:位于应用和服务商之间的一个 Rust 二进制文件。它检查每个密钥和限额,转换每种格式,并记录每个请求。

第 1 步,共 8 步

密钥

API 密钥决定项目,以及它代表的成员或服务账号。密钥只以哈希形式存储,并在 30 秒内从内存中直接应答。

应用可能收到的响应
  • 401未授权密钥缺失、未知、已停用、已归档或已过期。
  • 403禁止访问密钥只有平台访问权限,或其成员缺少 api.request 权限。
  • 429触发速率限制同一地址发来了过多使用未知密钥的请求。

网关从 x-api-key 读取密钥,否则从 Authorization: Bearer 读取:

x-api-key: sk-kso-…Authorization: Bearer sk-kso-…

网关如何处理每个请求。

密钥留在网关中,状态存放在您已在运行的数据库里,运维方式与其他服务无异。

密钥留在网关中

服务商密钥绝不会到达您的应用,控制台中的每个操作都对照一项权限进行检查。

了解服务商密钥(在新标签页中打开)
您的应用持有的sk-kso-AbC1…wxyz模型调用

一个 Kaeso 密钥,只以哈希形式存储,带有有效期以及模型调用或平台访问权限。

网关持有的OpenAIAnthropicAES-256-GCM

服务商密钥,使用 AES-256-GCM 在您持有的主密钥环下进行信封加密。 使用 kaeso master-key rewrap 轮换主密钥。

登录
密码加身份验证器应用和恢复码、登录链接,以及通过各组织的 OIDC 提供商进行单点登录
权限
细粒度权限,内置角色,每个组织最多 50 个自定义角色
审计日志
覆盖实例、每个组织和每个项目

状态存放在您熟悉的数据库中

网关实例自身不保存任何状态,因此您可以在负载均衡器后添加更多实例。它们共享同一个 PostgreSQL、ClickHouse 和 Valkey。

阅读架构说明(在新标签页中打开)
PostgreSQL
密钥、目录、限额、用量和审计日志
ClickHouse
请求日志和用量汇总
Valkey
速率和预算计数器、共享缓存

像运行任何服务一样运行它

通过 KAESO_* 变量或 TOML 文件进行配置,从文件中读取每个密钥类配置,并用您已有的工具进行监控。

阅读配置说明(在新标签页中打开)
1listen = "0.0.0.0:8080"2public_url = "https://kaeso.example.com"3 4[providers.anthropic]5base_url = "https://api.anthropic.com"6 7[upstream]8request_timeout = "600s"9 10[logs]11buffer_size = "256MiB"
指标
Prometheus 位于端口 9100,Caddy 不会转发该端口;请保持其私有
健康检查
进程运行时 /healthz 正常应答,/readyz 报告 PostgreSQL、Valkey 和 ClickHouse 的状态
日志
结构化 JSON;默认保留请求日志 90 天,内容 30 天
流式响应
每 15 秒发送一次 keepalive;应用断开时会取消对服务商的调用

一个仓库,一个版本。

网关、控制台、KPP 和 Kaeso UI 一同发布,采用 MIT 许可证。

在 GitHub 上浏览源代码(在新标签页中打开)

把它放在您的应用前面。

一个 Compose 文件,包含 Caddy、网关、控制台、PostgreSQL、ClickHouse 和 Valkey,运行在您自己的服务器上。