一个接口,不止一个选择
复用熟悉的 OpenAI SDK。更换 baseURL,就能让现有应用接入本地网关。
从第一个请求,到下一次灵感。
常用的能力,已经为你准备好。
复用熟悉的 OpenAI SDK。更换 baseURL,就能让现有应用接入本地网关。
每个上游最多 16 个 Key,逐请求轮询。添加、删除、调整优先级,保存即生效。
失败 Key 自动冷却,可用 Key 继续接力。响应开始前切换上游,流式输出不重复。
内置 Pi 编程代理。读代码、改文件、跑测试,直接使用你的网关配置。
你的密钥,留在你的机器。本地 Rust 后端管理凭据,浏览器不持久化上游密钥。
LOCAL FIRST从上游密钥到你的应用,只需要三步。
运行 Free Router 桌面应用,或从源码启动。默认在本机 8787 端口提供服务。
桌面应用 / Web / CLI在 Settings 填入上游 API Key,选择优先提供方,再生成统一的网关密钥。
带上你自己的 API Key将 Base URL 和网关密钥填入应用,选择 space-bunny,让网关处理后续路由。
熟悉的 SDK,同样的调用方式不需要学习另一套 API。
选择你熟悉的方式,发出第一个请求。
import os
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:8787/v1",
api_key=os.environ["GATEWAY_API_KEY"],
)
response = client.chat.completions.create(
model="space-bunny",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)curl http://127.0.0.1:8787/v1/chat/completions \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $GATEWAY_API_KEY" \
-d '{
"model": "space-bunny",
"messages": [
{"role": "user", "content": "Hello!"}
],
"stream": true
}'import OpenAI from "openai";
const client = new OpenAI({
baseURL: "http://127.0.0.1:8787/v1",
apiKey: process.env.GATEWAY_API_KEY,
});
const response = await client.chat.completions.create({
model: "space-bunny",
messages: [{ role: "user", content: "Hello!" }],
});
console.log(response.choices[0].message.content);Free Router 是运行在本机的 AI 网关。它将 OpenRouter、OpenCode Zen 和 Command Code 接到统一的 OpenAI-compatible 接口,并提供设置界面、Playground 和 Pi 编程代理。
Free Router 的源码可在 GitHub 获取。模型是否免费、可用额度与访问条件由各上游决定,你需要配置自己的上游 API Key。它不承诺无限额度或所有模型免费。
目前提供 Chat Completions 和模型列表,透传 SSE、工具调用及多模态参数。space-bunny 可自动路由,也可用上游前缀指定提供方。Command Code 支持其他 Chat Completions 模型 ID。当前没有 Responses 或 Anthropic Messages 协议转换。
上游密钥由本地 Rust 后端管理,保存在本地配置文件中,Unix 文件权限为 0600。前端不回显已保存的上游密钥,也不会把密钥持久化到浏览器存储。
网关会尝试池中的其他可用 Key;自动路由还可以切换上游。失败的 Key 会按错误类型进入冷却。只有在响应头发送前才会重试,流式输出开始后不会重放请求,避免重复内容。
Pi Agent 使用已有网关配置,在你指定的工作目录阅读代码、创建和编辑文件、执行命令与测试,也支持停止任务。工具以本机用户权限执行,工作目录不是安全沙箱,因此应在信任的本地环境中使用。
从一个本地网关开始,连接你的下一次创造。
在 GitHub 开始