{"_id":"3router","_rev":"6-8f17383352ddcecbf72016da020fa185","name":"3router","dist-tags":{"latest":"0.2.5"},"versions":{"0.2.0":{"name":"3router","version":"0.2.0","license":"MIT","_id":"3router@0.2.0","maintainers":[{"name":"jonny1994","email":"c1043870470@gmail.com"}],"bin":{"3router":"bin/3router"},"dist":{"shasum":"c778890834608db74c0b9eac5c3243f067f3fac3","tarball":"https://registry.npmjs.org/3router/-/3router-0.2.0.tgz","fileCount":9,"integrity":"sha512-56YeLH7cgYPK+h6jveXRYJphC4ET/Ss2RevqMvGP09tXJVsrqXCAkKYiyIfNRypeBWdmNhewzscptKbcV5+iPw==","signatures":[{"sig":"MEUCIQDp7d1Ih/UscO5syJzeC6s8ZXCc6I/W8a8wx6s8sReUnAIgS9q22Hc8ESVfNGTOmsikx37hGOPszVkAqUYR/jsTeTQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1036206},"type":"module","engines":{"node":">=20"},"gitHead":"61a5285fc9972da1a6c036f5fff4f1e6578ec79b","private":false,"scripts":{"dev":"bun run --watch src/cli.ts serve","lint":"oxlint src/ web/src/","test":"bun test","build":"pnpm build:cli && pnpm build:web && pnpm build:copy-web","start":"node dist/cli.js serve","format":"oxfmt src/ web/src/","build:cli":"tsdown","build:web":"cd web && pnpm build","typecheck":"tsc --noEmit","format:check":"oxfmt --check src/ web/src/","build:copy-web":"rm -rf dist-web && cp -r web/dist dist-web","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"jonny1994","email":"c1043870470@gmail.com"},"_npmVersion":"11.14.1","description":"> 本地 Claude Code API 智能路由代理 —— 一套配置、按消息内容智能分流，把请求路由到最合适的上游/模型。","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.53.0","oxlint":"^1.68.0","tsdown":"^0.22.3","bun-types":"^1.3.14","typescript":"^6.0.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/3router_0.2.0_1781804008504_0.9287082055456803","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"3router","version":"0.2.1","keywords":["claude-code","anthropic","api-proxy","llm","router","proxy","typescript"],"author":{"url":"https://github.com/Jonny-china","name":"Jonny Chen"},"license":"MIT","_id":"3router@0.2.1","maintainers":[{"name":"jonny1994","email":"c1043870470@gmail.com"}],"homepage":"https://github.com/Jonny-china/3router","bugs":{"url":"https://github.com/Jonny-china/3router/issues"},"bin":{"3router":"bin/3router"},"dist":{"shasum":"c4f9342d5b5f185c6945917596957ffdea8ec20f","tarball":"https://registry.npmjs.org/3router/-/3router-0.2.1.tgz","fileCount":9,"integrity":"sha512-W5ta5ygmD66bvJaF6g5CDdbxHGS2dHWWuzdQkiWScy3hNA3+4hkqtxtnFfnO64hlB10WW4zLlOVN97IXTF/CeA==","signatures":[{"sig":"MEQCICY9zmsjPPKcYHyo+eNkHDXJCkeTlewnRu6N+kJ0R13NAiAoVIizHc4xG2q3fvjFPuCd1eRidY5sxgachPaQRZmYaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/3router@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1036893},"type":"module","engines":{"node":">=20"},"gitHead":"bbe2868fa5418030bcf8b921452f2c2ecebc3d35","private":false,"scripts":{"dev":"bun run --watch src/cli.ts serve","lint":"oxlint src/ web/src/","test":"bun test","build":"pnpm build:cli && pnpm build:web && pnpm build:copy-web","start":"node dist/cli.js serve","format":"oxfmt src/ web/src/","build:cli":"tsdown","build:web":"cd web && pnpm build","typecheck":"tsc --noEmit","format:check":"oxfmt --check src/ web/src/","build:copy-web":"rm -rf dist-web && cp -r web/dist dist-web","prepublishOnly":"npm run typecheck && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb1b9291-d5e9-4735-aaaa-8fde508bb444"}},"repository":{"url":"git+https://github.com/Jonny-china/3router.git","type":"git"},"_npmVersion":"11.13.0","description":"本地 Claude Code API 智能路由代理 —— 按消息内容将请求路由到不同上游/模型，支持规则引擎、多上游、系统守护进程与 Web 管理面板。","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"oxfmt":"^0.53.0","oxlint":"^1.68.0","tsdown":"^0.22.3","bun-types":"^1.3.14","typescript":"^6.0.3","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/3router_0.2.1_1781843154099_0.05221326803765214","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"3router","version":"0.2.2","keywords":["claude-code","anthropic","api-proxy","llm","router","proxy","typescript"],"author":{"url":"https://github.com/Jonny-china","name":"Jonny Chen"},"license":"MIT","_id":"3router@0.2.2","maintainers":[{"name":"jonny1994","email":"c1043870470@gmail.com"}],"homepage":"https://github.com/Jonny-china/3router","bugs":{"url":"https://github.com/Jonny-china/3router/issues"},"bin":{"3router":"bin/3router"},"dist":{"shasum":"9bfbee5345b54d02fda66131fc8ebcafc80cf182","tarball":"https://registry.npmjs.org/3router/-/3router-0.2.2.tgz","fileCount":6,"integrity":"sha512-fXubFMCqqkgw6qvIPH637G9to4gyPbLoyRAep5fPyjS2dKX59WBRNKnbC32iB1dehaEJqzHMP6AN2X3wRyDhkQ==","signatures":[{"sig":"MEYCIQDjb9xSdOoYsRnFHxIFvy2NcFQOYq6k9ahC6Doq0Z5aywIhAPT8FkfCy4XWfaFpmw8nmXxRLjWcqER8GkHWVHjNkpDj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8458},"type":"module","engines":{"node":">=20"},"gitHead":"92d6fd39b31201f3b0e62d6551aaab966e3297ec","private":false,"scripts":{"dev":"bun run --watch src/cli.ts serve","lint":"oxlint src/ web/src/","test":"bun test","build":"pnpm build:web && pnpm build:copy-web && pnpm build:compile","format":"oxfmt src/ web/src/","build:web":"cd web && pnpm build","typecheck":"tsc --noEmit","postinstall":"node install.js","format:check":"oxfmt --check src/ web/src/","build:compile":"bun scripts/build-compile.ts","build:copy-web":"rm -rf dist-web && cp -r web/dist dist-web","prepublishOnly":"npm run typecheck"},"_npmUser":{"name":"jonny1994","email":"c1043870470@gmail.com"},"repository":{"url":"git+https://github.com/Jonny-china/3router.git","type":"git"},"_npmVersion":"11.14.1","description":"本地 Claude Code API 智能路由代理 —— 按消息内容将请求路由到不同上游/模型，支持规则引擎、多上游、系统守护进程与 Web 管理面板。","directories":{},"_nodeVersion":"24.13.0","dependencies":{"consola":"^3.4.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"oxfmt":"^0.53.0","oxlint":"^1.68.0","bun-types":"^1.3.14","typescript":"^6.0.3","@types/node":"^22.0.0"},"optionalDependencies":{"@3router/linux-x64":"^0.2.2","@3router/win32-x64":"^0.2.2","@3router/darwin-x64":"^0.2.2","@3router/linux-arm64":"^0.2.2","@3router/darwin-arm64":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/3router_0.2.2_1781964879018_0.10378251129210003","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"3router","version":"0.2.3","keywords":["claude-code","anthropic","api-proxy","llm","router","proxy","typescript"],"author":{"url":"https://github.com/Jonny-china","name":"Jonny Chen"},"license":"MIT","_id":"3router@0.2.3","maintainers":[{"name":"jonny1994","email":"c1043870470@gmail.com"}],"homepage":"https://github.com/Jonny-china/3router","bugs":{"url":"https://github.com/Jonny-china/3router/issues"},"bin":{"3router":"bin/3router"},"dist":{"shasum":"33223637a42fbe92b744ecd4c085da34a0765228","tarball":"https://registry.npmjs.org/3router/-/3router-0.2.3.tgz","fileCount":6,"integrity":"sha512-bsZlGBboBhCCuA6bAQOFcoQ9iGQfscis/Xd7cqqS0BPCgOSdAUBWbrxixlCdmzLBw6dKu8kH78p4XldioGbhAA==","signatures":[{"sig":"MEUCIA+k1g34SaKr/zc+5HfVGjkETw85gr2Y8TO37JwZNaNRAiEAzvfJyaQgub7kALXPekXy2sP4bbXexP2Rb9A5gs7OkZ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/3router@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8453},"type":"module","engines":{"node":">=20"},"gitHead":"f6d59ee8473f3e2fa430f8e4add4b0377bc9318a","private":false,"scripts":{"dev":"bun run --watch src/cli.ts serve","lint":"oxlint src/ web/src/","test":"bun test","build":"pnpm build:web && pnpm build:copy-web && pnpm build:compile","format":"oxfmt src/ web/src/","build:web":"cd web && pnpm build","typecheck":"tsc --noEmit","postinstall":"node install.js","format:check":"oxfmt --check src/ web/src/","build:compile":"bun scripts/build-compile.ts","build:copy-web":"rm -rf dist-web && cp -r web/dist dist-web","prepublishOnly":"npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb1b9291-d5e9-4735-aaaa-8fde508bb444"}},"repository":{"url":"git+https://github.com/Jonny-china/3router.git","type":"git"},"_npmVersion":"11.13.0","description":"本地 Claude Code API 智能路由代理 —— 按消息内容将请求路由到不同上游/模型，支持规则引擎、多上游、系统守护进程与 Web 管理面板。","directories":{},"_nodeVersion":"24.16.0","dependencies":{"consola":"^3.4.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"oxfmt":"^0.53.0","oxlint":"^1.68.0","bun-types":"^1.3.14","typescript":"^6.0.3","@types/node":"^22.0.0"},"optionalDependencies":{"@3router/linux-x64":"0.2.3","@3router/win32-x64":"0.2.3","@3router/darwin-x64":"0.2.3","@3router/linux-arm64":"0.2.3","@3router/darwin-arm64":"0.2.3"},"_npmOperationalInternal":{"tmp":"tmp/3router_0.2.3_1781976198344_0.8629236540785907","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"3router","version":"0.2.4","keywords":["claude-code","anthropic","api-proxy","llm","router","proxy","typescript"],"author":{"url":"https://github.com/Jonny-china","name":"Jonny Chen"},"license":"MIT","_id":"3router@0.2.4","maintainers":[{"name":"jonny1994","email":"c1043870470@gmail.com"}],"homepage":"https://github.com/Jonny-china/3router","bugs":{"url":"https://github.com/Jonny-china/3router/issues"},"bin":{"3router":"bin/3router"},"dist":{"shasum":"239b6ab8830816f9a0369b2f3d06a0725c179ab4","tarball":"https://registry.npmjs.org/3router/-/3router-0.2.4.tgz","fileCount":6,"integrity":"sha512-frciaoCQaRRwE5WUmQTQN+EZ8bVwkIaHfAyMFxnDmnj/ZZwJSd/soGhc/J/a8mYUuSNknJXRlLqANK7tL0jdRg==","signatures":[{"sig":"MEQCIG5w4KRJSgZQDuZMrGounTQ43jyN8iGow9BQps/8RQ4GAiBAWC2c8SaB9Ls44MJRX0j4NMx+1b/Cb4DdL9O+p5P0pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/3router@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8476},"type":"module","engines":{"node":">=20"},"gitHead":"9967861f8ec446759ab32d6d1227d023e4c54353","private":false,"scripts":{"dev":"bun run --watch src/cli.ts serve","lint":"oxlint src/ web/src/","test":"bun test","build":"pnpm build:web && pnpm build:copy-web && pnpm build:compile","format":"oxfmt src/ web/src/","build:web":"cd web && pnpm build","typecheck":"tsc --noEmit","postinstall":"node install.js","format:check":"oxfmt --check src/ web/src/","build:compile":"bun scripts/build-compile.ts","build:copy-web":"rm -rf dist-web && cp -r web/dist dist-web","prepublishOnly":"npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb1b9291-d5e9-4735-aaaa-8fde508bb444"}},"repository":{"url":"git+https://github.com/Jonny-china/3router.git","type":"git"},"_npmVersion":"11.13.0","description":"本地 Claude Code API 智能路由代理 —— 按消息内容将请求路由到不同上游/模型，支持规则引擎、多上游、系统守护进程与 Web 管理面板。","directories":{},"_nodeVersion":"24.16.0","dependencies":{"consola":"^3.4.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"oxfmt":"^0.53.0","oxlint":"^1.68.0","bun-types":"^1.3.14","typescript":"^6.0.3","@types/node":"^22.0.0"},"optionalDependencies":{"@3router/linux-x64":"0.2.4","@3router/win32-x64":"0.2.4","@3router/darwin-x64":"0.2.4","@3router/linux-arm64":"0.2.4","@3router/darwin-arm64":"0.2.4"},"_npmOperationalInternal":{"tmp":"tmp/3router_0.2.4_1782059343028_0.8660929727309301","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"3router","version":"0.2.5","private":false,"description":"本地 Claude Code API 智能路由代理 —— 按消息内容将请求路由到不同上游/模型，支持规则引擎、多上游、系统守护进程与 Web 管理面板。","keywords":["claude-code","anthropic","api-proxy","llm","router","proxy","typescript"],"license":"MIT","author":{"name":"Jonny Chen","url":"https://github.com/Jonny-china"},"repository":{"type":"git","url":"git+https://github.com/Jonny-china/3router.git"},"bugs":{"url":"https://github.com/Jonny-china/3router/issues"},"homepage":"https://github.com/Jonny-china/3router","type":"module","bin":{"3router":"bin/3router"},"engines":{"node":">=20"},"packageManager":"pnpm@10.33.0","scripts":{"dev":"bun run --watch src/cli.ts serve","typecheck":"tsc --noEmit","build:web":"cd web && pnpm build","build:copy-web":"rm -rf dist-web && cp -r web/dist dist-web","build:compile":"bun scripts/build-compile.ts","build":"pnpm build:web && pnpm build:copy-web && pnpm build:compile","prepublishOnly":"npm run typecheck","postinstall":"node install.js","test":"bun test","lint":"oxlint src/ web/src/","format":"oxfmt src/ web/src/","format:check":"oxfmt --check src/ web/src/"},"optionalDependencies":{"@3router/darwin-arm64":"0.2.5","@3router/darwin-x64":"0.2.5","@3router/linux-x64":"0.2.5","@3router/linux-arm64":"0.2.5","@3router/win32-x64":"0.2.5"},"devDependencies":{"@types/node":"^22.0.0","bun-types":"^1.3.14","oxfmt":"^0.53.0","oxlint":"^1.68.0","typescript":"^6.0.3"},"dependencies":{"consola":"^3.4.2"},"gitHead":"2370021510879b1a7e588749a72d39937aae6c23","_id":"3router@0.2.5","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-+wI6IZwYABvDlDDSF/ukfDzroG/MMEfeWH6UWA1QGSf4Db0gDEfAzYkMbY+AZcoQWbFtUwKLDmZoRKR76a98eQ==","shasum":"6f6982512930c2c8762fa72702056c792f5b2303","tarball":"https://registry.npmjs.org/3router/-/3router-0.2.5.tgz","fileCount":6,"unpackedSize":8476,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/3router@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEAYbjJxPuFiGFwrnJxT/9NWXsi6jMqEia+76bScYq6KAiEAnGNsteucSit0m/Qg4+X9sgwbqEHyOzFH0Nm3FmbNF30="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb1b9291-d5e9-4735-aaaa-8fde508bb444"}},"directories":{},"maintainers":[{"name":"jonny1994","email":"c1043870470@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/3router_0.2.5_1782133426440_0.640219552064726"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-18T17:33:28.462Z","modified":"2026-06-22T13:03:46.851Z","0.2.0":"2026-06-18T17:33:28.692Z","0.2.1":"2026-06-19T04:25:54.365Z","0.2.2":"2026-06-20T14:14:39.206Z","0.2.3":"2026-06-20T17:23:18.503Z","0.2.4":"2026-06-21T16:29:03.150Z","0.2.5":"2026-06-22T13:03:46.581Z"},"bugs":{"url":"https://github.com/Jonny-china/3router/issues"},"author":{"name":"Jonny Chen","url":"https://github.com/Jonny-china"},"license":"MIT","homepage":"https://github.com/Jonny-china/3router","keywords":["claude-code","anthropic","api-proxy","llm","router","proxy","typescript"],"repository":{"type":"git","url":"git+https://github.com/Jonny-china/3router.git"},"description":"本地 Claude Code API 智能路由代理 —— 按消息内容将请求路由到不同上游/模型，支持规则引擎、多上游、系统守护进程与 Web 管理面板。","maintainers":[{"name":"jonny1994","email":"c1043870470@gmail.com"}],"readme":"# 3router\n\n> 本地 Claude Code API 智能路由代理 —— 一套配置、按消息内容智能分流，把请求路由到最合适的上游/模型。\n\n在本地（`http://localhost:9191`）启动一个兼容 Anthropic API 的代理，根据请求内容（是否含图片、文本等）匹配路由规则，将请求分发到不同上游服务和模型。在 Claude Code 中只需把 `ANTHROPIC_BASE_URL` 指向它即可无缝接入。\n\n## ✨ 特性\n\n- **智能路由** — 按消息内容（`has_image` 含图片 / `default` 默认）与优先级匹配规则，将请求路由到不同上游/模型\n- **多上游支持** — 统一管理 Anthropic 官方、阿里百炼等多个上游，按场景灵活分流\n- **规则引擎** — 优先级 + 条件匹配，声明式定义路由策略\n- **系统守护进程** — `start` / `stop` / `status` 一键管理，支持 macOS（launchctl）与 Linux（systemd）开机自启\n- **Web 管理面板** — 可视化配置上游、规则与模型（生产与后端同源 `9191`）\n- **流式透传** — 原生支持 SSE 流式响应（Bun.serve 原生 web stream，不阻塞 Claude Code 实时输出）\n- **图片上下文保留** — 智能缓存图片内容，避免多轮对话丢失视觉上下文\n- **零依赖二进制** — `bun build --compile` 产出独立可执行文件，无需 Node/Bun 运行时\n\n## 安装\n\n### npm 全局安装（推荐）\n\n```bash\nnpm install -g 3router\n```\n\n安装时按当前平台（`os` + `cpu`）自动只装一个预编译二进制（macOS / Linux / Windows × arm64/x64），底层走 `@3router/<platform>` 平台子包。\n\n### 直接下载二进制\n\n从 [GitHub Releases](https://github.com/Jonny-china/3router/releases) 下载对应平台的 `3router-<platform>.tar.gz`（或 `.zip`），解压后放到 `PATH` 即可。\n\n## 快速开始\n\n```bash\n3router            # 启动代理（首次运行自动生成 ~/.3router/config.json）\n```\n\n编辑 `~/.3router/config.json` 填入上游 API 密钥，然后在 Claude Code 中设置 `ANTHROPIC_BASE_URL=http://localhost:9191`。\n\n> 💡 可用 `THREEROUTER_HOME` 环境变量自定义配置目录；开机自启见 [系统服务](#系统服务守护进程)。\n\n## 路由规则\n\n- **has_image**：包含图片内容块的消息\n- **default**：其他所有消息（纯文本、助手消息）\n\n规则按优先级匹配（数字越小，优先级越高）。\n\n## 系统服务（守护进程）\n\n安装后可直接使用 `3router` 命令管理本地服务（仅 macOS / Linux）：\n\n| 命令 | 说明 |\n|------|------|\n| `3router serve` | 前台启动代理服务器（默认） |\n| `3router start` | 注册并启动为系统服务（macOS 走 `launchctl`，Linux 走 `systemd`），开机自启 |\n| `3router stop` | 停止系统服务 |\n| `3router status` | 查看服务运行状态 |\n\n> 💡 开机自启后，Claude Code 随时可用，无需手动保持终端运行。\n","readmeFilename":"README.md"}