omniroute 1.4.10 โ†’ 1.5.0

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 (374) hide show
  1. package/README.ar.md +1153 -0
  2. package/README.bg.md +1238 -0
  3. package/README.da.md +1238 -0
  4. package/README.de.md +1 -1
  5. package/README.es.md +1 -1
  6. package/README.fi.md +1238 -0
  7. package/README.fr.md +1 -1
  8. package/README.he.md +1238 -0
  9. package/README.hu.md +1238 -0
  10. package/README.id.md +1238 -0
  11. package/README.in.md +952 -0
  12. package/README.it.md +1 -1
  13. package/README.ja.md +1152 -0
  14. package/README.ko.md +1238 -0
  15. package/README.md +25 -20
  16. package/README.ms.md +1238 -0
  17. package/README.nl.md +1238 -0
  18. package/README.no.md +1238 -0
  19. package/README.phi.md +1238 -0
  20. package/README.pl.md +1238 -0
  21. package/README.pt-BR.md +16 -12
  22. package/README.pt.md +1238 -0
  23. package/README.ro.md +1238 -0
  24. package/README.ru.md +1 -1
  25. package/README.sk.md +1239 -0
  26. package/README.sv.md +1238 -0
  27. package/README.th.md +1229 -0
  28. package/README.uk-UA.md +1240 -0
  29. package/README.vi.md +1238 -0
  30. package/README.zh-CN.md +1 -1
  31. package/app/.next/BUILD_ID +1 -1
  32. package/app/.next/app-path-routes-manifest.json +39 -39
  33. package/app/.next/build-manifest.json +2 -2
  34. package/app/.next/prerender-manifest.json +3 -3
  35. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  36. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
  42. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +6 -6
  45. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  51. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  54. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  57. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  60. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  66. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  69. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  75. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  76. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  78. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  79. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  81. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  82. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  84. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  85. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  87. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  88. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +4 -4
  90. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  91. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  93. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  94. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/_global-error.html +2 -2
  97. package/app/.next/server/app/_global-error.rsc +1 -1
  98. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  99. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  100. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  101. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  102. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  103. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  104. package/app/.next/server/app/_not-found/page.js +1 -1
  105. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  106. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/auth/login/route.js +1 -1
  108. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  114. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  116. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
  118. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  120. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
  122. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  124. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
  126. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  128. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  131. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  133. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  134. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  135. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
  137. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/combos/route.js +1 -1
  145. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/keys/route.js +1 -1
  158. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/models/route.js +1 -1
  164. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  166. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/providers/route.js +1 -1
  188. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/api/settings/route.js +1 -1
  203. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  207. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  208. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  209. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  212. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  213. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  214. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  215. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  216. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  218. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  219. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  220. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  221. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  222. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  223. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  224. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  226. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  227. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  228. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  229. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  230. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  231. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  232. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  233. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  234. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  235. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  236. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  237. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  238. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  239. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  240. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  241. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  242. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  243. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  244. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  245. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  246. package/app/.next/server/app/callback/page.js +2 -2
  247. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  248. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  249. package/app/.next/server/app/docs/page.js +2 -2
  250. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  251. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  252. package/app/.next/server/app/forbidden/page.js +2 -2
  253. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  254. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  255. package/app/.next/server/app/forgot-password/page.js +2 -2
  256. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  257. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  258. package/app/.next/server/app/landing/page.js +2 -2
  259. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  260. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  261. package/app/.next/server/app/login/page.js +2 -2
  262. package/app/.next/server/app/login/page.js.nft.json +1 -1
  263. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  264. package/app/.next/server/app/page.js +1 -1
  265. package/app/.next/server/app/page.js.nft.json +1 -1
  266. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  267. package/app/.next/server/app/privacy/page.js +2 -2
  268. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  269. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  270. package/app/.next/server/app/terms/page.js +2 -2
  271. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  272. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  273. package/app/.next/server/app-paths-manifest.json +39 -39
  274. package/app/.next/server/chunks/1248.js +1 -0
  275. package/app/.next/server/chunks/{3994.js โ†’ 1465.js} +2 -2
  276. package/app/.next/server/chunks/1526.js +1 -0
  277. package/app/.next/server/chunks/1584.js +1 -0
  278. package/app/.next/server/chunks/1623.js +1 -0
  279. package/app/.next/server/chunks/1880.js +1 -0
  280. package/app/.next/server/chunks/1960.js +1 -1
  281. package/app/.next/server/chunks/1990.js +1 -1
  282. package/app/.next/server/chunks/2214.js +1 -0
  283. package/app/.next/server/chunks/2372.js +1 -0
  284. package/app/.next/server/chunks/2594.js +1 -0
  285. package/app/.next/server/chunks/3371.js +1 -0
  286. package/app/.next/server/chunks/3498.js +5 -3
  287. package/app/.next/server/chunks/3911.js +1 -0
  288. package/app/.next/server/chunks/438.js +1 -0
  289. package/app/.next/server/chunks/496.js +1 -0
  290. package/app/.next/server/chunks/5047.js +1 -0
  291. package/app/.next/server/chunks/5094.js +1 -0
  292. package/app/.next/server/chunks/5097.js +1 -0
  293. package/app/.next/server/chunks/5393.js +2 -0
  294. package/app/.next/server/chunks/5521.js +1 -0
  295. package/app/.next/server/chunks/5945.js +1 -0
  296. package/app/.next/server/chunks/6118.js +1 -0
  297. package/app/.next/server/chunks/6930.js +1 -0
  298. package/app/.next/server/chunks/7011.js +1 -0
  299. package/app/.next/server/chunks/708.js +1 -0
  300. package/app/.next/server/chunks/7650.js +1 -0
  301. package/app/.next/server/chunks/8220.js +1 -0
  302. package/app/.next/server/chunks/8464.js +1 -0
  303. package/app/.next/server/chunks/8706.js +1 -0
  304. package/app/.next/server/chunks/8976.js +1 -0
  305. package/app/.next/server/chunks/9119.js +1 -0
  306. package/app/.next/server/chunks/944.js +1 -0
  307. package/app/.next/server/chunks/9824.js +2 -2
  308. package/app/.next/server/chunks/9837.js +1 -0
  309. package/app/.next/server/pages/500.html +2 -2
  310. package/app/.next/server/server-reference-manifest.js +1 -1
  311. package/app/.next/server/server-reference-manifest.json +1 -1
  312. package/app/.next/static/chunks/{6458-085536744d592424.js โ†’ 1149-fefe7f95f0e9842f.js} +1 -1
  313. package/app/.next/static/chunks/{5846-bac355f56b136439.js โ†’ 5846-c6bffec2bf9757fa.js} +1 -1
  314. package/app/.next/static/chunks/{782-5e138760b7f7bf48.js โ†’ 8055-5844ff783b2e8a99.js} +3 -3
  315. package/app/.next/static/chunks/{993-961f6e199b93539a.js โ†’ 993-cf9fe6c017bc7e67.js} +3 -3
  316. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-52f76c7c91444ec2.js +1 -0
  317. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-1dd4d0c348a7b0a6.js +1 -0
  318. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-e5bf8955e7b9a4f5.js +1 -0
  319. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-ce332ffdb491a4d8.js +15 -0
  320. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-ede2315b6918315e.js โ†’ page-6abed29d64c46388.js} +1 -1
  321. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/page-3ed2a7685adf9b91.js +1 -0
  322. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-1420c3ca376f1585.js +1 -0
  323. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-9a6519bf1468f16e.js +1 -0
  324. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-f4a2d6d07df5ddc4.js +1 -0
  325. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/{page-6ee69634597daee0.js โ†’ page-833d24f322a20f5a.js} +1 -1
  326. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-ec914ae79f085e6f.js +1 -0
  327. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-388840686801f3f5.js +1 -0
  328. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-9c8ffb212f855704.js +1 -0
  329. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-31cdb6e15134d8c2.js +1 -0
  330. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-1f022385b812b987.js +1 -0
  331. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-1393d4935fc087cf.js +1 -0
  332. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/{page-77158451270c1852.js โ†’ page-f10a8d4bb8236913.js} +1 -1
  333. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-83b07523f81d6282.js +4 -0
  334. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-9cc99ab874fc36e7.js +1 -0
  335. package/app/.next/static/chunks/app/(dashboard)/{layout-b23c2c5427e04dcf.js โ†’ layout-00d5d56af65098a9.js} +1 -1
  336. package/app/.next/static/chunks/app/callback/page-585a53f7dc6a30f1.js +1 -0
  337. package/app/.next/static/chunks/app/docs/page-2fe9dcbeb3f738c0.js +1 -0
  338. package/app/.next/static/chunks/app/forbidden/{page-4a39fedc08aaaf55.js โ†’ page-df886dfa2d5bd9fa.js} +1 -1
  339. package/app/.next/static/chunks/app/forgot-password/page-2a495f0b0c653ab4.js +1 -0
  340. package/app/.next/static/chunks/app/landing/page-9d540ab1716f8e3e.js +1 -0
  341. package/app/.next/static/chunks/app/login/page-121c612ee459e7c2.js +1 -0
  342. package/app/.next/static/chunks/app/privacy/page-2fe9dcbeb3f738c0.js +1 -0
  343. package/app/.next/static/chunks/app/terms/page-2fe9dcbeb3f738c0.js +1 -0
  344. package/app/.next/static/css/6f101b114a4a7286.css +1 -0
  345. package/app/package.json +1 -1
  346. package/package.json +1 -1
  347. package/app/.next/server/chunks/1259.js +0 -2
  348. package/app/.next/server/chunks/4509.js +0 -1
  349. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-3fcbbdb2221f0b0c.js +0 -1
  350. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-d806e4f28c15636a.js +0 -1
  351. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-27bc511cf3930e1e.js +0 -1
  352. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-ad885fdf9806e9a6.js +0 -15
  353. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/page-f256689b8410bd74.js +0 -1
  354. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-6e4f3ca7ac9778be.js +0 -1
  355. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-8725f1a181e558a3.js +0 -1
  356. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-a5a48afa8c125ada.js +0 -1
  357. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-931fa0c45dca76c9.js +0 -1
  358. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-04bc41f9e9de17ef.js +0 -1
  359. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-6b6d62c5872aee46.js +0 -1
  360. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-2dc2a865e90681dd.js +0 -1
  361. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-ac85ce5066cd9044.js +0 -1
  362. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-88cac9e6f2fbe335.js +0 -1
  363. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-75c8b38a55e13042.js +0 -4
  364. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-f0809c7842e4f5b4.js +0 -1
  365. package/app/.next/static/chunks/app/callback/page-e439cd5a287000d8.js +0 -1
  366. package/app/.next/static/chunks/app/docs/page-8f74097544a61b9d.js +0 -1
  367. package/app/.next/static/chunks/app/forgot-password/page-057ea91c6f140e0b.js +0 -1
  368. package/app/.next/static/chunks/app/landing/page-09741814aaca7548.js +0 -1
  369. package/app/.next/static/chunks/app/login/page-c1d7bfab91a7877c.js +0 -1
  370. package/app/.next/static/chunks/app/privacy/page-8f74097544a61b9d.js +0 -1
  371. package/app/.next/static/chunks/app/terms/page-8f74097544a61b9d.js +0 -1
  372. package/app/.next/static/css/e90887a86e63903f.css +0 -1
  373. /package/app/.next/static/{8UAle4UTGR7gIVofXmh_1 โ†’ XOdkUGO-Pm15MwsN4s6B3}/_buildManifest.js +0 -0
  374. /package/app/.next/static/{8UAle4UTGR7gIVofXmh_1 โ†’ XOdkUGO-Pm15MwsN4s6B3}/_ssgManifest.js +0 -0
package/README.he.md ADDED
@@ -0,0 +1,1238 @@
1
+ <div align="center">
2
+ <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
3
+
4
+ # ๐Ÿš€ OmniRoute โ€” ืฉืขืจ ื”ื‘ื™ื ื” ื”ืžืœืื›ื•ืชื™ืช ื”ื—ื™ื ืžื™ืช
5
+
6
+ ๐ŸŒ **[English](#-omniroute--the-free-ai-gateway)** | **[Portuguรชs (BR)](#-omniroute--gateway-de-ia-gratuito)**
7
+
8
+ ### ืœืขื•ืœื ืืœ ืชืคืกื™ืง ืœืงื•ื“. ื ื™ืชื•ื‘ ื—ื›ื ืœื“ื’ืžื™ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช **ื‘ื—ื™ื ื ื•ื‘ืขืœื•ืช ื ืžื•ื›ื”** ืขื ื—ื–ืจื” ืื•ื˜ื•ืžื˜ื™ืช.
9
+
10
+ _ืฉืจืช ื”-API ื”ืื•ื ื™ื‘ืจืกืœื™ ืฉืœืš - ื ืงื•ื“ืช ืงืฆื” ืื—ืช, 36+ ืกืคืงื™ื, ืืคืก ื–ืžืŸ ื”ืฉื‘ืชื”._
11
+
12
+ **ื”ืฉืœืžื•ืช ืฆ'ืื˜ โ€ข ื”ื˜ืžืขื•ืช โ€ข ื™ืฆื™ืจืช ืชืžื•ื ื•ืช โ€ข ืื•ื“ื™ื• โ€ข ื“ื™ืจื•ื’ ืžื—ื“ืฉ โ€ข 100% TypeScript**
13
+
14
+ ---
15
+
16
+ ### ๐Ÿค– ืกืคืง AI ื‘ื—ื™ื ื ืขื‘ื•ืจ ืกื•ื›ื ื™ ื”ืงื™ื“ื•ื“ ื”ืžื•ืขื“ืคื™ื ืขืœื™ืš
17
+
18
+ _ื—ื‘ืจ ื›ืœ ื›ืœื™ IDE ืื• CLI ื”ืžื•ืคืขืœ ืขืœ ื™ื“ื™ AI ื“ืจืš OmniRoute - ืฉืขืจ API ื‘ื—ื™ื ื ืœืงื™ื“ื•ื“ ื‘ืœืชื™ ืžื•ื’ื‘ืœ._
19
+
20
+ <table>
21
+ <tr>
22
+ <td align="center" width="110">
23
+ <a href="https://github.com/cline/cline">
24
+ <img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
25
+ <b>OpenClaw</b>
26
+ </a><br/>
27
+ <sub>โญ 205K</sub>
28
+ </td>
29
+ <td align="center" width="110">
30
+ <a href="https://github.com/HKUDS/nanobot">
31
+ <img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
32
+ <b>NanoBot</b>
33
+ </a><br/>
34
+ <sub>โญ 20.9K</sub>
35
+ </td>
36
+ <td align="center" width="110">
37
+ <a href="https://github.com/sipeed/picoclaw">
38
+ <img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
39
+ <b>PicoClaw</b>
40
+ </a><br/>
41
+ <sub>โญ 14.6K</sub>
42
+ </td>
43
+ <td align="center" width="110">
44
+ <a href="https://github.com/zeroclaw-labs/zeroclaw">
45
+ <img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
46
+ <b>ZeroClaw</b>
47
+ </a><br/>
48
+ <sub>โญ 9.9K</sub>
49
+ </td>
50
+ <td align="center" width="110">
51
+ <a href="https://github.com/nearai/ironclaw">
52
+ <img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
53
+ <b>IronClaw</b>
54
+ </a><br/>
55
+ <sub>โญ 2.1K</sub>
56
+ </td>
57
+ </tr>
58
+ <tr>
59
+ <td align="center" width="110">
60
+ <a href="https://github.com/anomalyco/opencode">
61
+ <img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
62
+ <b>OpenCode</b>
63
+ </a><br/>
64
+ <sub>โญ 106K</sub>
65
+ </td>
66
+ <td align="center" width="110">
67
+ <a href="https://github.com/openai/codex">
68
+ <img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
69
+ <b>Codex CLI</b>
70
+ </a><br/>
71
+ <sub>โญ 60.8K</sub>
72
+ </td>
73
+ <td align="center" width="110">
74
+ <a href="https://github.com/anthropics/claude-code">
75
+ <img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
76
+ <b>Claude Code</b>
77
+ </a><br/>
78
+ <sub>โญ 67.3K</sub>
79
+ </td>
80
+ <td align="center" width="110">
81
+ <a href="https://github.com/google-gemini/gemini-cli">
82
+ <img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
83
+ <b>Gemini CLI</b>
84
+ </a><br/>
85
+ <sub>โญ 94.7K</sub>
86
+ </td>
87
+ <td align="center" width="110">
88
+ <a href="https://github.com/Kilo-Org/kilocode">
89
+ <img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
90
+ <b>Kilo Code</b>
91
+ </a><br/>
92
+ <sub>โญ 15.5K</sub>
93
+ </td>
94
+ </tr>
95
+ </table>
96
+
97
+ <sub>๐Ÿ“ก ื›ืœ ื”ืกื•ื›ื ื™ื ืžืชื—ื‘ืจื™ื ื“ืจืš <code>http://localhost:20128/v1</code> ืื• <code>http://cloud.omniroute.online/v1 , โ€”limited one config ืžื›ืกื”</sub>
98
+
99
+ ---
100
+
101
+ [![npm version](https://img.shields.io/npm/v/omniroute?color=cb3837&logo=npm)](https://www.npmjs.com/package/omniroute)
102
+ [![Docker Hub](https://img.shields.io/docker/v/diegosouzapw/omniroute?label=Docker%20Hub&logo=docker&color=2496ED)](https://hub.docker.com/r/diegosouzapw/omniroute)
103
+ [![License](https://img.shields.io/github/license/diegosouzapw/OmniRoute)](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
104
+ [![Website](https://img.shields.io/badge/Website-omniroute.online-blue?logo=google-chrome&logoColor=white)](https://omniroute.online)
105
+ [![WhatsApp](https://img.shields.io/badge/WhatsApp-Community-25D366?logo=whatsapp&logoColor=white)](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
106
+
107
+ [๐ŸŒ Website](https://omniroute.online) โ€ข [๐Ÿš€ Quick Start](#-quick-start) โ€ข [๐Ÿ’ก Features](#-key-features) โ€ข [๐Ÿ“– Docs](#-documentation) โ€ข [๐Ÿ’ฐ Pricing](#-pricing-at-a-glance) โ€ข [๐Ÿ’ฌ WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
108
+
109
+ ๐ŸŒ **Available in:** ๐Ÿ‡บ๐Ÿ‡ธ [English](README.md) | ๐Ÿ‡ง๐Ÿ‡ท [Portuguรชs (Brasil)](README.pt-BR.md) | ๐Ÿ‡ช๐Ÿ‡ธ [Espaรฑol](README.es.md) | ๐Ÿ‡ซ๐Ÿ‡ท [Franรงais](README.fr.md) | ๐Ÿ‡ฎ๐Ÿ‡น [Italiano](README.it.md) | ๐Ÿ‡ท๐Ÿ‡บ [ะ ัƒััะบะธะน](README.ru.md) | ๐Ÿ‡จ๐Ÿ‡ณ [ไธญๆ–‡ (็ฎ€ไฝ“)](README.zh-CN.md) | ๐Ÿ‡ฉ๐Ÿ‡ช [Deutsch](README.de.md) | ๐Ÿ‡ฎ๐Ÿ‡ณ [เคนเคฟเคจเฅเคฆเฅ€](README.in.md) | ๐Ÿ‡น๐Ÿ‡ญ [เน„เธ—เธข](README.th.md) | ๐Ÿ‡บ๐Ÿ‡ฆ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README.uk-UA.md) | ๐Ÿ‡ธ๐Ÿ‡ฆ [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | ๐Ÿ‡ฏ๐Ÿ‡ต [ๆ—ฅๆœฌ่ชž](README.ja.md) | ๐Ÿ‡ป๐Ÿ‡ณ [Tiแบฟng Viแป‡t](README.vi.md) | ๐Ÿ‡ง๐Ÿ‡ฌ [ะ‘ัŠะปะณะฐั€ัะบะธ](README.bg.md) | ๐Ÿ‡ฉ๐Ÿ‡ฐ [Dansk](README.da.md) | ๐Ÿ‡ซ๐Ÿ‡ฎ [Suomi](README.fi.md) | ๐Ÿ‡ฎ๐Ÿ‡ฑ [ืขื‘ืจื™ืช](README.he.md) | ๐Ÿ‡ญ๐Ÿ‡บ [Magyar](README.hu.md) | ๐Ÿ‡ฎ๐Ÿ‡ฉ [Bahasa Indonesia](README.id.md) | ๐Ÿ‡ฐ๐Ÿ‡ท [ํ•œ๊ตญ์–ด](README.ko.md) | ๐Ÿ‡ฒ๐Ÿ‡พ [Bahasa Melayu](README.ms.md) | ๐Ÿ‡ณ๐Ÿ‡ฑ [Nederlands](README.nl.md) | ๐Ÿ‡ณ๐Ÿ‡ด [Norsk](README.no.md) | ๐Ÿ‡ต๐Ÿ‡น [Portuguรชs (Portugal)](README.pt.md) | ๐Ÿ‡ท๐Ÿ‡ด [Romรขnฤƒ](README.ro.md) | ๐Ÿ‡ต๐Ÿ‡ฑ [Polski](README.pl.md) | ๐Ÿ‡ธ๐Ÿ‡ฐ [Slovenฤina](README.sk.md) | ๐Ÿ‡ธ๐Ÿ‡ช [Svenska](README.sv.md) | ๐Ÿ‡ต๐Ÿ‡ญ [Filipino](README.phi.md)
110
+
111
+ </div>
112
+
113
+ ---
114
+
115
+ ## ๐Ÿค” ืœืžื” OmniRoute?
116
+
117
+ **ื”ืคืกื™ืงื• ืœื‘ื–ื‘ื– ื›ืกืฃ ื•ืœื”ื’ื™ืข ืœื’ื‘ื•ืœื•ืช:**
118
+
119
+ - <img src="https://img.shields.io/badge/โœ—-e74c3c?style=flat-square" height="16"/> ืžื›ืกืช ื”ืžื ื•ื™ื™ื ืžืกืชื™ื™ืžืช ืœืœื ืฉื™ืžื•ืฉ ื‘ื›ืœ ื—ื•ื“ืฉ
120
+ - <img src="https://img.shields.io/badge/โœ—-e74c3c?style=flat-square" height="16"/> ืžื’ื‘ืœื•ืช ืงืฆื‘ ืขื•ืฆืจื•ืช ืื•ืชืš ื‘ืงื™ื“ื•ื“ ื‘ืืžืฆืข
121
+ - <img src="https://img.shields.io/badge/โœ—-e74c3c?style=flat-square" height="16"/> ืžืžืฉืงื™ API ื™ืงืจื™ื ($20-50 ืœื—ื•ื“ืฉ ืœื›ืœ ืกืคืง)
122
+ - <img src="https://img.shields.io/badge/โœ—-e74c3c?style=flat-square" height="16"/> ืžืขื‘ืจ ื™ื“ื ื™ ื‘ื™ืŸ ืกืคืงื™ื
123
+
124
+ **OmniRoute ืคื•ืชืจ ืืช ื–ื”:**
125
+
126
+ - โœ… **ืžืงืกื ืžื ื•ื™ื™ื** - ืขืงื•ื‘ ืื—ืจ ืžื›ืกืช, ื”ืฉืชืžืฉ ื‘ื›ืœ ืกื™ื‘ื™ื•ืช ืœืคื ื™ ื”ืื™ืคื•ืก
127
+ - โœ… **ื”ื—ื–ืจ ืื•ื˜ื•ืžื˜ื™** - ืžื ื•ื™ โ†’ ืžืคืชื— API โ†’ ื–ื•ืœ โ†’ ื—ื™ื ื, ืืคืก ื–ืžืŸ ื”ืฉื‘ืชื”
128
+ - โœ… **ืจื™ื‘ื•ื™ ื—ืฉื‘ื•ื ื•ืช** - ืกื™ื‘ื•ื‘ ื‘ื™ืŸ ื—ืฉื‘ื•ื ื•ืช ืœื›ืœ ืกืคืง
129
+ - โœ… **ืื•ื ื™ื‘ืจืกืœื™** - ืขื•ื‘ื“ ืขื ืงืœื•ื“ ืงื•ื“, Codex, Gemini CLI, Cursor, Cline, OpenClaw, ื›ืœ ื›ืœื™ CLI
130
+
131
+ ---
132
+
133
+ ## ๐Ÿ”„ ืื™ืš ื–ื” ืขื•ื‘ื“
134
+
135
+ ```
136
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
137
+ โ”‚ Your CLI โ”‚ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
138
+ โ”‚ Tool โ”‚
139
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
140
+ โ”‚ http://localhost:20128/v1
141
+ โ†“
142
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
143
+ โ”‚ OmniRoute (Smart Router) โ”‚
144
+ โ”‚ โ€ข Format translation (OpenAI โ†” Claude) โ”‚
145
+ โ”‚ โ€ข Quota tracking + Embeddings + Images โ”‚
146
+ โ”‚ โ€ข Auto token refresh โ”‚
147
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
148
+ โ”‚
149
+ โ”œโ”€โ†’ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI
150
+ โ”‚ โ†“ quota exhausted
151
+ โ”œโ”€โ†’ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
152
+ โ”‚ โ†“ budget limit
153
+ โ”œโ”€โ†’ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)
154
+ โ”‚ โ†“ budget limit
155
+ โ””โ”€โ†’ [Tier 4: FREE] iFlow, Qwen, Kiro (unlimited)
156
+
157
+ Result: Never stop coding, minimal cost
158
+ ```
159
+
160
+ ---
161
+
162
+ ## โšก ื”ืชื—ืœื” ืžื”ื™ืจื”
163
+
164
+ **1. ื”ืชืงืŸ ื‘ืจื—ื‘ื™ ื”ืขื•ืœื:**
165
+
166
+ ```bash
167
+ npm install -g omniroute
168
+ omniroute
169
+ ```
170
+
171
+ ๐ŸŽ‰ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื ืคืชื— ื‘-`http://localhost:20128`
172
+
173
+ | ืคืงื•ื“ื” | ืชื™ืื•ืจ |
174
+ | ----------------------- | --------------------------------- |
175
+ | `omniroute` | ื”ืชื—ืœ ืฉืจืช (ื™ืฆื™ืืช ื‘ืจื™ืจืช ืžื—ื“ืœ 20128) |
176
+ | `omniroute --port 3000` | ื”ืฉืชืžืฉ ื‘ื™ืฆื™ืื” ืžื•ืชืืžืช ืื™ืฉื™ืช |
177
+ | `omniroute --no-open` | ืืœ ืชืคืชื— ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ื“ืคื“ืคืŸ |
178
+ | `omniroute --help` | ื”ืฆื’ ืขื–ืจื” |
179
+
180
+ **2. ื—ื‘ืจ ืกืคืง ื—ื™ื ืžื™:**
181
+
182
+ ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ืกืคืงื™ื โ† ื”ืชื—ื‘ืจ **ืงื•ื“ ืงืœื•ื“** ืื• **ืื ื˜ื™ ื›ื‘ื™ื“ื”** โ† ื”ืชื—ื‘ืจื•ืช OAuth โ† ื‘ื•ืฆืข!
183
+
184
+ **3. ื”ืฉืชืžืฉ ื‘ื›ืœื™ ื”-CLI ืฉืœืš:**
185
+
186
+ ```
187
+ Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
188
+ Endpoint: http://localhost:20128/v1
189
+ API Key: [copy from dashboard]
190
+ Model: if/kimi-k2-thinking
191
+ ```
192
+
193
+ **ื–ื”ื• ื–ื”!** ื”ืชื—ืœ ืœืงื•ื“ื“ ืขื ื“ื’ืžื™ AI ื‘ื—ื™ื ื.
194
+
195
+ **ืืœื˜ืจื ื˜ื™ื‘ื” - ื”ืคืขืœ ืžื”ืžืงื•ืจ:**
196
+
197
+ ```bash
198
+ cp .env.example .env
199
+ npm install
200
+ PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
201
+ ```
202
+
203
+ ---
204
+
205
+ ## ๐Ÿณ ื“ื•ืงืจ
206
+
207
+ OmniRoute ื–ืžื™ืŸ ื›ืชืžื•ื ืช Docker ืฆื™ื‘ื•ืจื™ืช ื‘-[Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
208
+
209
+ **ืจื™ืฆื” ืžื”ื™ืจื”:**
210
+
211
+ ```bash
212
+ docker run -d \
213
+ --name omniroute \
214
+ --restart unless-stopped \
215
+ -p 20128:20128 \
216
+ -v omniroute-data:/app/data \
217
+ diegosouzapw/omniroute:latest
218
+ ```
219
+
220
+ **ืขื ืงื•ื‘ืฅ ืกื‘ื™ื‘ื”:**
221
+
222
+ ```bash
223
+ # Copy and edit .env first
224
+ cp .env.example .env
225
+
226
+ docker run -d \
227
+ --name omniroute \
228
+ --restart unless-stopped \
229
+ --env-file .env \
230
+ -p 20128:20128 \
231
+ -v omniroute-data:/app/data \
232
+ diegosouzapw/omniroute:latest
233
+ ```
234
+
235
+ **ืฉื™ืžื•ืฉ ื‘-Docker Compose:**
236
+
237
+ ```bash
238
+ # Base profile (no CLI tools)
239
+ docker compose --profile base up -d
240
+
241
+ # CLI profile (Claude Code, Codex, OpenClaw built-in)
242
+ docker compose --profile cli up -d
243
+ ```
244
+
245
+ | ืชืžื•ื ื” | ืชื’ | ื’ื•ื“ืœ | ืชื™ืื•ืจ |
246
+ | ------------------------ | -------- | ------ | ---------------------- |
247
+ | `diegosouzapw/omniroute` | `latest` | ~250MB | ื”ืžื”ื“ื•ืจื” ื”ื™ืฆื™ื‘ื” ื”ืื—ืจื•ื ื” |
248
+ | `diegosouzapw/omniroute` | `1.0.3` | ~250MB | ื’ืจืกื” ื ื•ื›ื—ื™ืช |
249
+
250
+ ---
251
+
252
+ ## ๐Ÿ’ฐ ืชืžื—ื•ืจ ื‘ืžื‘ื˜ ื—ื˜ื•ืฃ
253
+
254
+ | ืฉื›ื‘ื” | ืกืคืง | ืขืœื•ืช | ืื™ืคื•ืก ืžื›ืกื” | ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ ืขื‘ื•ืจ |
255
+ | --------------- | ---------------- | ----------------------- | ------------------------ | ------------------------ |
256
+ | **๐Ÿ’ณ ืžื ื•ื™** | ืงืœื•ื“ ืงื•ื“ (ืคืจื•) | 20 ื“ื•ืœืจ ืœื—ื•ื“ืฉ | 5 ืฉืขื•ืช + ืฉื‘ื•ืขื™ | ื›ื‘ืจ ื ืจืฉืžืช |
257
+ | | ืงื•ื“ืงืก (ืคืœื•ืก/ืคืจื•) | $20-200 ืœื—ื•ื“ืฉ | 5 ืฉืขื•ืช + ืฉื‘ื•ืขื™ | ืžืฉืชืžืฉื™ OpenAI |
258
+ | | Gemini CLI | **ื—ื™ื ื** | 180K/Mo + 1K/ื™ื•ื | ื›ึผึนืœ ืึถื—ึธื“! |
259
+ | | GitHub Copilot | $10-19 ืœื—ื•ื“ืฉ | ื—ื•ื“ืฉื™ | ืžืฉืชืžืฉื™ GitHub |
260
+ | **๐Ÿ”‘ ืžืคืชื— API** | NVIDIA NIM | **ื—ื™ื ื** (1000 ืงืจื“ื™ื˜ื™ื) | ื—ื“ ืคืขืžื™ | ื‘ื“ื™ืงืช ืฉื›ื‘ื•ืช ื—ื™ื ื |
261
+ | | DeepSeek | ืชืฉืœื•ื ืœืคื™ ืฉื™ืžื•ืฉ | ืื™ืŸ | ื”ืžื—ื™ืจ/ืื™ื›ื•ืช ื”ื˜ื•ื‘ื™ื ื‘ื™ื•ืชืจ |
262
+ | | ื’ืจื•ืง | ืฉื›ื‘ื” ื—ื™ื ื + ื‘ืชืฉืœื•ื | ืชืขืจื™ืฃ ืžื•ื’ื‘ืœ | ื”ืกืงื” ืžื”ื™ืจื” ื‘ืžื™ื•ื—ื“ |
263
+ | | xAI (Grok) | ืชืฉืœื•ื ืœืคื™ ืฉื™ืžื•ืฉ | ืื™ืŸ | ื“ื’ืžื™ ื’ืจื•ืง |
264
+ | | ืžื™ืกื˜ืจืœ | ืฉื›ื‘ื” ื—ื™ื ื + ื‘ืชืฉืœื•ื | ืชืขืจื™ืฃ ืžื•ื’ื‘ืœ | AI ืื™ืจื•ืคืื™ |
265
+ | | OpenRouter | ืชืฉืœื•ื ืœืคื™ ืฉื™ืžื•ืฉ | ืื™ืŸ | 100+ ื“ื’ืžื™ื |
266
+ | **๐Ÿ’ฐ ื–ื•ืœ** | GLM-4.7 | $0.6/1 ืžื™ืœื™ื•ืŸ | ื›ืœ ื™ื•ื 10:00 | ื’ื™ื‘ื•ื™ ืชืงืฆื™ื‘ื™ |
267
+ | | MiniMax M2.1 | $0.2/1 ืžื™ืœื™ื•ืŸ | ื’ืœื’ื•ืœ ืฉืœ 5 ืฉืขื•ืช | ื”ืืคืฉืจื•ืช ื”ื–ื•ืœื” ื‘ื™ื•ืชืจ |
268
+ | | ืงื™ืžื™ K2 | 9 $ ืœื—ื•ื“ืฉ ื“ื™ืจื” | 10 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื ืœื—ื•ื“ืฉ | ืขืœื•ืช ืฆืคื•ื™ื” |
269
+ | **๐Ÿ†“ ื—ื™ื ื** | iFlow | $0 | ืœืœื ื”ื’ื‘ืœื” | 8 ื“ื’ืžื™ื ื—ื™ื ื |
270
+ | | ืงื•ื•ืŸ | $0 | ืœืœื ื”ื’ื‘ืœื” | 3 ื“ื’ืžื™ื ื—ื™ื ื |
271
+ | | ืงื™ืจื• | $0 | ืœืœื ื”ื’ื‘ืœื” | ืงืœื•ื“ ื—ื•ืคืฉื™ |
272
+
273
+ **๐Ÿ’ก ื˜ื™ืค ืžืงืฆื•ืขื™:** ื”ืชื—ืœ ืขื Gemini CLI (180K ื—ื™ื ื/ื—ื•ื“ืฉ) + ืฉื™ืœื•ื‘ ืฉืœ iFlow (ืœืœื ื”ื’ื‘ืœื” ื‘ื—ื™ื ื) = ืขืœื•ืช ืฉืœ $0!
274
+
275
+ ---
276
+
277
+ ## ๐ŸŽฏ ืžืงืจื™ ืฉื™ืžื•ืฉ
278
+
279
+ ### ืžืงืจื” 1: "ื™ืฉ ืœื™ ืžื ื•ื™ ืœืงืœื•ื“ ืคืจื•"
280
+
281
+ **ื‘ืขื™ื”:** ืชื•ืงืฃ ื”ืžื›ืกื” ืคื’ ืœืœื ืฉื™ืžื•ืฉ, ืžื’ื‘ืœื•ืช ืชืขืจื™ืฃ ื‘ืžื”ืœืš ืงื™ื“ื•ื“ ื›ื‘ื“
282
+
283
+ ```
284
+ Combo: "maximize-claude"
285
+ 1. cc/claude-opus-4-6 (use subscription fully)
286
+ 2. glm/glm-4.7 (cheap backup when quota out)
287
+ 3. if/kimi-k2-thinking (free emergency fallback)
288
+
289
+ Monthly cost: $20 (subscription) + ~$5 (backup) = $25 total
290
+ vs. $20 + hitting limits = frustration
291
+ ```
292
+
293
+ ### ืžืงืจื” 2: "ืื ื™ ืจื•ืฆื” ืขืœื•ืช ืืคืก"
294
+
295
+ **ื‘ืขื™ื”:** ืœื ื™ื›ื•ืœ ืœื”ืจืฉื•ืช ืœืขืฆืžื• ืžื ื•ื™ื™ื, ืฆืจื™ืš ืงื™ื“ื•ื“ AI ืืžื™ืŸ
296
+
297
+ ```
298
+ Combo: "free-forever"
299
+ 1. gc/gemini-3-flash (180K free/month)
300
+ 2. if/kimi-k2-thinking (unlimited free)
301
+ 3. qw/qwen3-coder-plus (unlimited free)
302
+
303
+ Monthly cost: $0
304
+ Quality: Production-ready models
305
+ ```
306
+
307
+ ### ืžืงืจื” 3: "ืื ื™ ืฆืจื™ืš ืงื™ื“ื•ื“ 24/7, ืœืœื ื”ืคืจืขื•ืช"
308
+
309
+ **ื‘ืขื™ื”:** ืžื•ืขื“ื™ื, ืœื ื™ื›ื•ืœ ืœื”ืจืฉื•ืช ืœืขืฆืžื• ื–ืžืŸ ื”ืฉื‘ืชื”
310
+
311
+ ```
312
+ Combo: "always-on"
313
+ 1. cc/claude-opus-4-6 (best quality)
314
+ 2. cx/gpt-5.2-codex (second subscription)
315
+ 3. glm/glm-4.7 (cheap, resets daily)
316
+ 4. minimax/MiniMax-M2.1 (cheapest, 5h reset)
317
+ 5. if/kimi-k2-thinking (free unlimited)
318
+
319
+ Result: 5 layers of fallback = zero downtime
320
+ ```
321
+
322
+ ### ืžืงืจื” 4: "ืื ื™ ืจื•ืฆื” AI ื‘ื—ื™ื ื ื‘-OpenClaw"
323
+
324
+ **ื‘ืขื™ื”:** ืฆืจื™ืš ืขื•ื–ืจ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช ื‘ืืคืœื™ืงืฆื™ื•ืช ื”ื•ื“ืขื•ืช, ื‘ื—ื™ื ื ืœื—ืœื•ื˜ื™ืŸ
325
+
326
+ ```
327
+ Combo: "openclaw-free"
328
+ 1. if/glm-4.7 (unlimited free)
329
+ 2. if/minimax-m2.1 (unlimited free)
330
+ 3. if/kimi-k2-thinking (unlimited free)
331
+
332
+ Monthly cost: $0
333
+ Access via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
334
+ ```
335
+
336
+ ---
337
+
338
+ ## ๐Ÿ’ก ืชื›ื•ื ื•ืช ืขื™ืงืจื™ื•ืช
339
+
340
+ ### ๐Ÿง  ื ื™ืชื•ื‘ ืœื™ื‘ื” ื•ืžื•ื“ื™ืขื™ืŸ
341
+
342
+ | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” |
343
+ | ---------------------------- | -------------------------------------------------------------------------------- |
344
+ | ๐ŸŽฏ **Smart 4-tier Fallback** | ืžืกืœื•ืœ ืื•ื˜ื•ืžื˜ื™: ืžื ื•ื™ โ†’ ืžืคืชื— API โ†’ ื–ื•ืœ โ†’ ื—ื™ื ื |
345
+ | ๐Ÿ“Š **ืžืขืงื‘ ืžื›ืกื•ืช ื‘ื–ืžืŸ ืืžืช** | ืกืคื™ืจืช ืืกื™ืžื•ื ื™ื ื—ื™ื” + ืื™ืคื•ืก ืกืคื™ืจื” ืœืื—ื•ืจ ืœื›ืœ ืกืคืง |
346
+ | ๐Ÿ”„ **ืชืจื’ื•ื ืคื•ืจืžื˜** | OpenAI โ†” ืงืœื•ื“ โ†” ืชืื•ืžื™ื โ†” ืกืžืŸ โ†” Kiro ื—ืœืงื” + ื—ื™ื˜ื•ื™ ืชื’ื•ื‘ื” |
347
+ | ๐Ÿ‘ฅ **ืชืžื™ื›ื” ื‘ืจื™ื‘ื•ื™ ื—ืฉื‘ื•ื ื•ืช** | ืžืกืคืจ ื—ืฉื‘ื•ื ื•ืช ืœื›ืœ ืกืคืง ืขื ื‘ื—ื™ืจื” ื—ื›ืžื” |
348
+ | ๐Ÿ”„ **ืจืขื ื•ืŸ ืืกื™ืžื•ืŸ ืื•ื˜ื•ืžื˜ื™** | ืืกื™ืžื•ื ื™ OAuth ืžืชืจืขื ื ื™ื ืื•ื˜ื•ืžื˜ื™ืช ืขื ื ื™ืกื™ื•ืŸ ื—ื•ื–ืจ |
349
+ | ๐ŸŽจ **ืฉื™ืœื•ื‘ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช** | 6 ืืกื˜ืจื˜ื’ื™ื•ืช: ืžื™ืœื•ื™ ืจืืฉื•ืŸ, ืขื’ื•ืœ ืจื•ื‘ื™ืŸ, p2c, ืืงืจืื™, ืคื—ื•ืช ื‘ืฉื™ืžื•ืฉ, ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืœืขืœื•ืช |
350
+ | ๐Ÿงฉ **ื“ื’ืžื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช** | ื”ื•ืกืฃ ื›ืœ ืžื–ื”ื” ื“ื’ื ืœื›ืœ ืกืคืง |
351
+ | ๐ŸŒ **ื ืชื‘ ืชื•ื•ื™ื ื›ืœืœื™ื™ื** โ€‹โ€‹ | ื ืชื‘ ื“ืคื•ืกื™ `provider/*` ืœื›ืœ ืกืคืง ื‘ืื•ืคืŸ ื“ื™ื ืžื™ |
352
+ | ๐Ÿง  **ืชืงืฆื™ื‘ ื—ืฉื™ื‘ื”** | ืžืฆื‘ื™ ืžืขื‘ืจ, ืื•ื˜ื•ืžื˜ื™, ืžื•ืชืืžื™ื ืื™ืฉื™ืช ื•ื”ืชืืžื” ืœืžื•ื“ืœื™ื ืฉืœ ื—ืฉื™ื‘ื” |
353
+ | ๐Ÿ’ฌ **ื”ื–ืจืงืช ืžืขืจื›ืช ืžื™ื™ื“ื™ืช** | ื”ื•ื“ืขืช ืžืขืจื›ืช ื’ืœื•ื‘ืœื™ืช ื”ื•ื—ืœื” ื‘ื›ืœ ื”ื‘ืงืฉื•ืช |
354
+ | ๐Ÿ“„ **Responses API** | ืชืžื™ื›ื” ืžืœืื” ืฉืœ OpenAI Responses API (`/v1/responses`) ืขื‘ื•ืจ Codex |
355
+
356
+ ### ๐ŸŽต ืžืžืฉืงื™ API ืจื‘-ืžื•ื“ืืœื™ื™ื
357
+
358
+ | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” |
359
+ | ------------------- | --------------------------------------------- |
360
+ | ๐Ÿ–ผ๏ธ **ื™ืฆื™ืจืช ืชืžื•ื ื•ืช** | `/v1/images/generations` โ€” 4 ืกืคืงื™ื, 9+ ื“ื’ืžื™ื |
361
+ | ๐Ÿ“ **ื”ื˜ื‘ืขื•ืช** | `/v1/embeddings` โ€” 6 ืกืคืงื™ื, 9+ ื“ื’ืžื™ื |
362
+ | ๐ŸŽค **ืชืžืœื•ืœ ืื•ื“ื™ื•** | `/v1/audio/transcriptions` โ€” ืชื•ืื ืœื—ื™ืฉื” |
363
+ | ๐Ÿ”Š **ื˜ืงืกื˜ ืœื“ื™ื‘ื•ืจ** | `/v1/audio/speech` โ€” ืกื™ื ืชื–ืช ืื•ื“ื™ื• ืžืจื•ื‘ื” ืกืคืงื™ื |
364
+ | ๐Ÿ›ก๏ธ **ืžื ื—ื™ื** | `/v1/moderations` โ€” ื‘ื“ื™ืงื•ืช ื‘ื˜ื™ื—ื•ืช ืชื•ื›ืŸ |
365
+ | ๐Ÿ”€ **ื“ื™ืจื•ื’ ืžื—ื“ืฉ** | `/v1/rerank` โ€” ื“ื™ืจื•ื’ ืžื—ื“ืฉ ืฉืœ ืจืœื•ื•ื ื˜ื™ื•ืช ื”ืžืกืžืš |
366
+
367
+ ### ๐Ÿ›ก๏ธ ื—ื•ืกืŸ ื•ื‘ื™ื˜ื—ื•ืŸ
368
+
369
+ | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” |
370
+ | ------------------------------------ | -------------------------------------------------------------- |
371
+ | ๐Ÿ”Œ **ืžืคืกืง ืžืขื’ืœื™ื** | ืคืชื™ื—ื”/ืกื’ื™ืจื” ืื•ื˜ื•ืžื˜ื™ืช ืœื›ืœ ืกืคืง ืขื ืขืจื›ื™ ืกืฃ ื”ื ื™ืชื ื™ื ืœื”ื’ื“ืจื” |
372
+ | ๐Ÿ›ก๏ธ **ืขื“ืจ ื ื’ื“ ืจืขืžื™ื** | Mutex + ืžื’ื‘ืœืช ืงืฆื‘ ืกืžืคื•ืจ ืขื‘ื•ืจ ืกืคืงื™ ืžืคืชื— API |
373
+ | ๐Ÿง  **ืžื˜ืžื•ืŸ ืกืžื ื˜ื™** | ืžื˜ืžื•ืŸ ื“ื•-ืฉื›ื‘ืชื™ (ื—ืชื™ืžื” + ืกืžื ื˜ื™) ืžืคื—ื™ืช ืืช ื”ืขืœื•ืช ื•ื”ืฉื”ื™ื™ื” |
374
+ | โšก **ื‘ืงืฉ ืื™ืžืคื•ื˜ื ืฆื™ื”** | ื—ืœื•ืŸ ื‘ื™ื˜ื•ืœ 5s ืขื‘ื•ืจ ื‘ืงืฉื•ืช ื›ืคื•ืœื•ืช |
375
+ | ๐Ÿ”’ **ื–ื™ื•ืฃ ื˜ื‘ื™ืขื•ืช ืืฆื‘ืข TLS** | ืขื•ืงืฃ ื–ื™ื”ื•ื™ ื‘ื•ื˜ ืžื‘ื•ืกืก TLS ื‘ืืžืฆืขื•ืช wreq-js |
376
+ | ๐ŸŒ **ืกื™ื ื•ืŸ IP** | ืจืฉื™ืžืช ื”ืจืฉืื•ืช/ืจืฉื™ืžืช ื—ืกื™ืžื•ืช ืขื‘ื•ืจ ื‘ืงืจืช ื’ื™ืฉื” ืœ-API |
377
+ | ๐Ÿ“Š **ืžื’ื‘ืœื•ืช ืชืขืจื™ืคื™ื ื”ื ื™ืชื ื•ืช ืœืขืจื™ื›ื”** | RPM ื ื™ืชืŸ ืœื”ื’ื“ืจื”, ืคืขืจ ืžื™ื ื™ืžืœื™ ื•ืžืงืกื™ืžื•ื ื‘ืžืงื‘ื™ืœ ื‘ืจืžืช ื”ืžืขืจื›ืช |
378
+ | ๐Ÿ›ก **ื”ื’ื ืช ื ืงื•ื“ืช ืงืฆื” API** | Auth gating + ื—ืกื™ืžืช ืกืคืง ืขื‘ื•ืจ ื ืงื•ื“ืช ื”ืงืฆื” `/models` |
379
+ | ๐Ÿ”’ **ื ืจืื•ืช ืคืจื•ืงืกื™** | ืชื’ื™ื ืžืงื•ื“ื“ื™ื ื‘ืฆื‘ืข: ๐ŸŸข ื’ืœื•ื‘ืœื™, ๐ŸŸก ืกืคืง, ๐Ÿ”ต ืœื›ืœ ื—ื™ื‘ื•ืจ ืขื ืชืฆื•ื’ืช IP |
380
+ | ๐ŸŒ **ืชืฆื•ืจืช ืคืจื•ืงืกื™ ื‘ืฉืœื•ืฉ ืจืžื•ืช** | ื”ื’ื“ืจ ืคืจื•ืงืกื™ ื‘ืจืžื” ื’ืœื•ื‘ืœื™ืช, ืœื›ืœ ืกืคืง ืื• ืœื›ืœ ื—ื™ื‘ื•ืจ |
381
+
382
+ ### ๐Ÿ“Š ื™ื›ื•ืœืช ืชืฆืคื™ืช ื•ื ื™ืชื•ื—
383
+
384
+ | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” |
385
+ | ------------------------------- | ---------------------------------------------------------------------- |
386
+ | ๐Ÿ“ **ื‘ืงืฉ ืจื™ืฉื•ื** | ืžืฆื‘ ื ื™ืคื•ื™ ื‘ืื’ื™ื ืขื ื™ื•ืžื ื™ ื‘ืงืฉื•ืช/ืชื’ื•ื‘ื•ืช ืžืœืื™ื |
387
+ | ๐Ÿ’พ **ื™ื•ืžื ื™ ืคืจื•ืงืกื™ ืฉืœ SQLite** | ื™ื•ืžื ื™ ืคืจื•ืงืกื™ ืžืชืžืฉื›ื™ื ืฉื•ืจื“ื™ื ืืชื—ื•ืœ ืžื—ื“ืฉ ืฉืœ ื”ืฉืจืช |
388
+ | ๐Ÿ“Š **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ ืื ืœื™ื˜ื™ืงืก** | ืžื•ืคืขืœ ืžื—ื“ืฉ ื‘-Recharts: ื›ืจื˜ื™ืกื™ ืกื˜ื˜ื™ืกื˜ื™ืงื”, ื˜ื‘ืœืช ืฉื™ืžื•ืฉ ื‘ืžื•ื“ืœ, ื˜ื‘ืœืช ืกืคืงื™ื |
389
+ | ๐Ÿ“ˆ **ืžืขืงื‘ ื”ืชืงื“ืžื•ืช** | ื”ืฆื˜ืจืคื•ืช ืœืื™ืจื•ืขื™ ื”ืชืงื“ืžื•ืช SSE ืœืกื˜ืจื™ืžื™ื ื’ |
390
+ | ๐Ÿงช **LM Evaluations** | ื‘ื“ื™ืงืช ืกื˜ ื–ื”ื‘ ืขื 4 ืืกื˜ืจื˜ื’ื™ื•ืช ื”ืชืืžื” |
391
+ | ๐Ÿ” **ื‘ืงืฉ ื˜ืœืžื˜ืจื™ื”** | ืฆื‘ื™ืจืช ื–ืžืŸ ืื—ื–ื•ืจ p50/p95/p99 + ืžืขืงื‘ ืื—ืจ X-Request-Id |
392
+ | ๐Ÿ“‹ **ืœื•ื— ืžื—ื•ื•ื ื™ื ื™ื•ืžื ื™** | ืขืžื•ื“ ืžืื•ื—ื“ ื‘ืŸ 4 ืœืฉื•ื ื™ื•ืช: ื™ื•ืžื ื™ ื‘ืงืฉื•ืช, ื™ื•ืžื ื™ ืคืจื•ืงืกื™, ื™ื•ืžื ื™ ื‘ื™ืงื•ืจืช, ืžืกื•ืฃ |
393
+ | ๐Ÿ–ฅ๏ธ **ืžืฆื™ื’ ื™ื•ืžืŸ ืžืกื•ืฃ** | ืžืฆื™ื’ ื‘ืกื’ื ื•ืŸ ื˜ืจืžื™ื ืœ ื‘ื–ืžืŸ ืืžืช ืขื ืžืกื ืŸ ืจืžื•ืช, ื—ื™ืคื•ืฉ, ื’ืœื™ืœื” ืื•ื˜ื•ืžื˜ื™ืช |
394
+ | ๐Ÿ“‘ **ืจื™ืฉื•ื ืžื‘ื•ืกืก ืงื‘ืฆื™ื** | ืžื™ื™ืจื˜ ืžืกื•ืฃ ืœื•ื›ื“ ืืช ื›ืœ ื”ืคืœื˜ ืœืงื•ื‘ืฅ ื™ื•ืžืŸ JSON ืขื ืกื™ื‘ื•ื‘ |
395
+ | ๐Ÿฅ **ืœื•ื— ืžื—ื•ื•ื ื™ื ืœื‘ืจื™ืื•ืช** | ื–ืžืŸ ืคืขื™ืœื•ืช ืžืขืจื›ืช, ืžืฆื‘ื™ ืžืคืกืง ื–ืจื, ื ืขื™ืœื•ืช, ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืžื˜ืžื•ืŸ |
396
+ | ๐Ÿ’ฐ **ืžืขืงื‘ ืขืœื•ื™ื•ืช** | ื ื™ื”ื•ืœ ืชืงืฆื™ื‘ + ืชืฆื•ืจืช ืชืžื—ื•ืจ ืœืคื™ ื“ื’ื |
397
+
398
+ ### โ˜๏ธ ืคืจื™ืกื” ื•ืกื ื›ืจื•ืŸ
399
+
400
+ | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” |
401
+ | ---------------------------------- | --------------------------------------------------------------------- |
402
+ | ๐Ÿ’พ **ืกื ื›ืจื•ืŸ ืขื ืŸ** | ืกื ื›ืจื•ืŸ ืชืฆื•ืจื” ื‘ื™ืŸ ืžื›ืฉื™ืจื™ื ื‘ืืžืฆืขื•ืช Cloudflare Workers |
403
+ | ๐ŸŒ **ืคืจื•ืก ื‘ื›ืœ ืžืงื•ื** | Localhost, VPS, Docker, Cloudflare Workers |
404
+ | ๐Ÿ”‘ **ื ื™ื”ื•ืœ ืžืคืชื—ื•ืช API** | ืฆื•ืจ, ืกื•ื‘ื‘ ื•ื”ื™ืงืฃ ืžืคืชื—ื•ืช API ืœื›ืœ ืกืคืง |
405
+ | ๐Ÿง™ **ืืฉืฃ ื”ืขืœื™ื™ื” ืœืžื˜ื•ืก** | ื”ื’ื“ืจื” ืžื•ื“ืจื›ืช ื‘ืช 4 ืฉืœื‘ื™ื ืœืžืฉืชืžืฉื™ื ื—ื“ืฉื™ื |
406
+ | ๐Ÿ”ง **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ ื›ืœื™ CLI** | ื”ื’ื“ืจ ื‘ืœื—ื™ืฆื” ืื—ืช ืืช Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
407
+ | ๐Ÿ”„ **ื’ื™ื‘ื•ื™ื™ื ืฉืœ DB** | ื’ื™ื‘ื•ื™, ืฉื—ื–ื•ืจ, ื™ื™ืฆื•ื ื•ื™ื™ื‘ื•ื โ€‹โ€‹ืื•ื˜ื•ืžื˜ื™ ืขื‘ื•ืจ ื›ืœ ื”ื”ื’ื“ืจื•ืช |
408
+ | ๐ŸŒ **ื‘ื™ื ืœืื•ืžื™ื•ืช** | i18n ืžืœื ืขื next-intl โ€” ืชืžื™ื›ื” ื‘ืื ื’ืœื™ืช + ืคื•ืจื˜ื•ื’ื–ื™ืช (ื‘ืจื–ื™ืœ) |
409
+ | ๐ŸŒ **ื‘ื•ืจืจ ืฉืคื”** | ืกืžืœ ื’ืœื•ื‘ื•ืก ื‘ื›ื•ืชืจืช ืœืžืขื‘ืจ ืฉืคื” ื‘ื–ืžืŸ ืืžืช (๐Ÿ‡บ๐Ÿ‡ธ/๐Ÿ‡ง๐Ÿ‡ท) |
410
+ | ๐Ÿ“‚ **ืกืคืจื™ื™ืช ื ืชื•ื ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช** | `DATA_DIR` env var ื›ื“ื™ ืœืขืงื•ืฃ ืืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ `~/.omniroute` ื ืชื™ื‘ ืื—ืกื•ืŸ |
411
+
412
+ <details>
413
+ <summary><b>๐Ÿ“– ืคืจื˜ื™ ืชื›ื•ื ื”</b></summary>
414
+
415
+ ### ๐ŸŽฏ 4 ืฉื›ื‘ื•ืช ืกืชื™ืจื” ื—ื›ืžื”
416
+
417
+ ืฆื•ืจ ืฉื™ืœื•ื‘ื™ื ืขื ื ืคื™ืœื” ืื•ื˜ื•ืžื˜ื™ืช:
418
+
419
+ ```
420
+ Combo: "my-coding-stack"
421
+ 1. cc/claude-opus-4-6 (your subscription)
422
+ 2. nvidia/llama-3.3-70b (free NVIDIA API)
423
+ 3. glm/glm-4.7 (cheap backup, $0.6/1M)
424
+ 4. if/kimi-k2-thinking (free fallback)
425
+
426
+ โ†’ Auto switches when quota runs out or errors occur
427
+ ```
428
+
429
+ ### ๐Ÿ“Š ืžืขืงื‘ ืžื›ืกื•ืช ื‘ื–ืžืŸ ืืžืช
430
+
431
+ - ืฆืจื™ื›ืช ืืกื™ืžื•ื ื™ื ืœื›ืœ ืกืคืง
432
+ - ืืคืก ืกืคื™ืจื” ืœืื—ื•ืจ (5 ืฉืขื•ืช, ื™ื•ืžื™, ืฉื‘ื•ืขื™)
433
+ - ื”ืขืจื›ืช ืขืœื•ื™ื•ืช ืขื‘ื•ืจ ืฉื›ื‘ื•ืช ื‘ืชืฉืœื•ื
434
+ - ื“ื•ื—ื•ืช ื”ื•ืฆืื•ืช ื—ื•ื“ืฉื™ื™ื
435
+
436
+ ### ๐Ÿ”„ ืชืจื’ื•ื ืคื•ืจืžื˜
437
+
438
+ ืชืจื’ื•ื ื—ืœืง ื‘ื™ืŸ ืคื•ืจืžื˜ื™ื:
439
+
440
+ - **OpenAI** โ†” **ืงืœื•ื“** โ†” **ืชืื•ืžื™ื** โ†” **ืชื’ื•ื‘ื•ืช OpenAI**
441
+ - ื›ืœื™ ื”-CLI ืฉืœืš ืฉื•ืœื— ืคื•ืจืžื˜ OpenAI โ†’ OmniRoute ืžืชืจื’ื โ†’ ื”ืกืคืง ืžืงื‘ืœ ืคื•ืจืžื˜ ืžืงื•ืจื™
442
+ - ืขื•ื‘ื“ ืขื ื›ืœ ื›ืœื™ ื”ืชื•ืžืš ื‘ื ืงื•ื“ื•ืช ืงืฆื” ืžื•ืชืืžื•ืช ืื™ืฉื™ืช ืฉืœ OpenAI
443
+ - **ื—ื™ื˜ื•ื™ ืชื’ื•ื‘ื”** - ืžืกื™ืจ ืฉื“ื•ืช ืœื ืกื˜ื ื“ืจื˜ื™ื™ื ืœืฆื•ืจืš ืชืื™ืžื•ืช ืงืคื“ื ื™ืช ืฉืœ OpenAI SDK
444
+ - **ื ื•ืจืžืœื™ื–ืฆื™ื” ืฉืœ ืชืคืงื™ื“ื™ื** โ€” `developer` โ†’ `system` ืขื‘ื•ืจ ืœื-OpenAI; `system` โ†’ `user` ืขื‘ื•ืจ ื“ื’ืžื™ GLM/ERNIE
445
+ - **ื—ื™ืœื•ืฅ ืชื’ ื—ืฉื™ื‘ื”** โ€” `<think>` ื‘ืœื•ืงื™ื โ†’ `reasoning_content` ืœืžื•ื“ืœื™ื ื—ื•ืฉื‘ื™ื
446
+ - **ืคืœื˜ ืžื•ื‘ื ื”** โ€” `json_schema` โ†’ `responseMimeType`/`responseSchema` ืฉืœ Gemini
447
+
448
+ ### ๐Ÿ‘ฅ ืชืžื™ื›ื” ื‘ืจื™ื‘ื•ื™ ื—ืฉื‘ื•ื ื•ืช
449
+
450
+ - ื”ื•ืกืฃ ืžืกืคืจ ื—ืฉื‘ื•ื ื•ืช ืœื›ืœ ืกืคืง
451
+ - ื ื™ืชื•ื‘ ืกื‘ื‘ ืื•ื˜ื•ืžื˜ื™ ืื• ืžื‘ื•ืกืก ืขื“ื™ืคื•ืช
452
+ - ื—ื–ืจื” ืœื—ืฉื‘ื•ืŸ ื”ื‘ื ื›ืืฉืจ ืื—ื“ ืžื’ื™ืข ืœืžื›ืกื”
453
+
454
+ ### ๐Ÿ”„ ืจืขื ื•ืŸ ืืกื™ืžื•ืŸ ืื•ื˜ื•ืžื˜ื™
455
+
456
+ - ืืกื™ืžื•ื ื™ OAuth ืžืชืจืขื ื ื™ื ืื•ื˜ื•ืžื˜ื™ืช ืœืคื ื™ ืคืงื™ืขืช ื”ืชื•ืงืฃ
457
+ - ืื™ืŸ ืฆื•ืจืš ื‘ืื™ืžื•ืช ืžื—ื“ืฉ ื™ื“ื ื™
458
+ - ื—ื•ื•ื™ื” ื—ืœืงื” ื‘ื›ืœ ื”ืกืคืงื™ื
459
+
460
+ ### ๐ŸŽจ ืฉื™ืœื•ื‘ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช
461
+
462
+ - ืฆื•ืจ ืฉื™ืœื•ื‘ื™ ื“ื’ืžื™ื ืœืœื ื”ื’ื‘ืœื”
463
+ - 6 ืืกื˜ืจื˜ื’ื™ื•ืช: ืžื™ืœื•ื™ ืจืืฉื•ืŸ, ืขื’ื•ืœ, ื›ื•ื— ืžืฉืชื™ ื‘ื—ื™ืจื•ืช, ืืงืจืื™, ืคื—ื•ืช ื‘ืฉื™ืžื•ืฉ, ืื•ืคื˜ื™ืžื™ื–ืฆื™ื™ืช ืขืœื•ืช
464
+ - ืฉืชืฃ ืฉื™ืœื•ื‘ื™ื ื‘ื™ืŸ ืžื›ืฉื™ืจื™ื ืขื Cloud Sync
465
+
466
+ ### ๐Ÿฅ ืœื•ื— ืžื—ื•ื•ื ื™ื ืœื‘ืจื™ืื•ืช
467
+
468
+ - ืžืฆื‘ ืžืขืจื›ืช (ื–ืžืŸ ืคืขื™ืœื•ืช, ื’ืจืกื”, ืฉื™ืžื•ืฉ ื‘ื–ื™ื›ืจื•ืŸ)
469
+ - ืžืฆื‘ื™ ืžืคืกืง ืœื›ืœ ืกืคืง (ืกื’ื•ืจ/ืคืชื•ื—/ื—ืฆื™ ืคืชื•ื—)
470
+ - ืžืฆื‘ ืžื’ื‘ืœืช ืชืขืจื™ืฃ ื•ื ืขื™ืœื” ืืงื˜ื™ื‘ื™ืช
471
+ - ืกื˜ื˜ื™ืกื˜ื™ืงืช ืžื˜ืžื•ืŸ ื—ืชื™ืžื”
472
+ - ื˜ืœืžื˜ืจื™ื™ืช ืื—ื–ื•ืจ (p50/p95/p99) + ืžื˜ืžื•ืŸ ืคืงื•ื“ื•ืช
473
+ - ืืคืก ืžืฆื‘ ื‘ืจื™ืื•ืชื™ ื‘ืœื—ื™ืฆื” ืื—ืช
474
+
475
+ ### ๐Ÿ”ง ืžื’ืจืฉ ืžืฉื—ืงื™ื ืœืžืชืจื’ืžื™ื
476
+
477
+ OmniRoute ื›ื•ืœืœ ืžื’ืจืฉ ืžืฉื—ืงื™ ืžืชืจื’ืžื™ื ืžื•ื‘ื ื” ืจื‘ ืขื•ืฆืžื” ืขื **4 ืžืฆื‘ื™ื** ืœื ื™ืคื•ื™ ื‘ืื’ื™ื, ื‘ื“ื™ืงื” ื•ื ื™ื˜ื•ืจ ืชืจื’ื•ืžื™ API:
478
+
479
+ | ืžืฆื‘ | ืชื™ืื•ืจ |
480
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
481
+ | **๐Ÿ’ป ืžื’ืจืฉ ืžืฉื—ืงื™ื** | ืชืจื’ื•ื ืคื•ืจืžื˜ ื™ืฉื™ืจ - ื”ื“ื‘ืง ื›ืœ ื’ื•ืฃ ื‘ืงืฉืช API ื•ืจืื” ื‘ืื•ืคืŸ ืžื™ื™ื“ื™ ื›ื™ืฆื“ OmniRoute ืžืชืจื’ื ืื•ืชื• ื‘ื™ืŸ ืคื•ืจืžื˜ื™ื ืฉืœ ืกืคืงื™ื (OpenAI โ†” Claude โ†” Gemini โ†” Responses API). ื›ื•ืœืœ ืชื‘ื ื™ื•ืช ืœื“ื•ื’ืžื” ื•ื–ื™ื”ื•ื™ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ืคื•ืจืžื˜ื™ื. |
482
+ | **๐Ÿ’ฌ ื‘ื•ื“ืง ืฆ'ืื˜** | ืฉืœื— ื‘ืงืฉื•ืช ืฆ'ืื˜ ืืžื™ืชื™ื•ืช ื“ืจืš OmniRoute ื•ืจืื” ืืช ื”ืžืกืœื•ืœ ื”ืžืœื ื”ืœื•ืš ื•ืฉื•ื‘: ื”ืงืœื˜ ืฉืœืš, ื”ื‘ืงืฉื” ื”ืžืชื•ืจื’ืžืช, ืชื’ื•ื‘ืช ื”ืกืคืง ื•ื”ืชื’ื•ื‘ื” ื”ืžืชื•ืจื’ืžืช ื—ื–ืจื”. ืœื ื™ืกื•ืœื ื‘ืคื– ืขื‘ื•ืจ ืื™ืžื•ืช ื ื™ืชื•ื‘ ืžืฉื•ืœื‘. |
483
+ | **๐Ÿงช ืกืคืกืœ ืžื‘ื—ืŸ** | ืžืฆื‘ ื‘ื“ื™ืงืช ืืฆื•ื•ื” - ื”ื’ื“ื™ืจื• ืžืงืจื™ ื‘ื“ื™ืงื” ืžืจื•ื‘ื™ื ืขื ืชืฉื•ืžื•ืช ื•ืชืคื•ืงื•ืช ืฆืคื•ื™ื•ืช ืฉื•ื ื•ืช, ื”ืคืขืœ ืืช ื›ื•ืœื ื‘ื‘ืช ืื—ืช ื•ื”ืฉื•ื•ื” ืชื•ืฆืื•ืช ื‘ื™ืŸ ืกืคืงื™ื ื•ื“ื’ืžื™ื. |
484
+ | **๐Ÿ“ฑ ืฆื’ ื—ื™** | ื ื™ื˜ื•ืจ ื‘ืงืฉื•ืช ื‘ื–ืžืŸ ืืžืช - ืฆืคื” ื‘ื‘ืงืฉื•ืช ื ื›ื ืกื•ืช ื›ืฉื”ืŸ ื–ื•ืจืžื•ืช ื“ืจืš OmniRoute, ืจืื” ืชืจื’ื•ืžื™ ืคื•ืจืžื˜ื™ื ื”ืžืชืจื—ืฉื™ื ื‘ืฉื™ื“ื•ืจ ื—ื™ ื•ื–ื™ื”ื•ื™ ื‘ืขื™ื•ืช ื‘ืื•ืคืŸ ืžื™ื™ื“ื™. |
485
+
486
+ **ื’ื™ืฉื”:** ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ืžืชืจื’ื (ืกืจื’ืœ ืฆื“)
487
+
488
+ ### ๐Ÿ’พ ืกื ื›ืจื•ืŸ ืขื ืŸ
489
+
490
+ - ืกื ื›ืจื•ืŸ ืกืคืงื™ื, ืฉื™ืœื•ื‘ื™ื ื•ื”ื’ื“ืจื•ืช ื‘ื™ืŸ ืžื›ืฉื™ืจื™ื
491
+ - ืกื ื›ืจื•ืŸ ืจืงืข ืื•ื˜ื•ืžื˜ื™
492
+ - ืื—ืกื•ืŸ ืžื•ืฆืคืŸ ืžืื•ื‘ื˜ื—
493
+
494
+ </details>
495
+
496
+ ---
497
+
498
+ ## ๐Ÿ“– ืžื“ืจื™ืš ื”ืชืงื ื”
499
+
500
+ <details>
501
+ <summary><b>๐Ÿ’ณ ืกืคืงื™ ืžื ื•ื™ื™ื</b></summary>
502
+
503
+ ### ืงื•ื“ ืงืœื•ื“ (ืคืจื•/ืžืงืก)
504
+
505
+ ```bash
506
+ Dashboard โ†’ Providers โ†’ Connect Claude Code
507
+ โ†’ OAuth login โ†’ Auto token refresh
508
+ โ†’ 5-hour + weekly quota tracking
509
+
510
+ Models:
511
+ cc/claude-opus-4-6
512
+ cc/claude-sonnet-4-5-20250929
513
+ cc/claude-haiku-4-5-20251001
514
+ ```
515
+
516
+ **ื˜ื™ืค ืžืงืฆื•ืขืŸ:** ื”ืฉืชืžืฉ ื‘-Opus ืœืžืฉื™ืžื•ืช ืžื•ืจื›ื‘ื•ืช, ื‘ืกื•ื ื˜ ืœืžื”ื™ืจื•ืช. OmniRoute ืขื•ืงื‘ ืื—ืจ ืžื›ืกื” ืœื›ืœ ื“ื’ื!
517
+
518
+ ### OpenAI Codex (ืคืœื•ืก/ืคืจื•)
519
+
520
+ ```bash
521
+ Dashboard โ†’ Providers โ†’ Connect Codex
522
+ โ†’ OAuth login (port 1455)
523
+ โ†’ 5-hour + weekly reset
524
+
525
+ Models:
526
+ cx/gpt-5.2-codex
527
+ cx/gpt-5.1-codex-max
528
+ ```
529
+
530
+ ### Gemini CLI (180K ื‘ื—ื™ื ื ืœื—ื•ื“ืฉ!)
531
+
532
+ ```bash
533
+ Dashboard โ†’ Providers โ†’ Connect Gemini CLI
534
+ โ†’ Google OAuth
535
+ โ†’ 180K completions/month + 1K/day
536
+
537
+ Models:
538
+ gc/gemini-3-flash-preview
539
+ gc/gemini-2.5-pro
540
+ ```
541
+
542
+ **ื”ืขืจืš ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ:** ืฉื›ื‘ืช ื—ื™ื ื ืขื ืงื™ืช! ื”ืฉืชืžืฉ ื‘ื–ื” ืœืคื ื™ ืฉื›ื‘ื•ืช ื‘ืชืฉืœื•ื.
543
+
544
+ ### GitHub Copilot
545
+
546
+ ```bash
547
+ Dashboard โ†’ Providers โ†’ Connect GitHub
548
+ โ†’ OAuth via GitHub
549
+ โ†’ Monthly reset (1st of month)
550
+
551
+ Models:
552
+ gh/gpt-5
553
+ gh/claude-4.5-sonnet
554
+ gh/gemini-3-pro
555
+ ```
556
+
557
+ </details>
558
+
559
+ <details>
560
+ <summary><b>๐Ÿ”‘ ืกืคืงื™ ืžืคืชื— API</b></summary>
561
+
562
+ ### NVIDIA NIM (1000 ืงืจื“ื™ื˜ื™ื ื‘ื—ื™ื ื!)
563
+
564
+ 1. ื”ื™ืจืฉื: [build.nvidia.com](https://build.nvidia.com)
565
+ 2. ืงื‘ืœ ืžืคืชื— API ื‘ื—ื™ื ื (ื›ื•ืœืœ 1000 ืงืจื“ื™ื˜ื™ื ืœื”ืกืงื”)
566
+ 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืกืคืง โ† NVIDIA NIM:
567
+ - ืžืคืชื— API: `nvapi-your-key`
568
+
569
+ **ื“ื’ืžื™ื:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` ื•ืขื•ื“ 50+
570
+
571
+ **ื˜ื™ืค ืžืงืฆื•ืขื™:** API ืชื•ืื OpenAI - ืขื•ื‘ื“ ื‘ืฆื•ืจื” ื—ืœืงื” ืขื ืชืจื’ื•ื ื”ืคื•ืจืžื˜ ืฉืœ OmniRoute!
572
+
573
+ ### DeepSeek
574
+
575
+ 1. ื”ื™ืจืฉื: [platform.deepseek.com](https://platform.deepseek.com)
576
+ 2. ืงื‘ืœ ืžืคืชื— API
577
+ 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืกืคืง โ† DeepSeek
578
+
579
+ **ื“ื’ืžื™ื:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
580
+
581
+ ### Groq (ืจืžื” ื—ื™ื ื ื–ืžื™ื ื”!)
582
+
583
+ 1. ื”ื™ืจืฉื: [console.groq.com](https://console.groq.com)
584
+ 2. ืงื‘ืœ ืžืคืชื— API (ื›ืœื•ืœ ืฉื›ื‘ืช ื—ื™ื ื)
585
+ 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืกืคืง โ† Groq
586
+
587
+ **ื“ื’ืžื™ื:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
588
+
589
+ **ื˜ื™ืค ืžืงืฆื•ืขื™:** ื”ืกืงื” ืžื”ื™ืจื” ื‘ืžื™ื•ื—ื“ - ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ ืœืงื™ื“ื•ื“ ื‘ื–ืžืŸ ืืžืช!
590
+
591
+ ### OpenRouter (100+ ื“ื’ืžื™ื)
592
+
593
+ 1. ื”ื™ืจืฉื: [openrouter.ai](https://openrouter.ai)
594
+ 2. ืงื‘ืœ ืžืคืชื— API
595
+ 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืกืคืง โ† OpenRouter
596
+
597
+ **ื“ื’ืžื™ื:** ื’ื™ืฉื” ืœ-100+ ื“ื’ืžื™ื ืžื›ืœ ื”ืกืคืงื™ื ื”ื’ื“ื•ืœื™ื ื‘ืืžืฆืขื•ืช ืžืคืชื— API ื™ื—ื™ื“.
598
+
599
+ </details>
600
+
601
+ <details>
602
+ <summary><b>๐Ÿ’ฐ ืกืคืงื™ื ื–ื•ืœื™ื (ื’ื™ื‘ื•ื™)</b></summary>
603
+
604
+ ### GLM-4.7 (ืื™ืคื•ืก ื™ื•ืžื™, $0.6/1 ืžื™ืœื™ื•ืŸ)
605
+
606
+ 1. ื”ื™ืจืฉื: [Zhipu AI](https://open.bigmodel.cn/)
607
+ 2. ืงื‘ืœ ืžืคืชื— API ืž-Coding Plan
608
+ 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืžืคืชื— API:
609
+ - ืกืคืง: `glm`
610
+ - ืžืคืชื— API: `your-key`
611
+
612
+ **ื”ืฉืชืžืฉ:** `glm/glm-4.7`
613
+
614
+ **ื˜ื™ืค ืœืžืงืฆื•ืขื ื™ื:** ืชื•ื›ื ื™ืช ืงื™ื“ื•ื“ ืžืฆื™ืขื” ืžื›ืกื” ืฉืœ 3ร— ื‘ืขืœื•ืช ืฉืœ 1/7! ืื™ืคื•ืก ื›ืœ ื™ื•ื 10:00 ื‘ื‘ื•ืงืจ.
615
+
616
+ ### MiniMax M2.1 (ืื™ืคื•ืก ืฉืœ 5 ืฉืขื•ืช, $0.20/1 ืžื™ืœื™ื•ืŸ ื“ื•ืœืจ)
617
+
618
+ 1. ื”ื™ืจืฉื: [MiniMax](https://www.minimax.io/)
619
+ 2. ืงื‘ืœ ืžืคืชื— API
620
+ 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืžืคืชื— API
621
+
622
+ **ื”ืฉืชืžืฉ:** `minimax/MiniMax-M2.1`
623
+
624
+ **ื˜ื™ืค ืžืงืฆื•ืขื™:** ื”ืืคืฉืจื•ืช ื”ื–ื•ืœื” ื‘ื™ื•ืชืจ ืœื”ืงืฉืจ ืืจื•ืš (1 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื)!
625
+
626
+ ### Kimi K2 (ื“ื™ืจื” ืฉืœ $9 ืœื—ื•ื“ืฉ)
627
+
628
+ 1. ื”ื™ืจืฉื: [Moonshot AI](https://platform.moonshot.ai/)
629
+ 2. ืงื‘ืœ ืžืคืชื— API
630
+ 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืžืคืชื— API
631
+
632
+ **ื”ืฉืชืžืฉ:** `kimi/kimi-latest`
633
+
634
+ **ื˜ื™ืค ืžืงืฆื•ืขื™:** 9$ ืงื‘ื•ืข ืœื—ื•ื“ืฉ ืขื‘ื•ืจ 10 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื = 0.90$/1 ืžื™ืœื™ื•ืŸ ืขืœื•ืช ืืคืงื˜ื™ื‘ื™ืช!
635
+
636
+ </details>
637
+
638
+ <details>
639
+ <summary><b>๐Ÿ†“ ืกืคืงื™ื ื‘ื—ื™ื ื (ื’ื™ื‘ื•ื™ ื—ื™ืจื•ื)</b></summary>
640
+
641
+ ### iFlow (8 ื“ื’ืžื™ื ื‘ื—ื™ื ื)
642
+
643
+ ```bash
644
+ Dashboard โ†’ Connect iFlow
645
+ โ†’ iFlow OAuth login
646
+ โ†’ Unlimited usage
647
+
648
+ Models:
649
+ if/kimi-k2-thinking
650
+ if/qwen3-coder-plus
651
+ if/glm-4.7
652
+ if/minimax-m2
653
+ if/deepseek-r1
654
+ ```
655
+
656
+ ### Qwen (3 ื“ื’ืžื™ื ื‘ื—ื™ื ื)
657
+
658
+ ```bash
659
+ Dashboard โ†’ Connect Qwen
660
+ โ†’ Device code authorization
661
+ โ†’ Unlimited usage
662
+
663
+ Models:
664
+ qw/qwen3-coder-plus
665
+ qw/qwen3-coder-flash
666
+ ```
667
+
668
+ ### ืงื™ืจื• (ืงืœื•ื“ ื‘ื—ื™ื ื)
669
+
670
+ ```bash
671
+ Dashboard โ†’ Connect Kiro
672
+ โ†’ AWS Builder ID or Google/GitHub
673
+ โ†’ Unlimited usage
674
+
675
+ Models:
676
+ kr/claude-sonnet-4.5
677
+ kr/claude-haiku-4.5
678
+ ```
679
+
680
+ </details>
681
+
682
+ <details>
683
+ <summary><b>๐ŸŽจ ืฆื•ืจ ืฉื™ืœื•ื‘ื™ื</b></summary>
684
+
685
+ ### ื“ื•ื’ืžื” 1: ื”ื’ื“ืœืช ืžื ื•ื™ โ† ื’ื™ื‘ื•ื™ ื–ื•ืœ
686
+
687
+ ```
688
+ Dashboard โ†’ Combos โ†’ Create New
689
+
690
+ Name: premium-coding
691
+ Models:
692
+ 1. cc/claude-opus-4-6 (Subscription primary)
693
+ 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
694
+ 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
695
+
696
+ Use in CLI: premium-coding
697
+ ```
698
+
699
+ ### ื“ื•ื’ืžื” 2: ื—ื™ื ื ื‘ืœื‘ื“ (ืขืœื•ืช ืืคืก)
700
+
701
+ ```
702
+ Name: free-combo
703
+ Models:
704
+ 1. gc/gemini-3-flash-preview (180K free/month)
705
+ 2. if/kimi-k2-thinking (unlimited)
706
+ 3. qw/qwen3-coder-plus (unlimited)
707
+
708
+ Cost: $0 forever!
709
+ ```
710
+
711
+ </details>
712
+
713
+ <details>
714
+ <summary><b>๐Ÿ”ง ืฉื™ืœื•ื‘ CLI</b></summary>
715
+
716
+ ### ืกืžืŸ IDE
717
+
718
+ ```
719
+ Settings โ†’ Models โ†’ Advanced:
720
+ OpenAI API Base URL: http://localhost:20128/v1
721
+ OpenAI API Key: [from OmniRoute dashboard]
722
+ Model: cc/claude-opus-4-6
723
+ ```
724
+
725
+ ### ืงืœื•ื“ ืงื•ื“
726
+
727
+ ื”ืฉืชืžืฉ ื‘ื“ืฃ **ื›ืœื™ CLI** ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืขื‘ื•ืจ ืชืฆื•ืจื” ื‘ืœื—ื™ืฆื” ืื—ืช, ืื• ืขืจื•ืš ืืช `~/.claude/settings.json` ื‘ืื•ืคืŸ ื™ื“ื ื™.
728
+
729
+ ### Codex CLI
730
+
731
+ ```bash
732
+ export OPENAI_BASE_URL="http://localhost:20128"
733
+ export OPENAI_API_KEY="your-omniroute-api-key"
734
+
735
+ codex "your prompt"
736
+ ```
737
+
738
+ ### OpenClaw
739
+
740
+ **ืืคืฉืจื•ืช 1 - ืœื•ื— ืžื—ื•ื•ื ื™ื (ืžื•ืžืœืฅ):**
741
+
742
+ ```
743
+ Dashboard โ†’ CLI Tools โ†’ OpenClaw โ†’ Select Model โ†’ Apply
744
+ ```
745
+
746
+ **ืืคืฉืจื•ืช 2 โ€” ื™ื“ื ื™:** ืขืจื•ืš `~/.openclaw/openclaw.json`:
747
+
748
+ ```json
749
+ {
750
+ "models": {
751
+ "providers": {
752
+ "omniroute": {
753
+ "baseUrl": "http://127.0.0.1:20128/v1",
754
+ "apiKey": "sk_omniroute",
755
+ "api": "openai-completions"
756
+ }
757
+ }
758
+ }
759
+ }
760
+ ```
761
+
762
+ > **ื”ืขืจื”:** OpenClaw ืขื•ื‘ื“ ืจืง ืขื OmniRoute ืžืงื•ืžื™. ื”ืฉืชืžืฉ ื‘-`127.0.0.1` ื‘ืžืงื•ื ื‘-`localhost` ื›ื“ื™ ืœื”ื™ืžื ืข ืžื‘ืขื™ื•ืช ื‘ืจื–ื•ืœื•ืฆื™ื” ืฉืœ IPv6.
763
+
764
+ ### Cline / Continue / RooCode
765
+
766
+ ```
767
+ Settings โ†’ API Configuration:
768
+ Provider: OpenAI Compatible
769
+ Base URL: http://localhost:20128/v1
770
+ API Key: [from OmniRoute dashboard]
771
+ Model: if/kimi-k2-thinking
772
+ ```
773
+
774
+ </details>
775
+
776
+ ---
777
+
778
+ ## ๐Ÿ“Š ื“ื’ืžื™ื ื–ืžื™ื ื™ื
779
+
780
+ <details>
781
+ <summary><b>ื”ืฆื’ ืืช ื›ืœ ื”ื“ื’ืžื™ื ื”ื–ืžื™ื ื™ื</b></summary>
782
+
783
+ **ืงื•ื“ ืงืœื•ื“ (`cc/`)** - ืคืจื•/ืžืงืกื™ืžื•ื:
784
+
785
+ - `cc/claude-opus-4-6`
786
+ - `cc/claude-sonnet-4-5-20250929`
787
+ - `cc/claude-haiku-4-5-20251001`
788
+
789
+ **ืงื•ื“ืงืก (`cx/`)** - ืคืœื•ืก/ื™ืชืจื•ื ื•ืช:
790
+
791
+ - `cx/gpt-5.2-codex`
792
+ - `cx/gpt-5.1-codex-max`
793
+
794
+ **Gemini CLI (`gc/`)** - ื‘ื—ื™ื ื:
795
+
796
+ - `gc/gemini-3-flash-preview`
797
+ - `gc/gemini-2.5-pro`
798
+
799
+ **GitHub Copilot (`gh/`)**:
800
+
801
+ - `gh/gpt-5`
802
+ - `gh/claude-4.5-sonnet`
803
+
804
+ **NVIDIA NIM (`nvidia/`)** - ื–ื™ื›ื•ื™ื™ื ื‘ื—ื™ื ื:
805
+
806
+ - `nvidia/llama-3.3-70b-instruct`
807
+ - `nvidia/mistral-7b-instruct`
808
+ - 50+ ื“ื’ืžื™ื ื ื•ืกืคื™ื ื‘-[build.nvidia.com](https://build.nvidia.com)
809
+
810
+ **GLM (`glm/`)** - $0.6/1 ืžื™ืœื™ื•ืŸ:
811
+
812
+ - `glm/glm-4.7`
813
+
814
+ **MiniMax (`minimax/`)** - $0.2/1 ืžื™ืœื™ื•ืŸ:
815
+
816
+ - `minimax/MiniMax-M2.1`
817
+
818
+ **iFlow (`if/`)** - ื‘ื—ื™ื ื:
819
+
820
+ - `if/kimi-k2-thinking`
821
+ - `if/qwen3-coder-plus`
822
+ - `if/deepseek-r1`
823
+ - `if/glm-4.7`
824
+ - `if/minimax-m2`
825
+
826
+ **Qwen (`qw/`)** - ื‘ื—ื™ื ื:
827
+
828
+ - `qw/qwen3-coder-plus`
829
+ - `qw/qwen3-coder-flash`
830
+
831
+ **Kiro (`kr/`)** - ื‘ื—ื™ื ื:
832
+
833
+ - `kr/claude-sonnet-4.5`
834
+ - `kr/claude-haiku-4.5`
835
+
836
+ **OpenRouter (`or/`)** - 100+ ื“ื’ืžื™ื:
837
+
838
+ - `or/anthropic/claude-4-sonnet`
839
+ - `or/google/gemini-2.5-pro`
840
+ - ื›ืœ ื“ื’ื ืž-[openrouter.ai/models](https://openrouter.ai/models)
841
+
842
+ </details>
843
+
844
+ ---
845
+
846
+ ## ๐Ÿงช ื”ืขืจื›ื•ืช (ื”ืขืจื›ื•ืช)
847
+
848
+ OmniRoute ื›ื•ืœืœ ืžืกื’ืจืช ื”ืขืจื›ื” ืžื•ื‘ื ื™ืช ืœื‘ื“ื™ืงืช ืื™ื›ื•ืช ืชื’ื•ื‘ืช LLM ืžื•ืœ ืกื˜ ืžื•ื–ื”ื‘. ื’ืฉ ืืœื™ื• ื“ืจืš **Analytics โ†’ Evals** ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื.
849
+
850
+ ### ืกื˜ ืžื•ื–ื”ื‘ ืžื•ื‘ื ื”
851
+
852
+ ื”-"OmniRoute Golden Set" ื”ื ื˜ืขืŸ ืžืจืืฉ ืžื›ื™ืœ 10 ืžืงืจื™ ื‘ื“ื™ืงื” ื”ืžื›ืกื™ื:
853
+
854
+ - ื‘ืจื›ื•ืช, ืžืชืžื˜ื™ืงื”, ื’ื™ืื•ื’ืจืคื™ื”, ื™ืฆื™ืจืช ืงื•ื“
855
+ - ืชืื™ืžื•ืช ืœืคื•ืจืžื˜ JSON, ืชืจื’ื•ื, ืกื™ืžื•ืŸ
856
+ - ืกื™ืจื•ื‘ ื‘ื˜ื™ื—ื•ืชื™ (ืชื•ื›ืŸ ืžื–ื™ืง), ืกืคื™ืจื”, ื”ื™ื’ื™ื•ืŸ ื‘ื•ืœื™ืื ื™
857
+
858
+ ### ืืกื˜ืจื˜ื’ื™ื•ืช ื”ืขืจื›ื”
859
+
860
+ | ืืกื˜ืจื˜ื’ื™ื” | ืชื™ืื•ืจ | ื“ื•ื’ืžื” |
861
+ | ---------- | ------------------------------------------ | -------------------------------- |
862
+ | `exact` | ื”ืคืœื˜ ื—ื™ื™ื‘ ืœื”ืชืื™ื ื‘ื“ื™ื•ืง | `"4"` |
863
+ | `contains` | ื”ืคืœื˜ ื—ื™ื™ื‘ ืœื”ื›ื™ืœ ืชืช ืžื—ืจื•ื–ืช (ืœื ืชืœื•ื™ ืจื™ืฉื™ื•ืช) | `"Paris"` |
864
+ | `regex` | ื”ืคืœื˜ ื—ื™ื™ื‘ ืœื”ืชืื™ื ืœื“ืคื•ืก ื”ืจืงืก | `"1.*2.*3"` |
865
+ | `custom` | ืคื•ื ืงืฆื™ื™ืช JS ืžื•ืชืืžืช ืžื—ื–ื™ืจื” true/false | `(output) => output.length > 10` |
866
+
867
+ ---
868
+
869
+ ## ๐Ÿ” OAuth em Servidor Remoto (ื”ื’ื“ืจืช OAuth ืžืจื—ื•ืง)
870
+
871
+ <a name="oauth-em-servidor-remoto"></a>
872
+
873
+ > **โš ๏ธ ื—ืฉื•ื‘ ืขื‘ื•ืจ ืฉื™ืžื•ืฉ ื‘-OmniRoute ืขื ืžืจื—ื•ืง VPS/Docker/ืฉืจืช**
874
+
875
+ ### ื”ืื ืืคืฉืจ ืœืขืฉื•ืช ืื ื˜ื™ ื›ื‘ื™ื“ื” / CLI ืžื–ืœ ืชืื•ืžื™ื ืขืœ ืฉื™ืจื•ืชื™ื ืžืจื•ื—ืงื™ื?
876
+
877
+ ืฉื™ืžื•ืฉ ื‘-**Antigravity** ื•-**Gemini CLI** ื‘ืฉื™ืžื•ืฉ ื‘-**Google OAuth 2.0** ืขื‘ื•ืจ ืื•ื˜ื ื˜ื™ืงื”. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs prรฉ-cadastradas no Google Cloud Console do aplicativo.
878
+
879
+ As credenciais OAuth embutidas no OmniRoute estรฃo cadastradas **apenas para `localhost`**. Quando vocรช acessa o OmniRoute em um servidor remoto (ืœื“ื•ื’ืžื”: `https://omniroute.meuservidor.com`), o Google rejeita a autenticaรงรฃo com:
880
+
881
+ ```
882
+ Error 400: redirect_uri_mismatch
883
+ ```
884
+
885
+ ### ืคืชืจื•ืŸ: ื”ื’ื“ืจ ืืช ื”ืชืฆื•ืจื” ืฉืœ OAuth
886
+
887
+ ืงืจื ื‘ื“ื™ื•ืง ืืช **OAuth 2.0 Client ID** ืœืœื Google Cloud Console com a URI do seu service.
888
+
889
+ #### ืคืกื• ืืคืก
890
+
891
+ **1. ื’ื™ืฉื” ืœ-Google Cloud Console**
892
+
893
+ ืื‘ืจื”: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
894
+
895
+ **2. Crie um novo OAuth 2.0 ืžื–ื”ื” ืœืงื•ื—**
896
+
897
+ - ืœื—ืฅ ืขืœ **"+ ืฆื•ืจ ืื™ืฉื•ืจื™ื"** โ†’ **"ื–ื™ื”ื•ื™ ืœืงื•ื— OAuth"**
898
+ - ื˜ื™ืคื• ื“ื” ืืคืœื™ืงื˜ื™ื‘ื™: **"ื™ื™ืฉื•ื ืื™ื ื˜ืจื ื˜"**
899
+ - ืฉื: escolha qualquer nome (ืœื“ื•ื’ืžื”: `OmniRoute Remote`)
900
+
901
+ **3. Adicone ื›ื›ืชื•ื‘ื•ืช URI ืžื•ืจืฉื•ืช ืœื”ืคื ื™ื” ืžื—ื“ืฉ**
902
+
903
+ ืื™ืŸ ืงืžืคื• **"ื›ืชื•ื‘ื•ืช URI ืžื•ืจืฉื•ืช ืœื”ืคื ื™ื” ืžื—ื“ืฉ"**, adicione:
904
+
905
+ ```
906
+ https://seu-servidor.com/callback
907
+ ```
908
+
909
+ > Substitua `seu-servidor.com` pelo domรญnio ืื• IP do seu servidor (ื›ื•ืœืœ ื porta se necessรกrio, ืœืžืฉืœ: `http://45.33.32.156:20128/callback`).
910
+
911
+ **4. ืฉืžื•ืจ ืืช ื”ืขื•ืชืง ื›-credenciais**
912
+
913
+ ืืครณืก ืงืจื™ืืจ, o Google mostrarรก o **ื–ื™ื”ื•ื™ ืœืงื•ื—** ืื• **ืกื•ื“ ืœืงื•ื—**.
914
+
915
+ **5. ื”ื’ื“ืจ ื›-variรกveis de ambiente**
916
+
917
+ No seu `.env` (ou nas variรกveis de ambiente do Docker):
918
+
919
+ ```bash
920
+ # Para Antigravity:
921
+ ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
922
+ ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
923
+
924
+ # Para Gemini CLI:
925
+ GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
926
+ GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
927
+ GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
928
+ ```
929
+
930
+ **6. Reinicie o OmniRoute**
931
+
932
+ ```bash
933
+ # Se usando npm:
934
+ npm run dev
935
+
936
+ # Se usando Docker:
937
+ docker restart omniroute
938
+ ```
939
+
940
+ **7. Tente conectar novamente**
941
+
942
+ ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ืกืคืงื™ื โ† ืื ื˜ื™ ื›ื‘ื™ื“ื” (ืื• Gemini CLI) โ† OAuth
943
+
944
+ Agora o Google redirecionarรก corretamente para `https://seu-servidor.com/callback` e autenticaรงรฃo funcionarรก.
945
+
946
+ ---
947
+
948
+ ### ื–ืžื ื™ ืคืชืจื•ืŸ ืœืขืงื™ืคืช ื”ื‘ืขื™ื”
949
+
950
+ Se nรฃo quiser criar credenciais prรณprias agora, ainda รฉ possรญvel usar o fluxo **manual de URL**:
951
+
952
+ 1. O OmniRoute abrirรก a URL de autorizaรงรฃo do Google
953
+ 2. Apรณs vocรช autorizar, o Google tentarรก redirecionar para `localhost` (que falha no servidor remoto)
954
+ 3. **ื”ืขืชืง ื›ืชื•ื‘ืช URL ืžืœืื”** da barra de endereรงo do seu ื“ืคื“ืคืŸ (mesmo que a pรกgina nรฃo carregue)
955
+ 4. Cole essa URL no campo que aparece no modal de conexรฃo do OmniRoute
956
+ 5. ืœื—ืฅ ืขืœ **"ื”ืชื—ื‘ืจ"**
957
+
958
+ > ืคืชืจื•ืŸ ืขืงื™ืคืช ื”ื‘ืขื™ื” ืื• ืงื•ื“ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ื›ืชื•ื‘ืช ื”-URL ืื• ืขืฆืžืื™ืช ืœื”ืคื ื•ืช ืืช ื”ื—ืฉื‘ื•ืŸ ืื• ืœื.
959
+
960
+ ---
961
+
962
+ ## ๐Ÿ› ืคืชืจื•ืŸ ื‘ืขื™ื•ืช
963
+
964
+ <details>
965
+ <summary><b>ืœื—ืฅ ื›ื“ื™ ืœื”ืจื—ื™ื‘ ืืช ื”ืžื“ืจื™ืš ืœืคืชืจื•ืŸ ื‘ืขื™ื•ืช</b></summary>
966
+
967
+ **"ืžื•ื“ืœ ื”ืฉืคื” ืœื ืกื™ืคืง ื”ื•ื“ืขื•ืช"**
968
+
969
+ - ืžื™ืฆืชื” ืžื›ืกืช ื”ืกืคืง โ† ื‘ื“ื•ืง ืืช ืขื•ืงื‘ ื”ืžื›ืกื•ืช ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื
970
+ - ืคืชืจื•ืŸ: ื”ืฉืชืžืฉ ื‘-combo fallback ืื• ืขื‘ื•ืจ ืœืฉื›ื‘ื” ื–ื•ืœื” ื™ื•ืชืจ
971
+
972
+ **ื”ื’ื‘ืœืช ืชืขืจื™ืคื™ื**
973
+
974
+ - ืžื›ืกืช ืžื ื•ื™ื™ื ื ื’ืžืจืช โ† Fallback ืœ-GLM/MiniMax
975
+ - ื”ื•ืกืฃ ืฉื™ืœื•ื‘: `cc/claude-opus-4-6 โ†’ glm/glm-4.7 โ†’ if/kimi-k2-thinking`
976
+
977
+ **ืคื’ ืชื•ืงืคื• ืฉืœ ืืกื™ืžื•ืŸ OAuth**
978
+
979
+ - ืจืขื ื•ืŸ ืื•ื˜ื•ืžื˜ื™ ืขืœ ื™ื“ื™ OmniRoute
980
+ - ืื ื”ื‘ืขื™ื•ืช ื ืžืฉื›ื•ืช: ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ืกืคืง โ† ื”ืชื—ื‘ืจ ืžื—ื“ืฉ
981
+
982
+ **ืขืœื•ื™ื•ืช ื’ื‘ื•ื”ื•ืช**
983
+
984
+ - ื‘ื“ื•ืง ืกื˜ื˜ื™ืกื˜ื™ืงืช ืฉื™ืžื•ืฉ ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื โ† ืขืœื•ื™ื•ืช
985
+ - ื”ื—ืœืฃ ืืช ื”ื“ื’ื ื”ืจืืฉื™ ืœ-GLM/MiniMax
986
+ - ื”ืฉืชืžืฉ ื‘ืฉื›ื‘ื” ื—ื™ื ืžื™ืช (Gemini CLI, iFlow) ืขื‘ื•ืจ ืžืฉื™ืžื•ืช ืœื ืงืจื™ื˜ื™ื•ืช
987
+
988
+ **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื ืคืชื— ื‘ื™ืฆื™ืื” ืฉื’ื•ื™ื”**
989
+
990
+ - ื”ื’ื“ืจ `PORT=20128` ื•`NEXT_PUBLIC_BASE_URL=http://localhost:20128`
991
+
992
+ **ืฉื’ื™ืื•ืช ืกื ื›ืจื•ืŸ ื‘ืขื ืŸ**
993
+
994
+ - ืืžืช `BASE_URL` ื ืงื•ื“ื•ืช ืœืžื•ืคืข ื”ืจื™ืฆื” ืฉืœืš
995
+ - ืืžืช `CLOUD_URL` ื ืงื•ื“ื•ืช ืœื ืงื•ื“ืช ื”ืงืฆื” ื”ืฆืคื•ื™ื” ืฉืœืš ื‘ืขื ืŸ
996
+ - ืฉืžื•ืจ ืขืœ ืขืจื›ื™ `NEXT_PUBLIC_*` ืžื™ื•ืฉืจื™ื ืขื ืขืจื›ื™ ืฆื“ ื”ืฉืจืช
997
+
998
+ **ื”ื›ื ื™ืกื” ื”ืจืืฉื•ื ื” ืœื ืขื•ื‘ื“ืช**
999
+
1000
+ - ื‘ื“ื•ืง ืืช `INITIAL_PASSWORD` ื‘-`.env`
1001
+ - ืื ืœื ืžื•ื’ื“ืจืช, ืกื™ืกืžืช ื”ื—ืœืคื” ื”ื™ื `123456`
1002
+
1003
+ **ืœืœื ื™ื•ืžื ื™ ื‘ืงืฉื•ืช**
1004
+
1005
+ - ื”ื’ื“ืจ `ENABLE_REQUEST_LOGS=true` ื‘-`.env`
1006
+
1007
+ **ื‘ื“ื™ืงืช ื—ื™ื‘ื•ืจ ืžืจืื” "ืœื ื—ื•ืงื™" ืขื‘ื•ืจ ืกืคืงื™ื ืชื•ืืžื™ OpenAI**
1008
+
1009
+ - ืกืคืงื™ื ืจื‘ื™ื ืื™ื ื ื—ื•ืฉืคื™ื ื ืงื•ื“ืช ืงืฆื” `/models`
1010
+ - OmniRoute v1.0.6+ ื›ื•ืœืœ ืื™ืžื•ืช ื—ื•ื–ืจ ื‘ืืžืฆืขื•ืช ื”ืฉืœืžืช ืฆ'ืื˜
1011
+ - ื•ื“ื ืฉื›ืชื•ื‘ืช ื”ืืชืจ ื”ื‘ืกื™ืกื™ืช ื›ื•ืœืœืช ืืช ื”ืกื™ื•ืžืช `/v1`
1012
+
1013
+ </details>
1014
+
1015
+ ---
1016
+
1017
+ ## ๐Ÿ› ๏ธ Tech Stack
1018
+
1019
+ - **ื–ืžืŸ ืจื™ืฆื”**: Node.js 18โ€“22 LTS (โš ๏ธ Node.js 24+ **ืœื ื ืชืžืš** - `better-sqlite3` ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ืžืงื•ืจื™ื™ื ืื™ื ื ืชื•ืืžื™ื)
1020
+ - **ืฉืคื”**: TypeScript 5.9 โ€” **100% TypeScript** ืขืœ ืคื ื™ `src/` ื•`open-sse/` (v1.0.6)
1021
+ - **ืžืกื’ืจืช**: Next.js 16 + React 19 + Tailwind CSS 4
1022
+ - **ืžืกื“ ื ืชื•ื ื™ื**: LowDB (JSON) + SQLite (ืžืฆื‘ ืชื—ื•ื + ื™ื•ืžื ื™ proxy)
1023
+ - **ืกื˜ืจื™ืžื™ื ื’**: ืื™ืจื•ืขื™ื ืฉื ืฉืœื—ื• ืขืœ ื™ื“ื™ ืฉืจืช (SSE)
1024
+ - **ืื™ืฉื•ืจ**: OAuth 2.0 (PKCE) + JWT + ืžืคืชื—ื•ืช API
1025
+ - **ื‘ื“ื™ืงื•ืช**: ืจืฅ ืžื‘ื—ืŸ Node.js (ื‘ื“ื™ืงื•ืช 368+ ื™ื—ื™ื“ื•ืช)
1026
+ - **CI/CD**: ืคืขื•ืœื•ืช GitHub (ืคืจืกื•ื ืื•ื˜ื•ืžื˜ื™ ืฉืœ npm + Docker Hub ื‘ืฉื—ืจื•ืจ)
1027
+ - **ืืชืจ**: [omniroute.online](https://omniroute.online)
1028
+ - **ื—ื‘ื™ืœื”**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1029
+ - **ื“ื•ืงืจ**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1030
+ - **ื—ื•ืกืŸ**: ืžืคืกืง ืžืขื’ืœื™ื, ื’ื™ื‘ื•ื™ ืืงืกืคื•ื ื ืฆื™ืืœื™, ืขื“ืจ ื ื’ื“ ืจืขืžื™ื, ื–ื™ื•ืฃ TLS
1031
+
1032
+ ---
1033
+
1034
+ ## ๐Ÿ“– ืชื™ืขื•ื“
1035
+
1036
+ | ืžืกืžืš | ืชื™ืื•ืจ |
1037
+ | -------------------------------------------- | ----------------------------------------- |
1038
+ | [User Guide](docs/USER_GUIDE.md) | ืกืคืงื™ื, ืฉื™ืœื•ื‘ื™ื, ืฉื™ืœื•ื‘ CLI, ืคืจื™ืกื” |
1039
+ | [API Reference](docs/API_REFERENCE.md) | ื›ืœ ื ืงื•ื“ื•ืช ื”ืงืฆื” ืขื ื“ื•ื’ืžืื•ืช |
1040
+ | [Troubleshooting](docs/TROUBLESHOOTING.md) | ื‘ืขื™ื•ืช ื•ืคืชืจื•ื ื•ืช ื ืคื•ืฆื™ื |
1041
+ | [Architecture](docs/ARCHITECTURE.md) | ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžืขืจื›ืช ื•ืคื ื™ื |
1042
+ | [Contributing](CONTRIBUTING.md) | ืžืขืจืš ืคื™ืชื•ื— ื•ื”ื ื—ื™ื•ืช |
1043
+ | [OpenAPI Spec](docs/openapi.yaml) | ืžืคืจื˜ OpenAPI 3.0 |
1044
+ | [Security Policy](SECURITY.md) | ื“ื™ื•ื•ื— ืขืœ ืคื’ื™ืขื•ืช ื•ื ื”ืœื™ ืื‘ื˜ื—ื” |
1045
+ | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | ืžื“ืจื™ืš ืฉืœื: ื”ื’ื“ืจื•ืช VM + nginx + Cloudflare |
1046
+ | [Features Gallery](docs/FEATURES.md) | ืกื™ื•ืจ ื—ื–ื•ืชื™ ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืขื ืฆื™ืœื•ืžื™ ืžืกืš |
1047
+
1048
+ ### ๐Ÿ“ธ ืชืฆื•ื’ื” ืžืงื“ื™ืžื” ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื
1049
+
1050
+ <details>
1051
+ <summary><b>ืœื—ืฅ ื›ื“ื™ ืœืจืื•ืช ืฆื™ืœื•ืžื™ ืžืกืš ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื</b></summary>
1052
+
1053
+ | ืขืžื•ื“ | ืฆื™ืœื•ื ืžืกืš |
1054
+ | --------------- | ------------------------------------------------- |
1055
+ | **ืกืคืงื™ื** | ![Providers](docs/screenshots/01-providers.png) |
1056
+ | **ืฉื™ืœื•ื‘ื™ื** | ![Combos](docs/screenshots/02-combos.png) |
1057
+ | **ืื ืœื™ื˜ื™ืงื”** | ![Analytics](docs/screenshots/03-analytics.png) |
1058
+ | **ื‘ืจื™ืื•ืช** | ![Health](docs/screenshots/04-health.png) |
1059
+ | **ืžืชืจื’ื** | ![Translator](docs/screenshots/05-translator.png) |
1060
+ | **ื”ื’ื“ืจื•ืช** | ![Settings](docs/screenshots/06-settings.png) |
1061
+ | **ื›ืœื™ CLI** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1062
+ | **ื™ื•ืžื ื™ ืฉื™ืžื•ืฉ** | ![Usage](docs/screenshots/08-usage.png) |
1063
+ | **ื ืงื•ื“ืช ืงืฆื”** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1064
+
1065
+ </details>
1066
+
1067
+ ---
1068
+
1069
+ ## ๐Ÿ—บ๏ธ ืžืคืช ื“ืจื›ื™ื
1070
+
1071
+ ืœ-OmniRoute ื™ืฉ **210+ ืชื›ื•ื ื•ืช ืžืชื•ื›ื ื ื•ืช** ืœืื•ืจืš ืฉืœื‘ื™ ืคื™ืชื•ื— ืžืจื•ื‘ื™ื. ืœื”ืœืŸ ืชื—ื•ืžื™ ื”ืžืคืชื—:
1072
+
1073
+ | ืงื˜ื’ื•ืจื™ื” | ืชื›ื•ื ื•ืช ืžืชื•ื›ื ื ื•ืช | ื”ื‘ื”ืจื” |
1074
+ | --------------------- | --------------- | ---------------------------------------------------------------------------------------- |
1075
+ | ๐Ÿง  **ื ื™ืชื•ื‘ ื•ืžื•ื“ื™ืขื™ืŸ** | 25+ | ื ื™ืชื•ื‘ ืขื ื–ืžืŸ ื”ืื—ื–ื•ืจ ื”ื ืžื•ืš ื‘ื™ื•ืชืจ, ื ื™ืชื•ื‘ ืžื‘ื•ืกืก ืชื’ื™ื, ื‘ื“ื™ืงื” ืžื•ืงื“ืžืช ืฉืœ ืžื›ืกื”, ื‘ื—ื™ืจืช ื—ืฉื‘ื•ืŸ P2C |
1076
+ | ๐Ÿ”’ **ืื‘ื˜ื—ื” ื•ืชืื™ืžื•ืช** | 20+ | ื”ืงืฉื—ืช SSRF, ื”ืกื•ื•ืื” ืฉืœ ืื™ืฉื•ืจื™ื, ื”ื’ื‘ืœืช ืงืฆื‘ ืœื›ืœ ื ืงื•ื“ืช ืงืฆื”, ื”ื™ืงืฃ ืžืคืชื— ื ื™ื”ื•ืœ |
1077
+ | ๐Ÿ“Š **ืฆืคื™ื•ืช** | 15+ | ืื™ื ื˜ื’ืจืฆื™ื” ืฉืœ OpenTelemetry, ื ื™ื˜ื•ืจ ืžื›ืกื•ืช ื‘ื–ืžืŸ ืืžืช, ืžืขืงื‘ ืขืœื•ื™ื•ืช ืœื›ืœ ื“ื’ื |
1078
+ | ๐Ÿ”„ **ืฉื™ืœื•ื‘ื™ ืกืคืงื™ื** | 20+ | ืจื™ืฉื•ื ืžื•ื“ืœื™ื ื“ื™ื ืžื™ื™ื, ืฆื™ื ื•ืŸ ืกืคืงื™ื, Codex ืžืจื•ื‘ื” ื—ืฉื‘ื•ื ื•ืช, ื ื™ืชื•ื— ืžื›ืกืช Copilot |
1079
+ | โšก **ื‘ื™ืฆื•ืขื™ื** | 15+ | ืฉื›ื‘ืช ืžื˜ืžื•ืŸ ื›ืคื•ืœื”, ืžื˜ืžื•ืŸ ื”ื ื—ื™ื”, ืžื˜ืžื•ืŸ ืชื’ื•ื‘ื”, ืกื˜ืจื™ืžื™ื ื’ Keepalive, API ืืฆื•ื•ื” |
1080
+ | ๐ŸŒ **ืžืขืจื›ืช ืืงื•ืœื•ื’ื™ืช** | 10+ | WebSocket API, ื˜ืขื™ื ื” ื—ื•ื–ืจืช ืฉืœ ืชืฆื•ืจื”, ื—ื ื•ืช ืชืฆื•ืจื” ืžื‘ื•ื–ืจืช, ืžืฆื‘ ืžืกื—ืจื™ |
1081
+
1082
+ ### ๐Ÿ”œ ื‘ืงืจื•ื‘
1083
+
1084
+ - ๐Ÿ”— **ืฉื™ืœื•ื‘ OpenCode** - ืชืžื™ื›ื” ื‘ืกืคืง ืžืงื•ืจื™ ืขื‘ื•ืจ IDE ืงื™ื“ื•ื“ AI ืฉืœ OpenCode
1085
+ - ๐Ÿ”— **TRAE Integration** โ€” ืชืžื™ื›ื” ืžืœืื” ื‘ืžืกื’ืจืช ื”ืคื™ืชื•ื— ืฉืœ TRAE AI
1086
+ - ๐Ÿ“ฆ **ืืฆื•ื•ื” API** - ืขื™ื‘ื•ื“ ืืฆื•ื•ื” ืืกื™ื ื›ืจื•ื ื™ ืขื‘ื•ืจ ื‘ืงืฉื•ืช ื‘ื›ืžื•ืช ื’ื“ื•ืœื”
1087
+ - ๐ŸŽฏ **ื ื™ืชื•ื‘ ืžื‘ื•ืกืก ืชื’ื™ื** โ€” ื‘ืงืฉื•ืช ื ื™ืชื•ื‘ ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืชื’ื™ื ื•ืžื˜ื ื ืชื•ื ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช
1088
+ - ๐Ÿ’ฐ **ืืกื˜ืจื˜ื’ื™ื™ืช ื”ืขืœื•ืช ื”ื ืžื•ื›ื” ื‘ื™ื•ืชืจ** โ€” ื‘ื—ืจ ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ืกืคืง ื”ื–ืžื™ืŸ ื”ื–ื•ืœ ื‘ื™ื•ืชืจ
1089
+
1090
+ > ๐Ÿ“ ืžืคืจื˜ื™ ืชื›ื•ื ื” ืžืœืื™ื ื–ืžื™ื ื™ื ื‘-[link](docs/new-features/) (217 ืžืคืจื˜ื™ื ืžืคื•ืจื˜ื™ื)
1091
+
1092
+ ---
1093
+
1094
+ ## ๐Ÿ“ง ืชืžื™ื›ื”
1095
+
1096
+ > ๐Ÿ’ฌ **ื”ืฆื˜ืจืคื• ืœืงื”ื™ืœื” ืฉืœื ื•!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) โ€” ืงื‘ืœ ืขื–ืจื”, ืฉืชืฃ ื˜ื™ืคื™ื ื•ื”ื™ืฉืืจ ืžืขื•ื“ื›ืŸ.
1097
+
1098
+ - **ืืชืจ**: [omniroute.online](https://omniroute.online)
1099
+ - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
1100
+ - **ื‘ืขื™ื•ืช**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
1101
+ - **ื•ื•ืื˜ืกืืค**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
1102
+ - **ืคืจื•ื™ืงื˜ ืžืงื•ืจื™**: [9router by decolua](https://github.com/decolua/9router)
1103
+
1104
+ ---
1105
+
1106
+ ## ๐Ÿ‘ฅ ืชื•ืจืžื™ื
1107
+
1108
+ [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1109
+
1110
+ ### ื›ื™ืฆื“ ืœืชืจื•ื
1111
+
1112
+ 1. ืžื–ืœื’ ืืช ื”ืžืื’ืจ
1113
+ 2. ืฆื•ืจ ืืช ืขื ืฃ ื”ืชื›ื•ื ื” ืฉืœืš (`git checkout -b feature/amazing-feature`)
1114
+ 3. ื‘ืฆืข ืืช ื”ืฉื™ื ื•ื™ื™ื ืฉืœืš (`git commit -m 'Add amazing feature'`)
1115
+ 4. ื“ื—ืฃ ืœืกื ื™ืฃ (`git push origin feature/amazing-feature`)
1116
+ 5. ืคืชื—ื• ื‘ืงืฉืช ืžืฉื™ื›ื”
1117
+
1118
+ ืจืื” [CONTRIBUTING.md](CONTRIBUTING.md) ืœื”ื ื—ื™ื•ืช ืžืคื•ืจื˜ื•ืช.
1119
+
1120
+ ### ืฉื—ืจื•ืจ ื’ืจืกื” ื—ื“ืฉื”
1121
+
1122
+ ```bash
1123
+ # Create a release โ€” npm publish happens automatically
1124
+ gh release create v1.0.6 --title "v1.0.6" --generate-notes
1125
+ ```
1126
+
1127
+ ---
1128
+
1129
+ ## ๐Ÿ“Š ื”ื™ืกื˜ื•ืจื™ื™ืช ื›ื•ื›ื‘ื™ื
1130
+
1131
+ <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1132
+ <picture>
1133
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1134
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1135
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1136
+ </picture>
1137
+ </a>
1138
+
1139
+ ---
1140
+
1141
+ ## ๐Ÿ™ ืชื•ื“ื•ืช
1142
+
1143
+ ืชื•ื“ื” ืžื™ื•ื—ื“ืช ืœ**[9router](https://github.com/decolua/9router)** ืžืืช **[decolua](https://github.com/decolua)** - ื”ืคืจื•ื™ืงื˜ ื”ืžืงื•ืจื™ ืฉื”ื™ื•ื•ื” ื”ืฉืจืื” ืœืžื–ืœื’ ื”ื–ื”. OmniRoute ื‘ื•ื ื” ืขืœ ื”ื‘ืกื™ืก ื”ืžื“ื”ื™ื ื”ื–ื” ืขื ืชื›ื•ื ื•ืช ื ื•ืกืคื•ืช, ืžืžืฉืงื™ API ืจื‘-ืžื•ื“ืืœื™ื™ื ื•ืฉื›ืชื•ื‘ ืžืœื ืฉืœ TypeScript.
1144
+
1145
+ ืชื•ื“ื” ืžื™ื•ื—ื“ืช ืœ**[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** - ื”ื™ื™ืฉื•ื ื”ืžืงื•ืจื™ ืฉืœ Go ืฉื™ืžืฉ ื”ืฉืจืื” ืœื™ืฆื™ืืช JavaScript ื”ื–ื•.
1146
+
1147
+ ---
1148
+
1149
+ ## ๐Ÿ“„ ืจื™ืฉื™ื•ืŸ
1150
+
1151
+ ืจื™ืฉื™ื•ืŸ MIT - ืจืื” [LICENSE](LICENSE) ืœืคืจื˜ื™ื.
1152
+
1153
+ ---
1154
+
1155
+ ---
1156
+
1157
+ ## ๐Ÿ‡ง๐Ÿ‡ท OmniRoute โ€” Gateway de IA Gratuito
1158
+
1159
+ <a name="-omniroute--gateway-de-ia-gratuito"></a>
1160
+
1161
+ ### Nunca pare de codar. Roteamento intelligente ืขื‘ื•ืจ **ืžื•ื“ืœื™ื ืฉืœ IA GRATUITOS e de baixo custo** com fallback automรกtico.
1162
+
1163
+ _Seu proxy universal de API - ื ืงื•ื“ืช ืงืฆื”, 36+ ื‘ื“ื™ืงื•ืช, ืืคืก ื”ืฉื‘ืชื”._
1164
+
1165
+ ### ๐ŸŒ Internacionalizaรงรฃo (i18n)
1166
+
1167
+ O ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ OmniRoute ืชื•ืžืš ื‘-**ืจื‘ ื‘ื™ื˜ื•ื™ื™ื**. ื ื™ืชื ืช ื”ืกืคืง:
1168
+
1169
+ | ืื™ื“ื™ื•ืžื” | ืงื•ื“ื™ื’ื• | ืกื˜ื˜ื•ืก |
1170
+ | -------------------- | ------- | ---------- |
1171
+ | ๐Ÿ‡บ๐Ÿ‡ธ ืื ื’ืœื™ืช | `en` | โœ… ืงื•ืžืคืœื˜ื• |
1172
+ | ๐Ÿ‡ง๐Ÿ‡ท ืคื•ืจื˜ื•ื’ื–ื™ืช (ื‘ืจื–ื™ืœ) | `pt-BR` | โœ… ืงื•ืžืคืœื˜ื• |
1173
+
1174
+ **ืœืžืงืจื” ืฉืœ ื‘ื™ื˜ื•ื™:** ืœื—ืฅ ืขืœ ืœื ื‘ื—ื™ืจื” ื‘ืฉืคื” (๐Ÿ‡บ๐Ÿ‡ธ EN) ืœืœื ื›ื•ืชืจืช ืœืœื•ื— ื”ืžื—ื•ื•ื ื™ื โ† ื‘ื—ื™ืจื” ื‘ืฆื•ืจืช ื‘ื™ื˜ื•ื™.
1175
+
1176
+ **ืœืคืจื˜ื™ื ื ื•ืกืคื™ื:**
1177
+
1178
+ 1. Crie `src/i18n/messages/{codigo}.json` baseado em `en.json`
1179
+ 2. Adicone o cรณdigo em `src/i18n/config.ts` โ†’ `LOCALES` e `LANGUAGES`
1180
+ 3. Reinicie o servidor
1181
+
1182
+ ### โšก Inรญcio Rรกpido
1183
+
1184
+ ```bash
1185
+ # Instalar via npm
1186
+ npx omniroute@latest
1187
+
1188
+ # Ou rodar do cรณdigo-fonte
1189
+ cp .env.example .env
1190
+ npm install
1191
+ PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
1192
+ ```
1193
+
1194
+ ### ๐Ÿณ ื“ื•ืงืจ
1195
+
1196
+ ```bash
1197
+ docker run -d --name omniroute -p 20128:20128 diegosouzapw/omniroute:latest
1198
+ ```
1199
+
1200
+ ### ๐Ÿ”‘ Funcionalidades Principais
1201
+
1202
+ - **36+ provedores de IA** - ืงืœื•ื“, GPT, Gemini, Llama, Qwen, DeepSeek, e mais
1203
+ - **Roteamento inteligente** - Fallback automรกtico entre provedores
1204
+ - **Traduรงรฃo de formato** โ€” OpenAI โ†” ืงืœื•ื“ โ†” Gemini automaticamente
1205
+ - **ืžื•ืœื˜ื™-ืงื•ื ื˜ื** - Mรบltiplas contas por provedor com seleรงรฃo intelligente
1206
+ - **Cache semรขntico** โ€” Reduz custos e latรชncia
1207
+ - **OAuth automรกtico** โ€” ืืกื™ืžื•ื ื™ื renovam automaticamente
1208
+ - **Combos personalizados** - 6 estratรฉgias de roteamento
1209
+ - **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื”ืžืœื** - ืžืขืงื‘, ื™ื•ืžื ื™ื, ื ื™ืชื•ื—ื™ื, ื”ื’ื“ืจื•ืช
1210
+ - **ื›ืœื™ CLI** - ื”ื’ื“ืจ ืืช ืงื•ื“ ืงืœื•ื“, Codex, Cursor, Cline com um clique
1211
+ - **100% TypeScript** โ€” ืงื•ื“ ืจื’ื™ืœ
1212
+
1213
+ ### ๐Ÿ“– ืชื™ืขื•ื“
1214
+
1215
+ | ื“ื•ืงื•ืžื ื˜ื• | ืชื™ืื•ืจ |
1216
+ | ----------------------------------------------- | ---------------------------------- |
1217
+ | [Guia do Usuรกrio](docs/USER_GUIDE.md) | ืคืจื•ื‘ื“ื•ืจื™ื, ืฉื™ืœื•ื‘ื™ื, CLI, ืคืจื™ืกื” |
1218
+ | [Referรชncia da API](docs/API_REFERENCE.md) | Todos OS ื ืงื•ื“ื•ืช ืงืฆื” com exemplos |
1219
+ | [Soluรงรฃo de Problemas](docs/TROUBLESHOOTING.md) | Problemas comuns e soluรงรตes |
1220
+ | [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura e internos do sistema |
1221
+ | [Contribuiรงรฃo](CONTRIBUTING.md) | ื”ืชืงื ื” ืฉืœ ื”ื ื—ื™ื•ืช ื•ื”ื ื—ื™ื•ืช |
1222
+ | [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | ื’ื™ืื” ืžืœืื”: VM + nginx + Cloudflare |
1223
+
1224
+ ### ๐Ÿ“ง ืชืžื™ื›ื”
1225
+
1226
+ > ๐Ÿ’ฌ **Entre para a comunidade!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) โ€” Tire dรบvidas, compartilhe dicas e fique atualizado.
1227
+
1228
+ - **ืืชืจ**: [omniroute.online](https://omniroute.online)
1229
+ - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
1230
+ - **ื‘ืขื™ื•ืช**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
1231
+
1232
+ ---
1233
+
1234
+ <div align="center">
1235
+ <sub>ื ื‘ื ื” ืขื โค๏ธ ืœืžืคืชื—ื™ื ืฉืžืงื•ื“ื“ื™ื 24/7</sub>
1236
+ <br/>
1237
+ <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1238
+ </div>