npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@jsonstudio/rcc

v0.90.814

Published

Multi-provider OpenAI proxy server with anthropic/responses/chat support (release)

Readme

routecodex & rcc

npm version License: MIT

RouteCodex 项目提供两个 CLI 工具:

  • routecodex (dev mode) - Development build with local llmswitch-core symlink
  • rcc (release mode) - Production build from npm @jsonstudio/rcc

Both provide a unified gateway for AI providers, handling routing + protocol conversion + tool call governance across different upstream protocols.

Note: This README covers both tools. For CLI-specific usage, see docs/INSTALLATION_AND_QUICKSTART.md.

最新更新 (2026-02-23)

进程生命周期管理规范(重要)

本项目已全面清理高危进程终止代码,严格执行自管理进程原则:

  • 禁止普杀:代码库中已移除所有 pkillkillalllsof | xargs kill 等批量终止模式
  • 仅管理已知进程:只有通过 pid file 或注册表明确记录的进程才能被终止
  • 归属验证:终止前必须通过 ps 验证进程命令归属,防止 PID 复用误杀
  • 自杀优先:推荐进程通过信号处理自行退出,而非外部强制终止

managed tmux 会话生命周期

  • 客户端退出即自动销毁 tmux 会话(launcher-kernel.ts:921
  • SIGTERM 信号下默认销毁 managed tmux(launcher-kernel.ts:55
  • 不再复用旧会话,始终新建(launcher-kernel.ts:842

Server 侧 Cleanup 策略

  • Cleanup 端点仅做状态清理,不终止客户端进程session-client-routes.ts:377
  • allowManagedTermination 已硬编码为 false,确保不会越界终止

启动脚本行为

  • run-bg.sh / run-fg-gtimeout.sh 偏向"停旧服再起"策略
  • 自动识别 RouteCodex server 进程并优雅替换
  • 非 RouteCodex listener 坚决拒绝终止(防误杀)

详见 AGENTS.md 第 1.1 条。

主要功能

  • 多入口同时支持(同一服务端口)
    • OpenAI Chat:POST /v1/chat/completions
    • OpenAI Responses:POST /v1/responses
    • Anthropic Messages:POST /v1/messages
  • 多 Provider / 多协议支持
    • OpenAI-compatible、Anthropic、Gemini/Gemini CLI、GLM、Qwen、iFlow、LM Studio 等(按配置启用)。
    • 部分 Provider 支持 OAuth / token file(按配置启用)。
  • 可配置路由
    • 将不同"流量池/路由类别"(如 default / thinking / tools / search / longcontext 等)映射到不同 Provider 目标列表。
  • 请求级"语法控制"
    • 指定 Provider/模型model 可直接写成 provider.model(例如 iflow.glm-4.7)。
    • 路由指令:可在用户文本中插入 <**...**> 指令(例如 <**glm.glm-4.7**>),详见 docs/routing-instructions.md
  • Passthrough(透传)
    • 可按 Provider 配置启用透传:只做鉴权/路由/日志,不做语义修补(适合严格 SSE 透传场景)。

安装

环境要求:Node.js 20+(推荐 LTS)。

routecodex (dev mode)

# Build shared module first
npm --prefix sharedmodule/llmswitch-core run build

# Build host (dev)
npm run build:dev

# Install globally
npm run install:global

# Verify
routecodex --version

rcc (release mode, recommended for production)

npm install -g @jsonstudio/rcc
rcc --version

升级/卸载:

npm update -g @jsonstudio/rcc
npm uninstall -g @jsonstudio/rcc

使用

1) 初始化(推荐用 rcc

默认配置路径:

  • macOS / Linux:~/.rcc/config.json
  • Windows:%USERPROFILE%\\.rcc\\config.json

默认初始化(会把内置脱敏 quickstart 配置复制到目标路径):

rcc init

按 provider 模板直接生成 v2(覆盖默认复制流程):

rcc init --providers deepseek-web,tab,qwen --default-provider deepseek-web --camoufox --force

说明:

  • --providers 使用 init 内置 provider id(见下文鉴权表)。
  • --camoufox 会显式触发 Camoufox 环境准备(即使当前 provider 不强依赖)。
  • --force 会先备份旧配置到 config.json.bak* 再重写。

如果你使用 dev CLI,把 rcc 替换成 routecodex 即可。

1.1 推荐顺序(先 --camoufox,再 provider 化)

推荐按这 3 步执行:

  1. 先跑 rcc init --camoufox
  2. 再用 rcc init --config ... --force 把默认/v1 配置转换为 provider 分文件(v2)
  3. 最后配置 key/token 并启动

示例:

# Step 1: 先做 camoufox 环境检查/准备
rcc init --camoufox

# Step 2: rcc init 已自动写入默认 quickstart;这里执行 v1 -> v2 转换
rcc init --config ~/.rcc/config.json --force

# Step 3: 配置密钥与 token 后启动
rcc init --list-current-providers
rcc start --config ~/.rcc/config.json

Step 2 完成后,provider 会拆分到:

  • ~/.rcc/provider/<providerId>/config.v2.json

Step 3(配置密钥/token)的最小动作:

  • API Key 类:设置环境变量(如 OPENAI_API_KEY / TAB_API_KEY / GLM_API_KEY
  • OAuth 类:执行 rcc oauth qwen-auto qwenrcc oauth gemini-auto gemini-clircc oauth antigravity-auto antigravity
  • DeepSeek:在 ~/.rcc/auth/deepseek-account-1.json 写入 mobile/password,启动后自动回填 access_token

Windows PowerShell 对应写法:

rcc init --camoufox
rcc init --config "$env:USERPROFILE\.rcc\config.json" --force
rcc init --list-current-providers
rcc start --config "$env:USERPROFILE\.rcc\config.json"

2) Camoufox 初始化(macOS / Windows)

rcc init --camoufox 会自动检查/安装 Camoufox。你也可以先手工准备:

macOS:

python3 -m pip install --user -U camoufox
python3 -m camoufox path

Windows (PowerShell):

py -3 -m pip install --user -U camoufox
py -3 -m camoufox path

可选环境变量(当 Python 不在默认命令路径时):

  • ROUTECODEX_PYTHON / RCC_PYTHON:指定 Python 可执行文件路径
  • ROUTECODEX_CAMOUFOX_AUTO_INSTALL=0:关闭自动安装(默认开启)

验证 Camoufox profile + 指纹是否可打开:

rcc camoufox antigravity-oauth-1-alias1.json

3) macOS / Windows 环境变量写法

macOS/Linux (zsh/bash):

export OPENAI_API_KEY="your_openai_key"
export TAB_API_KEY="your_tab_key"
export GLM_API_KEY="your_glm_key"

Windows PowerShell(当前会话):

$env:OPENAI_API_KEY="your_openai_key"
$env:TAB_API_KEY="your_tab_key"
$env:GLM_API_KEY="your_glm_key"

Windows PowerShell(持久化):

setx OPENAI_API_KEY "your_openai_key"
setx TAB_API_KEY "your_tab_key"
setx GLM_API_KEY "your_glm_key"

API key 类 provider 的常用环境变量(按 init 模板):

  • OPENAI_API_KEY
  • TAB_API_KEY
  • GLM_API_KEY
  • KIMI_API_KEY
  • MODELSCOPE_API_KEY
  • MIMO_API_KEY

4) 按 init 内置 provider 配置鉴权

下表对应 rcc init --list-providers 的内置模板:

| Provider ID | 默认 auth 类型 | 你需要做什么 | |------|------|------| | openai | apikey | 设置 OPENAI_API_KEY | | tab | apikey (responses) | 设置 TAB_API_KEY | | deepseek-web | deepseek-account (tokenFile entries) | 准备 ~/.rcc/auth/deepseek-account-*.json | | glm | apikey | 设置 GLM_API_KEY | | glm-anthropic | apikey (/v1/messages) | 设置 GLM_API_KEY | | kimi | apikey | 设置 KIMI_API_KEY | | modelscope | apikey | 设置 MODELSCOPE_API_KEY | | lmstudio | apikey (本地) | 通常可留空或填本地网关 key | | qwen | qwen-oauth (tokenFile=default) | 先跑 OAuth 生成 token | | iflow | iflow-cookie | 准备 ~/.rcc/auth/iflow-work.cookie | | mimo | apikey | 设置 MIMO_API_KEY | | gemini-cli | gemini-cli-oauth (entries[].tokenFile) | 先跑 OAuth 生成 token | | antigravity | antigravity-oauth (entries[].tokenFile) | 先跑 OAuth 生成 token |

4.1) Vision / Web Search 需要配置哪些 provider

这两个能力不是“自动可用”,需要你在路由里显式配置可用目标:

  • virtualrouter.routing.vision:至少 1 个支持图像输入的 provider.model
  • virtualrouter.routing.web_search:至少 1 个支持联网搜索的 provider.model

按当前 quickstart 的默认实践,推荐如下:

  • Vision:iflow.qwen3-vl-plus(主)+ tabglm.glm-4.6v(备)
  • Web Search:iflow.glm-4.7(主)+ gemini-cli.gemini-2.5-flash-lite / tabglm.glm-4.7(备)

如果你只使用 rcc init 内置 provider(不加 tabglm 自定义 provider),可先用这组:

  • Vision:iflow.qwen3-vl-plus
  • Web Search:iflow.glm-4.7 + gemini-cli.gemini-2.5-flash-lite

最小检查原则:

  • routing.vision / routing.web_search 里的每个 provider.model,都必须在对应 ~/.rcc/provider/<providerId>/config.v2.jsonmodels 里存在
  • 上述 provider 的鉴权必须先配好(apikey/oauth/cookie/tokenFile),否则会在启动时被跳过初始化

OAuth 认证命令(常用):

rcc oauth qwen-auto qwen
rcc oauth gemini-auto gemini-cli
rcc oauth antigravity-auto antigravity

DeepSeek 单文件凭据 + token(同一文件)示例:

{
  "mobile": "13800000000",
  "password": "your_password",
  "access_token": ""
}

放在 ~/.rcc/auth/deepseek-account-1.json 后,启动时会自动登录并回填 access_token

5) 脱敏快速配置(来自当前线上配置)

已提供脱敏模板:

  • configsamples/config.v1.quickstart.sanitized.json

快速使用:

rcc init
rcc start --config ~/.rcc/config.json

此模板已经脱敏(API key、token、账号别名),保留了可直接复用的路由结构和 provider 组合。

5.1) 用 rcc init 把本地 v1 配置转换为 v2

如果你要把 configsamples/config.v1.quickstart.sanitized.json 本地化成 v2(provider 分文件 + virtualrouterMode: v2),推荐直接用:

rcc init
rcc init --config ~/.rcc/config.json --force

说明:

  • rcc init 会检测到这是 v1 配置并执行迁移。
  • --force 会跳过交互确认,适合脚本化/CI。
  • 迁移后会生成 ~/.rcc/provider/<providerId>/config.v2.json,并备份原始 v1 文件为 config.json.bak*

可选检查:

rcc init --list-current-providers
rcc start --config ~/.rcc/config.json

6) 调用 API(示例)

健康检查:

curl http://127.0.0.1:5555/health

OpenAI Chat:

curl http://127.0.0.1:5555/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"iflow.glm-4.7","messages":[{"role":"user","content":"hi"}],"stream":false}'

OpenAI Responses:

curl http://127.0.0.1:5555/v1/responses \
  -H 'Content-Type: application/json' \
  -d '{"model":"tab.gpt-5.2","input":[{"role":"user","content":"hi"}],"stream":false}'

Anthropic Messages:

curl http://127.0.0.1:5555/v1/messages \
  -H 'Content-Type: application/json' \
  -d '{"model":"anthropic.claude-sonnet-4-5","messages":[{"role":"user","content":"hi"}],"stream":false}'

文档

入门指南

  • 安装与快速上手docs/INSTALLATION_AND_QUICKSTART.md
  • OAuth(认证与刷新)docs/OAUTH.md
  • 内置 Providerdocs/PROVIDERS_BUILTIN.md
  • Provider 类型与协议docs/PROVIDER_TYPES.md

核心功能

  • 路由指令/语法docs/routing-instructions.md
  • 端口与入口docs/PORTS.md
  • Codex / Claude Code 集成docs/CODEX_AND_CLAUDE_CODE.md

架构与设计

  • 架构总览docs/ARCHITECTURE.md
  • 配置架构docs/CONFIG_ARCHITECTURE.md
  • V2 架构(历史参考)docs/v2-architecture/README.md
  • V3 入出站设计docs/V3_INBOUND_OUTBOUND_DESIGN.md

错误处理与调试

  • 错误处理 V2docs/error-handling-v2.md
  • 调试系统设计docs/debug-system-design.md

高级主题

  • 路由策略docs/ROUTING_POLICY_SCHEMA.md
  • 虚拟路由器优先级与健康docs/VIRTUAL_ROUTER_PRIORITY_AND_HEALTH.md
  • 配额管理 V3docs/QUOTA_MANAGER_V3.md

开发者文档

  • 源代码目录说明src/README.md
  • Provider 模块src/providers/README.md
  • 配置模块src/config/README.md

CLI 差异说明

| 特性 | routecodex (dev) | rcc (release) | |------|------------------|---------------| | 构建方式 | 本地构建 (npm run build:dev) | npm 发布包 | | llmswitch-core | local symlink | npm @jsonstudio/llms | | 共享模块构建 | 需要先 npm --prefix sharedmodule/llmswitch-core run build | 不需要 | | 用途 | 开发、调试、测试 | 生产环境 | | CLI 命令 | routecodex | rcc |

参考配置

  • configsamples/config.reference.json
  • configsamples/config.v1.quickstart.sanitized.json
  • configsamples/provider/*/config.v1.json

相关链接