omniroute 2.1.0 → 2.1.2

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 (246) hide show
  1. package/README.md +1 -1
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +55 -55
  4. package/app/.next/build-manifest.json +2 -2
  5. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/.well-known/agent.json/route_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/_global-error.html +2 -2
  42. package/app/.next/server/app/_global-error.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  46. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  47. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  48. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  49. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/a2a/route_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/api/a2a/status/route_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/api/a2a/tasks/[id]/route_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/api/a2a/tasks/route_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/acp/agents/route_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/api/combos/auto/route_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/mcp/audit/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/mcp/audit/stats/route_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/api/mcp/sse/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/api/mcp/stream/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  105. package/app/.next/server/app/api/models/openrouter-catalog/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/models/route.js +1 -1
  107. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  109. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/providers/route.js +1 -1
  131. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  134. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/usage/quota/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/docs/page.js +1 -1
  195. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  203. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app-paths-manifest.json +55 -55
  207. package/app/.next/server/chunks/1909.js +1 -1
  208. package/app/.next/server/chunks/8252.js +1 -1
  209. package/app/.next/server/chunks/8907.js +1 -1
  210. package/app/.next/server/pages/500.html +2 -2
  211. package/app/.next/server/server-reference-manifest.js +1 -1
  212. package/app/.next/server/server-reference-manifest.json +1 -1
  213. package/app/.next/static/chunks/{5846-2907f9dda1834c88.js → 5846-d3aa3ba9dd16fa55.js} +1 -1
  214. package/app/package.json +1 -1
  215. package/package.json +1 -1
  216. package/README.ar.md +0 -1683
  217. package/README.bg.md +0 -1691
  218. package/README.da.md +0 -1692
  219. package/README.de.md +0 -1696
  220. package/README.es.md +0 -1436
  221. package/README.fi.md +0 -1586
  222. package/README.fr.md +0 -1435
  223. package/README.he.md +0 -1586
  224. package/README.hu.md +0 -1586
  225. package/README.id.md +0 -1586
  226. package/README.in.md +0 -1225
  227. package/README.it.md +0 -1434
  228. package/README.ja.md +0 -1583
  229. package/README.ko.md +0 -1586
  230. package/README.ms.md +0 -1587
  231. package/README.nl.md +0 -1586
  232. package/README.no.md +0 -1586
  233. package/README.phi.md +0 -1587
  234. package/README.pl.md +0 -1586
  235. package/README.pt-BR.md +0 -1499
  236. package/README.pt.md +0 -1586
  237. package/README.ro.md +0 -1588
  238. package/README.ru.md +0 -1433
  239. package/README.sk.md +0 -1590
  240. package/README.sv.md +0 -1587
  241. package/README.th.md +0 -1577
  242. package/README.uk-UA.md +0 -1592
  243. package/README.vi.md +0 -1586
  244. package/README.zh-CN.md +0 -1432
  245. /package/app/.next/static/{jBXsbnBQXxbuL3eAmEO72 → xYoMYiq2lWi73ieYn-e4s}/_buildManifest.js +0 -0
  246. /package/app/.next/static/{jBXsbnBQXxbuL3eAmEO72 → xYoMYiq2lWi73ieYn-e4s}/_ssgManifest.js +0 -0
package/README.phi.md DELETED
@@ -1,1587 +0,0 @@
1
- <div align="center">
2
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
3
-
4
- # 🚀 OmniRoute — Ang Libreng AI Gateway
5
-
6
- ### Huwag kailanman ihinto ang coding. Smart routing sa **LIBRE at murang mga modelo ng AI** na may awtomatikong fallback.
7
-
8
- _Iyong unibersal na API proxy — isang endpoint, 36+ provider, zero downtime._
9
-
10
- **Mga Pagkumpleto ng Chat • Mga Pag-embed • Pagbuo ng Imahe • Audio • Pag-rerank • 100% TypeScript**
11
-
12
- ---
13
-
14
- ### 🚀 New in v2.0.9+ — Playground, CLI Fingerprints & ACP
15
-
16
- | Feature | What It Does |
17
- | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
18
- | 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
19
- | 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
20
- | 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw), process spawner, `/api/acp/agents` endpoint |
21
- | 🤖 **ACP Agents Dashboard** | Debug > Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool |
22
- | 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
23
- | 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
24
- | 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
25
-
26
- ### 🤖 Libreng AI Provider para sa iyong mga paboritong coding agent
27
-
28
- _Ikonekta ang anumang AI-powered IDE o CLI tool sa pamamagitan ng OmniRoute — libreng API gateway para sa walang limitasyong coding._
29
-
30
- <table>
31
- <tr>
32
- <td align="center" width="110">
33
- <a href="https://github.com/cline/cline">
34
- <img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
35
- <b>OpenClaw</b>
36
- </a><br/>
37
- <sub>⭐ 205K</sub>
38
- </td>
39
- <td align="center" width="110">
40
- <a href="https://github.com/HKUDS/nanobot">
41
- <img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
42
- <b>NanoBot</b>
43
- </a><br/>
44
- <sub>⭐ 20.9K</sub>
45
- </td>
46
- <td align="center" width="110">
47
- <a href="https://github.com/sipeed/picoclaw">
48
- <img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
49
- <b>PicoClaw</b>
50
- </a><br/>
51
- <sub>⭐ 14.6K</sub>
52
- </td>
53
- <td align="center" width="110">
54
- <a href="https://github.com/zeroclaw-labs/zeroclaw">
55
- <img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
56
- <b>ZeroClaw</b>
57
- </a><br/>
58
- <sub>⭐ 9.9K</sub>
59
- </td>
60
- <td align="center" width="110">
61
- <a href="https://github.com/nearai/ironclaw">
62
- <img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
63
- <b>IronClaw</b>
64
- </a><br/>
65
- <sub>⭐ 2.1K</sub>
66
- </td>
67
- </tr>
68
- <tr>
69
- <td align="center" width="110">
70
- <a href="https://github.com/anomalyco/opencode">
71
- <img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
72
- <b>OpenCode</b>
73
- </a><br/>
74
- <sub>⭐ 106K</sub>
75
- </td>
76
- <td align="center" width="110">
77
- <a href="https://github.com/openai/codex">
78
- <img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
79
- <b>Codex CLI</b>
80
- </a><br/>
81
- <sub>⭐ 60.8K</sub>
82
- </td>
83
- <td align="center" width="110">
84
- <a href="https://github.com/anthropics/claude-code">
85
- <img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
86
- <b>Claude Code</b>
87
- </a><br/>
88
- <sub>⭐ 67.3K</sub>
89
- </td>
90
- <td align="center" width="110">
91
- <a href="https://github.com/google-gemini/gemini-cli">
92
- <img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
93
- <b>Gemini CLI</b>
94
- </a><br/>
95
- <sub>⭐ 94.7K</sub>
96
- </td>
97
- <td align="center" width="110">
98
- <a href="https://github.com/Kilo-Org/kilocode">
99
- <img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
100
- <b>Kilo Code</b>
101
- </a><br/>
102
- <sub>⭐ 15.5K</sub>
103
- </td>
104
- </tr>
105
- </table>
106
-
107
- <sub>📡 Kumonekta ang lahat ng ahente sa pamamagitan ng <code>http://localhost:20128/v1</code> o <code>http://cloud.omniroute.online/v1 >http://cloud.omniroute.online/v1 —iisang modelo at hindi config. quota</sub>
108
-
109
- ---
110
-
111
- [![npm version](https://img.shields.io/npm/v/omniroute?color=cb3837&logo=npm)](https://www.npmjs.com/package/omniroute)
112
- [![Docker Hub](https://img.shields.io/docker/v/diegosouzapw/omniroute?label=Docker%20Hub&logo=docker&color=2496ED)](https://hub.docker.com/r/diegosouzapw/omniroute)
113
- [![License](https://img.shields.io/github/license/diegosouzapw/OmniRoute)](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
114
- [![Website](https://img.shields.io/badge/Website-omniroute.online-blue?logo=google-chrome&logoColor=white)](https://omniroute.online)
115
- [![WhatsApp](https://img.shields.io/badge/WhatsApp-Community-25D366?logo=whatsapp&logoColor=white)](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
116
-
117
- [🌐 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)
118
-
119
- 🌐 **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)
120
-
121
- </div>
122
-
123
- ---
124
-
125
- ## 🖼️
126
-
127
- <div align="center">
128
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute" width="800"/>
129
- </div>
130
-
131
- ---
132
-
133
- ## 📸
134
-
135
- <details>
136
- <summary><b>...</b></summary>
137
-
138
- | # | # |
139
- | ----- | ---------------------------------------- |
140
- | **1** | ![1](docs/screenshots/01-providers.png) |
141
- | **2** | ![2](docs/screenshots/02-combos.png) |
142
- | **3** | ![3](docs/screenshots/03-analytics.png) |
143
- | **4** | ![4](docs/screenshots/04-health.png) |
144
- | **5** | ![5](docs/screenshots/05-translator.png) |
145
- | **6** | ![6](docs/screenshots/06-settings.png) |
146
- | **7** | ![7](docs/screenshots/07-cli-tools.png) |
147
- | **8** | ![8](docs/screenshots/08-usage.png) |
148
- | **9** | ![9](docs/screenshots/09-endpoint.png) |
149
-
150
- </details>
151
-
152
- ---
153
-
154
- ## 🤔 Bakit OmniRoute?
155
-
156
- **Ihinto ang pag-aaksaya ng pera at pag-abot sa mga limitasyon:**
157
-
158
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Mag-e-expire ang quota ng subscription na hindi nagamit bawat buwan
159
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Pinipigilan ka ng mga limitasyon sa rate sa mid-coding
160
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Mga Mamahaling API ($20-50/buwan bawat provider)
161
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Manu-manong paglipat sa pagitan ng mga provider
162
-
163
- **Sumalutas ito ng OmniRoute:**
164
-
165
- - ✅ **I-maximize ang mga subscription** - Subaybayan ang quota, gamitin ang bawat bit bago i-reset
166
- - ✅ **Auto fallback** - Subscription → API Key → Mura → Libre, zero downtime
167
- - ✅ **Multi-account** - Round-robin sa pagitan ng mga account sa bawat provider
168
- - ✅ **Universal** - Gumagana sa Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, anumang CLI tool
169
-
170
- ---
171
-
172
- ## 📧 Suporta
173
-
174
- > 💬 **Sumali sa aming komunidad!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Humingi ng tulong, magbahagi ng mga tip, at manatiling updated.
175
-
176
- - **Website**: [omniroute.online](https://omniroute.online)
177
- - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
178
- - **Mga Isyu**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
179
- - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
180
- - **Orihinal na Proyekto**: [9router by decolua](https://github.com/decolua/9router)
181
-
182
- ---
183
-
184
- ## 🔄 Paano Ito Gumagana
185
-
186
- ```
187
- ┌─────────────┐
188
- │ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
189
- │ Tool │
190
- └──────┬──────┘
191
- │ http://localhost:20128/v1
192
-
193
- ┌─────────────────────────────────────────┐
194
- │ OmniRoute (Smart Router) │
195
- │ • Format translation (OpenAI ↔ Claude) │
196
- │ • Quota tracking + Embeddings + Images │
197
- │ • Auto token refresh │
198
- └──────┬──────────────────────────────────┘
199
-
200
- ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI
201
- │ ↓ quota exhausted
202
- ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
203
- │ ↓ budget limit
204
- ├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)
205
- │ ↓ budget limit
206
- └─→ [Tier 4: FREE] iFlow, Qwen, Kiro (unlimited)
207
-
208
- Result: Never stop coding, minimal cost
209
- ```
210
-
211
- ---
212
-
213
- ## 🎯 Ano ang Lutasin ng OmniRoute — 30 Tunay na Pain Points at Mga Kaso ng Paggamit
214
-
215
- > **Ang bawat developer na gumagamit ng mga tool ng AI ay nahaharap sa mga problemang ito araw-araw.** Binuo ang OmniRoute para lutasin ang lahat ng ito — mula sa mga pag-overrun sa gastos hanggang sa mga panrehiyong bloke, mula sa mga sirang daloy ng OAuth hanggang sa mga pagpapatakbo ng protocol at pagmamasid sa enterprise.
216
-
217
- <details>
218
- <summary><b>💸 1. "Nagbabayad ako para sa isang mamahaling subscription ngunit naaantala pa rin ng mga limitasyon"</b></summary>
219
-
220
- Nagbabayad ang mga developer ng $20–200/buwan para sa Claude Pro, Codex Pro, o GitHub Copilot. Kahit na nagbabayad, may kisame ang quota — 5h ng paggamit, lingguhang limitasyon, o bawat minutong limitasyon sa rate. Sesyon sa kalagitnaan ng coding, hihinto sa pagtugon ang provider at nawawalan ng daloy at pagiging produktibo ang developer.
221
-
222
- **Paano ito niresolba ng OmniRoute:**
223
-
224
- - **Smart 4-Tier Fallback** — Kung maubusan ang quota ng subscription, awtomatikong magre-redirect sa API Key → Murang → Libre nang walang manu-manong interbensyon
225
- - **Real-Time Quota Tracking** — Ipinapakita ang pagkonsumo ng token sa real-time na may reset countdown (5h, araw-araw, lingguhan)
226
- - **Multi-Account Support** — Maramihang account sa bawat provider na may auto round-robin — kapag naubos ang isa, lilipat sa susunod
227
- - **Custom Combos** — Nako-customize na fallback chain na may 6 na diskarte sa pagbabalanse (fill-first, round-robin, P2C, random, hindi gaanong ginagamit, cost-optimized)
228
- - **Codex Business Quotas** — Direktang pagsubaybay sa quota ng workspace ng Negosyo/Team sa dashboard
229
-
230
- </details>
231
-
232
- <details>
233
- <summary><b>🔌 2. "Kailangan kong gumamit ng maraming provider ngunit bawat isa ay may iba't ibang API"</b></summary>
234
-
235
- Gumagamit ang OpenAI ng isang format, gumagamit si Claude (Anthropic) ng isa pa, isa pa ang Gemini. Kung gusto ng isang dev na subukan ang mga modelo mula sa iba't ibang provider o fallback sa pagitan nila, kailangan nilang i-configure muli ang mga SDK, baguhin ang mga endpoint, harapin ang mga hindi tugmang format. Ang mga custom na provider (FriendLI, NIM) ay may hindi karaniwang mga endpoint ng modelo.
236
-
237
- **Paano ito niresolba ng OmniRoute:**
238
-
239
- - **Pinag-isang Endpoint** — Isang `http://localhost:20128/v1` ang nagsisilbing proxy para sa lahat ng 36+ provider
240
- - **Format Translation** — Awtomatiko at transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
241
- - **Response Sanitization** — Tinatanggal ang mga hindi karaniwang field (`x_groq`, `usage_breakdown`, `service_tier`) na sumisira sa OpenAI SDK v1.83+
242
- - **Role Normalization** — Kino-convert ang `developer` → `system` para sa mga provider na hindi OpenAI; `system` → `user` para sa GLM/ERNIE
243
- - **Think Tag Extraction** — Kinukuha ang `<think>` block mula sa mga modelo tulad ng DeepSeek R1 sa standardized `reasoning_content`
244
- - **Structured Output para sa Gemini** — `json_schema` → `responseMimeType`/`responseSchema` awtomatikong conversion
245
- - **`stream` ang mga default sa `false`** — Naka-align sa OpenAI spec, iniiwasan ang hindi inaasahang SSE sa Python/Rust/Go SDK
246
-
247
- </details>
248
-
249
- <details>
250
- <summary><b>🌐 3. "Bina-block ng aking AI provider ang aking rehiyon/bansa"</b></summary>
251
-
252
- Hinaharang ng mga provider tulad ng OpenAI/Codex ang pag-access mula sa ilang partikular na heyograpikong rehiyon. Nakakakuha ang mga user ng mga error tulad ng `unsupported_country_region_territory` sa panahon ng mga koneksyon sa OAuth at API. Ito ay lalo na nakakabigo para sa mga developer mula sa pagbuo ng mga bansa.
253
-
254
- **Paano ito niresolba ng OmniRoute:**
255
-
256
- - **3-Level Proxy Config** — Nako-configure na proxy sa 3 antas: global (lahat ng trapiko), bawat provider (isang provider lang), at bawat koneksyon/key
257
- - **Color-Coded Proxy Badges** — Visual indicator: 🟢 global proxy, 🟡 provider proxy, 🔵 connection proxy, palaging ipinapakita ang IP
258
- - **OAuth Token Exchange Through Proxy** — Ang daloy ng OAuth ay dumadaan din sa proxy, na nilulutas ang `unsupported_country_region_territory`
259
- - **Mga Pagsusuri sa Koneksyon sa pamamagitan ng Proxy** — Ginagamit ng mga pagsubok sa koneksyon ang naka-configure na proxy (wala nang direktang bypass)
260
- - **SOCKS5 Support** — Buong SOCKS5 proxy support para sa papalabas na pagruruta
261
- - **TLS Fingerprint Spoofing** — tulad ng browser na TLS fingerprint sa pamamagitan ng `wreq-js` para i-bypass ang pag-detect ng bot
262
-
263
- </details>
264
-
265
- <details>
266
- <summary><b>🆓 4. "Gusto kong gumamit ng AI para sa coding ngunit wala akong pera"</b></summary>
267
-
268
- Hindi lahat ay maaaring magbayad ng $20–200/buwan para sa mga subscription sa AI. Ang mga mag-aaral, mga dev mula sa mga umuusbong na bansa, mga hobbyist, at mga freelancer ay nangangailangan ng access sa mga de-kalidad na modelo sa zero cost.
269
-
270
- **Paano ito niresolba ng OmniRoute:**
271
-
272
- - **Libreng Tier Provider Built-in** — Native na suporta para sa 100% libreng provider: iFlow (8 unlimited na modelo), Qwen (3 unlimited na modelo), Kiro (Claude nang libre), Gemini CLI (180K/buwan libre)
273
- - **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/<model>` prefix
274
- - **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/buwan na walang downtime
275
- - **NVIDIA NIM Free Credits** — 1000 libreng credits na isinama
276
- - **Cost Optimized Strategy** — Istratehiya sa pagruruta na awtomatikong pinipili ang pinakamurang available na provider
277
-
278
- </details>
279
-
280
- <details>
281
- <summary><b>🔒 5. "Kailangan kong protektahan ang aking AI gateway mula sa hindi awtorisadong pag-access"</b></summary>
282
-
283
- Kapag inilantad ang isang gateway ng AI sa network (LAN, VPS, Docker), maaaring kumonsumo ng mga token/quota ng developer ang sinumang may address. Kung walang proteksyon, ang mga API ay mahina sa maling paggamit, agarang pag-iniksyon, at pang-aabuso.
284
-
285
- **Paano ito niresolba ng OmniRoute:**
286
-
287
- - **API Key Management** — Pagbuo, pag-ikot, at saklaw ng bawat provider na may nakalaang `/dashboard/api-manager` na pahina
288
- - **Mga Pahintulot sa Antas ng Modelo** — Limitahan ang mga API key sa mga partikular na modelo (`openai/*`, mga wildcard pattern), na may Allow All/Restrict toggle
289
- - **API Endpoint Protection** — Mangangailangan ng key para sa `/v1/models` at i-block ang mga partikular na provider mula sa listahan
290
- - **Auth Guard + CSRF Protection** — Lahat ng mga ruta ng dashboard ay protektado ng `withAuth` middleware + CSRF token
291
- - **Rate Limiter** — Per-IP rate na naglilimita sa mga na-configure na window
292
- - **IP Filtering** — Allowlist/blocklist para sa access control
293
- - **Prompt Injection Guard** — Sanitization laban sa malisyosong prompt pattern
294
- - **AES-256-GCM Encryption** — Ang mga kredensyal ay naka-encrypt sa pahinga
295
-
296
- </details>
297
-
298
- <details>
299
- <summary><b>🛑 6. "Bumaba ang provider ko at nawala ang coding flow ko"</b></summary>
300
-
301
- Ang mga tagapagbigay ng AI ay maaaring maging hindi matatag, magbalik ng 5xx na mga error, o maabot ang mga pansamantalang limitasyon sa rate. Kung ang isang dev ay nakadepende sa isang provider, maaantala sila. Kung walang mga circuit breaker, ang mga paulit-ulit na pagsubok ay maaaring mag-crash sa application.
302
-
303
- **Paano ito niresolba ng OmniRoute:**
304
-
305
- - **Circuit Breaker per-model** — Awtomatikong buksan/sarado na may mga na-configure na threshold at cooldown (Sarado/Bukas/Kalahating Bukas)
306
- - **Exponential Backoff** — Progressive retry delays
307
- - **Anti-Thundering Herd** — Mutex + semaphore na proteksyon laban sa kasabay na muling pagsubok na mga bagyo
308
- - **Combo Fallback Chains** — Kung nabigo ang pangunahing provider, awtomatikong mahuhulog sa chain nang walang interbensyon
309
- - **Combo Circuit Breaker** — Awtomatikong idi-disable ang mga nabigong provider sa loob ng combo chain
310
- - **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
311
-
312
- </details>
313
-
314
- <details>
315
- <summary><b>🔧 7. "Ang pag-configure ng bawat AI tool ay nakakapagod at paulit-ulit"</b></summary>
316
-
317
- Gumagamit ang mga developer ng Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Ang bawat tool ay nangangailangan ng ibang config (API endpoint, key, model). Ang muling pag-configure kapag lumipat ng mga provider o modelo ay isang pag-aaksaya ng oras.
318
-
319
- **Paano ito niresolba ng OmniRoute:**
320
-
321
- - **CLI Tools Dashboard** — Nakatuon na page na may isang-click na setup para sa Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
322
- - **GitHub Copilot Config Generator** — Bumubuo ng `chatLanguageModels.json` para sa VS Code na may maramihang pagpili ng modelo
323
- - **Onboarding Wizard** — May gabay na 4-step na pag-setup para sa mga unang beses na user
324
- - **Isang endpoint, lahat ng modelo** — I-configure ang `http://localhost:20128/v1` nang isang beses, i-access ang 36+ provider
325
-
326
- </details>
327
-
328
- <details>
329
- <summary><b>🔑 8. "Impiyerno ang pamamahala sa mga token ng OAuth mula sa maraming provider"</b></summary>
330
-
331
- Claude Code, Codex, Gemini CLI, Copilot — lahat ay gumagamit ng OAuth 2.0 na may mga mag-e-expire na token. Kailangang muling mag-authenticate ang mga developer, harapin ang `client_secret is missing`, `redirect_uri_mismatch`, at mga pagkabigo sa mga malalayong server. Ang OAuth sa LAN/VPS ay partikular na may problema.
332
-
333
- **Paano ito niresolba ng OmniRoute:**
334
-
335
- - **Auto Token Refresh** — Ang mga token ng OAuth ay nagre-refresh sa background bago mag-expire
336
- - **OAuth 2.0 (PKCE) Built-in** — Awtomatikong daloy para sa Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
337
- - **Multi-Account OAuth** — Maramihang account bawat provider sa pamamagitan ng pagkuha ng token ng JWT/ID
338
- - **OAuth LAN/Remote Fix** — Pribadong IP detection para sa `redirect_uri` + manual URL mode para sa mga malalayong server
339
- - **OAuth Behind Nginx** — Gumagamit ng `window.location.origin` para sa reverse proxy compatibility
340
- - **Remote OAuth Guide** — Step-by-step na gabay para sa mga kredensyal ng Google Cloud sa VPS/Docker
341
-
342
- </details>
343
-
344
- <details>
345
- <summary><b>📊 9. "Hindi ko alam kung magkano ang ginagastos ko o kung saan"</b></summary>
346
-
347
- Gumagamit ang mga developer ng maraming bayad na provider ngunit walang pinag-isang pagtingin sa paggastos. Ang bawat provider ay may sariling dashboard ng pagsingil, ngunit walang pinagsama-samang view. Maaaring tumambak ang mga hindi inaasahang gastos.
348
-
349
- **Paano ito niresolba ng OmniRoute:**
350
-
351
- - **Cost Analytics Dashboard** — Per-token cost tracking at pamamahala ng badyet bawat provider
352
- - **Mga Limitasyon sa Badyet bawat Tier** — Paggastos ng kisame sa bawat tier na nagti-trigger ng awtomatikong fallback
353
- - **Per-Model Pricing Configuration** — Nako-configure na mga presyo bawat modelo
354
- - **Mga Istatistika ng Paggamit Bawat API Key** — Bilang ng kahilingan at timestamp na huling ginamit bawat key
355
- - **Analytics Dashboard** — Mga stat card, chart ng paggamit ng modelo, talahanayan ng provider na may mga rate ng tagumpay at latency
356
-
357
- </details>
358
-
359
- <details>
360
- <summary><b>🐛 10. "Hindi ko matukoy ang mga error at problema sa mga tawag sa AI"</b></summary>
361
-
362
- Kapag nabigo ang isang tawag, hindi alam ng dev kung ito ay isang limitasyon sa rate, nag-expire na token, maling format, o error sa provider. Mga fragment na log sa iba't ibang terminal. Kung walang pagmamasid, ang pag-debug ay trial-and-error.
363
-
364
- **Paano ito niresolba ng OmniRoute:**
365
-
366
- - **Unified Logs Dashboard** — 4 na tab: Request Logs, Proxy Logs, Audit Logs, Console
367
- - **Console Log Viewer** — Real-time na terminal-style viewer na may color-coded level, auto-scroll, paghahanap, filter
368
- - **SQLite Proxy Logs** — Mga paulit-ulit na log na nakaligtas sa pag-restart ng server
369
- - **Translator Playground** — 4 na mode ng pag-debug: Playground (pagsasalin ng format), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
370
- - **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
371
- - **Pag-log na Nakabatay sa File na may Pag-ikot** — Kinukuha ng Console interceptor ang lahat sa log ng JSON na may pag-ikot batay sa laki
372
-
373
- </details>
374
-
375
- <details>
376
- <summary><b>🏗️ 11. "Ang pag-deploy at pagpapanatili ng gateway ay kumplikado"</b></summary>
377
-
378
- Ang pag-install, pag-configure, at pagpapanatili ng AI proxy sa iba't ibang kapaligiran (lokal, VPS, Docker, cloud) ay labor-intensive. Ang mga problema tulad ng mga hardcoded na path, `EACCES` sa mga direktoryo, port conflict, at cross-platform build ay nagdaragdag ng friction.
379
-
380
- **Paano ito niresolba ng OmniRoute:**
381
-
382
- - **npm global install** — `npm install -g omniroute && omniroute` — tapos na
383
- - **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
384
- - **Docker Compose Profiles** — `base` (walang CLI tool) at `cli` (na may Claude Code, Codex, OpenClaw)
385
- - **Electron Desktop App** — Native app para sa Windows/macOS/Linux na may system tray, auto-start, offline mode
386
- - **Split-Port Mode** — API at Dashboard sa magkahiwalay na port para sa mga advanced na sitwasyon (reverse proxy, container networking)
387
- - **Cloud Sync** — I-configure ang pag-synchronize sa mga device sa pamamagitan ng Cloudflare Workers
388
- - **DB Backup** — Awtomatikong pag-backup, pagpapanumbalik, pag-export at pag-import ng lahat ng mga setting
389
-
390
- </details>
391
-
392
- <details>
393
- <summary><b>🌍 12. "Ang interface ay English-only at ang aking team ay hindi nagsasalita ng English"</b></summary>
394
-
395
- Ang mga koponan sa mga bansang hindi nagsasalita ng Ingles, lalo na sa Latin America, Asia, at Europe, ay nakikipagpunyagi sa mga interface na Ingles lamang. Binabawasan ng mga hadlang sa wika ang pag-aampon at pinapataas ang mga error sa pagsasaayos.
396
-
397
- **Paano ito niresolba ng OmniRoute:**
398
-
399
- - **Dashboard i18n — 30 Wika** — Lahat ng 500+ key na isinalin kasama ang Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Vietnamese
400
- - **RTL Support** — Kanan-pakaliwa na suporta para sa Arabic at Hebrew
401
- - **Multi-Language READMEs** — 30 kumpletong pagsasalin ng dokumentasyon
402
- - **Language Selector** — Globe icon sa header para sa real-time na paglipat
403
-
404
- </details>
405
-
406
- <details>
407
- <summary><b>🔄 13. "Kailangan ko ng higit pa sa chat — kailangan ko ng mga embed, larawan, audio"</b></summary>
408
-
409
- Ang AI ay hindi lamang pagkumpleto ng chat. Kailangan ng mga dev na bumuo ng mga larawan, mag-transcribe ng audio, gumawa ng mga pag-embed para sa RAG, mag-rerank ng mga dokumento, at katamtamang nilalaman. Ang bawat API ay may iba't ibang endpoint at format.
410
-
411
- **Paano ito niresolba ng OmniRoute:**
412
-
413
- - **Mga Pag-embed** — `/v1/embeddings` na may 6 na provider at 9+ na modelo
414
- - **Pagbuo ng Larawan** — `/v1/images/generations` na may 10 provider at 20+ modelo (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
415
- - **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) at SD WebUI
416
- - **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
417
- - **Audio Transcription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
418
- - **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + mga kasalukuyang provider
419
- - **Moderations** — `/v1/moderations` — Mga pagsusuri sa kaligtasan ng content
420
- - **Muling pagraranggo** — `/v1/rerank` — Muling pagraranggo ng kaugnayan ng dokumento
421
- - **Responses API** — Buong `/v1/responses` na suporta para sa Codex
422
-
423
- </details>
424
-
425
- <details>
426
- <summary><b>🧪 14. "Wala akong paraan para subukan at paghambingin ang kalidad sa mga modelo"</b></summary>
427
-
428
- Gustong malaman ng mga developer kung aling modelo ang pinakamainam para sa kanilang kaso ng paggamit — code, pagsasalin, pangangatwiran — ngunit mabagal ang paghahambing nang manu-mano. Walang pinagsamang mga tool sa eval ang umiiral.
429
-
430
- **Paano ito niresolba ng OmniRoute:**
431
-
432
- - **LLM Evaluations** — Golden set testing na may 10 pre-loaded na case na sumasaklaw sa mga pagbati, matematika, heograpiya, pagbuo ng code, pagsunod sa JSON, pagsasalin, markdown, pagtanggi sa kaligtasan
433
- - **4 na Istratehiya sa Pagtutugma** — `exact`, `contains`, `regex`, `custom` (JS function)
434
- - **Translator Playground Test Bench** — Batch testing na may maraming input at inaasahang output, cross-provider na paghahambing
435
- - **Chat Tester** — Buong round-trip na may visual response rendering
436
- - **Live Monitor** — Real-time na stream ng lahat ng kahilingang dumadaloy sa proxy
437
-
438
- </details>
439
-
440
- <details>
441
- <summary><b>📈 15. "Kailangan kong mag-scale nang hindi nawawala ang performance"</b></summary>
442
-
443
- Habang lumalaki ang dami ng kahilingan, nang walang pag-cache sa parehong mga tanong ay bumubuo ng mga dobleng gastos. Nang walang idempotency, humihiling ang duplicate sa pagpoproseso ng basura. Dapat igalang ang mga limitasyon sa rate ng bawat provider.
444
-
445
- **Paano ito niresolba ng OmniRoute:**
446
-
447
- - **Semantic Cache** — Ang two-tier na cache (pirma + semantiko) ay binabawasan ang gastos at latency
448
- - **Request Idempotency** — 5s deduplication window para sa magkaparehong mga kahilingan
449
- - **Pagtukoy sa Limitasyon ng Rate** — RPM ng bawat provider, min na gap, at max na kasabay na pagsubaybay
450
- - **Editable Rate Limits** — Configurable defaults in Settings → Resilience with persistence
451
- - **API Key Validation Cache** — 3-tier na cache para sa performance ng produksyon
452
- - **Health Dashboard na may Telemetry** — p50/p95/p99 latency, cache stats, uptime
453
-
454
- </details>
455
-
456
- <details>
457
- <summary><b>🤖 16. "Gusto kong kontrolin ang gawi ng modelo sa buong mundo"</b></summary>
458
-
459
- Mga developer na gusto ang lahat ng tugon sa isang partikular na wika, na may partikular na tono, o gustong limitahan ang mga token ng pangangatwiran. Ang pag-configure nito sa bawat tool/kahilingan ay hindi praktikal.
460
-
461
- **Paano ito niresolba ng OmniRoute:**
462
-
463
- - **System Prompt Injection** — Inilapat ang pandaigdigang prompt sa lahat ng kahilingan
464
- - **Thinking Budget Validation** — Reasoning token allocation control bawat kahilingan (passthrough, auto, custom, adaptive)
465
- - **6 Mga Istratehiya sa Pagruruta** — Mga pandaigdigang diskarte na tumutukoy kung paano ipinamamahagi ang mga kahilingan
466
- - **Wildcard Router** — Ang mga pattern ng `provider/*` ay dynamic na ruta sa anumang provider
467
- - **Combo Enable/Disable Toggle** — I-toggle ang mga combo nang direkta mula sa dashboard
468
- - **Toggle ng Provider** — I-enable/i-disable ang lahat ng koneksyon para sa isang provider sa isang click
469
- - **Mga Naka-block na Provider** — Ibukod ang mga partikular na provider mula sa listahan ng `/v1/models`
470
-
471
- </details>
472
-
473
- <details>
474
- <summary><b>🧰 17. "Kailangan ko ng mga tool sa MCP bilang mga first-class na kakayahan ng produkto"</b></summary>
475
-
476
- Maraming AI gateway ang naglalantad sa MCP bilang isang nakatagong detalye ng pagpapatupad. Ang mga koponan ay nangangailangan ng isang nakikita, napapamahalaang layer ng operasyon.
477
-
478
- **Paano ito niresolba ng OmniRoute:**
479
-
480
- - Lumilitaw ang MCP sa dashboard navigation at tab ng endpoint protocol
481
- - Nakatuon na pahina ng pamamahala ng MCP na may proseso, mga tool, saklaw, at pag-audit
482
- - Built-in na quick-start para sa `omniroute --mcp` at onboarding ng kliyente
483
-
484
- </details>
485
-
486
- <details>
487
- <summary><b>🧠 18. "Kailangan ko ng A2A orchestration na may sync + stream task path"</b></summary>
488
-
489
- Ang mga daloy ng trabaho ng ahente ay nangangailangan ng parehong direktang tugon at matagal na naka-stream na pagpapatupad na may kontrol sa lifecycle.
490
-
491
- **Paano ito niresolba ng OmniRoute:**
492
-
493
- - A2A JSON-RPC endpoint (`POST /a2a`) na may `message/send` at `message/stream`
494
- - SSE streaming na may terminal state propagation
495
- - Mga task lifecycle API para sa `tasks/get` at `tasks/cancel`
496
-
497
- </details>
498
-
499
- <details>
500
- <summary><b>🛰️ 19. "Kailangan ko ng totoong kalusugan ng proseso ng MCP, hindi nahulaan ang status"</b></summary>
501
-
502
- Kailangang malaman ng mga operational team kung talagang buhay ang MCP, hindi lang kung maaabot ang isang API.
503
-
504
- **Paano ito niresolba ng OmniRoute:**
505
-
506
- - Runtime heartbeat file na may PID, timestamp, transport, bilang ng tool, at mode ng saklaw
507
- - MCP status API na pinagsasama ang tibok ng puso + kamakailang aktibidad
508
- - Mga UI status card para sa pagiging bago ng proseso/uptime/heartbeat
509
-
510
- </details>
511
-
512
- <details>
513
- <summary><b>📋 20. "Kailangan ko ng auditable MCP tool execution"</b></summary>
514
-
515
- Kapag ang mga tool ay nag-mutate ng config o nag-trigger ng mga pagkilos ng ops, ang mga team ay nangangailangan ng forensic traceability.
516
-
517
- **Paano ito niresolba ng OmniRoute:**
518
-
519
- - SQLite-backed audit logging para sa mga tawag sa tool ng MCP
520
- - Mga filter ayon sa tool, tagumpay/kabiguan, API key, at pagination
521
- - Dashboard audit table + stats endpoints para sa automation
522
-
523
- </details>
524
-
525
- <details>
526
- <summary><b>🔐 21. "Kailangan ko ng mga saklaw na pahintulot ng MCP sa bawat pagsasama"</b></summary>
527
-
528
- Ang iba't ibang mga kliyente ay dapat magkaroon ng hindi gaanong pribilehiyong pag-access sa mga kategorya ng tool.
529
-
530
- **Paano ito niresolba ng OmniRoute:**
531
-
532
- - 9 na butil na saklaw ng MCP para sa kontroladong pag-access ng tool
533
- - Pagpapatupad ng saklaw at kakayahang makita sa UI ng pamamahala ng MCP
534
- - Ligtas na default na postura para sa operational tooling
535
-
536
- </details>
537
-
538
- <details>
539
- <summary><b>⚙️ 22. "Kailangan ko ng mga kontrol sa pagpapatakbo nang hindi nagre-redeploy"</b></summary>
540
-
541
- Ang mga koponan ay nangangailangan ng mabilis na mga pagbabago sa runtime sa panahon ng mga insidente o mga kaganapan sa gastos.
542
-
543
- **Paano ito niresolba ng OmniRoute:**
544
-
545
- - Lumipat ng combo activation nang direkta mula sa MCP dashboard
546
- - Ilapat ang mga profile ng katatagan mula sa paunang natukoy na mga pack ng patakaran
547
- - I-reset ang estado ng circuit breaker mula sa parehong panel ng mga operasyon
548
-
549
- </details>
550
-
551
- <details>
552
- <summary><b>🔄 23. "Kailangan ko ng live A2A task lifecycle visibility at pagkansela"</b></summary>
553
-
554
- Kung walang lifecycle visibility, ang mga insidente ng gawain ay nagiging mahirap subukan.
555
-
556
- **Paano ito niresolba ng OmniRoute:**
557
-
558
- - Listahan ng gawain/pag-filter ayon sa estado/kasanayan sa pagination
559
- - Mag-drill-down sa metadata ng gawain, mga kaganapan, at mga artifact
560
- - Endpoint ng pagkansela ng gawain at pagkilos ng UI na may kumpirmasyon
561
-
562
- </details>
563
-
564
- <details>
565
- <summary><b>🌊 24. "Kailangan ko ng mga aktibong sukatan ng stream para sa A2A load"</b></summary>
566
-
567
- Ang mga stream ng workflow ay nangangailangan ng operational insight sa concurrency at live na koneksyon.
568
-
569
- **Paano ito niresolba ng OmniRoute:**
570
-
571
- - Mga aktibong stream counter na isinama sa A2A status
572
- - Mga bilang ng huling timestamp ng gawain at bawat estado
573
- - A2A dashboard card para sa real-time na pagsubaybay sa ops
574
-
575
- </details>
576
-
577
- <details>
578
- <summary><b>🪪 25. "Kailangan ko ng karaniwang pagtuklas ng ahente para sa mga kliyente"</b></summary>
579
-
580
- Ang mga panlabas na kliyente at orkestra ay nangangailangan ng metadata na nababasa ng makina para sa onboarding.
581
-
582
- **Paano ito niresolba ng OmniRoute:**
583
-
584
- - Nalantad ang Agent Card sa `/.well-known/agent.json`
585
- - Mga kakayahan at kasanayan na ipinapakita sa management UI
586
- - Kasama sa A2A status API ang metadata ng pagtuklas para sa automation
587
-
588
- </details>
589
-
590
- <details>
591
- <summary><b>🧭 26. "Kailangan ko ang pagtuklas ng protocol sa UX ng produkto"</b></summary>
592
-
593
- Kung hindi matuklasan ng mga user ang mga surface ng protocol, bumababa ang kalidad ng pag-aampon at suporta.
594
-
595
- **Paano ito niresolba ng OmniRoute:**
596
-
597
- - Mga entry sa sidebar para sa MCP at A2A
598
- - Tab na Mga Protokol ng pahina ng Endpoint na may mabilis na pagsisimula at katayuan
599
- - Mga link mula sa pangkalahatang-ideya hanggang sa nakalaang mga dashboard ng pamamahala
600
-
601
- </details>
602
-
603
- <details>
604
- <summary><b>🧪 27. "Kailangan ko ng end-to-end protocol validation sa mga totoong kliyente"</b></summary>
605
-
606
- Ang mga kunwaring pagsubok ay hindi sapat upang patunayan ang pagiging tugma ng protocol bago ilabas.
607
-
608
- **Paano ito niresolba ng OmniRoute:**
609
-
610
- - E2E suite na nagbo-boot ng app at gumagamit ng totoong MCP SDK client transport
611
- - Mga pagsubok sa A2A client para sa pagtuklas, pagpapadala, pag-stream, pagkuha, at pagkansela ng mga daloy
612
- - Cross-check assertion laban sa MCP audit at A2A tasks API
613
-
614
- </details>
615
-
616
- <details>
617
- <summary><b>📡 28. "Kailangan ko ng pinag-isang observability sa lahat ng interface"</b></summary>
618
-
619
- Ang paghahati ng observability sa pamamagitan ng protocol ay lumilikha ng mga blind spot at mas mahabang MTTR.
620
-
621
- **Paano ito niresolba ng OmniRoute:**
622
-
623
- - Pinag-isang mga dashboard/log/analytics sa isang produkto
624
- - Health + audit + humiling ng telemetry sa mga layer ng OpenAI, MCP, at A2A
625
- - Mga Operational API para sa status at automation
626
-
627
- </details>
628
-
629
- <details>
630
- <summary><b>💼 29. "Kailangan ko ng isang runtime para sa proxy + tool + orkestrasyon ng ahente"</b></summary>
631
-
632
- Ang pagpapatakbo ng maraming magkakahiwalay na serbisyo ay nagpapataas ng gastos sa pagpapatakbo at mga mode ng pagkabigo.
633
-
634
- **Paano ito niresolba ng OmniRoute:**
635
-
636
- - OpenAI-compatible na proxy, MCP server, at A2A server sa isang stack
637
- - Nakabahaging auth, resilience, data store, at observability
638
- - Pare-parehong modelo ng patakaran sa lahat ng surface ng pakikipag-ugnayan
639
-
640
- </details>
641
-
642
- <details>
643
- <summary><b>🚀 30. "Kailangan kong magpadala ng mga ahenteng daloy ng trabaho nang walang glue-code sprawl"</b></summary>
644
-
645
- Nawawalan ng bilis ang mga koponan kapag nagtatahi ng maraming ad-hoc na serbisyo at script.
646
-
647
- **Paano ito niresolba ng OmniRoute:**
648
-
649
- - Pinag-isang endpoint na diskarte para sa mga kliyente at ahente
650
- - Mga built-in na UI sa pamamahala ng protocol at mga daanan sa pagpapatunay ng usok
651
- - Mga pundasyong handa sa produksyon (seguridad, pag-log, katatagan, backup)
652
-
653
- </details>
654
-
655
- ### Mga Halimbawang Playbook
656
-
657
- **Playbook A: I-maximize ang bayad na subscription + murang backup**
658
-
659
- ```txt
660
- Combo: "maximize-claude"
661
- 1. cc/claude-opus-4-6
662
- 2. glm/glm-4.7
663
- 3. if/kimi-k2-thinking
664
-
665
- Monthly cost: $20 + small backup spend
666
- Outcome: higher quality, near-zero interruption
667
- ```
668
-
669
- **Playbook B: Zero-cost coding stack**
670
-
671
- ```txt
672
- Combo: "free-forever"
673
- 1. gc/gemini-3-flash
674
- 2. if/kimi-k2-thinking
675
- 3. qw/qwen3-coder-plus
676
-
677
- Monthly cost: $0
678
- Outcome: stable free coding workflow
679
- ```
680
-
681
- **Playbook C: 24/7 always-on fallback chain**
682
-
683
- ```txt
684
- Combo: "always-on"
685
- 1. cc/claude-opus-4-6
686
- 2. cx/gpt-5.2-codex
687
- 3. glm/glm-4.7
688
- 4. minimax/MiniMax-M2.1
689
- 5. if/kimi-k2-thinking
690
-
691
- Outcome: deep fallback depth for deadline-critical workloads
692
- ```
693
-
694
- **Playbook D: Ahente ops sa MCP + A2A**
695
-
696
- ```txt
697
- 1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
698
- 2) Run A2A tasks via `message/send` and `message/stream`
699
- 3) Observe via /dashboard/mcp and /dashboard/a2a
700
- 4) Control incidents with resilience profile + task cancellation
701
- ```
702
-
703
- ---
704
-
705
- ## ⚡ Mabilis na Pagsisimula
706
-
707
- **1. I-install sa buong mundo:**
708
-
709
- ```bash
710
- npm install -g omniroute
711
- omniroute
712
- ```
713
-
714
- 🎉 Magbubukas ang dashboard sa `http://localhost:20128`
715
-
716
- | Utos | Paglalarawan |
717
- | ----------------------- | --------------------------------------- |
718
- | `omniroute` | Simulan ang server (default port 20128) |
719
- | `omniroute --port 3000` | Gumamit ng custom na port |
720
- | `omniroute --no-open` | Huwag awtomatikong buksan ang browser |
721
- | `omniroute --help` | Ipakita ang tulong |
722
-
723
- **2. Ikonekta ang isang LIBRENG provider:**
724
-
725
- Dashboard → Mga Provider → Ikonekta ang **Claude Code** o **Antigravity** → OAuth login → Tapos na!
726
-
727
- **3. Gamitin sa iyong CLI tool:**
728
-
729
- ```
730
- Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
731
- Endpoint: http://localhost:20128/v1
732
- API Key: [copy from dashboard]
733
- Model: if/kimi-k2-thinking
734
- ```
735
-
736
- **Iyon na!** Magsimulang mag-coding gamit ang LIBRENG mga modelo ng AI.
737
-
738
- **Alternatibong — tumakbo mula sa pinagmulan:**
739
-
740
- ```bash
741
- cp .env.example .env
742
- npm install
743
- PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
744
- ```
745
-
746
- ---
747
-
748
- ## 🐳 Docker
749
-
750
- Available ang OmniRoute bilang isang pampublikong larawan ng Docker sa [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
751
-
752
- **Mabilis na pagtakbo:**
753
-
754
- ```bash
755
- docker run -d \
756
- --name omniroute \
757
- --restart unless-stopped \
758
- -p 20128:20128 \
759
- -v omniroute-data:/app/data \
760
- diegosouzapw/omniroute:latest
761
- ```
762
-
763
- **Na may environment file:**
764
-
765
- ```bash
766
- # Copy and edit .env first
767
- cp .env.example .env
768
-
769
- docker run -d \
770
- --name omniroute \
771
- --restart unless-stopped \
772
- --env-file .env \
773
- -p 20128:20128 \
774
- -v omniroute-data:/app/data \
775
- diegosouzapw/omniroute:latest
776
- ```
777
-
778
- **Gumagamit ng Docker Compose:**
779
-
780
- ```bash
781
- # Base profile (no CLI tools)
782
- docker compose --profile base up -d
783
-
784
- # CLI profile (Claude Code, Codex, OpenClaw built-in)
785
- docker compose --profile cli up -d
786
- ```
787
-
788
- | Larawan | Tag | Sukat | Paglalarawan |
789
- | ------------------------ | -------- | ------ | ------------------------------ |
790
- | `diegosouzapw/omniroute` | `latest` | ~250MB | Pinakabagong stable na release |
791
- | `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Kasalukuyang bersyon |
792
-
793
- ---
794
-
795
- ---
796
-
797
- ## 🖥️
798
-
799
- > 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
800
-
801
- - 🖥️ **Native Window** — Dedicated app window with system tray integration
802
- - 🔄 **Auto-Start** — Launch OmniRoute on system login
803
- - 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
804
- - ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
805
- - 🌐 **Offline Mode** — Works fully offline with bundled server
806
-
807
- ```bash
808
- npm run electron:dev # Development mode
809
- npm run electron:build # Current platform
810
- npm run electron:build:win # Windows (.exe)
811
- npm run electron:build:mac # macOS (.dmg)
812
- npm run electron:build:linux # Linux (.AppImage)
813
- ```
814
-
815
- 📖 Full documentation: [`electron/README.md`](electron/README.md)
816
-
817
- ---
818
-
819
- ## 💰 Pagpepresyo sa isang Sulyap
820
-
821
- | Tier | Provider | Gastos | I-reset ang Quota | Pinakamahusay Para sa |
822
- | ------------------- | ----------------- | ------------------------ | -------------------- | ------------------------------- |
823
- | **💳 SUBSCRIPTION** | Claude Code (Pro) | $20/buwan | 5h + lingguhan | Naka-subscribe na |
824
- | | Codex (Plus/Pro) | $20-200/buwan | 5h + lingguhan | Mga user ng OpenAI |
825
- | | Gemini CLI | **LIBRE** | 180K/buwan + 1K/araw | Lahat! |
826
- | | GitHub Copilot | $10-19/buwan | Buwanang | Mga user ng GitHub |
827
- | **🔑 API KEY** | NVIDIA NIM | **LIBRE** (1000 credits) | Isang beses | Libreng tier na pagsubok |
828
- | | DeepSeek | Pay-per-use | Wala | Pinakamahusay na presyo/kalidad |
829
- | | Groq | Libreng tier + bayad | Limitado ang rate | Napakabilis na hinuha |
830
- | | xAI (Grok) | Pay-per-use | Wala | Mga modelong Grok |
831
- | | Mistral | Libreng tier + bayad | Limitado ang rate | European AI |
832
- | | OpenRouter | Pay-per-use | Wala | 100+ modelo |
833
- | **💰 MURA** | GLM-4.7 | $0.6/1M | Araw-araw 10AM | Backup ng badyet |
834
- | | MiniMax M2.1 | $0.2/1M | 5 oras na rolling | Pinaka murang opsyon |
835
- | | Kimi K2 | $9/buwan flat | 10M token/buwan | Nahuhulaang gastos |
836
- | **🆓 LIBRE** | iFlow | $0 | Walang limitasyong | 8 mga modelong libre |
837
- | | Qwen | $0 | Walang limitasyong | 3 mga modelong libre |
838
- | | Kiro | $0 | Walang limitasyong | Claude libre |
839
-
840
- **💡 Pro Tip:** Magsimula sa Gemini CLI (180K libre/buwan) + iFlow (walang limitasyong libre) combo = $0 na halaga!
841
-
842
- ---
843
-
844
- ## 💡 Mga Pangunahing Tampok
845
-
846
- ### 🧠 Core Routing at Intelligence
847
-
848
- | Tampok | Ano ang Ginagawa Nito |
849
- | ------------------------------- | -------------------------------------------------------------------------------------------- |
850
- | 🎯 **Smart 4-Tier Fallback** | Auto-ruta: Subscription → API Key → Mura → Libre |
851
- | 📊 **Real-Time Quota Tracking** | Live na bilang ng token + reset countdown bawat provider |
852
- | 🔄 **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro seamless + response sanitization |
853
- | 👥 **Suporta sa Multi-Account** | Maramihang account sa bawat provider na may matalinong pagpili |
854
- | 🔄 **Auto Token Refresh** | Awtomatikong nagre-refresh ang mga token ng OAuth sa muling pagsubok |
855
- | 🎨 **Mga Custom na Combos** | 6 na diskarte: fill-first, round-robin, p2c, random, hindi gaanong ginagamit, cost-optimized |
856
- | 🧩 **Mga Custom na Modelo** | Magdagdag ng anumang ID ng modelo sa anumang provider |
857
- | 🌐 **Wildcard Router** | Iruta ang `provider/*` na mga pattern sa anumang provider nang dynamic na |
858
- | 🧠 **Badyet sa Pag-iisip** | Passthrough, auto, custom, at adaptive mode para sa mga modelo ng pangangatwiran |
859
- | 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
860
- | ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
861
- | 💬 **System Prompt Injection** | Inilapat ang global system prompt sa lahat ng kahilingan |
862
- | 📄 **Responses API** | Buong OpenAI Responses API (`/v1/responses`) na suporta para sa Codex |
863
-
864
- ### 🎵 Mga Multi-Modal na API
865
-
866
- | Tampok | Ano ang Ginagawa Nito |
867
- | -------------------------- | ------------------------------------------------------------ |
868
- | 🖼️ **Pagbuo ng Larawan** | `/v1/images/generations` — 4 na provider, 9+ na modelo |
869
- | 📐 **Mga Pag-embed** | `/v1/embeddings` — 6 na provider, 9+ na modelo |
870
- | 🎤 **Audio Transcription** | `/v1/audio/transcriptions` — Whisper-compatible |
871
- | 🔊 **Text-to-Speech** | `/v1/audio/speech` — Multi-provider audio synthesis |
872
- | 🛡️ **Mga Pag-moderate** | `/v1/moderations` — Mga pagsusuri sa kaligtasan ng nilalaman |
873
- | 🔀 **Reranking** | `/v1/rerank` — Muling pagraranggo ng kaugnayan ng dokumento |
874
-
875
- ### 🛡️ Katatagan at Seguridad
876
-
877
- | Tampok | Ano ang Ginagawa Nito |
878
- | ----------------------------------------- | -------------------------------------------------------------------------------------- |
879
- | 🔌 **Circuit Breaker** | Awtomatikong buksan/isara ang bawat provider na may mga na-configure na threshold |
880
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
881
- | 🛡️ **Anti-Thundering Herd** | Mutex + semaphore rate-limit para sa mga API key provider |
882
- | 🧠 **Semantic Cache** | Binabawasan ng two-tier na cache (pirma + semantiko) ang gastos at latency |
883
- | ⚡ **Humiling ng Idempotency** | 5s dedup window para sa mga duplicate na kahilingan |
884
- | 🔒 **TLS Fingerprint Spoofing** | I-bypass ang TLS-based na bot detection sa pamamagitan ng wreq-js |
885
- | 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
886
- | 🌐 **Pag-filter ng IP** | Allowlist/blocklist para sa API access control |
887
- | 📊 **Mga Nae-edit na Limitasyon sa Rate** | Configurable RPM, min gap, at max na kasabay sa antas ng system |
888
- | 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
889
- | 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
890
- | 🛡 **Proteksyon sa Endpoint ng API** | Auth gating + pagharang ng provider para sa `/models` endpoint |
891
- | 🔒 **Proxy Visibility** | Mga color-coded na badge: 🟢 global, 🟡 provider, 🔵 per-connection na may IP display |
892
- | 🌐 **3-Level Proxy Config** | I-configure ang mga proxy sa global, per-provider, o per-connection level |
893
-
894
- ### 📊 Pagmamasid at Analytics
895
-
896
- | Tampok | Ano ang Ginagawa Nito |
897
- | ------------------------------- | -------------------------------------------------------------------------------------------- |
898
- | 📝 **Kahilingan sa Pag-log** | Debug mode na may buong kahilingan/tugon logs |
899
- | 💾 **SQLite Proxy Logs** | Ang mga paulit-ulit na proxy log ay nakaligtas sa pag-restart ng server |
900
- | 📊 **Analytics Dashboard** | Recharts-powered: mga stat card, chart ng paggamit ng modelo, talahanayan ng provider |
901
- | 📈 **Pagsubaybay sa Pag-unlad** | Mag-opt-in sa mga kaganapan sa pag-usad ng SSE para sa streaming |
902
- | 🧪 **Mga Pagsusuri sa LLM** | Golden set testing na may 4 na diskarte sa pagtutugma |
903
- | 🔍 **Humiling ng Telemetry** | p50/p95/p99 latency aggregation + X-Request-Id tracing |
904
- | 📋 **Dashboard ng Mga Log** | Pinag-isang 4-tab na pahina: Mga Log ng Kahilingan, Mga Proxy Log, Mga Log ng Audit, Console |
905
- | 🖥️ **Console Log Viewer** | Real-time na terminal-style viewer na may level filter, search, auto-scroll |
906
- | 📑 **File-Based Logging** | Kinukuha ng Console interceptor ang lahat ng output sa JSON log file na may pag-ikot |
907
- | 🏥 **Dashboard ng Kalusugan** | System uptime, circuit breaker states, lockouts, cache stats |
908
- | 💰 **Pagsubaybay sa Gastos** | Pamamahala ng badyet + configuration ng pagpepresyo sa bawat modelo |
909
-
910
- ### ☁️ Deployment at Pag-sync
911
-
912
- | Tampok | Ano ang Ginagawa Nito |
913
- | ----------------------------------- | ----------------------------------------------------------------------------------------------- |
914
- | 💾 **Cloud Sync** | I-sync ang config sa mga device sa pamamagitan ng Cloudflare Workers |
915
- | 🌐 **I-deploy Kahit Saan** | Localhost, VPS, Docker, Cloudflare Workers |
916
- | 🔑 **API Key Management** | Bumuo, paikutin, at saklawin ang mga API key sa bawat provider |
917
- | 🧙 **Onboarding Wizard** | 4-step guided setup para sa mga unang beses na user |
918
- | 🔧 **CLI Tools Dashboard** | One-click configure Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
919
- | 🔄 **Mga Backup ng DB** | Awtomatikong pag-backup, pagpapanumbalik, pag-export at pag-import para sa lahat ng mga setting |
920
- | 🌐 **Internasyonalisasyon** | Buong i18n na may next-intl — suporta sa English + Portuguese (Brazil) |
921
- | 🌍 **Pili ng Wika** | Globe icon sa header para sa real-time na paglipat ng wika (🇺🇸/🇧🇷) |
922
- | 📂 **Custom na Direktoryo ng Data** | `DATA_DIR` env var to override default `~/.omniroute` storage path |
923
-
924
- <details>
925
- <summary><b>📖 Mga Detalye ng Tampok</b></summary>
926
-
927
- ### 🎯 Smart 4-Tier Fallback
928
-
929
- Gumawa ng mga combo na may awtomatikong fallback:
930
-
931
- ```
932
- Combo: "my-coding-stack"
933
- 1. cc/claude-opus-4-6 (your subscription)
934
- 2. nvidia/llama-3.3-70b (free NVIDIA API)
935
- 3. glm/glm-4.7 (cheap backup, $0.6/1M)
936
- 4. if/kimi-k2-thinking (free fallback)
937
-
938
- → Auto switches when quota runs out or errors occur
939
- ```
940
-
941
- ### 📊 Real-Time na Pagsubaybay sa Quota
942
-
943
- - Pagkonsumo ng token bawat provider
944
- - I-reset ang countdown (5 oras, araw-araw, lingguhan)
945
- - Pagtatantya ng gastos para sa mga bayad na tier
946
- - Mga ulat sa buwanang paggasta
947
-
948
- ### 🔄 Pagsasalin ng Format
949
-
950
- Walang putol na pagsasalin sa pagitan ng mga format:
951
-
952
- - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
953
- - Ang iyong CLI tool ay nagpapadala ng OpenAI na format → OmniRoute nagsasalin → Provider ay tumatanggap ng katutubong format
954
- - Gumagana sa anumang tool na sumusuporta sa mga custom na endpoint ng OpenAI
955
- - **Response sanitization** — Tinatanggal ang mga hindi karaniwang field para sa mahigpit na OpenAI SDK compatibility
956
- - **Pag-normalize ng tungkulin** — `developer` → `system` para sa hindi OpenAI; `system` → `user` para sa mga modelo ng GLM/ERNIE
957
- - **Think tag extraction** — `<think>` block → `reasoning_content` para sa mga modelo ng pag-iisip
958
- - **Structured output** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
959
-
960
- ### 👥 Multi-Account Support
961
-
962
- - Magdagdag ng maramihang mga account sa bawat provider
963
- - Auto round-robin o priority-based na pagruruta
964
- - Fallback sa susunod na account kapag naabot ng isa ang quota
965
-
966
- ### 🔄 Auto Token Refresh
967
-
968
- - Awtomatikong nagre-refresh ang mga token ng OAuth bago mag-expire
969
- - Walang kinakailangang manu-manong muling pagpapatotoo
970
- - Walang putol na karanasan sa lahat ng provider
971
-
972
- ### 🎨 Mga Custom na Combos
973
-
974
- - Lumikha ng walang limitasyong mga kumbinasyon ng modelo
975
- - 6 na diskarte: fill-first, round-robin, power-of-two-choices, random, hindi gaanong ginagamit, cost-optimized
976
- - Magbahagi ng mga combo sa mga device na may Cloud Sync
977
-
978
- ### 🏥 Dashboard ng Kalusugan
979
-
980
- - Katayuan ng system (uptime, bersyon, paggamit ng memorya)
981
- - Mga estado ng circuit breaker bawat provider (Sarado/Bukas/Kalahating Bukas)
982
- - Katayuan ng limitasyon sa rate at mga aktibong lockout
983
- - Mga istatistika ng cache ng lagda
984
- - Latency telemetry (p50/p95/p99) + prompt cache
985
- - I-reset ang katayuan ng kalusugan sa isang pag-click
986
-
987
- ### 🔧 Palaruan ng Tagasalin
988
-
989
- Kasama sa OmniRoute ang isang malakas na built-in na Playground ng Translator na may **4 na mode** para sa pag-debug, pagsubok, at pagsubaybay sa mga pagsasalin ng API:
990
-
991
- | Mode | Paglalarawan |
992
- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
993
- | **💻 Palaruan** | Direktang pagsasalin ng format — i-paste ang anumang katawan ng kahilingan sa API at agad na makita kung paano ito isinasalin ng OmniRoute sa pagitan ng mga format ng provider (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). May kasamang mga halimbawang template at format ng auto-detection. |
994
- | **💬 Chat Tester** | Magpadala ng mga totoong kahilingan sa chat sa pamamagitan ng OmniRoute at tingnan ang buong round-trip: ang iyong input, ang isinaling kahilingan, ang tugon ng provider, at ang isinaling tugon pabalik. Napakahalaga para sa pagpapatunay ng combo routing. |
995
- | **🧪 Test Bench** | Batch testing mode — tumukoy ng maraming test case na may iba't ibang input at inaasahang output, patakbuhin ang mga ito nang sabay-sabay, at paghambingin ang mga resulta sa mga provider at modelo. |
996
- | **📱 Live Monitor** | Real-time na pagsubaybay sa kahilingan — panoorin ang mga papasok na kahilingan habang dumadaloy ang mga ito sa OmniRoute, tingnan ang mga pagsasalin ng format na nangyayari nang live, at tukuyin kaagad ang mga isyu. |
997
-
998
- **Access:** Dashboard → Translator (sidebar)
999
-
1000
- ### 💾 Cloud Sync
1001
-
1002
- - I-sync ang mga provider, combo, at mga setting sa mga device
1003
- - Awtomatikong pag-sync sa background
1004
- - Secure na naka-encrypt na imbakan
1005
-
1006
- </details>
1007
-
1008
- ## 🧪 Mga Pagsusuri (Evals)
1009
-
1010
- Ang OmniRoute ay may kasamang built-in na balangkas ng pagsusuri upang subukan ang kalidad ng pagtugon ng LLM laban sa isang ginintuang hanay. I-access ito sa pamamagitan ng **Analytics → Evals** sa dashboard.
1011
-
1012
- ### na Set
1013
-
1014
- Ang pre-loaded na "OmniRoute Golden Set" ay naglalaman ng 10 test case na sumasaklaw sa:
1015
-
1016
- - Pagbati, matematika, heograpiya, pagbuo ng code
1017
- - Pagsunod sa format ng JSON, pagsasalin, markdown
1018
- - Pagtanggi sa kaligtasan (nakapipinsalang nilalaman), pagbibilang, lohika ng boolean
1019
-
1020
- ### Estratehiya sa Pagsusuri
1021
-
1022
- | Diskarte | Paglalarawan | Halimbawa |
1023
- | ---------- | ------------------------------------------------------------ | -------------------------------- |
1024
- | `exact` | Dapat na eksaktong tumugma ang output | `"4"` |
1025
- | `contains` | Ang output ay dapat maglaman ng substring (case-insensitive) | `"Paris"` |
1026
- | `regex` | Ang output ay dapat tumugma sa regex pattern | `"1.*2.*3"` |
1027
- | `custom` | Ang custom na JS function ay nagbabalik ng true/false | `(output) => output.length > 10` |
1028
-
1029
- ---
1030
-
1031
- ## 📖 Gabay sa Pag-setup
1032
-
1033
- <details>
1034
- <summary><b>💳 Mga Tagabigay ng Subscription</b></summary>
1035
-
1036
- ### Claude Code (Pro/Max)
1037
-
1038
- ```bash
1039
- Dashboard → Providers → Connect Claude Code
1040
- → OAuth login → Auto token refresh
1041
- → 5-hour + weekly quota tracking
1042
-
1043
- Models:
1044
- cc/claude-opus-4-6
1045
- cc/claude-sonnet-4-5-20250929
1046
- cc/claude-haiku-4-5-20251001
1047
- ```
1048
-
1049
- **Pro Tip:** Gamitin ang Opus para sa mga kumplikadong gawain, Soneto para sa bilis. Sinusubaybayan ng OmniRoute ang quota bawat modelo!
1050
-
1051
- ### OpenAI Codex (Plus/Pro)
1052
-
1053
- ```bash
1054
- Dashboard → Providers → Connect Codex
1055
- → OAuth login (port 1455)
1056
- → 5-hour + weekly reset
1057
-
1058
- Models:
1059
- cx/gpt-5.2-codex
1060
- cx/gpt-5.1-codex-max
1061
- ```
1062
-
1063
- ### Gemini CLI (LIBRE 180K/buwan!)
1064
-
1065
- ```bash
1066
- Dashboard → Providers → Connect Gemini CLI
1067
- → Google OAuth
1068
- → 180K completions/month + 1K/day
1069
-
1070
- Models:
1071
- gc/gemini-3-flash-preview
1072
- gc/gemini-2.5-pro
1073
- ```
1074
-
1075
- **Pinakamahusay na Halaga:** Malaking libreng tier! Gamitin ito bago ang mga bayad na tier.
1076
-
1077
- ### GitHub Copilot
1078
-
1079
- ```bash
1080
- Dashboard → Providers → Connect GitHub
1081
- → OAuth via GitHub
1082
- → Monthly reset (1st of month)
1083
-
1084
- Models:
1085
- gh/gpt-5
1086
- gh/claude-4.5-sonnet
1087
- gh/gemini-3-pro
1088
- ```
1089
-
1090
- </details>
1091
-
1092
- <details>
1093
- <summary><b>🔑 API Key Provider</b></summary>
1094
-
1095
- ### NVIDIA NIM (LIBRE 1000 credits!)
1096
-
1097
- 1. Mag-sign up: [build.nvidia.com](https://build.nvidia.com)
1098
- 2. Kumuha ng libreng API key (1000 inference credits kasama)
1099
- 3. Dashboard → Magdagdag ng Provider → NVIDIA NIM:
1100
- - API Key: `nvapi-your-key`
1101
-
1102
- **Mga Modelo:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, at 50+ pa
1103
-
1104
- **Pro Tip:** OpenAI-compatible na API — gumagana nang walang putol sa pagsasalin ng format ng OmniRoute!
1105
-
1106
- ### DeepSeek
1107
-
1108
- 1. Mag-sign up: [platform.deepseek.com](https://platform.deepseek.com)
1109
- 2. Kunin ang API key
1110
- 3. Dashboard → Magdagdag ng Provider → DeepSeek
1111
-
1112
- **Mga Modelo:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
1113
-
1114
- ### Groq (Magagamit ang Libreng Tier!)
1115
-
1116
- 1. Mag-sign up: [console.groq.com](https://console.groq.com)
1117
- 2. Kunin ang API key (kasama ang libreng tier)
1118
- 3. Dashboard → Magdagdag ng Provider → Groq
1119
-
1120
- **Mga Modelo:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
1121
-
1122
- **Pro Tip:** Napakabilis na inference — pinakamahusay para sa real-time na coding!
1123
-
1124
- ### OpenRouter (100+ Modelo)
1125
-
1126
- 1. Mag-sign up: [openrouter.ai](https://openrouter.ai)
1127
- 2. Kunin ang API key
1128
- 3. Dashboard → Magdagdag ng Provider → OpenRouter
1129
-
1130
- **Mga Modelo:** I-access ang 100+ na modelo mula sa lahat ng pangunahing provider sa pamamagitan ng iisang API key.
1131
-
1132
- </details>
1133
-
1134
- <details>
1135
- <summary><b>💰 Mga Murang Provider (Backup)</b></summary>
1136
-
1137
- ### GLM-4.7 (Araw-araw na pag-reset, $0.6/1M)
1138
-
1139
- 1. Mag-sign up: [Zhipu AI](https://open.bigmodel.cn/)
1140
- 2. Kumuha ng API key mula sa Coding Plan
1141
- 3. Dashboard → Magdagdag ng API Key:
1142
- - Provider: `glm`
1143
- - API Key: `your-key`
1144
-
1145
- **Gamitin:** `glm/glm-4.7`
1146
-
1147
- **Pro Tip:** Nag-aalok ang Coding Plan ng 3× na quota sa 1/7 na halaga! I-reset araw-araw 10:00 AM.
1148
-
1149
- ### MiniMax M2.1 (5h reset, $0.20/1M)
1150
-
1151
- 1. Mag-sign up: [MiniMax](https://www.minimax.io/)
1152
- 2. Kunin ang API key
1153
- 3. Dashboard → Magdagdag ng API Key
1154
-
1155
- **Gamitin:** `minimax/MiniMax-M2.1`
1156
-
1157
- **Pro Tip:** Ang pinakamurang opsyon para sa mahabang konteksto (1M token)!
1158
-
1159
- ### Kimi K2 ($9/month flat)
1160
-
1161
- 1. Mag-subscribe: [Moonshot AI](https://platform.moonshot.ai/)
1162
- 2. Kunin ang API key
1163
- 3. Dashboard → Magdagdag ng API Key
1164
-
1165
- **Gamitin:** `kimi/kimi-latest`
1166
-
1167
- **Pro Tip:** Nakapirming $9/buwan para sa 10M token = $0.90/1M epektibong gastos!
1168
-
1169
- </details>
1170
-
1171
- <details>
1172
- <summary><b>🆓 LIBRENG Provider (Emergency Backup)</b></summary>
1173
-
1174
- ### iFlow (8 LIBRENG modelo)
1175
-
1176
- ```bash
1177
- Dashboard → Connect iFlow
1178
- → iFlow OAuth login
1179
- → Unlimited usage
1180
-
1181
- Models:
1182
- if/kimi-k2-thinking
1183
- if/qwen3-coder-plus
1184
- if/glm-4.7
1185
- if/minimax-m2
1186
- if/deepseek-r1
1187
- ```
1188
-
1189
- ### Qwen (3 LIBRENG modelo)
1190
-
1191
- ```bash
1192
- Dashboard → Connect Qwen
1193
- → Device code authorization
1194
- → Unlimited usage
1195
-
1196
- Models:
1197
- qw/qwen3-coder-plus
1198
- qw/qwen3-coder-flash
1199
- ```
1200
-
1201
- ### Kiro (Claude LIBRE)
1202
-
1203
- ```bash
1204
- Dashboard → Connect Kiro
1205
- → AWS Builder ID or Google/GitHub
1206
- → Unlimited usage
1207
-
1208
- Models:
1209
- kr/claude-sonnet-4.5
1210
- kr/claude-haiku-4.5
1211
- ```
1212
-
1213
- </details>
1214
-
1215
- <details>
1216
- <summary><b>🎨 Lumikha ng mga Combo</b></summary>
1217
-
1218
- ### Halimbawa 1: I-maximize ang Subscription → Murang Backup
1219
-
1220
- ```
1221
- Dashboard → Combos → Create New
1222
-
1223
- Name: premium-coding
1224
- Models:
1225
- 1. cc/claude-opus-4-6 (Subscription primary)
1226
- 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
1227
- 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
1228
-
1229
- Use in CLI: premium-coding
1230
- ```
1231
-
1232
- ### Halimbawa 2: Libre-Lamang (Zero na Gastos)
1233
-
1234
- ```
1235
- Name: free-combo
1236
- Models:
1237
- 1. gc/gemini-3-flash-preview (180K free/month)
1238
- 2. if/kimi-k2-thinking (unlimited)
1239
- 3. qw/qwen3-coder-plus (unlimited)
1240
-
1241
- Cost: $0 forever!
1242
- ```
1243
-
1244
- </details>
1245
-
1246
- <details>
1247
- <summary><b>🔧 CLI Integration</b></summary>
1248
-
1249
- ### Cursor IDE
1250
-
1251
- ```
1252
- Settings → Models → Advanced:
1253
- OpenAI API Base URL: http://localhost:20128/v1
1254
- OpenAI API Key: [from OmniRoute dashboard]
1255
- Model: cc/claude-opus-4-6
1256
- ```
1257
-
1258
- ### Claude Code
1259
-
1260
- Gamitin ang pahina ng **CLI Tools** sa dashboard para sa isang pag-click na configuration, o manu-manong i-edit ang `~/.claude/settings.json`.
1261
-
1262
- ### Codex CLI
1263
-
1264
- ```bash
1265
- export OPENAI_BASE_URL="http://localhost:20128"
1266
- export OPENAI_API_KEY="your-omniroute-api-key"
1267
-
1268
- codex "your prompt"
1269
- ```
1270
-
1271
- ### OpenClaw
1272
-
1273
- **Pagpipilian 1 — Dashboard (inirerekomenda):**
1274
-
1275
- ```
1276
- Dashboard → CLI Tools → OpenClaw → Select Model → Apply
1277
- ```
1278
-
1279
- **Pagpipilian 2 — Manwal:** I-edit ang `~/.openclaw/openclaw.json`:
1280
-
1281
- ```json
1282
- {
1283
- "models": {
1284
- "providers": {
1285
- "omniroute": {
1286
- "baseUrl": "http://127.0.0.1:20128/v1",
1287
- "apiKey": "sk_omniroute",
1288
- "api": "openai-completions"
1289
- }
1290
- }
1291
- }
1292
- }
1293
- ```
1294
-
1295
- > **Tandaan:** Ang OpenClaw ay gumagana lamang sa lokal na OmniRoute. Gamitin ang `127.0.0.1` sa halip na `localhost` upang maiwasan ang mga isyu sa paglutas ng IPv6.
1296
-
1297
- ### Cline / Magpatuloy / RooCode
1298
-
1299
- ```
1300
- Settings → API Configuration:
1301
- Provider: OpenAI Compatible
1302
- Base URL: http://localhost:20128/v1
1303
- API Key: [from OmniRoute dashboard]
1304
- Model: if/kimi-k2-thinking
1305
- ```
1306
-
1307
- </details>
1308
-
1309
- ---
1310
-
1311
- ## 🐛 Pag-troubleshoot
1312
-
1313
- <details>
1314
- <summary><b>Mag-click upang palawakin ang gabay sa pag-troubleshoot</b></summary>
1315
-
1316
- **"Ang modelo ng wika ay hindi nagbigay ng mga mensahe"**
1317
-
1318
- - Naubos na ang quota ng provider → Suriin ang tracker ng quota ng dashboard
1319
- - Solusyon: Gumamit ng combo fallback o lumipat sa mas murang tier
1320
-
1321
- **Paglilimita sa rate**
1322
-
1323
- - Out na ang quota ng subscription → Fallback sa GLM/MiniMax
1324
- - Magdagdag ng combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1325
-
1326
- **Nag-expire ang token ng OAuth**
1327
-
1328
- - Auto-refresh ng OmniRoute
1329
- - Kung magpapatuloy ang mga isyu: Dashboard → Provider → Muling kumonekta
1330
-
1331
- **Mataas na gastos**
1332
-
1333
- - Suriin ang mga istatistika ng paggamit sa Dashboard → Mga Gastos
1334
- - Ilipat ang pangunahing modelo sa GLM/MiniMax
1335
- - Gumamit ng libreng tier (Gemini CLI, iFlow) para sa mga hindi kritikal na gawain
1336
-
1337
- **Nagbubukas ang dashboard sa maling port**
1338
-
1339
- - Itakda ang `PORT=20128` at `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
1340
-
1341
- **Mga error sa cloud sync**
1342
-
1343
- - I-verify ang `BASE_URL` na mga puntos sa iyong running instance
1344
- - I-verify ang `CLOUD_URL` na mga puntos sa iyong inaasahang cloud endpoint
1345
- - Panatilihing nakahanay ang mga value ng `NEXT_PUBLIC_*` sa mga value sa gilid ng server
1346
-
1347
- **Hindi gumagana ang unang pag-login**
1348
-
1349
- - Suriin ang `INITIAL_PASSWORD` sa `.env`
1350
- - Kung hindi nakatakda, ang fallback na password ay `123456`
1351
-
1352
- **Walang mga log ng kahilingan**
1353
-
1354
- - Itakda ang `ENABLE_REQUEST_LOGS=true` sa `.env`
1355
-
1356
- **Ang pagsubok sa koneksyon ay nagpapakita ng "Di-wasto" para sa mga provider na katugma sa OpenAI**
1357
-
1358
- - Maraming provider ang hindi naglalantad ng `/models` endpoint
1359
- - Kasama sa OmniRoute v1.0.6+ ang fallback validation sa pamamagitan ng mga pagkumpleto ng chat
1360
- - Tiyaking may kasamang `/v1` suffix ang base URL
1361
-
1362
- ### 🔐 OAuth
1363
-
1364
- <a name="oauth-em-servidor-remoto"></a>
1365
-
1366
- > **⚠️ MAHALAGA para sa usuários com OmniRoute sa VPS/Docker/servidor remoto**
1367
-
1368
- ### OAuth
1369
-
1370
- Os provedores **Antigravity** at **Gemini CLI** gamit ang **Google OAuth 2.0** para sa autenticação. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pré-cadastradas no Google Cloud Console do aplicativo.
1371
-
1372
- Bilang credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para sa `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (hal: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
1373
-
1374
- ```
1375
- Error 400: redirect_uri_mismatch
1376
- ```
1377
-
1378
- ### Solusyon: I-configure ang suas próprias credenciais OAuth
1379
-
1380
- Você precisa criar um **OAuth 2.0 Client ID** walang Google Cloud Console com a URI do seu servidor.
1381
-
1382
- #### Passo a passo
1383
-
1384
- **1. Mag-access sa Google Cloud Console**
1385
-
1386
- Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
1387
-
1388
- **2. Crie um novo OAuth 2.0 Client ID**
1389
-
1390
- - Clique em **"+ Lumikha ng Mga Kredensyal"** → **"OAuth client ID"**
1391
- - Tipo de aplicativo: **"Web application"**
1392
- - Pangalan: escolha qualquer nome (hal: `OmniRoute Remote`)
1393
-
1394
- **3. Idagdag bilang Mga Awtorisadong URI sa Pag-redirect**
1395
-
1396
- Walang campo **"Mga Awtorisadong URI sa pag-redirect"**, idagdag:
1397
-
1398
- ```
1399
- https://seu-servidor.com/callback
1400
- ```
1401
-
1402
- > Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (kasama ang porta se necessário, hal: `http://45.33.32.156:20128/callback`).
1403
-
1404
- **4. I-save at kopyahin bilang kredensyal**
1405
-
1406
- Após criar, o Google mostrará o **Client ID** at ** Client Secret**.
1407
-
1408
- **5. I-configure bilang variáveis de ambiente**
1409
-
1410
- No seu `.env` (ou nas variáveis de ambiente do Docker):
1411
-
1412
- ```bash
1413
- # Para Antigravity:
1414
- ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1415
- ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1416
-
1417
- # Para Gemini CLI:
1418
- GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1419
- GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1420
- GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1421
- ```
1422
-
1423
- **6. Reinicie o OmniRoute**
1424
-
1425
- ```bash
1426
- # Se usando npm:
1427
- npm run dev
1428
-
1429
- # Se usando Docker:
1430
- docker restart omniroute
1431
- ```
1432
-
1433
- **7. Tente conectar novamente**
1434
-
1435
- Dashboard → Mga Provider → Antigravity (ou Gemini CLI) → OAuth
1436
-
1437
- Agora o Google redirectionará corretamente para sa `https://seu-servidor.com/callback` at a autenticação funcionará.
1438
-
1439
- ---
1440
-
1441
- #### Workaround temporário (sem configurar credenciais próprias)
1442
-
1443
- Se não quiser criar credenciais próprias agora, may posibilidad na magamit o fluxo **manual de URL**:
1444
-
1445
- 1. OmniRoute abrirá a URL de authorização do Google
1446
- 2. Após você authorizar, o Google tentará redirectionar para sa `localhost` (que falha no servidor remoto)
1447
- 3. **Kopyahin ang isang URL completa** sa barra de endereço do seu browser (mesmo que a página não carregue)
1448
- 4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
1449
- 5. Clique em **"Kumonekta"**
1450
-
1451
- > Ang workaround na ito ay gumagana sa pamamagitan ng código de authorização na URL ay maaaring mag-redirect sa iyong carregado ou não.
1452
-
1453
- </details>
1454
-
1455
- ---
1456
-
1457
- ## 🛠️
1458
-
1459
- - **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ ay **hindi suportado** — `better-sqlite3` native binary ay hindi tugma)
1460
- - **Wika**: TypeScript 5.9 — **100% TypeScript** sa `src/` at `open-sse/` (v1.0.6)
1461
- - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
1462
- - **Database**: LowDB (JSON) + SQLite (domain state + proxy logs)
1463
- - **Streaming**: Mga Kaganapang Ipinadala ng Server (SSE)
1464
- - **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
1465
- - **Pagsubok**: Node.js test runner (368+ unit test)
1466
- - **CI/CD**: GitHub Actions (auto npm publish + Docker Hub on release)
1467
- - **Website**: [omniroute.online](https://omniroute.online)
1468
- - **Package**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1469
- - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1470
- - **Resilience**: Circuit breaker, exponential backoff, anti-thundering herd, TLS spoofing
1471
-
1472
- ---
1473
-
1474
- ## 📖 Dokumentasyon
1475
-
1476
- | Dokumento | Paglalarawan |
1477
- | -------------------------------------------- | --------------------------------------------------- |
1478
- | [User Guide](docs/USER_GUIDE.md) | Mga provider, combo, CLI integration, deployment |
1479
- | [API Reference](docs/API_REFERENCE.md) | Lahat ng mga endpoint na may mga halimbawa |
1480
- | [Troubleshooting](docs/TROUBLESHOOTING.md) | Mga karaniwang problema at solusyon |
1481
- | [Architecture](docs/ARCHITECTURE.md) | Arkitektura ng system at mga panloob |
1482
- | [Contributing](CONTRIBUTING.md) | Pag-setup at mga alituntunin ng pag-unlad |
1483
- | [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 na detalye |
1484
- | [Security Policy](SECURITY.md) | Pag-uulat ng kahinaan at mga kasanayan sa seguridad |
1485
- | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Kumpletong gabay: VM + nginx + Cloudflare setup |
1486
- | [Features Gallery](docs/FEATURES.md) | Visual dashboard tour na may mga screenshot |
1487
-
1488
- ### 📸 Preview ng Dashboard
1489
-
1490
- <details>
1491
- <summary><b>Mag-click para makita ang mga screenshot ng dashboard</b></summary>
1492
-
1493
- | Pahina | Screenshot |
1494
- | ----------------------- | ------------------------------------------------- |
1495
- | **Mga Provider** | ![Providers](docs/screenshots/01-providers.png) |
1496
- | **Combos** | ![Combos](docs/screenshots/02-combos.png) |
1497
- | **Analytics** | ![Analytics](docs/screenshots/03-analytics.png) |
1498
- | **Kalusugan** | ![Health](docs/screenshots/04-health.png) |
1499
- | **Tagasalin** | ![Translator](docs/screenshots/05-translator.png) |
1500
- | **Mga Setting** | ![Settings](docs/screenshots/06-settings.png) |
1501
- | **Mga CLI Tools** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1502
- | **Mga Log ng Paggamit** | ![Usage](docs/screenshots/08-usage.png) |
1503
- | **Endpoint** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1504
-
1505
- </details>
1506
-
1507
- ---
1508
-
1509
- ## 🗺️
1510
-
1511
- Ang OmniRoute ay may **210+ feature na binalak** sa maraming yugto ng pag-unlad. Narito ang mga pangunahing lugar:
1512
-
1513
- | Kategorya | Mga Nakaplanong Tampok | Mga Highlight |
1514
- | -------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------- |
1515
- | 🧠 **Routing at Intelligence** | 25+ | Lowest-latency routing, tag-based na routing, quota preflight, P2C account selection |
1516
- | 🔒 **Seguridad at Pagsunod** | 20+ | SSRF hardening, credential cloaking, rate-limit sa bawat endpoint, management key scoping |
1517
- | 📊 **Pagmamasid** | 15+ | Pagsasama ng OpenTelemetry, real-time na pagsubaybay sa quota, pagsubaybay sa gastos bawat modelo |
1518
- | 🔄 **Mga Pagsasama ng Provider** | 20+ | Dynamic na model registry, provider cooldowns, multi-account Codex, Copilot quota parsing |
1519
- | ⚡ **Pagganap** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API |
1520
- | 🌐 **Ecosystem** | 10+ | WebSocket API, config hot-reload, distributed config store, commercial mode |
1521
-
1522
- ### 🔜 Malapit na
1523
-
1524
- - 🔗 **OpenCode Integration** — Suporta ng katutubong provider para sa OpenCode AI coding IDE
1525
- - 🔗 **TRAE Integration** — Buong suporta para sa balangkas ng pag-develop ng TRAE AI
1526
- - 📦 **Batch API** — Asynchronous na pagproseso ng batch para sa maramihang kahilingan
1527
- - 🎯 **Tag-Based Routing** — Mga kahilingan sa ruta batay sa mga custom na tag at metadata
1528
- - 💰 **Diskarte sa Pinakamababang Gastos** — Awtomatikong piliin ang pinakamurang available na provider
1529
-
1530
- > 📝 Available ang buong detalye ng feature sa [link](docs/new-features/) (217 detalyadong spec)
1531
-
1532
- ---
1533
-
1534
- ## 👥 Mga nag-aambag
1535
-
1536
- [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1537
-
1538
- ### Paano Mag-ambag
1539
-
1540
- 1. I-fork ang repositoryo
1541
- 2. Gawin ang iyong sangay ng tampok (`git checkout -b feature/amazing-feature`)
1542
- 3. Ibigay ang iyong mga pagbabago (`git commit -m 'Add amazing feature'`)
1543
- 4. Itulak sa sangay (`git push origin feature/amazing-feature`)
1544
- 5. Magbukas ng Pull Request
1545
-
1546
- Tingnan ang [CONTRIBUTING.md](CONTRIBUTING.md) para sa mga detalyadong alituntunin.
1547
-
1548
- ### Naglalabas ng Bagong Bersyon
1549
-
1550
- ```bash
1551
- # Create a release — npm publish happens automatically
1552
- gh release create v1.0.6 --title "v1.0.6" --generate-notes
1553
- ```
1554
-
1555
- ---
1556
-
1557
- ## 📊 Kasaysayan ng Bituin
1558
-
1559
- <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1560
- <picture>
1561
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1562
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1563
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1564
- </picture>
1565
- </a>
1566
-
1567
- ---
1568
-
1569
- ## 🙏 Pasasalamat
1570
-
1571
- Espesyal na pasasalamat kay **[9router](https://github.com/decolua/9router)** ni **[decolua](https://github.com/decolua)** — ang orihinal na proyektong nagbigay inspirasyon sa tinidor na ito. Bumubuo ang OmniRoute sa hindi kapani-paniwalang pundasyong iyon na may mga karagdagang feature, multi-modal na API, at buong TypeScript na muling pagsulat.
1572
-
1573
- Espesyal na salamat sa **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — ang orihinal na pagpapatupad ng Go na nagbigay inspirasyon sa JavaScript port na ito.
1574
-
1575
- ---
1576
-
1577
- ## 📄 Lisensya
1578
-
1579
- Lisensya ng MIT - tingnan ang [LICENSE](LICENSE) para sa mga detalye.
1580
-
1581
- ---
1582
-
1583
- <div align="center">
1584
- <sub>Built with ❤️ para sa mga developer na nagko-code 24/7</sub>
1585
- <br/>
1586
- <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1587
- </div>