展示HN:Foreman,一个自托管的LLM网关,用于成本感知的模型路由
自托管的LLM网关。具有成本效益,确定性,快速。默认情况下安全和私密。Foreman是一个自托管的LLM网关:在您的编码代理与任意数量的提供商之间使用一个Go二进制文件。您的密钥和流量保持在您的网络内。跟踪每一美元的支出,从您喜欢的工具中切换模型或提供商,无需代码更改。保持前沿模型在质量重要的地方,并将例行工作路由到更便宜的模型。您编写策略,因此您可以降低成本而不牺牲输出质量。它将每个请求发送给您策略允许的最便宜模型,并在提供商的提示缓存处于温暖状态时将每个对话固定在其模型上,因此路由永远不会烧掉您的缓存以节省些许成本。OpenAI和Anthropic以输入,任意数量的提供商作为输出,每个决策都会记录在您可以查询的账本中,以查明其做出决定的原因和拒绝的替代方案。快速开始在Homebrew(macOS)上安装:brew install northwood-systems/tap/foreman 在Linux或从源代码:go install github.com/Northwood-Systems/foreman/cmd/foreman@latest ,从发布中获取预构建归档,或go build -o bin/foreman ./cmd/foreman(Go 1.26+)。然后运行交互式设置以选择提供商,分配便宜/中等/前沿模型,并生成Foreman密钥(显示一次,仅作为哈希存储):foreman init #从不要求秘密:提供商密钥保持在您的环境变量中,foreman serve #引用为${VAR}并在启动时解析。将您的编码代理指向它。Claude Code、Codex、OpenCode和Pi的设置在docs/clients.md中。每个响应都携带X-Foreman-Trace-ID,X-Foreman-Model,X-Foreman-Provider和X-Foreman-Route-Reason头;foreman trace <id>显示完整决策,包括路由器拒绝的每个替代方案及其原因。路由如何工作通过优先级选择层级:政策底线(高风险和计划始终获取前沿)>显式X-Foreman-Task-Type / X-Foreman-Risk头(您控制的工具的精确仪器)>客户要求的模型,因为您的代理的本地模型选择器是层级切换。Foreman通过/v1/models广告foreman-plan / foreman-code / foreman-fast,同时解析目录名称和上游模型名称(对claude-sonnet-4-5的请求落入您的目录提供该模型的任意层级)。无法识别的模型退回到文档中的默认值(routine_code / low)。消息内容从不检查。层内路由:路由器选择层级允许的最便宜的健康模型;一个层是一个列表,因此跨提供商的多个模型在价格上竞争并相互覆盖。保持温暖:通过X-Foreman-Session-ID,一个对话在提示缓存温暖时保持其模型/提供商(TTL来自目录的prompt_cache.ttl_seconds)。显式信号(切换模型选择器或任务类型头)释放跨层级的温暖路由;未标记的流量永远不会破坏缓存。故障转移:提供商错误触发电路中断器(阈值 + 冷却 + 半开放试验),并且请求在下一个允许的路由上重试。记录:每个请求写入一个账本事件(测量的令牌,测量的成本)和一个路由轨迹(原因 + 被拒绝的替代方案)。默认使用SQLite,生产环境使用Postgres。透传保真:Foreman未建模的工具、图像和参数以字节相同的方式转发到相同协议的上游。对于跨协议流量(Anthropic格式客户端在OpenAI兼容的提供商上),完整的工具协议被翻译:工具定义、工具结果和流式工具调用,因此Claude Code可以针对Qwen/GLM类上游运行。只有无法翻译(图像,文档)的内容会明确拒绝并返回400,而不会静默扁平化。查看花费的去向foreman spend # 总计,缓存读取率,按团队细分foreman models # 模型/提供商组合foreman trace <id> # 一个路由决策,完全解释foreman top # 现场视图(bubbletea)CLI显示的所有内容都来自GET /v1/foreman/* JSON API(spend/summary,spend/top,models/mix,cache/metrics,traces/{id},ledger/export),因此您自己的仪表板可以读取相同的数字。在任何子命令上使用--json可以干净地传送。Foreman从不发布节省的数字。它是计算您自己数字的工具,来自您自己的账本:actual_cost_usd是按您的目录(或提供商报告的成本)定价的测量使用量,绝不会是回填的估计。发送您自己的流量,读取您自己的收据。配置两个JSON文件和环境变量,文档在docs/policy.md中:configs/policy.example.json:API密钥(SHA-256哈希)和模型角色:哪些模型是便宜的/中等的/前沿的,以及每个角色被允许处理的任务类型。configs/models.example.json:模型目录,包括提供商、上游模型名称、每MTok的价格(新鲜/缓存/输出/缓存写入)和提示缓存TTL。提供商凭据仅通过环境:FOREMAN_OPENAI_COMPAT_PROVIDERS=qwen,openai加上FOREMAN_PROVIDER_<ID>_BASE_URL / _API_KEY,FOREMAN_ANTHROPIC_API_KEY用于
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡