LLMRouter · 自托管 · 密钥不出本机

一个接口
调度所有 AI

装在你自己电脑上,把 26+ AI 厂商聚合到一个 OpenAI 兼容接口。密钥本地加密,厂商挂了自动切,智能路由选最优——客户端零改动。

LLMRouter — 路由面板
G
Google Gemini
gemini-2.0-flash
运行中
G
Groq
llama-3.3-70b
运行中
O
OpenRouter
gpt-4o · claude-3.5-sonnet
运行中
S
SiliconFlow(硅基流动)
deepseek-v3 · qwen-max
备用
Z
智谱 AI
glm-4 · glm-4-flash
待命
智能路由:当前请求 → Google gemini-2.0-flash · 延迟 35ms · 成功率 99.99%
26+
AI 厂商接入
40MB
空闲内存占用
20x
自动故障转移
AES-256
密钥本地加密
Open Source

完全开源,自由掌控

LLMRouter 基于 MIT 协议开源,代码完全透明。所有数据存储在本地 SQLite,密钥 AES-256-GCM 加密——你的隐私,你做主。欢迎 Star、Fork、提 PR,一起把这个项目做得更好。

访问 GitHub 仓库
MIT License TypeScript Self-Hosted Privacy-First Contributions Welcome
Star
支持这个项目
🔱
Fork
二次开发
💡
PR
贡献代码

管理多个 AI API
到底有多烦?

每个厂商自己的 SDK、各自的限流规则、账单分散在不同平台。当一个挂了,你得手动切——或者更惨,根本不知道它挂了。

🔐

密钥散落各处

Google 的密钥在本地,Groq 的在环境变量,OpenRouter 的硬编码在脚本里。安全?不存在的。

⚠️

厂商随时限流

免费额度用完了就是 429。模型突然降智,你不知道是限流了还是模型崩了。重试也没用,干等。

📈

账单完全失控

Groq 花了多少钱?智谱用了多少 Token?每个厂商独立计费,月底只能对着账单发懵。

🔧

客户端适配地狱

OpenAI SDK、Anthropic SDK、Claude Code...每个工具都要配不同的 base_url 和密钥,烦不胜烦。

🧠

选模型全靠猜

Groq 快但模型旧,智谱中文好但英文弱。每个请求手动挑模型?等你挑完,AI 早回答完了。

🔑

密钥泄露风险

明文密钥放在 .env 或配置文件里,一不小心就提交到代码仓库。AES-256 加密才是正道。

一个接口,
接管一切。

LLMRouter 安装在你自己的电脑上,所有数据存在本地 SQLite 里。所有厂商的 API 密钥经 AES-256 加密后存储在本地,绝不离开你的机器——没有云端中转,没有第三方截获。代码经过严格测试,稳定可靠。

AI 客户端 SDK / CLI LLMRouter :2210
智能路由引擎 + AES-256 解密 + 限速守护
Google Gemini Groq Cerebras NVIDIA NIM Mistral OpenRouter GitHub Models Cohere Cloudflare AI HuggingFace Ollama Cloud 智谱 AI 阿里云百炼 百度千帆 硅基流动 Reka Pollinations AI Horde 自定义接口

不只是路由,
是 AI 模型的指挥中心。

每个特性都经过实战打磨——从自动故障转移到多模型融合,这是一套完整的 LLM 调度系统。

🎯

智能路由引擎

model="auto",系统根据可靠性、速度、智力三维度 + Thompson 采样自动选最优模型。支持 priority / balanced / smartest / fastest / reliable / custom 六种策略。

# 六种路由策略,一行切换
model="auto" ← 默认自动路由
model="auto:smartest" ← 智能优先
model="auto:fastest" ← 速度优先
🔄

自动故障转移

厂商 429 / 5xx / 超时时自动切换下一个模型,最多 20 次尝试。冷却时间智能递增,不给已挂厂商反复请求。

🔒

密钥加密存储

AES-256-GCM 军用级加密,所有厂商的 API Key 加密后存储在你自己的电脑上,绝不离开你的机器。加密密钥你自己管,就算数据库泄露也解不开你的 API 密钥。

🧠

Fusion 多模型融合

同时调动多个模型并行回答,由 Judge 模型综合各答案,输出一个最佳结果。不同模型的不同视角,融合成一份更完整、更准确的答案——不是简单的投票,是真正的语义综合。

# 一行启用多模型融合
model="fusion" ← 自动选 4 个模型并行
strategy="synthesize" ← Judge 综合答案
strategy="best_of" ← 取最长最优回答

流式 & 工具调用

完整支持 SSE 流式输出和 OpenAI function calling。tool_choice 透传,parallel_tool_calls 无压力。

🔋

极致轻量

空闲时仅 40MB 内存,SQLite 单文件,零外部依赖。适合任何机器,从树莓派到工作站都能跑。

🔧

双 API 兼容

OpenAI /v1/chat/completions 和 Anthropic /v1/messages 双协议支持。Claude Code 直接改 ANTHROPIC_BASE_URL 就能用,Python / cURL / 任何 OpenAI SDK 客户端零修改接入。

# Claude Code 接入 —— 两行环境变量
export ANTHROPIC_BASE_URL=http://localhost:2210
export ANTHROPIC_AUTH_TOKEN=llmrouter-xxxx
claude
📊

管理面板

React + TailwindCSS Web UI:管密钥、调路由优先级、看分析数据、跑 Playground 实时测试。全中文界面,一目了然。

📝

上下文保持

模型切换时自动注入对话历史摘要,确保 sticky session 不会因厂商切换导致模型「失忆」。

你的所有模型,
一个都别落下。

无论海外前沿模型还是国产大模型,全部无缝接入。还支持任何 OpenAI 兼容的自定义接口——Ollama / vLLM / LM Studio 都行。

每一层都经过
精心设计。

从智能路由到自动故障转移,从密钥加密到模型 Fusion——LLMRouter 的每一个功能模块都经过严格设计,在你的电脑上安静运转,让 AI 调用这件事变得简单。

帮你挑最优解
而不是随便挑一个

LLMRouter 的路由引擎会根据模型优先级、请求类型(文本/视觉/工具调用)和历史成功率,自动为每个请求选择最合适的厂商。你定义优先级,引擎负责执行——在错误时自动降级,在恢复时自动升级。

  • 按优先级自动路由,支持 fallback 链
  • 按请求能力过滤(视觉、工具调用、流式)
  • 实时健康检查,自动剔除异常厂商
  • 权重分配,灵活控制流量比例
route-engine — 实时路由表
G
Google · gemini-2.0-flash
priority: 100 · latency: 35ms · 99.99%
主路由
G
Groq · llama-3.3-70b
priority: 90 · latency: 28ms · 99.95%
备用
O
OpenRouter · gpt-4o
priority: 80 · latency: 58ms · 99.97%
运行中
S
SiliconFlow · deepseek-v3
priority: 70 · latency: 120ms · 99.8%
备用
X
某厂商 · 已超时
priority: 60 · status: unhealthy
已移除

厂商挂了?
0.5 秒内自动切换

当一个厂商返回 5xx 错误或超时,LLMRouter 立刻将请求转发给 fallback 链中的下一个厂商。整个过程对客户端完全透明——你的用户不会看到任何中断,你的代码不需要 try-catch 切换逻辑。

  • 5xx 错误自动重试下一个厂商
  • 超时自动降级,可配置超时阈值
  • 熔断机制:连续失败自动隔离
  • 恢复后自动重新加入路由池
failover — 故障转移流程
1
请求到达 → Google gemini-2.0-flash(优先级 100)
2
Google 返回 503 → 触发故障转移
3
自动重试 → Groq llama-3.3-70b(fallback)
4
请求成功 → 客户端无感知 · 总耗时 +28ms
5
Google 恢复 → 自动重新加入路由池

一行代码不改
直接接入

LLMRouter 暴露完全兼容 OpenAI 的 /v1/chat/completions 接口。把你现有代码里的 base_url 改成 LLMRouter 地址就行——SDK、LangChain、AutoGen、Cursor,全都能用。

  • OpenAI Python / Node.js SDK 直接可用
  • 流式输出(SSE)完整支持
  • 函数调用 / 工具调用兼容
  • 视觉多模态请求透传
quickstart.py — 三行接入
1from openai import OpenAI
2
3# 只改这一行,其他代码全部不变
4client = OpenAI(
5 base_url="http://localhost:2210/v1",
6 api_key="llmrouter-xxxxxxxx"
7)
8
9# 就这样,你现在有了 26+ 厂商
10resp = client.chat.completions.create(
11 model="auto",
12 messages=[{"role": "user", "content": "你好"}]
13)
14print(resp.choices[0].message.content)

多模型并行
一个更好的答案

Fusion 模式让一个请求同时发给多个厂商,由 Judge 模型选出最佳回答。适合需要高准确率的场景——比如代码生成、复杂推理。你可以配置参与 Fusion 的模型列表和 Judge 策略。

  • 多模型并行请求,结果聚合
  • 内置 Judge 模型自动选优
  • 支持自定义评分维度和权重
  • 可视化对比各模型回答质量
fusion — 多模型并行合成
G
Google gemini-2.0-flash → "回答 A"
G
Groq llama-3.3-70b → "回答 B"
O
OpenRouter gpt-4o → "回答 C"
↓ 并行结果汇聚 ↓
Judge 模型评估选优
最终输出 → 回答 B(评分 9.2/10)

密钥不出本机
加密存储在本地

所有厂商的 API Key 经 AES-256-GCM 加密后存储在你电脑上的本地 SQLite 数据库中。密钥不经过任何云端中转,不以明文落盘。加密密钥由你自己掌管,就算数据库文件被拷走也解不开。

  • AES-256-GCM 军用级加密
  • 密钥永不以明文落盘
  • 加密密钥由你掌管,可随时轮换
  • 所有数据存在本地 SQLite
encryption — 密钥加密流程
🔑
API Key 明文
sk-xxx...
🔐
AES-256 加密
GCM mode
💾
本地存储
SQLite (encrypted)
密钥全程不出本机 · 无云端中转 · 无第三方截获

40MB 内存
跑在树莓派上也行

LLMRouter 用 Node.js 写的,空闲时只占 40MB 内存。不需要 Docker,不需要数据库服务,一个进程跑起来就行。从 Mac mini 到树莓派,从云服务器到你手边的笔记本,到处都能跑。

  • 空闲内存 ~40MB,极低资源占用
  • 无需 Docker,单进程运行
  • 内嵌 SQLite,零外部依赖
  • macOS / Linux / Windows 全平台
system — 资源监控
40MB
空闲内存
<1%
空闲 CPU
0
外部依赖
1
进程即可
从树莓派到工作站 · 到处都能跑

你的密钥,
只在你的电脑上。

LLMRouter 安装在你自己的电脑上运行,不存在云端中转。所有厂商的 API 密钥经过 AES-256 加密后存储在本地 SQLite 数据库中,绝不离开你的机器。代码经过严格测试,稳定可靠。

🏠

本地运行

LLMRouter 安装在你自己的电脑上,从树莓派到工作站都能跑。所有请求在你的本地处理,数据不经过任何第三方服务器。

🔐

密钥不出本机

所有厂商的 API Key 经 AES-256-GCM 加密后存储在本地数据库中,绝不以明文落盘,绝不离开你的机器。加密密钥由你自己掌管。

🧪

严格测试

代码经过严格测试,从路由引擎到故障转移、从加密模块到流式输出,每个核心模块都有完整测试覆盖,稳定可靠。

三分钟,
从零到运行。

LLMRouter 安装在你自己的电脑上,不需要 Docker,不需要外部数据库。解压、启动、配置——三步搞定。

1
安装

解压项目 & 一键启动

确保你的电脑已安装 Node.js 20+。解压下载的 LLMRouter.zip,然后运行一键启动脚本——脚本会自动安装依赖、生成配置、启动服务,整个过程不到两分钟。

Terminal — 安装 LLMRouter
# 1. 解压项目
$ unzip LLMRouter.zip
$ cd llmrouter
 
# 2. 一键启动(自动安装依赖 + 生成配置 + 启动服务)
# macOS / Linux
$ ./start.sh start
 
# Windows
> start.bat
 
✓ Node.js v22.x | npm 10.x
⏳ 首次运行 — 正在安装依赖...
✓ 依赖安装完成!
✓ .env 已自动生成
🚀 正在启动 LLMRouter...
📦
Node.js 20+
唯一的前置依赖。推荐使用 LTS 版本。
必需
💻
全平台支持
macOS、Linux、Windows 均可运行。无平台限制。
跨平台
无需 Docker
单进程运行,不需要容器、不需要外部数据库服务。
零依赖
2
配置

配置环境变量

.env 文件在首次运行 start.sh 时自动生成,包含随机加密密钥和默认端口。你也可以手动编辑——所有 API Key 加密存储在本地 SQLite,不会明文出现在 .env 里。

Terminal — 编辑配置
# .env 已在首次启动时自动生成
# 如需修改,编辑即可
$ nano .env
 
# 或者用你喜欢的编辑器
$ code .env
 
# 重新生成加密密钥
$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
.env — 环境配置
# 后端 API 服务端口(默认 2210)
PORT=2210
 
# AES-256-GCM 加密密钥(自动生成)
ENCRYPTION_KEY=a1b2c3d4e5f6...64char-hex
 
# 请求分析数据保留天数
REQUEST_ANALYTICS_RETENTION_DAYS=90
 
# 响应缓存(可选,默认关闭)
RESPONSE_CACHE=false
提示:API Key 不需要在 .env 中配置。首次启动后,终端会显示一次性 Setup Code,用它在管理面板完成初始化。之后通过面板添加厂商密钥,所有密钥经 AES-256 加密后存储在本地 SQLite 数据库中。
3
启动

启动服务

一条命令启动。start.sh 会同时启动后端 API 服务(端口 2210)和前端管理面板(端口 10130)。启动后在浏览器打开管理面板,使用终端显示的 Setup Code 完成初始化,添加你的厂商 API Key 即可开始使用。

Terminal — 启动 LLMRouter
# macOS / Linux
$ ./start.sh start
 
# Windows
> start.bat
 
✓ Node.js v22.x | npm 10.x
✓ 依赖已就绪
✓ .env 已存在
 
🚀 正在启动 LLMRouter...
 
> server: Server running on port 2210
> client: Local: http://localhost:10130/
 
访问地址:
管理面板(前端): http://localhost:10130
后端 API 服务: http://localhost:2210
API 接口: http://localhost:2210/v1/chat/completions
 
⚡ 首次设置码: 8K3M-9P2Q-X7R4
打开 http://localhost:10130 输入设置码完成初始化。
注意:首次启动后,终端会显示一次性 Setup Code。请打开 http://localhost:10130 输入设置码完成初始化,然后添加你的厂商 API Key。所有密钥将经 AES-256 加密后存储在本地,绝不离开你的机器。
API 网关 (:2210)
OpenAI 兼容接口 /v1/chat/completions
运行中
管理面板 (:10130)
可视化管理厂商、密钥、路由配置
运行中
本地数据库
SQLite 加密存储,所有数据不出本机
AES-256 加密
4
后台运行

配置为系统服务(可选)

如果你希望 LLMRouter 开机自启、后台常驻,可以配置为系统服务。先执行 npm run build 构建生产版本,然后用 systemd / launchd / PM2 管理进程。

Terminal — systemd 配置
# 先构建生产版本
$ npm run build
 
# 创建 service 文件
$ sudo nano /etc/systemd/system/llmrouter.service
 
# 启用并启动
$ sudo systemctl daemon-reload
$ sudo systemctl enable llmrouter
$ sudo systemctl start llmrouter
 
# 检查状态
$ sudo systemctl status llmrouter
● llmrouter.service - LLMRouter API Gateway
Active: active (running)
llmrouter.service
[Unit]
Description=LLMRouter API Gateway
After=network.target
 
[Service]
Type=simple
User=your-username
WorkingDirectory=/path/to/llmrouter
ExecStart=/usr/bin/npm start
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target
macOS 用户:使用 launchd(LaunchAgent plist)实现同样的效果。Windows 用户推荐使用 PM2: npm run build && pm2 start "node server/dist/index.js" --name llmrouter
5
关闭

停止服务

根据你的启动方式,选择对应的停止方法。所有数据已持久化在本地 SQLite,重启后不会丢失。

Terminal — 停止 LLMRouter
# 方式一:使用 start.sh(推荐)
$ ./start.sh stop
⏳ 正在停止 LLMRouter...
✓ LLMRouter 已停止
 
# 方式二:前台运行 — 直接 Ctrl+C
$ ./start.sh start
^C
👋 LLMRouter 已退出
 
# 方式三:systemd 服务
$ sudo systemctl stop llmrouter
✓ Service stopped.
 
# 方式四:PM2(Windows / 跨平台)
$ pm2 stop llmrouter
✓ Process stopped.
 
# 方式五:直接杀进程(按端口)
$ lsof -ti:2210 -ti:10130 | xargs kill
✓ Processes killed.
优雅关闭
./start.sh stop 或 Ctrl+C 会等待当前请求处理完毕后再退出。
数据安全
所有配置和密钥持久化在本地 SQLite,重启后自动恢复。
快速重启
直接 ./start.sh restart 或 ./start.sh start 即可恢复服务。

把散落的 API 密钥,
收进一个接口。

安装在你自己的电脑上 · 所有厂商 API Key 加密存储在本地 · 代码经过严格测试 · 一行代码不改

立即开始使用
⚡ Node.js 20+ 🖥️ macOS / Linux / Windows 🔒 AES-256 加密存储 🧪 代码经过严格测试