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.ms.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 — Gerbang AI Percuma
5
+
6
+ 🌐 **[English](#-omniroute--the-free-ai-gateway)** | **[Português (BR)](#-omniroute--gateway-de-ia-gratuito)**
7
+
8
+ ### Jangan sekali-kali berhenti mengekod. Penghalaan pintar ke **model AI PERCUMA & kos rendah** dengan sandaran automatik.
9
+
10
+ _Proksi API universal anda — satu titik akhir, 36+ pembekal, masa henti sifar._
11
+
12
+ **Penyelesaian Sembang • Pembenaman • Penjanaan Imej • Audio • Kedudukan Semula • 100% TypeScript**
13
+
14
+ ---
15
+
16
+ ### 🤖 Pembekal AI percuma untuk ejen pengekodan kegemaran anda
17
+
18
+ _Sambungkan mana-mana alat IDE atau CLI berkuasa AI melalui OmniRoute — get laluan API percuma untuk pengekodan tanpa had._
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>📡 Semua ejen menyambung melalui <code>http://localhost:20128/v1</code> atau <code>http://cloud.omniroute.online/v1</code> atau model <code>http://cloud.omniroute.online/v1 —i_24_TOKEN dan satu —i_konfigurasi kuota</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
+ ## 🤔 Mengapa OmniRoute?
116
+
117
+ **Berhenti membazir wang dan mencapai had:**
118
+
119
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Kuota langganan tamat tempoh tidak digunakan setiap bulan
120
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Had kadar menghalang anda pertengahan pengekodan
121
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> API Mahal ($20-50/bulan bagi setiap pembekal)
122
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Pertukaran manual antara pembekal
123
+
124
+ **OmniRoute menyelesaikan ini:**
125
+
126
+ - ✅ **Maksimumkan langganan** - Jejaki kuota, gunakan setiap bit sebelum ditetapkan semula
127
+ - ✅ **Auto sandaran** - Langganan → Kunci API → Murah → Percuma, masa henti sifar
128
+ - ✅ **Berbilang akaun** - Round-robin antara akaun bagi setiap pembekal
129
+ - ✅ **Universal** - Berfungsi dengan Kod Claude, Codex, Gemini CLI, Kursor, Cline, OpenClaw, sebarang alat CLI
130
+
131
+ ---
132
+
133
+ ## 🔄 Cara Ia Berfungsi
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
+ ## ⚡ Mula Pantas
163
+
164
+ **1. Pasang secara global:**
165
+
166
+ ```bash
167
+ npm install -g omniroute
168
+ omniroute
169
+ ```
170
+
171
+ 🎉 Papan pemuka dibuka pada `http://localhost:20128`
172
+
173
+ | Perintah | Penerangan |
174
+ | ----------------------- | ---------------------------------- |
175
+ | `omniroute` | Mulakan pelayan (port lalai 20128) |
176
+ | `omniroute --port 3000` | Gunakan port tersuai |
177
+ | `omniroute --no-open` | Jangan auto buka penyemak imbas |
178
+ | `omniroute --help` | Tunjukkan bantuan |
179
+
180
+ **2. Sambungkan pembekal PERCUMA:**
181
+
182
+ Papan pemuka → Pembekal → Sambung **Kod Claude** atau **Antigraviti** → Log masuk OAuth → Selesai!
183
+
184
+ **3. Gunakan dalam alat CLI anda:**
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
+ **Itu sahaja!** Mulakan pengekodan dengan model AI PERCUMA.
194
+
195
+ **Alternatif — dijalankan dari sumber:**
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
+ ## 🐳 Docker
206
+
207
+ OmniRoute tersedia sebagai imej Docker awam pada [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
208
+
209
+ **Larian pantas:**
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
+ **Dengan fail persekitaran:**
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
+ **Menggunakan 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
+ | Imej | Tag | Saiz | Penerangan |
246
+ | ------------------------ | -------- | ------ | ----------------------- |
247
+ | `diegosouzapw/omniroute` | `latest` | ~250MB | Keluaran stabil terkini |
248
+ | `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Versi semasa |
249
+
250
+ ---
251
+
252
+ ## 💰 Sekilas Pandang Harga
253
+
254
+ | Peringkat | Pembekal | Kos | Set Semula Kuota | Terbaik Untuk |
255
+ | ---------------- | ---------------- | ---------------------------- | ------------------ | ----------------------- |
256
+ | **💳 LANGGANAN** | Kod Claude (Pro) | $20/bln | 5j + mingguan | Sudah melanggan |
257
+ | | Codex (Plus/Pro) | $20-200/bln | 5j + mingguan | Pengguna OpenAI |
258
+ | | Gemini CLI | **PERCUMA** | 180K/bln + 1K/hari | Semua orang! |
259
+ | | GitHub Copilot | $10-19/bln | Bulanan | Pengguna GitHub |
260
+ | **🔑 KUNCI API** | NVIDIA NIM | **PERCUMA** (1000 kredit) | Satu kali | Ujian peringkat percuma |
261
+ | | DeepSeek | Bayar setiap penggunaan | Tiada | Harga/kualiti terbaik |
262
+ | | Groq | Peringkat percuma + berbayar | Kadar terhad | Inferens sangat pantas |
263
+ | | xAI (Grok) | Bayar setiap penggunaan | Tiada | Model Grok |
264
+ | | Mistral | Peringkat percuma + berbayar | Kadar terhad | AI Eropah |
265
+ | | OpenRouter | Bayar setiap penggunaan | Tiada | 100+ model |
266
+ | **💰 MURAH** | GLM-4.7 | $0.6/1J | Setiap hari 10AM | Sandaran belanjawan |
267
+ | | MiniMax M2.1 | $0.2/1J | 5 jam bergolek | Pilihan termurah |
268
+ | | Kimi K2 | $9/bln flat | 10 juta token/bln | Kos yang boleh diramal |
269
+ | **🆓 PERCUMA** | iFlow | $0 | tanpa had | 8 model percuma |
270
+ | | Qwen | $0 | tanpa had | 3 model percuma |
271
+ | | Kiro | $0 | tanpa had | Claude percuma |
272
+
273
+ **💡 Petua Pro:** Mulakan dengan Gemini CLI (180K percuma/bulan) + iFlow (percuma tanpa had) kombo = $0 kos!
274
+
275
+ ---
276
+
277
+ ## 🎯 Kes Penggunaan
278
+
279
+ ### Kes 1: "Saya mempunyai langganan Claude Pro"
280
+
281
+ **Masalah:** Kuota tamat tempoh tidak digunakan, had kadar semasa pengekodan berat
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
+ ### Kes 2: "Saya mahu kos sifar"
294
+
295
+ **Masalah:** Tidak mampu membayar langganan, memerlukan pengekodan AI yang boleh dipercayai
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
+ ### Kes 3: "Saya memerlukan pengekodan 24/7, tiada gangguan"
308
+
309
+ **Masalah:** Tarikh akhir, tidak mampu membayar masa henti
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
+ ### Kes 4: "Saya mahukan AI PERCUMA dalam OpenClaw"
323
+
324
+ **Masalah:** Memerlukan pembantu AI dalam apl pemesejan, percuma sepenuhnya
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
+ ## 💡 Ciri Utama
339
+
340
+ ### 🧠 Penghalaan Teras & Kepintaran
341
+
342
+ | Ciri | Apa yang Dilakukan |
343
+ | ---------------------------------- | --------------------------------------------------------------------------------------------- |
344
+ | 🎯 **Smart 4-Tier Fallback** | Laluan automatik: Langganan → Kunci API → Murah → Percuma |
345
+ | 📊 **Penjejakan Kuota Masa Nyata** | Kiraan token langsung + tetapan semula kira detik setiap pembekal |
346
+ | 🔄 **Terjemahan Format** | OpenAI ↔ Claude ↔ Gemini ↔ Kursor ↔ Kiro lancar + pembersihan tindak balas |
347
+ | 👥 **Sokongan Berbilang Akaun** | Berbilang akaun bagi setiap pembekal dengan pemilihan pintar |
348
+ | 🔄 **Muat Semula Token Auto** | Token OAuth dimuat semula secara automatik dengan cuba semula |
349
+ | 🎨 **Kombo Tersuai** | 6 strategi: isikan dahulu, round-robin, p2c, rawak, paling kurang digunakan, dioptimumkan kos |
350
+ | 🧩 **Model Tersuai** | Tambahkan sebarang ID model pada mana-mana pembekal |
351
+ | 🌐 **Penghala Wildcard** | Halakan corak `provider/*` kepada mana-mana pembekal secara dinamik |
352
+ | 🧠 **Anggaran Berfikir** | Mod laluan, auto, tersuai dan adaptif untuk model penaakulan |
353
+ | 💬 **System Prompt Suntikan** | Gesaan sistem global digunakan merentas semua permintaan |
354
+ | 📄 **API Respons** | Sokongan OpenAI Responses API (`/v1/responses`) penuh untuk Codex |
355
+
356
+ ### 🎵 API Berbilang Modal
357
+
358
+ | Ciri | Apa yang Dilakukan |
359
+ | ------------------------ | ------------------------------------------------------ |
360
+ | 🖼️ **Penjanaan Imej** | `/v1/images/generations` — 4 pembekal, 9+ model |
361
+ | 📐 **Pembenaman** | `/v1/embeddings` — 6 pembekal, 9+ model |
362
+ | 🎤 **Transkripsi Audio** | `/v1/audio/transcriptions` — Serasi dengan bisikan |
363
+ | 🔊 **Teks-ke-Ucapan** | `/v1/audio/speech` — Sintesis audio berbilang pembekal |
364
+ | 🛡️ **Kesederhanaan** | `/v1/moderations` — Pemeriksaan keselamatan kandungan |
365
+ | 🔀 **Penyusunan semula** | `/v1/rerank` — Penarafan semula perkaitan dokumen |
366
+
367
+ ### 🛡️ Ketahanan & Keselamatan
368
+
369
+ | Ciri | Apa yang Dilakukan |
370
+ | ----------------------------------- | ----------------------------------------------------------------------------------- |
371
+ | 🔌 **Pemutus Litar** | Auto buka/tutup setiap pembekal dengan ambang boleh dikonfigurasikan |
372
+ | 🛡️ **Kawanan Anti Guruh** | Had kadar Mutex + semaphore untuk pembekal kunci API |
373
+ | 🧠 **Cache Semantik** | Cache dua peringkat (tandatangan + semantik) mengurangkan kos & kependaman |
374
+ | ⚡ **Minta Idepotency** | Tetingkap pendua 5s untuk permintaan pendua |
375
+ | 🔒 **TLS Fingerprint Spoofing** | Pintas pengesanan bot berasaskan TLS melalui wreq-js |
376
+ | 🌐 **Penapisan IP** | Senarai kebenaran/senarai sekat untuk kawalan akses API |
377
+ | 📊 **Had Kadar Boleh Diedit** | RPM boleh dikonfigurasikan, jurang min dan serentak maksimum pada tahap sistem |
378
+ | 🛡 **Perlindungan Titik Akhir API** | Gating pengesahan + penyekatan penyedia untuk titik akhir `/models` |
379
+ | 🔒 **Keterlihatan Proksi** | Lencana berkod warna: 🟢 global, 🟡 pembekal, 🔵 setiap sambungan dengan paparan IP |
380
+ | 🌐 **Konfigurasi Proksi 3 Tahap** | Konfigurasikan proksi pada peringkat global, setiap pembekal atau setiap sambungan |
381
+
382
+ ### 📊 Kebolehlihatan & Analitis
383
+
384
+ | Ciri | Apa yang Dilakukan |
385
+ | --------------------------------- | ------------------------------------------------------------------------------ |
386
+ | 📝 **Minta Pembalakan** | Mod nyahpepijat dengan log permintaan/tindak balas penuh |
387
+ | 💾 **Log Proksi SQLite** | Log proksi berterusan bertahan dimulakan semula pelayan |
388
+ | 📊 **Papan Pemuka Analitik** | Dikuasakan semula: kad statistik, carta penggunaan model, jadual pembekal |
389
+ | 📈 **Penjejakan Kemajuan** | Ikut serta acara kemajuan SSE untuk penstriman |
390
+ | 🧪 **Penilaian LLM** | Ujian set emas dengan 4 strategi perlawanan |
391
+ | 🔍 **Minta Telemetri** | p50/p95/p99 pengagregatan kependaman + pengesanan X-Request-Id |
392
+ | 📋 **Papan Pemuka Log** | Halaman 4 tab bersatu: Log Permintaan, Log Proksi, Log Audit, Konsol |
393
+ | 🖥️ **Pemapar Log Konsol** | Pemapar gaya terminal masa nyata dengan penapis tahap, carian, tatal automatik |
394
+ | 📑 **Pengelogan Berasaskan Fail** | Pemintas konsol menangkap semua output ke fail log JSON dengan putaran |
395
+ | 🏥 **Papan Pemuka Kesihatan** | Masa beroperasi sistem, keadaan pemutus litar, sekatan keluar, statistik cache |
396
+ | 💰 **Penjejakan Kos** | Pengurusan belanjawan + konfigurasi harga setiap model |
397
+
398
+ ### ☁️ Penyerahan & Penyegerakan
399
+
400
+ | Ciri | Apa yang Dilakukan |
401
+ | ----------------------------- | ----------------------------------------------------------------------- |
402
+ | 💾 **Penyegerakan Awan** | Segerakkan konfigurasi merentas peranti melalui Cloudflare Workers |
403
+ | 🌐 **Kerahkan Di Mana-mana** | Localhost, VPS, Docker, Pekerja Cloudflare |
404
+ | 🔑 **Pengurusan Kunci API** | Jana, putar dan skop kunci API bagi setiap pembekal |
405
+ | 🧙 **Onboarding Wizard** | Persediaan berpandu 4 langkah untuk pengguna kali pertama |
406
+ | 🔧 **Papan Pemuka Alat CLI** | Konfigurasi satu klik Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
407
+ | 🔄 **Sandaran DB** | Sandaran automatik, pulihkan, eksport & import untuk semua tetapan |
408
+ | 🌐 **Pengantarabangsaan** | i18n penuh dengan next-intl — sokongan Inggeris + Portugis (Brazil) |
409
+ | 🌍 **Pemilih Bahasa** | Ikon glob dalam pengepala untuk penukaran bahasa masa nyata (🇺🇸/🇧🇷) |
410
+ | 📂 **Direktori Data Tersuai** | `DATA_DIR` env var untuk mengatasi laluan storan lalai `~/.omniroute` |
411
+
412
+ <details>
413
+ <summary><b>📖 Butiran Ciri</b></summary>
414
+
415
+ ### 🎯 Kemunduran 4 Peringkat Pintar
416
+
417
+ Cipta gabungan dengan sandaran automatik:
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
+ ### 📊 Penjejakan Kuota Masa Nyata
430
+
431
+ - Penggunaan token setiap pembekal
432
+ - Tetapkan semula kira detik (5 jam, harian, mingguan)
433
+ - Anggaran kos untuk peringkat berbayar
434
+ - Laporan perbelanjaan bulanan
435
+
436
+ ### 🔄 Terjemahan Format
437
+
438
+ Terjemahan lancar antara format:
439
+
440
+ - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **Respons OpenAI**
441
+ - Alat CLI anda menghantar format OpenAI → OmniRoute menterjemah → Pembekal menerima format asli
442
+ - Berfungsi dengan mana-mana alat yang menyokong titik akhir OpenAI tersuai
443
+ - **Pembersihan tindak balas** — Menghapuskan medan bukan standard untuk keserasian OpenAI SDK yang ketat
444
+ - **Penormalan peranan** — `developer` → `system` untuk bukan OpenAI; `system` → `user` untuk model GLM/ERNIE
445
+ - **Pengekstrakan teg Think** — `<think>` blok → `reasoning_content` untuk model pemikiran
446
+ - **Output berstruktur** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
447
+
448
+ ### 👥 Sokongan Berbilang Akaun
449
+
450
+ - Tambah berbilang akaun bagi setiap pembekal
451
+ - Auto round-robin atau penghalaan berasaskan keutamaan
452
+ - Berundur ke akaun seterusnya apabila seseorang mencapai kuota
453
+
454
+ ### 🔄 Muat Semula Token Auto
455
+
456
+ - Token OAuth dimuat semula secara automatik sebelum tamat tempoh
457
+ - Tiada pengesahan semula manual diperlukan
458
+ - Pengalaman lancar merentas semua pembekal
459
+
460
+ ### 🎨 Kombo Tersuai
461
+
462
+ - Buat kombinasi model tanpa had
463
+ - 6 strategi: isikan dahulu, round-robin, kuasa dua pilihan, rawak, paling kurang digunakan, dioptimumkan kos
464
+ - Kongsi gabungan merentas peranti dengan Cloud Sync
465
+
466
+ ### 🏥 Papan Pemuka Kesihatan
467
+
468
+ - Status sistem (masa hidup, versi, penggunaan memori)
469
+ - Keadaan pemutus litar bagi setiap pembekal (Tertutup/Terbuka/Separuh Terbuka)
470
+ - Status had kadar dan sekatan aktif
471
+ - Statistik cache tandatangan
472
+ - Telemetri kependaman (p50/p95/p99) + cache segera
473
+ - Tetapkan semula status kesihatan dengan satu klik
474
+
475
+ ### 🔧 Taman Permainan Penterjemah
476
+
477
+ OmniRoute termasuk Taman Permainan Penterjemah terbina dalam yang berkuasa dengan **4 mod** untuk penyahpepijatan, ujian dan pemantauan terjemahan API:
478
+
479
+ | Mod | Penerangan |
480
+ | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
481
+ | **💻 Taman permainan** | Terjemahan format langsung — tampal mana-mana badan permintaan API dan lihat serta-merta cara OmniRoute menterjemahkannya antara format pembekal (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Termasuk templat contoh dan pengesanan automatik format. |
482
+ | **💬 Penguji Sembang** | Hantar permintaan sembang sebenar melalui OmniRoute dan lihat perjalanan pergi balik penuh: input anda, permintaan yang diterjemahkan, respons pembekal dan balasan yang diterjemahkan kembali. Tidak ternilai untuk mengesahkan penghalaan kombo. |
483
+ | **🧪 Bangku Ujian** | Mod ujian kelompok — tentukan berbilang kes ujian dengan input dan output yang dijangkakan berbeza, jalankan semuanya sekali gus dan bandingkan hasil merentas pembekal dan model. |
484
+ | **📱 Pemantau Langsung** | Pemantauan permintaan masa nyata — tonton permintaan masuk semasa ia mengalir melalui OmniRoute, lihat terjemahan format berlaku secara langsung dan kenal pasti isu serta-merta. |
485
+
486
+ **Akses:** Papan Pemuka → Penterjemah (bar sisi)
487
+
488
+ ### 💾 Penyegerakan Awan
489
+
490
+ - Penyegerakan penyedia, gabungan dan tetapan merentas peranti
491
+ - Penyegerakan latar belakang automatik
492
+ - Storan yang disulitkan selamat
493
+
494
+ </details>
495
+
496
+ ---
497
+
498
+ ## 📖 Panduan Persediaan
499
+
500
+ <details>
501
+ <summary><b>💳 Pembekal Langganan</b></summary>
502
+
503
+ ### Kod Claude (Pro/Max)
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
+ **Petua Pro:** Gunakan Opus untuk tugas yang rumit, Sonnet untuk kelajuan. OmniRoute menjejaki kuota setiap model!
517
+
518
+ ### OpenAI Codex (Plus/Pro)
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 (PERCUMA 180K/bulan!)
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
+ **Nilai Terbaik:** Peringkat percuma yang besar! Gunakan ini sebelum peringkat berbayar.
543
+
544
+ ### Copilot GitHub
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>🔑 Pembekal Kunci API</b></summary>
561
+
562
+ ### NVIDIA NIM (PERCUMA 1000 kredit!)
563
+
564
+ 1. Daftar: [build.nvidia.com](https://build.nvidia.com)
565
+ 2. Dapatkan kunci API percuma (1000 kredit inferens disertakan)
566
+ 3. Papan Pemuka → Tambah Pembekal → NVIDIA NIM:
567
+ - Kunci API: `nvapi-your-key`
568
+
569
+ **Model:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` dan 50+ lagi
570
+
571
+ **Petua Pro:** API serasi OpenAI — berfungsi dengan lancar dengan terjemahan format OmniRoute!
572
+
573
+ ### DeepSeek
574
+
575
+ 1. Daftar: [platform.deepseek.com](https://platform.deepseek.com)
576
+ 2. Dapatkan kunci API
577
+ 3. Papan Pemuka → Tambah Pembekal → DeepSeek
578
+
579
+ **Model:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
580
+
581
+ ### Groq (Tier Percuma Tersedia!)
582
+
583
+ 1. Daftar: [console.groq.com](https://console.groq.com)
584
+ 2. Dapatkan kunci API (termasuk peringkat percuma)
585
+ 3. Papan Pemuka → Tambah Pembekal → Groq
586
+
587
+ **Model:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
588
+
589
+ **Petua Pro:** Inferens sangat pantas — terbaik untuk pengekodan masa nyata!
590
+
591
+ ### OpenRouter (100+ Model)
592
+
593
+ 1. Daftar: [openrouter.ai](https://openrouter.ai)
594
+ 2. Dapatkan kunci API
595
+ 3. Papan Pemuka → Tambah Pembekal → OpenRouter
596
+
597
+ **Model:** Akses 100+ model daripada semua pembekal utama melalui kunci API tunggal.
598
+
599
+ </details>
600
+
601
+ <details>
602
+ <summary><b>💰 Penyedia Murah (Sandaran)</b></summary>
603
+
604
+ ### GLM-4.7 (Tetapan semula harian, $0.6/1J)
605
+
606
+ 1. Daftar: [Zhipu AI](https://open.bigmodel.cn/)
607
+ 2. Dapatkan kunci API daripada Pelan Pengekodan
608
+ 3. Papan Pemuka → Tambah Kunci API:
609
+ - Pembekal: `glm`
610
+ - Kunci API: `your-key`
611
+
612
+ **Gunakan:** `glm/glm-4.7`
613
+
614
+ **Petua Pro:** Pelan Pengekodan menawarkan kuota 3× pada kos 1/7! Tetapkan semula setiap hari 10:00 AM.
615
+
616
+ ### MiniMax M2.1 (tetapan semula 5j, $0.20/1J)
617
+
618
+ 1. Daftar: [MiniMax](https://www.minimax.io/)
619
+ 2. Dapatkan kunci API
620
+ 3. Papan Pemuka → Tambah Kunci API
621
+
622
+ **Gunakan:** `minimax/MiniMax-M2.1`
623
+
624
+ **Petua Pro:** Pilihan termurah untuk konteks panjang (token 1M)!
625
+
626
+ ### Kimi K2 ($9/bulan rata)
627
+
628
+ 1. Langgan: [Moonshot AI](https://platform.moonshot.ai/)
629
+ 2. Dapatkan kunci API
630
+ 3. Papan Pemuka → Tambah Kunci API
631
+
632
+ **Gunakan:** `kimi/kimi-latest`
633
+
634
+ **Petua Pro:** Tetap $9/bulan untuk 10J token = $0.90/1J kos efektif!
635
+
636
+ </details>
637
+
638
+ <details>
639
+ <summary><b>🆓 Pembekal PERCUMA (Sandaran Kecemasan)</b></summary>
640
+
641
+ ### iFlow (8 model PERCUMA)
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 model PERCUMA)
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
+ ### Kiro (Claude PERCUMA)
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>🎨 Cipta Kombo</b></summary>
684
+
685
+ ### Contoh 1: Maksimumkan Langganan → Sandaran Murah
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
+ ### Contoh 2: Percuma-Sahaja (Kos Sifar)
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 Integrasi</b></summary>
715
+
716
+ ### IDE Kursor
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
+ ### Kod Claude
726
+
727
+ Gunakan halaman **Alat CLI** dalam papan pemuka untuk konfigurasi satu klik atau edit `~/.claude/settings.json` secara manual.
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
+ **Pilihan 1 — Papan Pemuka (disyorkan):**
741
+
742
+ ```
743
+ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
744
+ ```
745
+
746
+ **Pilihan 2 — Manual:** Edit `~/.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
+ > **Nota:** OpenClaw hanya berfungsi dengan OmniRoute tempatan. Gunakan `127.0.0.1` dan bukannya `localhost` untuk mengelakkan isu resolusi IPv6.
763
+
764
+ ### Cline / Teruskan / 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
+ ## 📊 Model Tersedia
779
+
780
+ <details>
781
+ <summary><b>Lihat semua model yang tersedia</b></summary>
782
+
783
+ **Kod Claude (`cc/`)** - Pro/Max:
784
+
785
+ - `cc/claude-opus-4-6`
786
+ - `cc/claude-sonnet-4-5-20250929`
787
+ - `cc/claude-haiku-4-5-20251001`
788
+
789
+ **Codex (`cx/`)** - Plus/Pro:
790
+
791
+ - `cx/gpt-5.2-codex`
792
+ - `cx/gpt-5.1-codex-max`
793
+
794
+ **Gemini CLI (`gc/`)** - PERCUMA:
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/`)** - Kredit PERCUMA:
805
+
806
+ - `nvidia/llama-3.3-70b-instruct`
807
+ - `nvidia/mistral-7b-instruct`
808
+ - 50+ lagi model di [build.nvidia.com](https://build.nvidia.com)
809
+
810
+ **GLM (`glm/`)** - $0.6/1J:
811
+
812
+ - `glm/glm-4.7`
813
+
814
+ **MiniMax (`minimax/`)** - $0.2/1J:
815
+
816
+ - `minimax/MiniMax-M2.1`
817
+
818
+ **iFlow (`if/`)** - PERCUMA:
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/`)** - PERCUMA:
827
+
828
+ - `qw/qwen3-coder-plus`
829
+ - `qw/qwen3-coder-flash`
830
+
831
+ **Kiro (`kr/`)** - PERCUMA:
832
+
833
+ - `kr/claude-sonnet-4.5`
834
+ - `kr/claude-haiku-4.5`
835
+
836
+ **OpenRouter (`or/`)** - 100+ model:
837
+
838
+ - `or/anthropic/claude-4-sonnet`
839
+ - `or/google/gemini-2.5-pro`
840
+ - Mana-mana model daripada [openrouter.ai/models](https://openrouter.ai/models)
841
+
842
+ </details>
843
+
844
+ ---
845
+
846
+ ## 🧪 Penilaian (Evals)
847
+
848
+ OmniRoute termasuk rangka kerja penilaian terbina dalam untuk menguji kualiti tindak balas LLM terhadap set emas. Aksesnya melalui **Analytics → Evals** dalam papan pemuka.
849
+
850
+ ### Set Emas Terbina dalam
851
+
852
+ "Set Emas OmniRoute" pra-muat mengandungi 10 kes ujian yang meliputi:
853
+
854
+ - Salam, matematik, geografi, penjanaan kod
855
+ - Pematuhan format JSON, terjemahan, penurunan harga
856
+ - Penolakan keselamatan (kandungan berbahaya), pengiraan, logik boolean
857
+
858
+ ### Strategi Penilaian
859
+
860
+ | Strategi | Penerangan | Contoh |
861
+ | ---------- | --------------------------------------------------------------------- | -------------------------------- |
862
+ | `exact` | Output mesti sepadan dengan tepat | `"4"` |
863
+ | `contains` | Output mesti mengandungi subrentetan (tidak peka huruf besar-besaran) | `"Paris"` |
864
+ | `regex` | Output mesti sepadan dengan corak regex | `"1.*2.*3"` |
865
+ | `custom` | Fungsi JS tersuai mengembalikan benar/salah | `(output) => output.length > 10` |
866
+
867
+ ---
868
+
869
+ ## 🔐 OAuth em Servidor Remoto (Persediaan OAuth Jauh)
870
+
871
+ <a name="oauth-em-servidor-remoto"></a>
872
+
873
+ > **⚠️ PENTING untuk biasa menggunakan OmniRoute em VPS/Docker/servidor remoto**
874
+
875
+ ### Adakah OAuth melakukan Antigraviti / Gemini CLI tidak menggunakan perkhidmatan anda?
876
+
877
+ Ia membuktikan **Antigraviti** dan **Gemini CLI** menggunakan **Google OAuth 2.0** untuk autenticação. O Google exige que a `redirect_uri` gunakan tiada fluks OAuth seja **exatamente** uma das URIs sebelum kadastrada tiada Google Cloud Console untuk aplicativo.
878
+
879
+ Sebagai credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas untuk `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (cth: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
880
+
881
+ ```
882
+ Error 400: redirect_uri_mismatch
883
+ ```
884
+
885
+ ### Penyelesaian: Konfigurasikan suas próprias credenciais OAuth
886
+
887
+ Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor.
888
+
889
+ #### Passo a passo
890
+
891
+ **1. Akses ke Konsol Awan Google**
892
+
893
+ Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
894
+
895
+ **2. Crie um novo ID Pelanggan OAuth 2.0**
896
+
897
+ - Klik em **"+ Cipta Bukti Kelayakan"** → **"ID klien OAuth"**
898
+ - Tipo de aplicativo: **"Aplikasi web"**
899
+ - Nama: escolha qualquer nome (cth: `OmniRoute Remote`)
900
+
901
+ **3. Tambah sebagai URI Ubah Hala Dibenarkan**
902
+
903
+ Tiada **"URI ubah hala yang dibenarkan"**, tambahan:
904
+
905
+ ```
906
+ https://seu-servidor.com/callback
907
+ ```
908
+
909
+ > Gantikan `seu-servidor.com` pelo domínio ou IP do seu servidor (termasuk porta se necessário, cth: `http://45.33.32.156:20128/callback`).
910
+
911
+ **4. Simpan dan salin sebagai kredensia**
912
+
913
+ Após criar, o Google mostrará o **ID Pelanggan** e o **Rahsia Pelanggan**.
914
+
915
+ **5. Konfigurasikan sebagai 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
+ Papan pemuka → Pembekal → Antigraviti (ou Gemini CLI) → OAuth
943
+
944
+ Agora o Google redirectionará corretamente untuk `https://seu-servidor.com/callback` dan a autenticação funcionará.
945
+
946
+ ---
947
+
948
+ ### Penyelesaian sementara (sem configurar credenciais próprias)
949
+
950
+ Jika anda ingin mendapatkan credenciais próprias agora, ada kemungkinan penggunaan atau fluks **manual de URL**:
951
+
952
+ 1. OmniRoute abrirá a URL de authorização do Google
953
+ 2. Após você authorizar, o Google tentará redirectionar para `localhost` (que falha no servidor remoto)
954
+ 3. **Salin URL lengkap** pada penyemak imbas 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. Klik em **"Sambung"**
957
+
958
+ > Penyelesaian ini berfungsi sebagai kodigo de autorização na URL adalah bebas untuk mengubah hala mengikut arahan atau tidak.
959
+
960
+ ---
961
+
962
+ ## 🐛 Menyelesaikan masalah
963
+
964
+ <details>
965
+ <summary><b>Klik untuk mengembangkan panduan penyelesaian masalah</b></summary>
966
+
967
+ **"Model bahasa tidak memberikan mesej"**
968
+
969
+ - Kuota pembekal habis → Semak penjejak kuota papan pemuka
970
+ - Penyelesaian: Gunakan sandaran kombo atau tukar kepada peringkat yang lebih murah
971
+
972
+ **Penghadan kadar**
973
+
974
+ - Kuota langganan habis → Sandar kepada GLM/MiniMax
975
+ - Tambah kombo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
976
+
977
+ **Token OAuth tamat tempoh**
978
+
979
+ - Dikemas semula secara automatik oleh OmniRoute
980
+ - Jika isu berterusan: Papan Pemuka → Pembekal → Sambung semula
981
+
982
+ **Kos tinggi**
983
+
984
+ - Semak statistik penggunaan dalam Papan Pemuka → Kos
985
+ - Tukar model utama kepada GLM/MiniMax
986
+ - Gunakan peringkat percuma (Gemini CLI, iFlow) untuk tugasan yang tidak kritikal
987
+
988
+ **Papan pemuka dibuka pada port yang salah**
989
+
990
+ - Tetapkan `PORT=20128` dan `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
991
+
992
+ **Ralat penyegerakan awan**
993
+
994
+ - Sahkan `BASE_URL` mata pada contoh larian anda
995
+ - Sahkan `CLOUD_URL` mata ke titik akhir awan anda yang dijangkakan
996
+ - Pastikan nilai `NEXT_PUBLIC_*` sejajar dengan nilai sebelah pelayan
997
+
998
+ **Log masuk pertama tidak berfungsi**
999
+
1000
+ - Semak `INITIAL_PASSWORD` dalam `.env`
1001
+ - Jika tidak ditetapkan, kata laluan sandaran ialah `123456`
1002
+
1003
+ **Tiada log permintaan**
1004
+
1005
+ - Tetapkan `ENABLE_REQUEST_LOGS=true` dalam `.env`
1006
+
1007
+ **Ujian sambungan menunjukkan "Tidak sah" untuk pembekal yang serasi dengan OpenAI**
1008
+
1009
+ - Banyak pembekal tidak mendedahkan titik akhir `/models`
1010
+ - OmniRoute v1.0.6+ termasuk pengesahan sandaran melalui pelengkapan sembang
1011
+ - Pastikan URL asas mengandungi akhiran `/v1`
1012
+
1013
+ </details>
1014
+
1015
+ ---
1016
+
1017
+ ## 🛠️ Timbunan Teknologi
1018
+
1019
+ - **Waktu Jalan**: Node.js 18–22 LTS (⚠️ Node.js 24+ **tidak disokong** — `better-sqlite3` binari asli tidak serasi)
1020
+ - **Bahasa**: TypeScript 5.9 — **100% TypeScript** merentas `src/` dan `open-sse/` (v1.0.6)
1021
+ - **Kerangka**: Next.js 16 + React 19 + Tailwind CSS 4
1022
+ - **Pangkalan Data**: LowDB (JSON) + SQLite (keadaan domain + log proksi)
1023
+ - **Penstriman**: Acara Dihantar Pelayan (SSE)
1024
+ - **Auth**: OAuth 2.0 (PKCE) + JWT + Kunci API
1025
+ - **Ujian**: Pelari ujian Node.js (368+ ujian unit)
1026
+ - **CI/CD**: GitHub Actions (auto npm publish + Docker Hub pada keluaran)
1027
+ - **Laman web**: [omniroute.online](https://omniroute.online)
1028
+ - **Pakej**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1029
+ - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1030
+ - **Ketahanan**: Pemutus litar, mundur eksponen, kumpulan anti gemuruh, penipuan TLS
1031
+
1032
+ ---
1033
+
1034
+ ## 📖 Dokumentasi
1035
+
1036
+ | Dokumen | Penerangan |
1037
+ | -------------------------------------------- | --------------------------------------------------- |
1038
+ | [User Guide](docs/USER_GUIDE.md) | Pembekal, kombo, penyepaduan CLI, penggunaan |
1039
+ | [API Reference](docs/API_REFERENCE.md) | Semua titik akhir dengan contoh |
1040
+ | [Troubleshooting](docs/TROUBLESHOOTING.md) | Masalah dan penyelesaian biasa |
1041
+ | [Architecture](docs/ARCHITECTURE.md) | Seni bina sistem dan dalaman |
1042
+ | [Contributing](CONTRIBUTING.md) | Persediaan pembangunan dan garis panduan |
1043
+ | [OpenAPI Spec](docs/openapi.yaml) | Spesifikasi OpenAPI 3.0 |
1044
+ | [Security Policy](SECURITY.md) | Pelaporan kerentanan dan amalan keselamatan |
1045
+ | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Panduan lengkap: Persediaan VM + nginx + Cloudflare |
1046
+ | [Features Gallery](docs/FEATURES.md) | Lawatan papan pemuka visual dengan tangkapan skrin |
1047
+
1048
+ ### 📸 Pratonton Papan Pemuka
1049
+
1050
+ <details>
1051
+ <summary><b>Klik untuk melihat tangkapan skrin papan pemuka</b></summary>
1052
+
1053
+ | Halaman | Tangkapan skrin |
1054
+ | ------------------ | ------------------------------------------------- |
1055
+ | **Pembekal** | ![Providers](docs/screenshots/01-providers.png) |
1056
+ | **Kombo** | ![Combos](docs/screenshots/02-combos.png) |
1057
+ | **Analisis** | ![Analytics](docs/screenshots/03-analytics.png) |
1058
+ | **Kesihatan** | ![Health](docs/screenshots/04-health.png) |
1059
+ | **Penterjemah** | ![Translator](docs/screenshots/05-translator.png) |
1060
+ | **Tetapan** | ![Settings](docs/screenshots/06-settings.png) |
1061
+ | **Alat CLI** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1062
+ | **Log Penggunaan** | ![Usage](docs/screenshots/08-usage.png) |
1063
+ | **Titik Akhir** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1064
+
1065
+ </details>
1066
+
1067
+ ---
1068
+
1069
+ ## 🗺️ Pelan Hala Tuju
1070
+
1071
+ OmniRoute mempunyai **210+ ciri yang dirancang** merentas berbilang fasa pembangunan. Berikut adalah bidang utama:
1072
+
1073
+ | Kategori | Ciri Terancang | Sorotan |
1074
+ | ------------------------------ | -------------- | ---------------------------------------------------------------------------------------------------- |
1075
+ | 🧠 **Penghalaan & Perisikan** | 25+ | Penghalaan kependaman terendah, penghalaan berasaskan teg, kuota prapenerbangan, pemilihan akaun P2C |
1076
+ | 🔒 **Keselamatan & Pematuhan** | 20+ | Pengerasan SSRF, penyelubungan kelayakan, had kadar setiap titik akhir, skop kunci pengurusan |
1077
+ | 📊 **Kebolehlihatan** | 15+ | Penyepaduan OpenTelemetry, pemantauan kuota masa nyata, penjejakan kos setiap model |
1078
+ | 🔄 **Integrasi Pembekal** | 20+ | Pendaftaran model dinamik, penyejukan pembekal, Codex berbilang akaun, penghuraian kuota Copilot |
1079
+ | ⚡ **Prestasi** | 15+ | Lapisan cache dwi, ​​cache gesaan, cache respons, penstriman keepalive, API kelompok |
1080
+ | 🌐 **Ekosistem** | 10+ | API WebSocket, konfigurasi hot-reload, kedai konfigurasi teragih, mod komersial |
1081
+
1082
+ ### 🔜 Akan Datang
1083
+
1084
+ - 🔗 **OpenCode Integration** — Sokongan pembekal asli untuk IDE pengekodan AI OpenCode
1085
+ - 🔗 **Pengintegrasian TRAE** — Sokongan penuh untuk rangka kerja pembangunan TRAE AI
1086
+ - 📦 **API Kelompok** — Pemprosesan kelompok tak segerak untuk permintaan pukal
1087
+ - 🎯 **Penghalaan Berasaskan Teg** — Permintaan laluan berdasarkan teg tersuai dan metadata
1088
+ - 💰 **Strategi Kos Terendah** — Pilih pembekal yang tersedia paling murah secara automatik
1089
+
1090
+ > 📝 Spesifikasi ciri penuh tersedia dalam [link](docs/new-features/) (217 spesifikasi terperinci)
1091
+
1092
+ ---
1093
+
1094
+ ## 📧 Sokongan
1095
+
1096
+ > 💬 **Sertai komuniti kami!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Dapatkan bantuan, kongsi petua dan kekal kemas kini.
1097
+
1098
+ - **Laman web**: [omniroute.online](https://omniroute.online)
1099
+ - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
1100
+ - **Isu**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
1101
+ - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
1102
+ - **Projek Asal**: [9router by decolua](https://github.com/decolua/9router)
1103
+
1104
+ ---
1105
+
1106
+ ## 👥 Penyumbang
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
+ ### Cara Menyumbang
1111
+
1112
+ 1. Garpu repositori
1113
+ 2. Buat cawangan ciri anda (`git checkout -b feature/amazing-feature`)
1114
+ 3. Serahkan perubahan anda (`git commit -m 'Add amazing feature'`)
1115
+ 4. Tolak ke cawangan (`git push origin feature/amazing-feature`)
1116
+ 5. Buka Permintaan Tarik
1117
+
1118
+ Lihat [CONTRIBUTING.md](CONTRIBUTING.md) untuk garis panduan terperinci.
1119
+
1120
+ ### Mengeluarkan Versi Baharu
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
+ ## 📊 Sejarah Bintang
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
+ ## 🙏 Ucapan terima kasih
1142
+
1143
+ Terima kasih khas kepada **[9router](https://github.com/decolua/9router)** oleh **[decolua](https://github.com/decolua)** — projek asal yang mengilhamkan garpu ini. OmniRoute membina asas yang luar biasa itu dengan ciri tambahan, API berbilang modal dan penulisan semula TypeScript penuh.
1144
+
1145
+ Terima kasih khas kepada **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — pelaksanaan Go asal yang mengilhamkan port JavaScript ini.
1146
+
1147
+ ---
1148
+
1149
+ ## 📄 Lesen
1150
+
1151
+ Lesen MIT - lihat [LICENSE](LICENSE) untuk butiran.
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 para **models de IA GRATUITOS e de baixo custo** com fallback automático.
1162
+
1163
+ _Seu proksi universal de API — titik akhir, 36+ bukti, masa henti sifar._
1164
+
1165
+ ### 🌐 Internacionalização (i18n)
1166
+
1167
+ Papan pemuka buat OmniRoute menyokong **multipplos idiomas**. Anda boleh membelinya:
1168
+
1169
+ | Idioma | Código | Status |
1170
+ | --------------------- | ------- | ---------- |
1171
+ | 🇺🇸 Bahasa Inggeris | `en` | ✅ Lengkap |
1172
+ | 🇧🇷 Português (Brasil) | `pt-BR` | ✅ Lengkap |
1173
+
1174
+ **Para trocar o idioma:** Clique no seletor de idioma (🇺🇸 EN) no header do dashboard → selecione o idioma desejado.
1175
+
1176
+ **Para adicionar um novo idioma:**
1177
+
1178
+ 1. Menangis `src/i18n/messages/{codigo}.json` baseado em `en.json`
1179
+ 2. Tambah 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
+ ### 🐳 Docker
1195
+
1196
+ ```bash
1197
+ docker run -d --name omniroute -p 20128:20128 diegosouzapw/omniroute:latest
1198
+ ```
1199
+
1200
+ ### 🔑 Funcionalidades Principais
1201
+
1202
+ - **36+ bukti IA** — Claude, GPT, Gemini, Llama, Qwen, DeepSeek, dan lain-lain
1203
+ - **Roteamento intelligente** — Fallback automático entre provedores
1204
+ - **Tradução de formato** — OpenAI ↔ Claude ↔ Gemini automaticamente
1205
+ - **Multi-conta** — Múltiplas contas por provedor com seleção intelligente
1206
+ - **Cache semântico** — Reduz custos e latência
1207
+ - **OAuth automático** — Token renovam automaticamente
1208
+ - **Kombo personalizados** — 6 estratégias de roteamento
1209
+ - **Papan pemuka siap** — Pemantauan, log, analisis, konfigurasi
1210
+ - **Alat CLI** — Konfigurasikan Kod Claude, Codex, Kursor, Cline com um clique
1211
+ - **100% TypeScript** — Código limpo dan tipado
1212
+
1213
+ ### 📖 Dokumentasi
1214
+
1215
+ | Dokumentasi | Penerangan |
1216
+ | ----------------------------------------------- | -------------------------------------------- |
1217
+ | [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, gabungan, CLI, gunakan |
1218
+ | [Referência da API](docs/API_REFERENCE.md) | Todos os endpoints com exemplos |
1219
+ | [Solução de Problemas](docs/TROUBLESHOOTING.md) | Masalah komun dan penyelesaian |
1220
+ | [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura dan internos do sistema |
1221
+ | [Contribuição](CONTRIBUTING.md) | Persediaan desenvolvimento dan garis panduan |
1222
+ | [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Panduan lengkap: VM + nginx + Cloudflare |
1223
+
1224
+ ### 📧 Sokongan
1225
+
1226
+ > 💬 **Entre for a comunidade!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Tire dúvidas, compartilhe dicas and fique atualizado.
1227
+
1228
+ - **Laman web**: [omniroute.online](https://omniroute.online)
1229
+ - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
1230
+ - **Isu**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
1231
+
1232
+ ---
1233
+
1234
+ <div align="center">
1235
+ <sub>Dibina dengan ❤️ untuk pembangun yang kod 24/7</sub>
1236
+ <br/>
1237
+ <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1238
+ </div>