wyxrouter 0.4.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) hide show
  1. package/CHANGELOG.md +222 -0
  2. package/LICENSE +21 -0
  3. package/README.md +96 -0
  4. package/README.zh-CN.md +1311 -0
  5. package/assets/pixel-router-2d.png +0 -0
  6. package/cli/LICENSE +42 -0
  7. package/cli/README.md +125 -0
  8. package/cli/app/package.json +58 -0
  9. package/cli/cli.js +806 -0
  10. package/cli/package.json +48 -0
  11. package/i18n/README.ja-JP.md +1209 -0
  12. package/i18n/README.ru.md +1311 -0
  13. package/i18n/README.vi.md +1310 -0
  14. package/i18n/README.zh-CN.md +1306 -0
  15. package/images/9router.png +0 -0
  16. package/jsconfig.json +12 -0
  17. package/next.config.mjs +71 -0
  18. package/open-sse/config/appConstants.js +203 -0
  19. package/open-sse/config/codexInstructions.js +119 -0
  20. package/open-sse/config/constants.js +4 -0
  21. package/open-sse/config/defaultThinkingSignature.js +12 -0
  22. package/open-sse/config/errorConfig.js +85 -0
  23. package/open-sse/config/googleTtsLanguages.js +62 -0
  24. package/open-sse/config/kiroConstants.js +322 -0
  25. package/open-sse/config/models.js +13 -0
  26. package/open-sse/config/ollamaModels.js +19 -0
  27. package/open-sse/config/providerModels.js +944 -0
  28. package/open-sse/config/providers.js +458 -0
  29. package/open-sse/config/runtimeConfig.js +72 -0
  30. package/open-sse/config/ttsModels.js +129 -0
  31. package/open-sse/executors/antigravity.js +504 -0
  32. package/open-sse/executors/azure.js +57 -0
  33. package/open-sse/executors/base.js +185 -0
  34. package/open-sse/executors/codex.js +469 -0
  35. package/open-sse/executors/commandcode.js +88 -0
  36. package/open-sse/executors/cursor.js +795 -0
  37. package/open-sse/executors/default.js +497 -0
  38. package/open-sse/executors/gemini-cli.js +89 -0
  39. package/open-sse/executors/github.js +379 -0
  40. package/open-sse/executors/grok-web.js +345 -0
  41. package/open-sse/executors/iflow.js +108 -0
  42. package/open-sse/executors/index.js +75 -0
  43. package/open-sse/executors/kiro.js +508 -0
  44. package/open-sse/executors/ollama-local.js +14 -0
  45. package/open-sse/executors/opencode-go.js +41 -0
  46. package/open-sse/executors/opencode.js +32 -0
  47. package/open-sse/executors/perplexity-web.js +507 -0
  48. package/open-sse/executors/qoder.js +450 -0
  49. package/open-sse/executors/qwen.js +129 -0
  50. package/open-sse/executors/vertex.js +131 -0
  51. package/open-sse/executors/xiaomi-tokenplan.js +19 -0
  52. package/open-sse/handlers/chatCore/nonStreamingHandler.js +230 -0
  53. package/open-sse/handlers/chatCore/requestDetail.js +102 -0
  54. package/open-sse/handlers/chatCore/sseToJsonHandler.js +231 -0
  55. package/open-sse/handlers/chatCore/streamingHandler.js +103 -0
  56. package/open-sse/handlers/chatCore.js +287 -0
  57. package/open-sse/handlers/embeddingProviders/_base.js +4 -0
  58. package/open-sse/handlers/embeddingProviders/gemini.js +54 -0
  59. package/open-sse/handlers/embeddingProviders/index.js +23 -0
  60. package/open-sse/handlers/embeddingProviders/openai.js +39 -0
  61. package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +13 -0
  62. package/open-sse/handlers/embeddingsCore.js +126 -0
  63. package/open-sse/handlers/fetch/index.js +237 -0
  64. package/open-sse/handlers/imageGenerationCore.js +189 -0
  65. package/open-sse/handlers/imageProviders/_base.js +31 -0
  66. package/open-sse/handlers/imageProviders/blackForestLabs.js +43 -0
  67. package/open-sse/handlers/imageProviders/cloudflareAi.js +178 -0
  68. package/open-sse/handlers/imageProviders/codex.js +198 -0
  69. package/open-sse/handlers/imageProviders/comfyui.js +8 -0
  70. package/open-sse/handlers/imageProviders/falAi.js +41 -0
  71. package/open-sse/handlers/imageProviders/gemini.js +25 -0
  72. package/open-sse/handlers/imageProviders/huggingface.js +22 -0
  73. package/open-sse/handlers/imageProviders/index.js +40 -0
  74. package/open-sse/handlers/imageProviders/nanobanana.js +58 -0
  75. package/open-sse/handlers/imageProviders/openai.js +40 -0
  76. package/open-sse/handlers/imageProviders/runwayml.js +47 -0
  77. package/open-sse/handlers/imageProviders/sdwebui.js +17 -0
  78. package/open-sse/handlers/imageProviders/stabilityAi.js +34 -0
  79. package/open-sse/handlers/responsesHandler.js +103 -0
  80. package/open-sse/handlers/search/callers.js +371 -0
  81. package/open-sse/handlers/search/chatSearch.js +409 -0
  82. package/open-sse/handlers/search/index.js +201 -0
  83. package/open-sse/handlers/search/normalizers.js +223 -0
  84. package/open-sse/handlers/sttCore.js +194 -0
  85. package/open-sse/handlers/ttsCore.js +74 -0
  86. package/open-sse/handlers/ttsProviders/_base.js +39 -0
  87. package/open-sse/handlers/ttsProviders/edgeTts.js +89 -0
  88. package/open-sse/handlers/ttsProviders/elevenlabs.js +48 -0
  89. package/open-sse/handlers/ttsProviders/gemini.js +117 -0
  90. package/open-sse/handlers/ttsProviders/genericFormats.js +169 -0
  91. package/open-sse/handlers/ttsProviders/googleTts.js +54 -0
  92. package/open-sse/handlers/ttsProviders/index.js +50 -0
  93. package/open-sse/handlers/ttsProviders/localDevice.js +87 -0
  94. package/open-sse/handlers/ttsProviders/minimax.js +59 -0
  95. package/open-sse/handlers/ttsProviders/openai.js +30 -0
  96. package/open-sse/handlers/ttsProviders/openrouter.js +70 -0
  97. package/open-sse/index.js +82 -0
  98. package/open-sse/rtk/applyFilter.js +15 -0
  99. package/open-sse/rtk/autodetect.js +111 -0
  100. package/open-sse/rtk/caveman.js +100 -0
  101. package/open-sse/rtk/cavemanPrompts.js +78 -0
  102. package/open-sse/rtk/constants.js +55 -0
  103. package/open-sse/rtk/filters/buildOutput.js +127 -0
  104. package/open-sse/rtk/filters/dedupLog.js +44 -0
  105. package/open-sse/rtk/filters/find.js +49 -0
  106. package/open-sse/rtk/filters/gitDiff.js +92 -0
  107. package/open-sse/rtk/filters/gitStatus.js +117 -0
  108. package/open-sse/rtk/filters/grep.js +48 -0
  109. package/open-sse/rtk/filters/ls.js +79 -0
  110. package/open-sse/rtk/filters/readNumbered.js +27 -0
  111. package/open-sse/rtk/filters/searchList.js +52 -0
  112. package/open-sse/rtk/filters/smartTruncate.js +15 -0
  113. package/open-sse/rtk/filters/tree.js +32 -0
  114. package/open-sse/rtk/index.js +155 -0
  115. package/open-sse/rtk/registry.js +38 -0
  116. package/open-sse/services/accountFallback.js +238 -0
  117. package/open-sse/services/combo.js +198 -0
  118. package/open-sse/services/compact.js +71 -0
  119. package/open-sse/services/kiroModels.js +332 -0
  120. package/open-sse/services/model.js +261 -0
  121. package/open-sse/services/oauthCredentialManager.js +151 -0
  122. package/open-sse/services/projectId.js +306 -0
  123. package/open-sse/services/provider.js +356 -0
  124. package/open-sse/services/qoderModels.js +214 -0
  125. package/open-sse/services/tokenRefresh.js +939 -0
  126. package/open-sse/services/usage.js +1496 -0
  127. package/open-sse/transformer/responsesTransformer.js +439 -0
  128. package/open-sse/transformer/streamToJsonConverter.js +103 -0
  129. package/open-sse/translator/formats.js +36 -0
  130. package/open-sse/translator/helpers/claudeHelper.js +216 -0
  131. package/open-sse/translator/helpers/geminiHelper.js +372 -0
  132. package/open-sse/translator/helpers/imageHelper.js +34 -0
  133. package/open-sse/translator/helpers/maxTokensHelper.js +27 -0
  134. package/open-sse/translator/helpers/openaiHelper.js +130 -0
  135. package/open-sse/translator/helpers/responsesApiHelper.js +139 -0
  136. package/open-sse/translator/helpers/toolCallHelper.js +148 -0
  137. package/open-sse/translator/index.js +251 -0
  138. package/open-sse/translator/request/antigravity-to-openai.js +229 -0
  139. package/open-sse/translator/request/claude-to-openai.js +232 -0
  140. package/open-sse/translator/request/gemini-to-openai.js +147 -0
  141. package/open-sse/translator/request/openai-responses.js +318 -0
  142. package/open-sse/translator/request/openai-to-claude.js +401 -0
  143. package/open-sse/translator/request/openai-to-commandcode.js +170 -0
  144. package/open-sse/translator/request/openai-to-cursor.js +183 -0
  145. package/open-sse/translator/request/openai-to-gemini.js +470 -0
  146. package/open-sse/translator/request/openai-to-kiro.js +629 -0
  147. package/open-sse/translator/request/openai-to-kiro.old.js +278 -0
  148. package/open-sse/translator/request/openai-to-ollama.js +192 -0
  149. package/open-sse/translator/request/openai-to-vertex.js +42 -0
  150. package/open-sse/translator/response/claude-to-openai.js +206 -0
  151. package/open-sse/translator/response/commandcode-to-openai.js +197 -0
  152. package/open-sse/translator/response/cursor-to-openai.js +30 -0
  153. package/open-sse/translator/response/gemini-to-openai.js +245 -0
  154. package/open-sse/translator/response/kiro-to-openai.js +195 -0
  155. package/open-sse/translator/response/ollama-to-openai.js +152 -0
  156. package/open-sse/translator/response/openai-responses.js +590 -0
  157. package/open-sse/translator/response/openai-to-antigravity.js +122 -0
  158. package/open-sse/translator/response/openai-to-claude.js +266 -0
  159. package/open-sse/utils/bypassHandler.js +298 -0
  160. package/open-sse/utils/claudeCloaking.js +155 -0
  161. package/open-sse/utils/claudeHeaderCache.js +70 -0
  162. package/open-sse/utils/clientDetector.js +63 -0
  163. package/open-sse/utils/cursorChecksum.js +149 -0
  164. package/open-sse/utils/cursorProtobuf.js +904 -0
  165. package/open-sse/utils/debugLog.js +14 -0
  166. package/open-sse/utils/error.js +147 -0
  167. package/open-sse/utils/ollamaTransform.js +85 -0
  168. package/open-sse/utils/proxyFetch.js +368 -0
  169. package/open-sse/utils/reasoningContentInjector.js +79 -0
  170. package/open-sse/utils/requestLogger.js +260 -0
  171. package/open-sse/utils/responsesStreamHelpers.js +49 -0
  172. package/open-sse/utils/sessionManager.js +82 -0
  173. package/open-sse/utils/stream.js +462 -0
  174. package/open-sse/utils/streamHandler.js +250 -0
  175. package/open-sse/utils/streamHelpers.js +122 -0
  176. package/open-sse/utils/toolDeduper.js +49 -0
  177. package/open-sse/utils/usageTracking.js +347 -0
  178. package/package.json +100 -0
  179. package/postcss.config.mjs +12 -0
  180. package/public/favicon.svg +11 -0
  181. package/public/file.svg +1 -0
  182. package/public/globe.svg +1 -0
  183. package/public/i18n/literals/ar.json +195 -0
  184. package/public/i18n/literals/bn.json +195 -0
  185. package/public/i18n/literals/cs.json +195 -0
  186. package/public/i18n/literals/da.json +195 -0
  187. package/public/i18n/literals/de.json +195 -0
  188. package/public/i18n/literals/el.json +195 -0
  189. package/public/i18n/literals/es.json +195 -0
  190. package/public/i18n/literals/fi.json +195 -0
  191. package/public/i18n/literals/fr.json +195 -0
  192. package/public/i18n/literals/he.json +195 -0
  193. package/public/i18n/literals/hi.json +195 -0
  194. package/public/i18n/literals/hu.json +195 -0
  195. package/public/i18n/literals/id.json +195 -0
  196. package/public/i18n/literals/it.json +195 -0
  197. package/public/i18n/literals/ja.json +195 -0
  198. package/public/i18n/literals/ko.json +195 -0
  199. package/public/i18n/literals/nl.json +195 -0
  200. package/public/i18n/literals/no.json +195 -0
  201. package/public/i18n/literals/pl.json +195 -0
  202. package/public/i18n/literals/pt-BR.json +195 -0
  203. package/public/i18n/literals/pt-PT.json +195 -0
  204. package/public/i18n/literals/ro.json +195 -0
  205. package/public/i18n/literals/ru.json +195 -0
  206. package/public/i18n/literals/sv.json +195 -0
  207. package/public/i18n/literals/th.json +195 -0
  208. package/public/i18n/literals/tl.json +195 -0
  209. package/public/i18n/literals/tr.json +195 -0
  210. package/public/i18n/literals/uk.json +195 -0
  211. package/public/i18n/literals/ur.json +195 -0
  212. package/public/i18n/literals/vi.json +195 -0
  213. package/public/i18n/literals/zh-CN.json +772 -0
  214. package/public/i18n/literals/zh-TW.json +195 -0
  215. package/public/icons/discord.svg +4 -0
  216. package/public/icons/icon-192.svg +4 -0
  217. package/public/icons/icon-512.svg +4 -0
  218. package/public/next.svg +1 -0
  219. package/public/providers/alicode-intl.png +0 -0
  220. package/public/providers/alicode.png +0 -0
  221. package/public/providers/amp.png +0 -0
  222. package/public/providers/anthropic-m.png +0 -0
  223. package/public/providers/anthropic.png +0 -0
  224. package/public/providers/antigravity.png +0 -0
  225. package/public/providers/assemblyai.png +0 -0
  226. package/public/providers/aws-polly.png +0 -0
  227. package/public/providers/azure.png +0 -0
  228. package/public/providers/black-forest-labs.png +0 -0
  229. package/public/providers/blackbox.png +0 -0
  230. package/public/providers/brave-search.png +0 -0
  231. package/public/providers/byteplus.png +0 -0
  232. package/public/providers/cartesia.png +0 -0
  233. package/public/providers/cerebras.png +0 -0
  234. package/public/providers/chutes.png +0 -0
  235. package/public/providers/claude.png +0 -0
  236. package/public/providers/cline.png +0 -0
  237. package/public/providers/cloudflare-ai.png +0 -0
  238. package/public/providers/codebuddy.svg +37 -0
  239. package/public/providers/codex.png +0 -0
  240. package/public/providers/cohere.png +0 -0
  241. package/public/providers/comfyui.png +0 -0
  242. package/public/providers/commandcode.png +0 -0
  243. package/public/providers/continue.png +0 -0
  244. package/public/providers/copilot.png +0 -0
  245. package/public/providers/coqui.png +0 -0
  246. package/public/providers/cursor.png +0 -0
  247. package/public/providers/deepgram.png +0 -0
  248. package/public/providers/deepseek-tui.png +0 -0
  249. package/public/providers/deepseek.png +0 -0
  250. package/public/providers/droid.png +0 -0
  251. package/public/providers/edge-tts.png +0 -0
  252. package/public/providers/elevenlabs.png +0 -0
  253. package/public/providers/exa.png +0 -0
  254. package/public/providers/fal-ai.png +0 -0
  255. package/public/providers/firecrawl.png +0 -0
  256. package/public/providers/fireworks.png +0 -0
  257. package/public/providers/gemini-cli.png +0 -0
  258. package/public/providers/gemini.png +0 -0
  259. package/public/providers/github.png +0 -0
  260. package/public/providers/glm-cn.png +0 -0
  261. package/public/providers/glm.png +0 -0
  262. package/public/providers/google-pse.png +0 -0
  263. package/public/providers/google-tts.png +0 -0
  264. package/public/providers/grok-web.png +0 -0
  265. package/public/providers/groq.png +0 -0
  266. package/public/providers/hermes.png +0 -0
  267. package/public/providers/huggingface.png +0 -0
  268. package/public/providers/hyperbolic.png +0 -0
  269. package/public/providers/iflow.png +0 -0
  270. package/public/providers/inworld.png +0 -0
  271. package/public/providers/jcode.png +0 -0
  272. package/public/providers/jina-ai.png +0 -0
  273. package/public/providers/jina-reader.png +0 -0
  274. package/public/providers/kilocode.png +0 -0
  275. package/public/providers/kimi-coding.png +0 -0
  276. package/public/providers/kimi.png +0 -0
  277. package/public/providers/kiro.png +0 -0
  278. package/public/providers/linkup.png +0 -0
  279. package/public/providers/local-device.png +0 -0
  280. package/public/providers/minimax-cn.png +0 -0
  281. package/public/providers/minimax.png +0 -0
  282. package/public/providers/mistral.png +0 -0
  283. package/public/providers/nanobanana.png +0 -0
  284. package/public/providers/nebius.png +0 -0
  285. package/public/providers/nvidia.png +0 -0
  286. package/public/providers/oai-cc.png +0 -0
  287. package/public/providers/oai-r.png +0 -0
  288. package/public/providers/ollama-local.png +0 -0
  289. package/public/providers/ollama.png +0 -0
  290. package/public/providers/openai.png +0 -0
  291. package/public/providers/openclaw.png +0 -0
  292. package/public/providers/opencode-go.png +0 -0
  293. package/public/providers/opencode.png +0 -0
  294. package/public/providers/openrouter.png +0 -0
  295. package/public/providers/perplexity-web.png +0 -0
  296. package/public/providers/perplexity.png +0 -0
  297. package/public/providers/playht.png +0 -0
  298. package/public/providers/qoder.png +0 -0
  299. package/public/providers/qwen.png +0 -0
  300. package/public/providers/recraft.png +0 -0
  301. package/public/providers/roo.png +0 -0
  302. package/public/providers/runwayml.png +0 -0
  303. package/public/providers/sdwebui.png +0 -0
  304. package/public/providers/searchapi.png +0 -0
  305. package/public/providers/searxng.png +0 -0
  306. package/public/providers/serper.png +0 -0
  307. package/public/providers/siliconflow.png +0 -0
  308. package/public/providers/stability-ai.png +0 -0
  309. package/public/providers/tavily.png +0 -0
  310. package/public/providers/together.png +0 -0
  311. package/public/providers/topaz.png +0 -0
  312. package/public/providers/tortoise.png +0 -0
  313. package/public/providers/vertex-partner.png +0 -0
  314. package/public/providers/vertex.png +0 -0
  315. package/public/providers/volcengine-ark.png +0 -0
  316. package/public/providers/voyage-ai.png +0 -0
  317. package/public/providers/xai.png +0 -0
  318. package/public/providers/xiaomi-mimo.png +0 -0
  319. package/public/providers/xiaomi-tokenplan.png +0 -0
  320. package/public/providers/youcom.png +0 -0
  321. package/public/sw.js +22 -0
  322. package/public/vercel.svg +1 -0
  323. package/public/window.svg +1 -0
  324. package/scripts/compact-request-details.mjs +71 -0
  325. package/scripts/import-codex-gptjson.mjs +342 -0
  326. package/scripts/start-standalone.mjs +25 -0
  327. package/scripts/translate-readme.js +201 -0
  328. package/src/app/(dashboard)/dashboard/automation/page.js +294 -0
  329. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +967 -0
  330. package/src/app/(dashboard)/dashboard/basic-chat/page.js +5 -0
  331. package/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.js +66 -0
  332. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.js +173 -0
  333. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +11 -0
  334. package/src/app/(dashboard)/dashboard/cli-tools/components/AntigravityToolCard.js +481 -0
  335. package/src/app/(dashboard)/dashboard/cli-tools/components/ApiKeySelect.js +66 -0
  336. package/src/app/(dashboard)/dashboard/cli-tools/components/BaseUrlSelect.js +174 -0
  337. package/src/app/(dashboard)/dashboard/cli-tools/components/ClaudeToolCard.js +390 -0
  338. package/src/app/(dashboard)/dashboard/cli-tools/components/ClineToolCard.js +301 -0
  339. package/src/app/(dashboard)/dashboard/cli-tools/components/CodexToolCard.js +458 -0
  340. package/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.js +323 -0
  341. package/src/app/(dashboard)/dashboard/cli-tools/components/CoworkToolCard.js +640 -0
  342. package/src/app/(dashboard)/dashboard/cli-tools/components/DeepSeekTuiToolCard.js +338 -0
  343. package/src/app/(dashboard)/dashboard/cli-tools/components/DefaultToolCard.js +271 -0
  344. package/src/app/(dashboard)/dashboard/cli-tools/components/DroidToolCard.js +410 -0
  345. package/src/app/(dashboard)/dashboard/cli-tools/components/EndpointPresetControl.js +128 -0
  346. package/src/app/(dashboard)/dashboard/cli-tools/components/HermesToolCard.js +317 -0
  347. package/src/app/(dashboard)/dashboard/cli-tools/components/JcodeToolCard.js +380 -0
  348. package/src/app/(dashboard)/dashboard/cli-tools/components/KiloToolCard.js +275 -0
  349. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmLinkCard.js +40 -0
  350. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmServerCard.js +329 -0
  351. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmToolCard.js +318 -0
  352. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenClawToolCard.js +388 -0
  353. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenCodeToolCard.js +500 -0
  354. package/src/app/(dashboard)/dashboard/cli-tools/components/ToolSummaryCard.js +39 -0
  355. package/src/app/(dashboard)/dashboard/cli-tools/components/cliEndpointMatch.js +13 -0
  356. package/src/app/(dashboard)/dashboard/cli-tools/components/index.js +19 -0
  357. package/src/app/(dashboard)/dashboard/cli-tools/page.js +7 -0
  358. package/src/app/(dashboard)/dashboard/combos/page.js +612 -0
  359. package/src/app/(dashboard)/dashboard/console-log/ConsoleLogClient.js +91 -0
  360. package/src/app/(dashboard)/dashboard/console-log/page.js +8 -0
  361. package/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js +1555 -0
  362. package/src/app/(dashboard)/dashboard/endpoint/page.js +7 -0
  363. package/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1903 -0
  364. package/src/app/(dashboard)/dashboard/media-providers/[kind]/page.js +289 -0
  365. package/src/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +410 -0
  366. package/src/app/(dashboard)/dashboard/media-providers/web/page.js +209 -0
  367. package/src/app/(dashboard)/dashboard/mitm/MitmPageClient.js +117 -0
  368. package/src/app/(dashboard)/dashboard/mitm/page.js +5 -0
  369. package/src/app/(dashboard)/dashboard/page.js +7 -0
  370. package/src/app/(dashboard)/dashboard/profile/page.js +1140 -0
  371. package/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js +389 -0
  372. package/src/app/(dashboard)/dashboard/providers/[id]/AddCustomModelModal.js +125 -0
  373. package/src/app/(dashboard)/dashboard/providers/[id]/CompatibleModelsSection.js +250 -0
  374. package/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js +299 -0
  375. package/src/app/(dashboard)/dashboard/providers/[id]/CooldownTimer.js +42 -0
  376. package/src/app/(dashboard)/dashboard/providers/[id]/EditCompatibleNodeModal.js +161 -0
  377. package/src/app/(dashboard)/dashboard/providers/[id]/ModelRow.js +95 -0
  378. package/src/app/(dashboard)/dashboard/providers/[id]/PassthroughModelsSection.js +183 -0
  379. package/src/app/(dashboard)/dashboard/providers/[id]/page.js +2053 -0
  380. package/src/app/(dashboard)/dashboard/providers/[id]/page.new.js +1724 -0
  381. package/src/app/(dashboard)/dashboard/providers/components/ConnectionsCard.js +497 -0
  382. package/src/app/(dashboard)/dashboard/providers/components/ModelAvailabilityBadge.js +185 -0
  383. package/src/app/(dashboard)/dashboard/providers/components/ModelsCard.js +294 -0
  384. package/src/app/(dashboard)/dashboard/providers/new/page.js +220 -0
  385. package/src/app/(dashboard)/dashboard/providers/page.js +1365 -0
  386. package/src/app/(dashboard)/dashboard/proxy-pools/page.js +1092 -0
  387. package/src/app/(dashboard)/dashboard/quota/page.js +11 -0
  388. package/src/app/(dashboard)/dashboard/skills/page.js +112 -0
  389. package/src/app/(dashboard)/dashboard/translator/page.js +303 -0
  390. package/src/app/(dashboard)/dashboard/usage/components/OverviewCards.js +35 -0
  391. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.js +185 -0
  392. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaProgressBar.js +127 -0
  393. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaTable.js +259 -0
  394. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js +1394 -0
  395. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js +244 -0
  396. package/src/app/(dashboard)/dashboard/usage/components/ProviderTopology.js +327 -0
  397. package/src/app/(dashboard)/dashboard/usage/components/RequestDetailsTab.js +433 -0
  398. package/src/app/(dashboard)/dashboard/usage/components/UsageChart.js +141 -0
  399. package/src/app/(dashboard)/dashboard/usage/components/UsageTable.js +247 -0
  400. package/src/app/(dashboard)/dashboard/usage/page.js +75 -0
  401. package/src/app/(dashboard)/layout.js +6 -0
  402. package/src/app/api/auth/login/route.js +76 -0
  403. package/src/app/api/auth/logout/route.js +12 -0
  404. package/src/app/api/auth/oidc/callback/route.js +87 -0
  405. package/src/app/api/auth/oidc/start/route.js +52 -0
  406. package/src/app/api/auth/oidc/test/route.js +84 -0
  407. package/src/app/api/auth/status/route.js +45 -0
  408. package/src/app/api/cli-tools/all-statuses/route.js +46 -0
  409. package/src/app/api/cli-tools/antigravity-mitm/alias/route.js +53 -0
  410. package/src/app/api/cli-tools/antigravity-mitm/route.js +202 -0
  411. package/src/app/api/cli-tools/claude-settings/route.js +203 -0
  412. package/src/app/api/cli-tools/cline-settings/route.js +133 -0
  413. package/src/app/api/cli-tools/codex-gateway/accounts/route.js +16 -0
  414. package/src/app/api/cli-tools/codex-settings/route.js +239 -0
  415. package/src/app/api/cli-tools/copilot-settings/route.js +148 -0
  416. package/src/app/api/cli-tools/cowork-mcp-registry/route.js +77 -0
  417. package/src/app/api/cli-tools/cowork-mcp-tools/route.js +95 -0
  418. package/src/app/api/cli-tools/cowork-settings/route.js +412 -0
  419. package/src/app/api/cli-tools/deepseek-tui-settings/route.js +164 -0
  420. package/src/app/api/cli-tools/droid-settings/route.js +213 -0
  421. package/src/app/api/cli-tools/hermes-settings/route.js +175 -0
  422. package/src/app/api/cli-tools/jcode-settings/route.js +216 -0
  423. package/src/app/api/cli-tools/kilo-settings/route.js +131 -0
  424. package/src/app/api/cli-tools/openclaw-settings/route.js +292 -0
  425. package/src/app/api/cli-tools/opencode-settings/route.js +259 -0
  426. package/src/app/api/combos/[id]/route.js +81 -0
  427. package/src/app/api/combos/route.js +48 -0
  428. package/src/app/api/health/route.js +15 -0
  429. package/src/app/api/init/route.js +4 -0
  430. package/src/app/api/keys/[id]/route.js +58 -0
  431. package/src/app/api/keys/route.js +42 -0
  432. package/src/app/api/locale/route.js +30 -0
  433. package/src/app/api/mcp/[plugin]/message/route.js +21 -0
  434. package/src/app/api/mcp/[plugin]/sse/route.js +37 -0
  435. package/src/app/api/media-providers/tts/deepgram/voices/route.js +65 -0
  436. package/src/app/api/media-providers/tts/elevenlabs/voices/route.js +71 -0
  437. package/src/app/api/media-providers/tts/inworld/voices/route.js +61 -0
  438. package/src/app/api/media-providers/tts/minimax/voices/route.js +113 -0
  439. package/src/app/api/media-providers/tts/voices/route.js +99 -0
  440. package/src/app/api/models/alias/route.js +53 -0
  441. package/src/app/api/models/availability/route.js +103 -0
  442. package/src/app/api/models/custom/route.js +48 -0
  443. package/src/app/api/models/disabled/route.js +50 -0
  444. package/src/app/api/models/route.js +64 -0
  445. package/src/app/api/models/test/ping.js +191 -0
  446. package/src/app/api/models/test/route.js +14 -0
  447. package/src/app/api/oauth/[provider]/[action]/route.js +343 -0
  448. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +19 -0
  449. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +30 -0
  450. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +23 -0
  451. package/src/app/api/oauth/codebuddy/bulk-import/latest/route.js +25 -0
  452. package/src/app/api/oauth/codebuddy/bulk-import/route.js +49 -0
  453. package/src/app/api/oauth/codebuddy/quota-cookie/route.js +133 -0
  454. package/src/app/api/oauth/codex/import-token/route.js +96 -0
  455. package/src/app/api/oauth/cursor/auto-import/route.js +258 -0
  456. package/src/app/api/oauth/cursor/import/route.js +100 -0
  457. package/src/app/api/oauth/gitlab/pat/route.js +62 -0
  458. package/src/app/api/oauth/iflow/cookie/route.js +137 -0
  459. package/src/app/api/oauth/kiro/auto-import/route.js +85 -0
  460. package/src/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +18 -0
  461. package/src/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +29 -0
  462. package/src/app/api/oauth/kiro/bulk-import/[jobId]/route.js +22 -0
  463. package/src/app/api/oauth/kiro/bulk-import/latest/route.js +25 -0
  464. package/src/app/api/oauth/kiro/bulk-import/route.js +49 -0
  465. package/src/app/api/oauth/kiro/import/route.js +110 -0
  466. package/src/app/api/oauth/kiro/social-authorize/route.js +27 -0
  467. package/src/app/api/oauth/kiro/social-exchange/route.js +41 -0
  468. package/src/app/api/pricing/route.js +134 -0
  469. package/src/app/api/provider-nodes/[id]/route.js +101 -0
  470. package/src/app/api/provider-nodes/route.js +104 -0
  471. package/src/app/api/provider-nodes/validate/route.js +201 -0
  472. package/src/app/api/providers/[id]/models/route.js +526 -0
  473. package/src/app/api/providers/[id]/route.js +189 -0
  474. package/src/app/api/providers/[id]/test/route.js +23 -0
  475. package/src/app/api/providers/[id]/test/testUtils.js +714 -0
  476. package/src/app/api/providers/[id]/test-models/route.js +66 -0
  477. package/src/app/api/providers/client/route.js +126 -0
  478. package/src/app/api/providers/kilo/free-models/route.js +55 -0
  479. package/src/app/api/providers/route.js +206 -0
  480. package/src/app/api/providers/suggested-models/filters.js +20 -0
  481. package/src/app/api/providers/suggested-models/route.js +32 -0
  482. package/src/app/api/providers/test-batch/route.js +131 -0
  483. package/src/app/api/providers/validate/route.js +637 -0
  484. package/src/app/api/proxy-pools/[id]/route.js +123 -0
  485. package/src/app/api/proxy-pools/[id]/test/route.js +70 -0
  486. package/src/app/api/proxy-pools/cloudflare-deploy/route.js +145 -0
  487. package/src/app/api/proxy-pools/deno-deploy/route.js +175 -0
  488. package/src/app/api/proxy-pools/route.js +93 -0
  489. package/src/app/api/proxy-pools/vercel-deploy/route.js +142 -0
  490. package/src/app/api/settings/database/route.js +36 -0
  491. package/src/app/api/settings/proxy-test/route.js +23 -0
  492. package/src/app/api/settings/require-login/route.js +15 -0
  493. package/src/app/api/settings/route.js +100 -0
  494. package/src/app/api/shutdown/route.js +24 -0
  495. package/src/app/api/tags/route.js +18 -0
  496. package/src/app/api/translator/console-logs/route.js +24 -0
  497. package/src/app/api/translator/console-logs/stream/route.js +79 -0
  498. package/src/app/api/translator/load/route.js +45 -0
  499. package/src/app/api/translator/save/route.js +44 -0
  500. package/src/app/api/translator/send/route.js +94 -0
  501. package/src/app/api/translator/translate/route.js +90 -0
  502. package/src/app/api/tunnel/disable/route.js +12 -0
  503. package/src/app/api/tunnel/enable/route.js +16 -0
  504. package/src/app/api/tunnel/status/route.js +13 -0
  505. package/src/app/api/tunnel/tailscale-check/route.js +50 -0
  506. package/src/app/api/tunnel/tailscale-disable/route.js +12 -0
  507. package/src/app/api/tunnel/tailscale-enable/route.js +12 -0
  508. package/src/app/api/tunnel/tailscale-install/route.js +72 -0
  509. package/src/app/api/usage/[connectionId]/route.js +188 -0
  510. package/src/app/api/usage/chart/route.js +21 -0
  511. package/src/app/api/usage/history/route.js +12 -0
  512. package/src/app/api/usage/logs/route.js +12 -0
  513. package/src/app/api/usage/providers/route.js +42 -0
  514. package/src/app/api/usage/request-details/route.js +57 -0
  515. package/src/app/api/usage/request-logs/route.js +13 -0
  516. package/src/app/api/usage/stats/route.js +23 -0
  517. package/src/app/api/usage/stream/route.js +79 -0
  518. package/src/app/api/v1/api/chat/route.js +37 -0
  519. package/src/app/api/v1/audio/speech/route.js +16 -0
  520. package/src/app/api/v1/audio/transcriptions/route.js +19 -0
  521. package/src/app/api/v1/audio/voices/route.js +68 -0
  522. package/src/app/api/v1/chat/completions/route.js +35 -0
  523. package/src/app/api/v1/embeddings/route.js +21 -0
  524. package/src/app/api/v1/images/generations/route.js +16 -0
  525. package/src/app/api/v1/messages/count_tokens/route.js +52 -0
  526. package/src/app/api/v1/messages/route.js +36 -0
  527. package/src/app/api/v1/models/[kind]/route.js +55 -0
  528. package/src/app/api/v1/models/info/route.js +110 -0
  529. package/src/app/api/v1/models/route.js +451 -0
  530. package/src/app/api/v1/responses/compact/route.js +37 -0
  531. package/src/app/api/v1/responses/route.js +30 -0
  532. package/src/app/api/v1/route.js +1 -0
  533. package/src/app/api/v1/search/route.js +21 -0
  534. package/src/app/api/v1/web/fetch/route.js +21 -0
  535. package/src/app/api/v1beta/models/[...path]/route.js +328 -0
  536. package/src/app/api/v1beta/models/route.js +44 -0
  537. package/src/app/api/version/route.js +45 -0
  538. package/src/app/api/version/shutdown/route.js +15 -0
  539. package/src/app/api/version/update/route.js +21 -0
  540. package/src/app/callback/page.js +148 -0
  541. package/src/app/dashboard/settings/pricing/page.js +173 -0
  542. package/src/app/favicon.ico +0 -0
  543. package/src/app/globals.css +496 -0
  544. package/src/app/landing/components/AnimatedBackground.js +57 -0
  545. package/src/app/landing/components/Features.js +133 -0
  546. package/src/app/landing/components/FlowAnimation.js +175 -0
  547. package/src/app/landing/components/Footer.js +61 -0
  548. package/src/app/landing/components/GetStarted.js +97 -0
  549. package/src/app/landing/components/HeroSection.js +47 -0
  550. package/src/app/landing/components/HowItWorks.js +66 -0
  551. package/src/app/landing/components/Navigation.js +72 -0
  552. package/src/app/landing/page.js +106 -0
  553. package/src/app/layout.js +49 -0
  554. package/src/app/login/page.js +197 -0
  555. package/src/app/manifest.js +30 -0
  556. package/src/app/page.js +5 -0
  557. package/src/dashboardGuard.js +242 -0
  558. package/src/i18n/RuntimeI18nProvider.js +27 -0
  559. package/src/i18n/config.js +146 -0
  560. package/src/i18n/runtime.js +162 -0
  561. package/src/lib/appUpdater.js +200 -0
  562. package/src/lib/auth/dashboardSession.js +68 -0
  563. package/src/lib/auth/loginLimiter.js +52 -0
  564. package/src/lib/auth/oidc.js +234 -0
  565. package/src/lib/consoleLogBuffer.js +79 -0
  566. package/src/lib/dataDir.js +29 -0
  567. package/src/lib/db/adapters/betterSqliteAdapter.js +55 -0
  568. package/src/lib/db/adapters/bunSqliteAdapter.js +63 -0
  569. package/src/lib/db/adapters/nodeSqliteAdapter.js +84 -0
  570. package/src/lib/db/adapters/sqljsAdapter.js +115 -0
  571. package/src/lib/db/backup.js +35 -0
  572. package/src/lib/db/driver.js +85 -0
  573. package/src/lib/db/helpers/jsonCol.js +9 -0
  574. package/src/lib/db/helpers/kvStore.js +39 -0
  575. package/src/lib/db/helpers/metaStore.js +22 -0
  576. package/src/lib/db/index.js +171 -0
  577. package/src/lib/db/migrate.js +286 -0
  578. package/src/lib/db/migrations/001-initial.js +14 -0
  579. package/src/lib/db/migrations/index.js +10 -0
  580. package/src/lib/db/paths.js +18 -0
  581. package/src/lib/db/repos/aliasRepo.js +62 -0
  582. package/src/lib/db/repos/apiKeysRepo.js +75 -0
  583. package/src/lib/db/repos/combosRepo.js +73 -0
  584. package/src/lib/db/repos/connectionsRepo.js +226 -0
  585. package/src/lib/db/repos/disabledModelsRepo.js +56 -0
  586. package/src/lib/db/repos/nodesRepo.js +95 -0
  587. package/src/lib/db/repos/pricingRepo.js +108 -0
  588. package/src/lib/db/repos/proxyPoolsRepo.js +103 -0
  589. package/src/lib/db/repos/requestDetailsRepo.js +259 -0
  590. package/src/lib/db/repos/settingsRepo.js +104 -0
  591. package/src/lib/db/repos/usageRepo.js +731 -0
  592. package/src/lib/db/schema.js +157 -0
  593. package/src/lib/db/version.js +21 -0
  594. package/src/lib/disabledModelsDb.js +4 -0
  595. package/src/lib/localDb.js +21 -0
  596. package/src/lib/mcp/stdioSseBridge.js +198 -0
  597. package/src/lib/mitmAliasCache.js +46 -0
  598. package/src/lib/network/connectionProxy.js +160 -0
  599. package/src/lib/network/initOutboundProxy.js +25 -0
  600. package/src/lib/network/outboundProxy.js +68 -0
  601. package/src/lib/network/proxyTest.js +91 -0
  602. package/src/lib/oauth/constants/oauth.js +284 -0
  603. package/src/lib/oauth/constants/xai.js +61 -0
  604. package/src/lib/oauth/providers.js +1506 -0
  605. package/src/lib/oauth/services/antigravity.js +321 -0
  606. package/src/lib/oauth/services/claude.js +136 -0
  607. package/src/lib/oauth/services/codebuddyBulkImportManager.js +454 -0
  608. package/src/lib/oauth/services/codex.js +144 -0
  609. package/src/lib/oauth/services/cursor.js +179 -0
  610. package/src/lib/oauth/services/gemini.js +240 -0
  611. package/src/lib/oauth/services/github.js +225 -0
  612. package/src/lib/oauth/services/iflow.js +202 -0
  613. package/src/lib/oauth/services/index.js +17 -0
  614. package/src/lib/oauth/services/kiro.js +334 -0
  615. package/src/lib/oauth/services/kiroBulkImportManager.js +778 -0
  616. package/src/lib/oauth/services/kiroConnections.js +93 -0
  617. package/src/lib/oauth/services/kiroGoogleAutomation.js +1136 -0
  618. package/src/lib/oauth/services/oauth.js +157 -0
  619. package/src/lib/oauth/services/openai.js +123 -0
  620. package/src/lib/oauth/services/qoder.js +216 -0
  621. package/src/lib/oauth/services/qwen.js +170 -0
  622. package/src/lib/oauth/services/xai.js +238 -0
  623. package/src/lib/oauth/utils/banner.js +63 -0
  624. package/src/lib/oauth/utils/pkce.js +39 -0
  625. package/src/lib/oauth/utils/server.js +415 -0
  626. package/src/lib/oauth/utils/ui.js +48 -0
  627. package/src/lib/providerNormalization.js +45 -0
  628. package/src/lib/qoder/constants.js +64 -0
  629. package/src/lib/qoder/cosy.js +175 -0
  630. package/src/lib/qoder/encoding.js +55 -0
  631. package/src/lib/requestDetailsDb.js +4 -0
  632. package/src/lib/tunnel/cloudflare/cloudflared.js +449 -0
  633. package/src/lib/tunnel/cloudflare/config.js +9 -0
  634. package/src/lib/tunnel/cloudflare/healthCheck.js +29 -0
  635. package/src/lib/tunnel/cloudflare/manager.js +151 -0
  636. package/src/lib/tunnel/cloudflare/pid.js +23 -0
  637. package/src/lib/tunnel/index.js +48 -0
  638. package/src/lib/tunnel/shared/dnsResolver.js +17 -0
  639. package/src/lib/tunnel/shared/internetCheck.js +26 -0
  640. package/src/lib/tunnel/shared/state.js +41 -0
  641. package/src/lib/tunnel/shared/watchdogConfig.js +8 -0
  642. package/src/lib/tunnel/tailscale/config.js +7 -0
  643. package/src/lib/tunnel/tailscale/healthCheck.js +29 -0
  644. package/src/lib/tunnel/tailscale/manager.js +129 -0
  645. package/src/lib/tunnel/tailscale/tailscale.js +790 -0
  646. package/src/lib/updater/updater.js +235 -0
  647. package/src/lib/usage/fetcher.js +208 -0
  648. package/src/lib/usageDb.js +7 -0
  649. package/src/mitm/antigravityIdeVersion.js +50 -0
  650. package/src/mitm/cert/generate.js +32 -0
  651. package/src/mitm/cert/install.js +269 -0
  652. package/src/mitm/cert/rootCA.js +173 -0
  653. package/src/mitm/config.js +87 -0
  654. package/src/mitm/dbReader.js +22 -0
  655. package/src/mitm/dns/dnsConfig.js +266 -0
  656. package/src/mitm/handlers/antigravity.js +33 -0
  657. package/src/mitm/handlers/base.js +226 -0
  658. package/src/mitm/handlers/copilot.js +35 -0
  659. package/src/mitm/handlers/cursor.js +15 -0
  660. package/src/mitm/handlers/kiro.js +526 -0
  661. package/src/mitm/logger.js +106 -0
  662. package/src/mitm/manager.js +851 -0
  663. package/src/mitm/paths.js +32 -0
  664. package/src/mitm/server.js +435 -0
  665. package/src/mitm/winElevated.js +81 -0
  666. package/src/models/index.js +38 -0
  667. package/src/proxy.js +5 -0
  668. package/src/shared/components/AddCustomEmbeddingModal.js +183 -0
  669. package/src/shared/components/Avatar.js +88 -0
  670. package/src/shared/components/Badge.js +54 -0
  671. package/src/shared/components/BulkAccountAutomationModal.js +508 -0
  672. package/src/shared/components/Button.js +56 -0
  673. package/src/shared/components/Card.js +116 -0
  674. package/src/shared/components/ChangelogModal.js +97 -0
  675. package/src/shared/components/CodeBuddyQuotaCookieModal.js +109 -0
  676. package/src/shared/components/ComboFormModal.js +176 -0
  677. package/src/shared/components/CursorAuthModal.js +212 -0
  678. package/src/shared/components/DonateModal.js +136 -0
  679. package/src/shared/components/Drawer.js +82 -0
  680. package/src/shared/components/EditConnectionModal.js +286 -0
  681. package/src/shared/components/Footer.js +132 -0
  682. package/src/shared/components/GitLabAuthModal.js +194 -0
  683. package/src/shared/components/Header.js +380 -0
  684. package/src/shared/components/HeaderLanguage.js +46 -0
  685. package/src/shared/components/HeaderMenu.js +126 -0
  686. package/src/shared/components/IFlowCookieModal.js +132 -0
  687. package/src/shared/components/Input.js +65 -0
  688. package/src/shared/components/KiroAuthModal.js +1171 -0
  689. package/src/shared/components/KiroOAuthWrapper.js +149 -0
  690. package/src/shared/components/KiroSocialOAuthModal.js +205 -0
  691. package/src/shared/components/LanguageSwitcher.js +190 -0
  692. package/src/shared/components/Loading.js +75 -0
  693. package/src/shared/components/ManualConfigModal.js +44 -0
  694. package/src/shared/components/McpMarketplaceModal.js +255 -0
  695. package/src/shared/components/Modal.js +146 -0
  696. package/src/shared/components/ModelSelectModal.js +537 -0
  697. package/src/shared/components/NineRemoteButton.js +23 -0
  698. package/src/shared/components/NineRemotePromoModal.js +99 -0
  699. package/src/shared/components/NoAuthProxyCard.js +86 -0
  700. package/src/shared/components/OAuthModal.js +682 -0
  701. package/src/shared/components/Pagination.js +150 -0
  702. package/src/shared/components/PricingModal.js +208 -0
  703. package/src/shared/components/ProviderIcon.js +63 -0
  704. package/src/shared/components/ProviderInfoCard.js +82 -0
  705. package/src/shared/components/RequestLogger.js +121 -0
  706. package/src/shared/components/SegmentedControl.js +48 -0
  707. package/src/shared/components/Select.js +67 -0
  708. package/src/shared/components/Sidebar.js +441 -0
  709. package/src/shared/components/ThemeProvider.js +15 -0
  710. package/src/shared/components/ThemeToggle.js +42 -0
  711. package/src/shared/components/Toggle.js +69 -0
  712. package/src/shared/components/Tooltip.js +25 -0
  713. package/src/shared/components/UsageStats.js +505 -0
  714. package/src/shared/components/index.js +46 -0
  715. package/src/shared/components/layouts/AuthLayout.js +29 -0
  716. package/src/shared/components/layouts/DashboardLayout.js +104 -0
  717. package/src/shared/components/layouts/index.js +4 -0
  718. package/src/shared/constants/cliTools.js +397 -0
  719. package/src/shared/constants/colors.js +77 -0
  720. package/src/shared/constants/config.js +99 -0
  721. package/src/shared/constants/coworkPlugins.js +75 -0
  722. package/src/shared/constants/index.js +4 -0
  723. package/src/shared/constants/locales.js +36 -0
  724. package/src/shared/constants/mitmToolHosts.js +12 -0
  725. package/src/shared/constants/models.js +38 -0
  726. package/src/shared/constants/pricing.js +303 -0
  727. package/src/shared/constants/providers.js +289 -0
  728. package/src/shared/constants/skills.js +78 -0
  729. package/src/shared/constants/ttsProviders.js +138 -0
  730. package/src/shared/hooks/index.js +2 -0
  731. package/src/shared/hooks/useCopyToClipboard.js +43 -0
  732. package/src/shared/hooks/useTheme.js +60 -0
  733. package/src/shared/services/bootstrap.js +12 -0
  734. package/src/shared/services/initializeApp.js +268 -0
  735. package/src/shared/utils/api.js +93 -0
  736. package/src/shared/utils/apiKey.js +98 -0
  737. package/src/shared/utils/clineAuth.js +37 -0
  738. package/src/shared/utils/cn.js +11 -0
  739. package/src/shared/utils/connectionStatus.js +162 -0
  740. package/src/shared/utils/index.js +40 -0
  741. package/src/shared/utils/machine.js +6 -0
  742. package/src/shared/utils/machineId.js +66 -0
  743. package/src/shared/utils/providerModelsFetcher.js +30 -0
  744. package/src/sse/handlers/chat.js +261 -0
  745. package/src/sse/handlers/embeddings.js +141 -0
  746. package/src/sse/handlers/fetch.js +213 -0
  747. package/src/sse/handlers/imageGeneration.js +142 -0
  748. package/src/sse/handlers/search.js +206 -0
  749. package/src/sse/handlers/stt.js +88 -0
  750. package/src/sse/handlers/tts.js +114 -0
  751. package/src/sse/services/auth.js +346 -0
  752. package/src/sse/services/codexGateway.js +215 -0
  753. package/src/sse/services/model.js +99 -0
  754. package/src/sse/services/tokenRefresh.js +319 -0
  755. package/src/sse/utils/logger.js +75 -0
  756. package/src/store/headerSearchStore.js +19 -0
  757. package/src/store/index.js +6 -0
  758. package/src/store/notificationStore.js +45 -0
  759. package/src/store/providerStore.js +55 -0
  760. package/src/store/settingsStore.js +51 -0
  761. package/src/store/themeStore.js +54 -0
  762. package/src/store/userStore.js +20 -0
  763. package/start.sh +4 -0
@@ -0,0 +1,1209 @@
1
+ <div align="center">
2
+ <img src="../images/9router.png?1" alt="9Router Dashboard" width="800"/>
3
+
4
+ # 9Router - 無料 AI ルーター
5
+
6
+ **コーディングを止めない。スマートフォールバックで無料&格安AIモデルに自動ルーティング。**
7
+
8
+ **すべてのAIコーディングツール(Claude Code、Cursor、Antigravity、Copilot、Codex、Gemini、OpenCode、Cline、OpenClaw...)を40以上のAIプロバイダーと100以上のモデルに接続。**
9
+
10
+ [![npm](https://img.shields.io/npm/v/9router.svg)](https://www.npmjs.com/package/9router)
11
+ [![Downloads](https://img.shields.io/npm/dm/9router.svg)](https://www.npmjs.com/package/9router)
12
+ [![License](https://img.shields.io/npm/l/9router.svg)](https://github.com/decolua/9router/blob/main/LICENSE)
13
+
14
+ [🚀 クイックスタート](#-クイックスタート) • [💡 機能](#-主な機能) • [📖 セットアップ](#-セットアップガイド) • [🌐 ウェブサイト](https://9router.com)
15
+
16
+ [🇻🇳 Tiếng Việt](./README.vi.md) • [🇨🇳 中文](./README.zh-CN.md) • [🇯🇵 日本語](./README.ja-JP.md)
17
+ </div>
18
+
19
+ ---
20
+
21
+ ## 🤔 なぜ9Router?
22
+
23
+ **お金の無駄遣いと制限に悩まされるのはもう終わりです:**
24
+
25
+ - ❌ サブスクリプションのクオータが毎月未使用のまま期限切れ
26
+ - ❌ レート制限でコーディング中に停止
27
+ - ❌ 高額なAPI(プロバイダーごとに月額$20〜50)
28
+ - ❌ プロバイダー間の手動切り替え
29
+
30
+ **9Routerが解決します:**
31
+
32
+ - ✅ **サブスクリプションを最大化** - クオータを追跡し、リセット前にすべて使い切る
33
+ - ✅ **自動フォールバック** - サブスクリプション → 格安 → 無料、ダウンタイムゼロ
34
+ - ✅ **マルチアカウント** - プロバイダーごとにアカウント間でラウンドロビン
35
+ - ✅ **ユニバーサル** - Claude Code、Codex、Gemini CLI、Cursor、Cline、あらゆるCLIツールに対応
36
+
37
+ ---
38
+
39
+ ## 🔄 仕組み
40
+
41
+ ```
42
+ ┌─────────────┐
43
+ │ あなたの │ (Claude Code、Codex、Gemini CLI、OpenClaw、Cursor、Cline...)
44
+ │ CLIツール │
45
+ └──────┬──────┘
46
+ │ http://localhost:20128/v1
47
+
48
+ ┌─────────────────────────────────────────┐
49
+ │ 9Router(スマートルーター) │
50
+ │ • フォーマット変換(OpenAI ↔ Claude) │
51
+ │ • クオータ追跡 │
52
+ │ • 自動トークンリフレッシュ │
53
+ └──────┬──────────────────────────────────┘
54
+
55
+ ├─→ [Tier 1: サブスクリプション] Claude Code、Codex、Gemini CLI
56
+ │ ↓ クオータ消費済み
57
+ ├─→ [Tier 2: 格安] GLM ($0.6/1M)、MiniMax ($0.2/1M)
58
+ │ ↓ 予算上限
59
+ └─→ [Tier 3: 無料] iFlow、Qwen、Kiro(無制限)
60
+
61
+ 結果: コーディングが止まらない、最小コスト
62
+ ```
63
+
64
+ ---
65
+
66
+ ## ⚡ クイックスタート
67
+
68
+ **1. グローバルインストール:**
69
+
70
+ ```bash
71
+ npm install -g 9router
72
+ 9router
73
+ ```
74
+
75
+ 🎉 ダッシュボードが `http://localhost:20128` で開きます
76
+
77
+ **2. 無料プロバイダーを接続(サインアップ不要):**
78
+
79
+ ダッシュボード → Providers → **Claude Code** または **Antigravity** を接続 → OAuthログイン → 完了!
80
+
81
+ **3. CLIツールで使用:**
82
+
83
+ ```
84
+ Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Clineの設定:
85
+ エンドポイント: http://localhost:20128/v1
86
+ APIキー: [ダッシュボードからコピー]
87
+ モデル: if/kimi-k2-thinking
88
+ ```
89
+
90
+ **これだけです!** 無料AIモデルでコーディングを始めましょう。
91
+
92
+ **代替方法: ソースから実行(このリポジトリ):**
93
+
94
+ このリポジトリパッケージはプライベート(`9router-app`)のため、ソース/Docker実行がローカル開発の想定パスです。
95
+
96
+ ```bash
97
+ cp .env.example .env
98
+ npm install
99
+ PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
100
+ ```
101
+
102
+ 本番モード:
103
+
104
+ ```bash
105
+ npm run build
106
+ PORT=20128 HOSTNAME=0.0.0.0 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run start
107
+ ```
108
+
109
+ デフォルトURL:
110
+ - ダッシュボード: `http://localhost:20128/dashboard`
111
+ - OpenAI互換API: `http://localhost:20128/v1`
112
+
113
+ ---
114
+
115
+ ## 🎥 動画チュートリアル
116
+
117
+ <div align="center">
118
+
119
+ ### 📺 完全セットアップガイド - 9Router + Claude Code 無料
120
+
121
+ [![9Router + Claude Code Setup](https://img.youtube.com/vi/raEyZPg5xE0/maxresdefault.jpg)](https://www.youtube.com/watch?v=raEyZPg5xE0)
122
+
123
+ **🎬 ステップバイステップのチュートリアルを視聴:**
124
+ - ✅ 9Routerのインストールとセットアップ
125
+ - ✅ 無料Claude Sonnet 4.5の設定
126
+ - ✅ Claude Codeとの統合
127
+ - ✅ ライブコーディングデモ
128
+
129
+ **⏱️ 所要時間:** 20分 | **👥 作成:** Developer Community
130
+
131
+ [▶️ YouTubeで視聴](https://www.youtube.com/watch?v=o3qYCyjrFYg)
132
+
133
+ </div>
134
+
135
+ ---
136
+
137
+ ## 🛠️ 対応CLIツール
138
+
139
+ 9Routerはすべての主要AIコーディングツールとシームレスに連携します:
140
+
141
+ <div align="center">
142
+ <table>
143
+ <tr>
144
+ <td align="center" width="120">
145
+ <img src="../public/providers/claude.png" width="60" alt="Claude Code"/><br/>
146
+ <b>Claude-Code</b>
147
+ </td>
148
+ <td align="center" width="120">
149
+ <img src="../public/providers/openclaw.png" width="60" alt="OpenClaw"/><br/>
150
+ <b>OpenClaw</b>
151
+ </td>
152
+ <td align="center" width="120">
153
+ <img src="../public/providers/codex.png" width="60" alt="Codex"/><br/>
154
+ <b>Codex</b>
155
+ </td>
156
+ <td align="center" width="120">
157
+ <img src="../public/providers/opencode.png" width="60" alt="OpenCode"/><br/>
158
+ <b>OpenCode</b>
159
+ </td>
160
+ <td align="center" width="120">
161
+ <img src="../public/providers/cursor.png" width="60" alt="Cursor"/><br/>
162
+ <b>Cursor</b>
163
+ </td>
164
+ <td align="center" width="120">
165
+ <img src="../public/providers/antigravity.png" width="60" alt="Antigravity"/><br/>
166
+ <b>Antigravity</b>
167
+ </td>
168
+ </tr>
169
+ <tr>
170
+ <td align="center" width="120">
171
+ <img src="../public/providers/cline.png" width="60" alt="Cline"/><br/>
172
+ <b>Cline</b>
173
+ </td>
174
+ <td align="center" width="120">
175
+ <img src="../public/providers/continue.png" width="60" alt="Continue"/><br/>
176
+ <b>Continue</b>
177
+ </td>
178
+ <td align="center" width="120">
179
+ <img src="../public/providers/droid.png" width="60" alt="Droid"/><br/>
180
+ <b>Droid</b>
181
+ </td>
182
+ <td align="center" width="120">
183
+ <img src="../public/providers/roo.png" width="60" alt="Roo"/><br/>
184
+ <b>Roo</b>
185
+ </td>
186
+ <td align="center" width="120">
187
+ <img src="../public/providers/copilot.png" width="60" alt="Copilot"/><br/>
188
+ <b>Copilot</b>
189
+ </td>
190
+ <td align="center" width="120">
191
+ <img src="../public/providers/kilocode.png" width="60" alt="Kilo Code"/><br/>
192
+ <b>Kilo Code</b>
193
+ </td>
194
+ </tr>
195
+ </table>
196
+ </div>
197
+
198
+ ---
199
+
200
+ ## 🌐 対応プロバイダー
201
+
202
+ ### 🔐 OAuthプロバイダー
203
+
204
+ <div align="center">
205
+ <table>
206
+ <tr>
207
+ <td align="center" width="120">
208
+ <img src="../public/providers/claude.png" width="60" alt="Claude Code"/><br/>
209
+ <b>Claude-Code</b>
210
+ </td>
211
+ <td align="center" width="120">
212
+ <img src="../public/providers/antigravity.png" width="60" alt="Antigravity"/><br/>
213
+ <b>Antigravity</b>
214
+ </td>
215
+ <td align="center" width="120">
216
+ <img src="../public/providers/codex.png" width="60" alt="Codex"/><br/>
217
+ <b>Codex</b>
218
+ </td>
219
+ <td align="center" width="120">
220
+ <img src="../public/providers/github.png" width="60" alt="GitHub"/><br/>
221
+ <b>GitHub</b>
222
+ </td>
223
+ <td align="center" width="120">
224
+ <img src="../public/providers/cursor.png" width="60" alt="Cursor"/><br/>
225
+ <b>Cursor</b>
226
+ </td>
227
+ </tr>
228
+ </table>
229
+ </div>
230
+
231
+ ### 🆓 無料プロバイダー
232
+
233
+ <div align="center">
234
+ <table>
235
+ <tr>
236
+ <td align="center" width="150">
237
+ <img src="../public/providers/iflow.png" width="70" alt="iFlow"/><br/>
238
+ <b>iFlow AI</b><br/>
239
+ <sub>8以上のモデル • 無制限</sub>
240
+ </td>
241
+ <td align="center" width="150">
242
+ <img src="../public/providers/qwen.png" width="70" alt="Qwen"/><br/>
243
+ <b>Qwen Code</b><br/>
244
+ <sub>3以上のモデル • 無制限</sub>
245
+ </td>
246
+ <td align="center" width="150">
247
+ <img src="../public/providers/gemini-cli.png" width="70" alt="Gemini CLI"/><br/>
248
+ <b>Gemini CLI</b><br/>
249
+ <sub>月18万回無料</sub>
250
+ </td>
251
+ <td align="center" width="150">
252
+ <img src="../public/providers/kiro.png" width="70" alt="Kiro"/><br/>
253
+ <b>Kiro AI</b><br/>
254
+ <sub>Claude • 無制限</sub>
255
+ </td>
256
+ </tr>
257
+ </table>
258
+ </div>
259
+
260
+ ### 🔑 APIキープロバイダー(40以上)
261
+
262
+ <div align="center">
263
+ <table>
264
+ <tr>
265
+ <td align="center" width="100">
266
+ <img src="../public/providers/openrouter.png" width="50" alt="OpenRouter"/><br/>
267
+ <sub>OpenRouter</sub>
268
+ </td>
269
+ <td align="center" width="100">
270
+ <img src="../public/providers/glm.png" width="50" alt="GLM"/><br/>
271
+ <sub>GLM</sub>
272
+ </td>
273
+ <td align="center" width="100">
274
+ <img src="../public/providers/kimi.png" width="50" alt="Kimi"/><br/>
275
+ <sub>Kimi</sub>
276
+ </td>
277
+ <td align="center" width="100">
278
+ <img src="../public/providers/minimax.png" width="50" alt="MiniMax"/><br/>
279
+ <sub>MiniMax</sub>
280
+ </td>
281
+ <td align="center" width="100">
282
+ <img src="../public/providers/openai.png" width="50" alt="OpenAI"/><br/>
283
+ <sub>OpenAI</sub>
284
+ </td>
285
+ <td align="center" width="100">
286
+ <img src="../public/providers/anthropic.png" width="50" alt="Anthropic"/><br/>
287
+ <sub>Anthropic</sub>
288
+ </td>
289
+ </tr>
290
+ <tr>
291
+ <td align="center" width="100">
292
+ <img src="../public/providers/gemini.png" width="50" alt="Gemini"/><br/>
293
+ <sub>Gemini</sub>
294
+ </td>
295
+ <td align="center" width="100">
296
+ <img src="../public/providers/deepseek.png" width="50" alt="DeepSeek"/><br/>
297
+ <sub>DeepSeek</sub>
298
+ </td>
299
+ <td align="center" width="100">
300
+ <img src="../public/providers/groq.png" width="50" alt="Groq"/><br/>
301
+ <sub>Groq</sub>
302
+ </td>
303
+ <td align="center" width="100">
304
+ <img src="../public/providers/xai.png" width="50" alt="xAI"/><br/>
305
+ <sub>xAI</sub>
306
+ </td>
307
+ <td align="center" width="100">
308
+ <img src="../public/providers/mistral.png" width="50" alt="Mistral"/><br/>
309
+ <sub>Mistral</sub>
310
+ </td>
311
+ <td align="center" width="100">
312
+ <img src="../public/providers/perplexity.png" width="50" alt="Perplexity"/><br/>
313
+ <sub>Perplexity</sub>
314
+ </td>
315
+ </tr>
316
+ <tr>
317
+ <td align="center" width="100">
318
+ <img src="../public/providers/together.png" width="50" alt="Together"/><br/>
319
+ <sub>Together AI</sub>
320
+ </td>
321
+ <td align="center" width="100">
322
+ <img src="../public/providers/fireworks.png" width="50" alt="Fireworks"/><br/>
323
+ <sub>Fireworks</sub>
324
+ </td>
325
+ <td align="center" width="100">
326
+ <img src="../public/providers/cerebras.png" width="50" alt="Cerebras"/><br/>
327
+ <sub>Cerebras</sub>
328
+ </td>
329
+ <td align="center" width="100">
330
+ <img src="../public/providers/cohere.png" width="50" alt="Cohere"/><br/>
331
+ <sub>Cohere</sub>
332
+ </td>
333
+ <td align="center" width="100">
334
+ <img src="../public/providers/nvidia.png" width="50" alt="NVIDIA"/><br/>
335
+ <sub>NVIDIA</sub>
336
+ </td>
337
+ <td align="center" width="100">
338
+ <img src="../public/providers/siliconflow.png" width="50" alt="SiliconFlow"/><br/>
339
+ <sub>SiliconFlow</sub>
340
+ </td>
341
+ </tr>
342
+ </table>
343
+ <p><i>...その他Nebius、Chutes、Hyperbolic、カスタムOpenAI/Anthropic互換エンドポイントなど20以上のプロバイダー</i></p>
344
+ </div>
345
+
346
+ ---
347
+
348
+ ## 💡 主な機能
349
+
350
+ | 機能 | 概要 | メリット |
351
+ |------|------|----------|
352
+ | 🎯 **スマート3段階フォールバック** | 自動ルーティング: サブスクリプション → 格安 → 無料 | コーディングが止まらない、ダウンタイムゼロ |
353
+ | 📊 **リアルタイムクオータ追跡** | ライブトークン数 + リセットカウントダウン | サブスクリプション価値の最大化 |
354
+ | 🔄 **フォーマット変換** | OpenAI ↔ Claude ↔ Gemini シームレス対応 | あらゆるCLIツールで動作 |
355
+ | 👥 **マルチアカウント対応** | プロバイダーごとに複数アカウント | 負荷分散 + 冗長性 |
356
+ | 🔄 **自動トークンリフレッシュ** | OAuthトークンの自動更新 | 手動再ログイン不要 |
357
+ | 🎨 **カスタムコンボ** | 無制限のモデル組み合わせ作成 | ニーズに合わせたフォールバック |
358
+ | 📝 **リクエストログ** | リクエスト/レスポンスの完全ログ | 問題の簡単なトラブルシューティング |
359
+ | 💾 **クラウド同期** | デバイス間で設定を同期 | どこでも同じセットアップ |
360
+ | 📊 **使用状況分析** | トークン、コスト、トレンドの追跡 | 支出の最適化 |
361
+ | 🌐 **どこでもデプロイ** | Localhost、VPS、Docker、Cloudflare Workers | 柔軟なデプロイオプション |
362
+
363
+ <details>
364
+ <summary><b>📖 機能詳細</b></summary>
365
+
366
+ ### 🎯 スマート3段階フォールバック
367
+
368
+ 自動フォールバック付きコンボを作成:
369
+
370
+ ```
371
+ コンボ: "my-coding-stack"
372
+ 1. cc/claude-opus-4-6 (サブスクリプション)
373
+ 2. glm/glm-4.7 (格安バックアップ、$0.6/1M)
374
+ 3. if/kimi-k2-thinking (無料フォールバック)
375
+
376
+ → クオータ切れやエラー発生時に自動切り替え
377
+ ```
378
+
379
+ ### 📊 リアルタイムクオータ追跡
380
+
381
+ - プロバイダーごとのトークン消費量
382
+ - リセットカウントダウン(5時間、日次、週次)
383
+ - 有料ティアのコスト見積もり
384
+ - 月間支出レポート
385
+
386
+ ### 🔄 フォーマット変換
387
+
388
+ フォーマット間のシームレスな変換:
389
+ - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
390
+ - CLIツールがOpenAIフォーマットで送信 → 9Routerが変換 → プロバイダーがネイティブフォーマットで受信
391
+ - カスタムOpenAIエンドポイントをサポートするすべてのツールで動作
392
+
393
+ ### 👥 マルチアカウント対応
394
+
395
+ - プロバイダーごとに複数アカウント追加
396
+ - 自動ラウンドロビンまたは優先度ベースのルーティング
397
+ - 1つのアカウントがクオータに達したら次のアカウントにフォールバック
398
+
399
+ ### 🔄 自動トークンリフレッシュ
400
+
401
+ - OAuthトークンが期限切れ前に自動リフレッシュ
402
+ - 手動の再認証不要
403
+ - すべてのプロバイダーでシームレスな体験
404
+
405
+ ### 🎨 カスタムコンボ
406
+
407
+ - 無制限のモデル組み合わせ作成
408
+ - サブスクリプション、格安、無料ティアを混合
409
+ - コンボに名前を付けて簡単にアクセス
410
+ - クラウド同期でデバイス間でコンボを共有
411
+
412
+ ### 📝 リクエストログ
413
+
414
+ - デバッグモードでリクエスト/レスポンスの完全ログ
415
+ - API呼び出し、ヘッダー、ペイロードの追跡
416
+ - 統合の問題をトラブルシューティング
417
+ - 分析用にログをエクスポート
418
+
419
+ ### 💾 クラウド同期
420
+
421
+ - デバイス間でプロバイダー、コンボ、設定を同期
422
+ - 自動バックグラウンド同期
423
+ - 安全な暗号化ストレージ
424
+ - どこからでもセットアップにアクセス
425
+
426
+ #### クラウドランタイムに関する注意
427
+
428
+ - 本番環境ではサーバーサイドのクラウド変数を推奨:
429
+ - `BASE_URL`(同期スケジューラで使用される内部コールバックURL)
430
+ - `CLOUD_URL`(クラウド同期エンドポイントのベースURL)
431
+ - `NEXT_PUBLIC_BASE_URL` と `NEXT_PUBLIC_CLOUD_URL` は互換性/UI用にまだサポートされていますが、サーバーランタイムは `BASE_URL`/`CLOUD_URL` を優先します。
432
+ - クラウド同期リクエストはタイムアウト + フェイルファスト動作を使用し、クラウドDNS/ネットワークが利用できない場合のUIハングを回避します。
433
+
434
+ ### 📊 使用状況分析
435
+
436
+ - プロバイダーおよびモデルごとのトークン使用量追跡
437
+ - コスト見積もりと支出トレンド
438
+ - 月次レポートとインサイト
439
+ - AI支出の最適化
440
+
441
+ > **💡 重要 - ダッシュボードのコストについて:**
442
+ >
443
+ > 使用状況分析に表示される「コスト」は**追跡と比較目的のみ**です。
444
+ > 9Router自体は**一切課金しません**。有料サービスを使用する場合のみ、プロバイダーに直接支払います。
445
+ >
446
+ > **例:** ダッシュボードにiFlowモデルの使用で「合計コスト$290」と表示されている場合、
447
+ > これは有料APIを直接使用した場合に支払うであろう金額を表しています。実際のコスト = **$0**(iFlowは無料無制限)。
448
+ >
449
+ > これは無料モデルや9Router経由のルーティングでどれだけ節約しているかを示す「節約トラッカー」と考えてください!
450
+
451
+ ### 🌐 どこでもデプロイ
452
+
453
+ - 💻 **ローカルホスト** - デフォルト、オフラインで動作
454
+ - ☁️ **VPS/クラウド** - デバイス間で共有
455
+ - 🐳 **Docker** - ワンコマンドデプロイ
456
+ - 🚀 **Cloudflare Workers** - グローバルエッジネットワーク
457
+
458
+ </details>
459
+
460
+ ---
461
+
462
+ ## 💰 料金の概要
463
+
464
+ | ティア | プロバイダー | コスト | クオータリセット | 最適な用途 |
465
+ |--------|-------------|--------|-----------------|------------|
466
+ | **💳 サブスクリプション** | Claude Code (Pro) | $20/月 | 5時間 + 週次 | 既存のサブスク利用者 |
467
+ | | Codex (Plus/Pro) | $20-200/月 | 5時間 + 週次 | OpenAIユーザー |
468
+ | | Gemini CLI | **無料** | 月18万回 + 日1千回 | 全員! |
469
+ | | GitHub Copilot | $10-19/月 | 月次 | GitHubユーザー |
470
+ | **💰 格安** | GLM-4.7 | $0.6/1M | 毎日午前10時 | 予算バックアップ |
471
+ | | MiniMax M2.1 | $0.2/1M | 5時間ローリング | 最安オプション |
472
+ | | Kimi K2 | $9/月固定 | 月1000万トークン | 予測可能なコスト |
473
+ | **🆓 無料** | iFlow | $0 | 無制限 | 8モデル無料 |
474
+ | | Qwen | $0 | 無制限 | 3モデル無料 |
475
+ | | Kiro | $0 | 無制限 | Claude無料 |
476
+
477
+ **💡 プロのヒント:** Gemini CLI(月18万回無料)+ iFlow(無制限無料)のコンボで $0 のコスト!
478
+
479
+ ---
480
+
481
+ ### 📊 9Routerのコストと課金について
482
+
483
+ **9Routerの課金の実態:**
484
+
485
+ ✅ **9Routerソフトウェア = 永久無料**(オープンソース、課金なし)
486
+ ✅ **ダッシュボードの「コスト」= 表示/追跡のみ**(実際の請求ではない)
487
+ ✅ **プロバイダーに直接支払い**(サブスクリプションまたはAPI料金)
488
+ ✅ **無料プロバイダーは無料のまま**(iFlow、Kiro、Qwen = $0 無制限)
489
+ ❌ **9Routerは請求書を送ったり**カードに課金したりしません
490
+
491
+ **コスト表示の仕組み:**
492
+
493
+ ダッシュボードは有料APIを直接使用した場合の**推定コスト**を表示します。これは**課金ではなく**、節約額を示す比較ツールです。
494
+
495
+ **シナリオ例:**
496
+ ```
497
+ ダッシュボード表示:
498
+ • 合計リクエスト: 1,662
499
+ • 合計トークン: 4700万
500
+ • 表示コスト: $290
501
+
502
+ 実際の確認:
503
+ • プロバイダー: iFlow(無料無制限)
504
+ • 実際の支払い: $0.00
505
+ • $290の意味: 無料モデルの使用で節約した金額!
506
+ ```
507
+
508
+ **支払いルール:**
509
+ - **サブスクリプションプロバイダー**(Claude Code、Codex):各ウェブサイトで直接支払い
510
+ - **格安プロバイダー**(GLM、MiniMax):直接支払い、9Routerはルーティングのみ
511
+ - **無料プロバイダー**(iFlow、Kiro、Qwen):本当に永久無料、隠れた料金なし
512
+ - **9Router**:一切課金しない
513
+
514
+ ---
515
+
516
+ ## 🎯 ユースケース
517
+
518
+ ### ケース1: 「Claude Proサブスクリプションを持っている」
519
+
520
+ **問題:** クオータが未使用のまま期限切れ、重いコーディング中にレート制限
521
+
522
+ **解決策:**
523
+ ```
524
+ コンボ: "maximize-claude"
525
+ 1. cc/claude-opus-4-6 (サブスクリプションを最大限活用)
526
+ 2. glm/glm-4.7 (クオータ切れ時の格安バックアップ)
527
+ 3. if/kimi-k2-thinking (無料の緊急フォールバック)
528
+
529
+ 月額コスト: $20 (サブスクリプション) + ~$5 (バックアップ) = 合計$25
530
+ vs. $20 + 制限に引っかかる = フラストレーション
531
+ ```
532
+
533
+ ### ケース2: 「コストゼロにしたい」
534
+
535
+ **問題:** サブスクリプションを払えない、信頼性のあるAIコーディングが必要
536
+
537
+ **解決策:**
538
+ ```
539
+ コンボ: "free-forever"
540
+ 1. gc/gemini-3-flash (月18万回無料)
541
+ 2. if/kimi-k2-thinking (無制限無料)
542
+ 3. qw/qwen3-coder-plus (無制限無料)
543
+
544
+ 月額コスト: $0
545
+ 品質: 本番対応モデル
546
+ ```
547
+
548
+ ### ケース3: 「24時間365日コーディング、中断なし」
549
+
550
+ **問題:** 締め切り、ダウンタイムは許されない
551
+
552
+ **解決策:**
553
+ ```
554
+ コンボ: "always-on"
555
+ 1. cc/claude-opus-4-6 (最高品質)
556
+ 2. cx/gpt-5.2-codex (セカンドサブスクリプション)
557
+ 3. glm/glm-4.7 (格安、毎日リセット)
558
+ 4. minimax/MiniMax-M2.1 (最安、5時間リセット)
559
+ 5. if/kimi-k2-thinking (無料無制限)
560
+
561
+ 結果: 5層のフォールバック = ダウンタイムゼロ
562
+ 月額コスト: $20-200 (サブスクリプション) + $10-20 (バックアップ)
563
+ ```
564
+
565
+ ### ケース4: 「OpenClawで無料AIを使いたい」
566
+
567
+ **問題:** メッセージングアプリ(WhatsApp、Telegram、Slack...)でAIアシスタントが必要、完全無料で
568
+
569
+ **解決策:**
570
+ ```
571
+ コンボ: "openclaw-free"
572
+ 1. if/glm-4.7 (無制限無料)
573
+ 2. if/minimax-m2.1 (無制限無料)
574
+ 3. if/kimi-k2-thinking (無制限無料)
575
+
576
+ 月額コスト: $0
577
+ アクセス方法: WhatsApp、Telegram、Slack、Discord、iMessage、Signal...
578
+ ```
579
+
580
+ ---
581
+
582
+ ## ❓ よくある質問
583
+
584
+ <details>
585
+ <summary><b>📊 ダッシュボードに高額なコストが表示されるのはなぜ?</b></summary>
586
+
587
+ ダッシュボードはトークン使用量を追跡し、有料APIを直接使用した場合の**推定コスト**を表示します。これは**実際の課金ではなく**、9Routerを通じて無料モデルや既存のサブスクリプションを使用することでどれだけ節約しているかを示すための参考値です。
588
+
589
+ **例:**
590
+ - **ダッシュボード表示:** 「合計コスト$290」
591
+ - **実際:** iFlow(無料無制限)を使用中
592
+ - **実際のコスト:** **$0.00**
593
+ - **$290の意味:** 有料APIの代わりに無料モデルを使用して**節約した**金額!
594
+
595
+ コスト表示は使用パターンと最適化の機会を理解するための「節約トラッカー」です。
596
+
597
+ </details>
598
+
599
+ <details>
600
+ <summary><b>💳 9Routerに課金されますか?</b></summary>
601
+
602
+ **いいえ。** 9Routerはあなたのコンピューター上で動作する無料のオープンソースソフトウェアです。一切課金しません。
603
+
604
+ **支払い先:**
605
+ - ✅ **サブスクリプションプロバイダー**(Claude Code $20/月、Codex $20-200/月)→ 各ウェブサイトで直接支払い
606
+ - ✅ **格安プロバイダー**(GLM、MiniMax)→ 直接支払い、9Routerはリクエストをルーティングするだけ
607
+ - ❌ **9Router自体** → **一切課金しない**
608
+
609
+ 9Routerはローカルプロキシ/ルーターです。クレジットカード情報を持たず、請求書を送信できず、課金システムもありません。完全に無料のソフトウェアです。
610
+
611
+ </details>
612
+
613
+ <details>
614
+ <summary><b>🆓 無料プロバイダーは本当に無制限ですか?</b></summary>
615
+
616
+ **はい!** 無料と表示されているプロバイダー(iFlow、Kiro、Qwen)は本当に無制限で**隠れた料金はありません**。
617
+
618
+ これらは各企業が提供する無料サービスです:
619
+ - **iFlow**: OAuth経由で8以上のモデルに無料無制限アクセス
620
+ - **Kiro**: AWS Builder ID経由で無料無制限Claudeモデル
621
+ - **Qwen**: デバイス認証経由でQwenモデルに無料無制限アクセス
622
+
623
+ 9Routerはリクエストをルーティングするだけで、「罠」や将来の課金はありません。本当に無料のサービスであり、9Routerはフォールバックサポートでそれらを使いやすくしています。
624
+
625
+ **注意:** 一部のサブスクリプションプロバイダー(Antigravity、GitHub Copilot)には無料プレビュー期間があり、後に有料になる可能性がありますが、それは9Routerではなく各プロバイダーから明確に告知されます。
626
+
627
+ </details>
628
+
629
+ <details>
630
+ <summary><b>💰 実際のAIコストを最小化するには?</b></summary>
631
+
632
+ **無料優先戦略:**
633
+
634
+ 1. **100%無料コンボから始める:**
635
+ ```
636
+ 1. gc/gemini-3-flash (Googleから月18万回無料)
637
+ 2. if/kimi-k2-thinking (iFlowから無制限無料)
638
+ 3. qw/qwen3-coder-plus (Qwenから無制限無料)
639
+ ```
640
+ **コスト: $0/月**
641
+
642
+ 2. **必要な場合のみ格安バックアップを追加:**
643
+ ```
644
+ 4. glm/glm-4.7 ($0.6/100万トークン)
645
+ ```
646
+ **追加コスト: 実際に使用した分だけ支払い**
647
+
648
+ 3. **サブスクリプションプロバイダーは最後に使用:**
649
+ - 既にお持ちの場合のみ
650
+ - 9Routerがクオータ追跡で価値を最大化
651
+
652
+ **結果:** ほとんどのユーザーは無料ティアのみで月額$0で運用可能!
653
+
654
+ </details>
655
+
656
+ <details>
657
+ <summary><b>📈 使用量が突然急増したら?</b></summary>
658
+
659
+ 9Routerのスマートフォールバックが予期しない課金を防止します:
660
+
661
+ **シナリオ:** コーディングスプリント中にクオータを使い切った
662
+
663
+ **9Routerなし:**
664
+ - ❌ レート制限に到達 → 作業停止 → フラストレーション
665
+ - ❌ または: 意図せず高額なAPI請求が発生
666
+
667
+ **9Routerあり:**
668
+ - ✅ サブスクリプションが上限に達する → 格安ティアに自動フォールバック
669
+ - ✅ 格安ティアが高くなる → 無料ティアに自動フォールバック
670
+ - ✅ コーディングが止まらない → 予測可能なコスト
671
+
672
+ **あなたがコントロール:** ダッシュボードでプロバイダーごとの支出上限を設定し、9Routerはそれを遵守します。
673
+
674
+ </details>
675
+
676
+ ---
677
+
678
+ ## 📖 セットアップガイド
679
+
680
+ <details>
681
+ <summary><b>🔐 サブスクリプションプロバイダー(価値の最大化)</b></summary>
682
+
683
+ ### Claude Code (Pro/Max)
684
+
685
+ ```bash
686
+ ダッシュボード → Providers → Claude Codeを接続
687
+ → OAuthログイン → 自動トークンリフレッシュ
688
+ → 5時間 + 週次クオータ追跡
689
+
690
+ モデル:
691
+ cc/claude-opus-4-6
692
+ cc/claude-sonnet-4-5-20250929
693
+ cc/claude-haiku-4-5-20251001
694
+ ```
695
+
696
+ **プロのヒント:** 複雑なタスクにはOpus、スピード重視ならSonnet。9Routerはモデルごとにクオータを追跡します!
697
+
698
+ ### OpenAI Codex (Plus/Pro)
699
+
700
+ ```bash
701
+ ダッシュボード → Providers → Codexを接続
702
+ → OAuthログイン(ポート1455)
703
+ → 5時間 + 週次リセット
704
+
705
+ モデル:
706
+ cx/gpt-5.2-codex
707
+ cx/gpt-5.1-codex-max
708
+ ```
709
+
710
+ ### Gemini CLI(月18万回無料!)
711
+
712
+ ```bash
713
+ ダッシュボード → Providers → Gemini CLIを接続
714
+ → Google OAuth
715
+ → 月18万回 + 日1千回
716
+
717
+ モデル:
718
+ gc/gemini-3-flash-preview
719
+ gc/gemini-2.5-pro
720
+ ```
721
+
722
+ **最高のコスパ:** 巨大な無料ティア!有料ティアの前にこちらを使用。
723
+
724
+ ### GitHub Copilot
725
+
726
+ ```bash
727
+ ダッシュボード → Providers → GitHubを接続
728
+ → GitHub経由のOAuth
729
+ → 月次リセット(毎月1日)
730
+
731
+ モデル:
732
+ gh/gpt-5
733
+ gh/claude-4.5-sonnet
734
+ gh/gemini-3-pro
735
+ ```
736
+
737
+ </details>
738
+
739
+ <details>
740
+ <summary><b>💰 格安プロバイダー(バックアップ)</b></summary>
741
+
742
+ ### GLM-4.7(日次リセット、$0.6/1M)
743
+
744
+ 1. サインアップ: [Zhipu AI](https://open.bigmodel.cn/)
745
+ 2. Coding PlanからAPIキーを取得
746
+ 3. ダッシュボード → APIキーを追加:
747
+ - プロバイダー: `glm`
748
+ - APIキー: `your-key`
749
+
750
+ **使用:** `glm/glm-4.7`
751
+
752
+ **プロのヒント:** Coding Planは1/7のコストで3倍のクオータを提供!毎日午前10:00にリセット。
753
+
754
+ ### MiniMax M2.1(5時間リセット、$0.20/1M)
755
+
756
+ 1. サインアップ: [MiniMax](https://www.minimax.io/)
757
+ 2. APIキーを取得
758
+ 3. ダッシュボード → APIキーを追加
759
+
760
+ **使用:** `minimax/MiniMax-M2.1`
761
+
762
+ **プロのヒント:** ロングコンテキスト(100万トークン)で最安オプション!
763
+
764
+ ### Kimi K2(月額$9固定)
765
+
766
+ 1. サブスクライブ: [Moonshot AI](https://platform.moonshot.ai/)
767
+ 2. APIキーを取得
768
+ 3. ダッシュボード → APIキーを追加
769
+
770
+ **使用:** `kimi/kimi-latest`
771
+
772
+ **プロのヒント:** 月額$9固定で1000万トークン = 実効コスト$0.90/1M!
773
+
774
+ </details>
775
+
776
+ <details>
777
+ <summary><b>🆓 無料プロバイダー(緊急バックアップ)</b></summary>
778
+
779
+ ### iFlow(8つの無料モデル)
780
+
781
+ ```bash
782
+ ダッシュボード → iFlowを接続
783
+ → iFlow OAuthログイン
784
+ → 無制限使用
785
+
786
+ モデル:
787
+ if/kimi-k2-thinking
788
+ if/qwen3-coder-plus
789
+ if/glm-4.7
790
+ if/minimax-m2
791
+ if/deepseek-r1
792
+ ```
793
+
794
+ ### Qwen(3つの無料モデル)
795
+
796
+ ```bash
797
+ ダッシュボード → Qwenを接続
798
+ → デバイスコード認証
799
+ → 無制限使用
800
+
801
+ モデル:
802
+ qw/qwen3-coder-plus
803
+ qw/qwen3-coder-flash
804
+ ```
805
+
806
+ ### Kiro(Claude無料)
807
+
808
+ ```bash
809
+ ダッシュボード → Kiroを接続
810
+ → AWS Builder IDまたはGoogle/GitHub
811
+ → 無制限使用
812
+
813
+ モデル:
814
+ kr/claude-sonnet-4.5
815
+ kr/claude-haiku-4.5
816
+ ```
817
+
818
+ </details>
819
+
820
+ <details>
821
+ <summary><b>🎨 コンボの作成</b></summary>
822
+
823
+ ### 例1: サブスクリプション最大化 → 格安バックアップ
824
+
825
+ ```
826
+ ダッシュボード → Combos → 新規作成
827
+
828
+ 名前: premium-coding
829
+ モデル:
830
+ 1. cc/claude-opus-4-6 (サブスクリプション、プライマリ)
831
+ 2. glm/glm-4.7 (格安バックアップ、$0.6/1M)
832
+ 3. minimax/MiniMax-M2.1 (最安フォールバック、$0.20/1M)
833
+
834
+ CLIでの使用: premium-coding
835
+
836
+ 月額コスト例(1億トークン):
837
+ 8000万 Claude経由(サブスクリプション): 追加$0
838
+ 1500万 GLM経由: $9
839
+ 500万 MiniMax経由: $1
840
+ 合計: $10 + サブスクリプション
841
+ ```
842
+
843
+ ### 例2: 無料のみ(コストゼロ)
844
+
845
+ ```
846
+ 名前: free-combo
847
+ モデル:
848
+ 1. gc/gemini-3-flash-preview (月18万回無料)
849
+ 2. if/kimi-k2-thinking (無制限)
850
+ 3. qw/qwen3-coder-plus (無制限)
851
+
852
+ コスト: 永久$0!
853
+ ```
854
+
855
+ </details>
856
+
857
+ <details>
858
+ <summary><b>🔧 CLI統合</b></summary>
859
+
860
+ ### Cursor IDE
861
+
862
+ ```
863
+ 設定 → Models → Advanced:
864
+ OpenAI API Base URL: http://localhost:20128/v1
865
+ OpenAI API Key: [9routerダッシュボードから]
866
+ Model: cc/claude-opus-4-6
867
+ ```
868
+
869
+ またはコンボを使用: `premium-coding`
870
+
871
+ ### Claude Code
872
+
873
+ `~/.claude/config.json` を編集:
874
+
875
+ ```json
876
+ {
877
+ "anthropic_api_base": "http://localhost:20128/v1",
878
+ "anthropic_api_key": "your-9router-api-key"
879
+ }
880
+ ```
881
+
882
+ ### Codex CLI
883
+
884
+ ```bash
885
+ export OPENAI_BASE_URL="http://localhost:20128"
886
+ export OPENAI_API_KEY="your-9router-api-key"
887
+
888
+ codex "your prompt"
889
+ ```
890
+
891
+ ### OpenClaw
892
+
893
+ **オプション1 — ダッシュボード(推奨):**
894
+
895
+ ```
896
+ ダッシュボード → CLI Tools → OpenClaw → モデルを選択 → 適用
897
+ ```
898
+
899
+ **オプション2 — 手動:** `~/.openclaw/openclaw.json` を編集:
900
+
901
+ ```json
902
+ {
903
+ "agents": {
904
+ "defaults": {
905
+ "model": {
906
+ "primary": "9router/if/glm-4.7"
907
+ }
908
+ }
909
+ },
910
+ "models": {
911
+ "providers": {
912
+ "9router": {
913
+ "baseUrl": "http://127.0.0.1:20128/v1",
914
+ "apiKey": "sk_9router",
915
+ "api": "openai-completions",
916
+ "models": [
917
+ {
918
+ "id": "if/glm-4.7",
919
+ "name": "glm-4.7"
920
+ }
921
+ ]
922
+ }
923
+ }
924
+ }
925
+ }
926
+ ```
927
+
928
+ > **注意:** OpenClawはローカルの9Routerのみで動作します。IPv6解決の問題を避けるため、`localhost` ではなく `127.0.0.1` を使用してください。
929
+
930
+ ### Cline / Continue / RooCode
931
+
932
+ ```
933
+ プロバイダー: OpenAI Compatible
934
+ Base URL: http://localhost:20128/v1
935
+ API Key: [ダッシュボードから]
936
+ Model: cc/claude-opus-4-6
937
+ ```
938
+
939
+ </details>
940
+
941
+ <details>
942
+ <summary><b>🚀 デプロイ</b></summary>
943
+
944
+ ### VPSデプロイ
945
+
946
+ ```bash
947
+ # クローンとインストール
948
+ git clone https://github.com/decolua/9router.git
949
+ cd 9router
950
+ npm install
951
+ npm run build
952
+
953
+ # 設定
954
+ export JWT_SECRET="your-secure-secret-change-this"
955
+ export INITIAL_PASSWORD="your-password"
956
+ export DATA_DIR="/var/lib/9router"
957
+ export PORT="20128"
958
+ export HOSTNAME="0.0.0.0"
959
+ export NODE_ENV="production"
960
+ export NEXT_PUBLIC_BASE_URL="http://localhost:20128"
961
+ export NEXT_PUBLIC_CLOUD_URL="https://9router.com"
962
+ export API_KEY_SECRET="endpoint-proxy-api-key-secret"
963
+ export MACHINE_ID_SALT="endpoint-proxy-salt"
964
+
965
+ # 起動
966
+ npm run start
967
+
968
+ # またはPM2を使用
969
+ npm install -g pm2
970
+ pm2 start npm --name 9router -- start
971
+ pm2 save
972
+ pm2 startup
973
+ ```
974
+
975
+ ### Docker
976
+
977
+ ```bash
978
+ # イメージをビルド(リポジトリルートから)
979
+ docker build -t 9router .
980
+
981
+ # コンテナを実行(現在のセットアップで使用しているコマンド)
982
+ docker run -d \
983
+ --name 9router \
984
+ -p 20128:20128 \
985
+ --env-file /root/dev/9router/.env \
986
+ -v 9router-data:/app/data \
987
+ -v 9router-usage:/root/.9router \
988
+ 9router
989
+ ```
990
+
991
+ ポータブルコマンド(リポジトリルートにいる場合):
992
+
993
+ ```bash
994
+ docker run -d \
995
+ --name 9router \
996
+ -p 20128:20128 \
997
+ --env-file ./.env \
998
+ -v 9router-data:/app/data \
999
+ -v 9router-usage:/root/.9router \
1000
+ 9router
1001
+ ```
1002
+
1003
+ コンテナのデフォルト:
1004
+ - `PORT=20128`
1005
+ - `HOSTNAME=0.0.0.0`
1006
+
1007
+ 便利なコマンド:
1008
+
1009
+ ```bash
1010
+ docker logs -f 9router
1011
+ docker restart 9router
1012
+ docker stop 9router && docker rm 9router
1013
+ ```
1014
+
1015
+ ### 環境変数
1016
+
1017
+ | 変数 | デフォルト | 説明 |
1018
+ |------|-----------|------|
1019
+ | `JWT_SECRET` | 自動生成(`~/.9router/jwt-secret`) | ダッシュボード認証クッキーのJWT署名シークレット(複数インスタンス間で共有する場合に設定) |
1020
+ | `INITIAL_PASSWORD` | `123456` | 保存されたハッシュがない場合の初回ログインパスワード |
1021
+ | `DATA_DIR` | `~/.9router` | メインアプリのデータベース格納場所(`db.json`) |
1022
+ | `PORT` | フレームワークデフォルト | サービスポート(例では`20128`) |
1023
+ | `HOSTNAME` | フレームワークデフォルト | バインドホスト(Dockerデフォルトは`0.0.0.0`) |
1024
+ | `NODE_ENV` | ランタイムデフォルト | デプロイ時は`production`に設定 |
1025
+ | `BASE_URL` | `http://localhost:20128` | クラウド同期ジョブで使用されるサーバーサイド内部ベースURL |
1026
+ | `CLOUD_URL` | `https://9router.com` | サーバーサイドのクラウド同期エンドポイントベースURL |
1027
+ | `NEXT_PUBLIC_BASE_URL` | `http://localhost:3000` | 後方互換/公開ベースURL(サーバーランタイムには`BASE_URL`を推奨) |
1028
+ | `NEXT_PUBLIC_CLOUD_URL` | `https://9router.com` | 後方互換/公開クラウドURL(サーバーランタイムには`CLOUD_URL`を推奨) |
1029
+ | `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | 生成されたAPIキーのHMACシークレット |
1030
+ | `MACHINE_ID_SALT` | `endpoint-proxy-salt` | 安定したマシンIDハッシュのソルト |
1031
+ | `ENABLE_REQUEST_LOGS` | `false` | `logs/` 配下のリクエスト/レスポンスログを有効化 |
1032
+ | `AUTH_COOKIE_SECURE` | `false` | 認証クッキーに`Secure`を強制(HTTPSリバースプロキシの背後では`true`に設定) |
1033
+ | `REQUIRE_API_KEY` | `false` | `/v1/*` ルートでBearer APIキーを必須にする(インターネット公開デプロイで推奨) |
1034
+ | `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY`, `NO_PROXY` | 空 | アップストリームプロバイダー呼び出し用のオプショナルアウトバウンドプロキシ |
1035
+
1036
+ 注意事項:
1037
+ - 小文字のプロキシ変数もサポート: `http_proxy`, `https_proxy`, `all_proxy`, `no_proxy`
1038
+ - `.env` はDockerイメージにベイクされません(`.dockerignore`); `--env-file` または `-e` でランタイム設定を注入してください。
1039
+ - Windowsでは、`APPDATA` をローカルストレージパスの解決に使用できます。
1040
+ - `INSTANCE_NAME` は古いドキュメント/envテンプレートに記載がありますが、現在ランタイムでは使用されていません。
1041
+
1042
+ ### ランタイムファイルとストレージ
1043
+
1044
+ - メインアプリ状態: `${DATA_DIR}/db.json`(プロバイダー、コンボ、エイリアス、キー、設定)、`src/lib/localDb.js` で管理。
1045
+ - 使用履歴とログ: `~/.9router/usage.json` と `~/.9router/log.txt`、`src/lib/usageDb.js` で管理。
1046
+ - オプションのリクエスト/トランスレーターログ: `ENABLE_REQUEST_LOGS=true` 時に `<repo>/logs/...`。
1047
+ - 使用状況ストレージは現在 `~/.9router` パスロジックに従い、`DATA_DIR` とは独立しています。
1048
+
1049
+ </details>
1050
+
1051
+ ---
1052
+
1053
+ ## 📊 利用可能なモデル
1054
+
1055
+ <details>
1056
+ <summary><b>すべての利用可能なモデルを表示</b></summary>
1057
+
1058
+ **Claude Code (`cc/`)** - Pro/Max:
1059
+ - `cc/claude-opus-4-6`
1060
+ - `cc/claude-sonnet-4-5-20250929`
1061
+ - `cc/claude-haiku-4-5-20251001`
1062
+
1063
+ **Codex (`cx/`)** - Plus/Pro:
1064
+ - `cx/gpt-5.2-codex`
1065
+ - `cx/gpt-5.1-codex-max`
1066
+
1067
+ **Gemini CLI (`gc/`)** - 無料:
1068
+ - `gc/gemini-3-flash-preview`
1069
+ - `gc/gemini-2.5-pro`
1070
+
1071
+ **GitHub Copilot (`gh/`)**:
1072
+ - `gh/gpt-5`
1073
+ - `gh/claude-4.5-sonnet`
1074
+
1075
+ **GLM (`glm/`)** - $0.6/1M:
1076
+ - `glm/glm-4.7`
1077
+
1078
+ **MiniMax (`minimax/`)** - $0.2/1M:
1079
+ - `minimax/MiniMax-M2.1`
1080
+
1081
+ **iFlow (`if/`)** - 無料:
1082
+ - `if/kimi-k2-thinking`
1083
+ - `if/qwen3-coder-plus`
1084
+ - `if/deepseek-r1`
1085
+
1086
+ **Qwen (`qw/`)** - 無料:
1087
+ - `qw/qwen3-coder-plus`
1088
+ - `qw/qwen3-coder-flash`
1089
+
1090
+ **Kiro (`kr/`)** - 無料:
1091
+ - `kr/claude-sonnet-4.5`
1092
+ - `kr/claude-haiku-4.5`
1093
+
1094
+ </details>
1095
+
1096
+ ---
1097
+
1098
+ ## 🐛 トラブルシューティング
1099
+
1100
+ **「Language model did not provide messages」**
1101
+ - プロバイダーのクオータが使い果たされた → ダッシュボードのクオータトラッカーを確認
1102
+ - 解決策: コンボフォールバックを使用するか、より安いティアに切り替え
1103
+
1104
+ **レート制限**
1105
+ - サブスクリプションクオータ切れ → GLM/MiniMaxにフォールバック
1106
+ - コンボを追加: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1107
+
1108
+ **OAuthトークンの期限切れ**
1109
+ - 9Routerが自動リフレッシュ
1110
+ - 問題が続く場合: ダッシュボード → Provider → 再接続
1111
+
1112
+ **高コスト**
1113
+ - ダッシュボードで使用状況を確認
1114
+ - プライマリモデルをGLM/MiniMaxに切り替え
1115
+ - 重要でないタスクには無料ティア(Gemini CLI、iFlow)を使用
1116
+
1117
+ **ダッシュボードが違うポートで開く**
1118
+ - `PORT=20128` と `NEXT_PUBLIC_BASE_URL=http://localhost:20128` を設定
1119
+
1120
+ **初回ログインできない**
1121
+ - `.env` の `INITIAL_PASSWORD` を確認
1122
+ - 未設定の場合、デフォルトパスワードは `123456`
1123
+
1124
+ **`logs/` にリクエストログがない**
1125
+ - `ENABLE_REQUEST_LOGS=true` に設定
1126
+
1127
+ ---
1128
+
1129
+ ## 🛠️ 技術スタック
1130
+
1131
+ - **ランタイム**: Node.js 20+
1132
+ - **フレームワーク**: Next.js 16
1133
+ - **UI**: React 19 + Tailwind CSS 4
1134
+ - **データベース**: LowDB(JSONファイルベース)
1135
+ - **ストリーミング**: Server-Sent Events (SSE)
1136
+ - **認証**: OAuth 2.0 (PKCE) + JWT + APIキー
1137
+
1138
+ ---
1139
+
1140
+ ## 📝 APIリファレンス
1141
+
1142
+ ### チャット補完
1143
+
1144
+ ```bash
1145
+ POST http://localhost:20128/v1/chat/completions
1146
+ Authorization: Bearer your-api-key
1147
+ Content-Type: application/json
1148
+
1149
+ {
1150
+ "model": "cc/claude-opus-4-6",
1151
+ "messages": [
1152
+ {"role": "user", "content": "Write a function to..."}
1153
+ ],
1154
+ "stream": true
1155
+ }
1156
+ ```
1157
+
1158
+ ### モデル一覧
1159
+
1160
+ ```bash
1161
+ GET http://localhost:20128/v1/models
1162
+ Authorization: Bearer your-api-key
1163
+
1164
+ → すべてのモデル + コンボをOpenAI形式で返却
1165
+ ```
1166
+
1167
+ ## 📧 サポート
1168
+
1169
+ - **ウェブサイト**: [9router.com](https://9router.com)
1170
+ - **GitHub**: [github.com/decolua/9router](https://github.com/decolua/9router)
1171
+ - **Issues**: [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)
1172
+
1173
+ ---
1174
+
1175
+ ## 👥 コントリビューター
1176
+
1177
+ 9Routerの改善に貢献してくださったすべてのコントリビューターに感謝します!
1178
+
1179
+ [![Contributors](https://contrib.rocks/image?repo=decolua/9router&max=150&columns=15&anon=1&v=20260309)](https://github.com/decolua/9router/graphs/contributors)
1180
+
1181
+ ---
1182
+
1183
+ ## 📊 スターチャート
1184
+
1185
+ [![Star Chart](https://starchart.cc/decolua/9router.svg?variant=adaptive)](https://starchart.cc/decolua/9router)
1186
+
1187
+
1188
+
1189
+ ## 🔀 フォーク
1190
+
1191
+ **[OmniRoute](https://github.com/diegosouzapw/OmniRoute)** — 9RouterのフルフィーチャーTypeScriptフォーク。36以上のプロバイダー、4段階自動フォールバック、マルチモーダルAPI(画像、埋め込み、音声、TTS)、サーキットブレーカー、セマンティックキャッシュ、LLM評価、洗練されたダッシュボードを追加。368以上のユニットテスト。npmとDockerで利用可能。
1192
+
1193
+ ---
1194
+
1195
+ ## 🙏 謝辞
1196
+
1197
+ **CLIProxyAPI** に特別な感謝を — このJavaScriptポートのインスピレーションとなったオリジナルのGo実装です。
1198
+
1199
+ ---
1200
+
1201
+ ## 📄 ライセンス
1202
+
1203
+ MITライセンス - 詳細は [LICENSE](../LICENSE) を参照してください。
1204
+
1205
+ ---
1206
+
1207
+ <div align="center">
1208
+ <sub>24時間365日コーディングする開発者のために ❤️ で構築</sub>
1209
+ </div>