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.ro.md DELETED
@@ -1,1588 +0,0 @@
1
- <div align="center">
2
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
3
-
4
- # 🚀 OmniRoute — Gateway-ul gratuit AI
5
-
6
- ### Nu opriți niciodată codificarea. Dirijare inteligentă către **modele AI GRATUITE și cu costuri reduse** cu rezervă automată.
7
-
8
- _Proxy-ul dvs. universal API - un punct final, peste 36 de furnizori, zero timpi de nefuncționare._
9
-
10
- **Finalizări de chat • Încorporare • Generare de imagini • Audio • Reclasificare • 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
- ### 🤖 Furnizor AI gratuit pentru agenții tăi preferați de codare
27
-
28
- _Conectați orice instrument IDE sau CLI alimentat de AI prin OmniRoute — gateway API gratuit pentru codare nelimitată._
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>📡 Toți agenții se conectează prin <code>http://localhost:20128/v1</code> sau <code>http://cloud.omniroute.online.online/v1 modele și cotă nelimitate</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
- ## 🤔 De ce OmniRoute?
155
-
156
- **Nu mai risipi banii și nu mai atingeți limitele:**
157
-
158
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Cota de abonament expiră neutilizată în fiecare lună
159
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Limitele ratelor te opresc la mijloc de codare
160
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> API-uri scumpe (20-50 USD/lună per furnizor)
161
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Comutare manuală între furnizori
162
-
163
- **OmniRoute rezolvă asta:**
164
-
165
- - ✅ **Maximizați abonamentele** - Urmăriți cota, utilizați fiecare bit înainte de resetare
166
- - ✅ **Auto de rezervă** - Abonament → Cheie API → Ieftin → Gratuit, timp de nefuncționare zero
167
- - ✅ **Multi-cont** - Round-robin între conturi pentru fiecare furnizor
168
- - ✅ **Universal** - Funcționează cu Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, orice instrument CLI
169
-
170
- ---
171
-
172
- ## 📧 Suport
173
-
174
- > 💬 **Alăturați-vă comunității noastre!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Obțineți ajutor, împărtășiți sfaturi și fiți la curent.
175
-
176
- - **Site web**: [omniroute.online](https://omniroute.online)
177
- - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
178
- - **Probleme**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
179
- - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
180
- - **Proiect original**: [9router by decolua](https://github.com/decolua/9router)
181
-
182
- ---
183
-
184
- ## 🔄 Cum funcționează
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
- ## 🎯 Ce rezolvă OmniRoute — 30 de puncte reale de durere și cazuri de utilizare
214
-
215
- > **Fiecare dezvoltator care folosește instrumente AI se confruntă zilnic cu aceste probleme.** OmniRoute a fost creat pentru a le rezolva pe toate - de la depășiri de costuri la blocaje regionale, de la fluxuri OAuth întrerupte la operațiuni de protocol și observabilitate a întreprinderii.
216
-
217
- <details>
218
- <summary><b>💸 1. „Plătesc pentru un abonament scump, dar tot sunt întrerupt de limite”</b></summary>
219
-
220
- Dezvoltatorii plătesc 20–200 USD/lună pentru Claude Pro, Codex Pro sau GitHub Copilot. Chiar și plătind, cota are un plafon - 5 ore de utilizare, limite săptămânale sau limite de tarif pe minut. La mijlocul sesiunii de codare, furnizorul nu mai răspunde și dezvoltatorul își pierde fluxul și productivitatea.
221
-
222
- **Cum o rezolvă OmniRoute:**
223
-
224
- - **Smart 4-Tier Fallback** — Dacă cota de abonament se epuizează, redirecționează automat la cheia API → Ieftin → Gratuit fără intervenție manuală
225
- - **Urmărirea cotelor în timp real** — Afișează consumul de simboluri în timp real cu numărătoarea inversă de resetare (5 ore, zilnic, săptămânal)
226
- - **Asistență pentru mai multe conturi** — Conturi multiple per furnizor cu turneu automat automat — când unul se epuizează, trece la următorul
227
- - **Combinații personalizate** — Lanțuri de rezervă personalizabile cu 6 strategii de echilibrare (fill-first, round-robin, P2C, aleatoriu, cel mai puțin utilizat, optimizat din punct de vedere al costurilor)
228
- - **Cote de afaceri Codex** — Monitorizarea cotelor de spațiu de lucru pentru afaceri/echipe direct în tabloul de bord
229
-
230
- </details>
231
-
232
- <details>
233
- <summary><b>🔌 2. „Trebuie să folosesc mai mulți furnizori, dar fiecare are un API diferit”</b></summary>
234
-
235
- OpenAI folosește un format, Claude (Anthropic) folosește altul, Gemini încă altul. Dacă un dezvoltator dorește să testeze modele de la diferiți furnizori sau să se retragă între aceștia, trebuie să reconfigureze SDK-urile, să schimbe punctele finale, să se ocupe de formate incompatibile. Furnizorii personalizați (FriendLI, NIM) au puncte finale de model non-standard.
236
-
237
- **Cum o rezolvă OmniRoute:**
238
-
239
- - **Unified Endpoint** — Un singur `http://localhost:20128/v1` servește drept proxy pentru toți cei 36 de furnizori și mai sus
240
- - **Traducerea formatului** — Automată și transparentă: OpenAI ↔ Claude ↔ Gemeni ↔ Responses API
241
- - **Response Sanitization** — Elimina câmpurile nestandard (`x_groq`, `usage_breakdown`, `service_tier`) care încalcă OpenAI SDK v1.83+
242
- - **Normalizarea rolurilor** — Convertește `developer` → `system` pentru furnizorii non-OpenAI; `system` → `user` pentru GLM/ERNIE
243
- - **Think Tag Extraction** — Extrage blocurile `<think>` de la modele precum DeepSeek R1 în `reasoning_content` standardizat
244
- - **Ieșire structurată pentru Gemeni** — `json_schema` → `responseMimeType`/`responseSchema` conversie automată
245
- - **`stream` este implicit `false`** — Se aliniază cu specificațiile OpenAI, evitând SSE neașteptat în SDK-urile Python/Rust/Go
246
-
247
- </details>
248
-
249
- <details>
250
- <summary><b>🌐 3. „Furnizorul meu AI îmi blochează regiunea/țara”</b></summary>
251
-
252
- Furnizori precum OpenAI/Codex blochează accesul din anumite regiuni geografice. Utilizatorii primesc erori precum `unsupported_country_region_territory` în timpul conexiunilor OAuth și API. Acest lucru este frustrant în special pentru dezvoltatorii din țările în curs de dezvoltare.
253
-
254
- **Cum o rezolvă OmniRoute:**
255
-
256
- - **3-Level Proxy Config** — Proxy configurabil la 3 niveluri: global (tot traficul), per furnizor (doar un singur furnizor) și per conexiune/cheie
257
- - **Insigne de proxy cu coduri de culoare** — Indicatori vizuali: 🟢 proxy global, 🟡 proxy furnizor, 🔵 proxy de conexiune, indicând întotdeauna IP-ul
258
- - **Schimb de jetoane OAuth prin proxy** — fluxul OAuth trece și prin proxy, rezolvând `unsupported_country_region_territory`
259
- - **Teste de conexiune prin proxy** — Testele de conexiune folosesc proxy-ul configurat (nu mai este ocolire directă)
260
- - **Support SOCKS5** — Suport complet SOCKS5 proxy pentru rutarea de ieșire
261
- - **TLS Fingerprint Spoofing** — Amprenta TLS asemănătoare unui browser prin `wreq-js` pentru a ocoli detectarea botului
262
-
263
- </details>
264
-
265
- <details>
266
- <summary><b>🆓 4. „Vreau să folosesc AI pentru codare, dar nu am bani”</b></summary>
267
-
268
- Nu toată lumea poate plăti 20–200 USD/lună pentru abonamentele AI. Studenții, dezvoltatorii din țările emergente, pasionații și freelancerii au nevoie de acces la modele de calitate la cost zero.
269
-
270
- **Cum o rezolvă OmniRoute:**
271
-
272
- - **Free Tier Providers Built-in** — Suport nativ pentru furnizori 100% gratuiti: iFlow (8 modele nelimitate), Qwen (3 modele nelimitate), Kiro (Claude gratuit), Gemini CLI (180K/lună gratuit)
273
- - **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/<model>` prefix
274
- - **Combinații numai gratuite** — Lanțul `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 USD/lună fără timp de nefuncționare
275
- - **Credite gratuite NVIDIA NIM** — 1000 de credite gratuite integrate
276
- - **Cost Optimized Strategy** — Strategie de rutare care alege automat cel mai ieftin furnizor disponibil
277
-
278
- </details>
279
-
280
- <details>
281
- <summary><b>🔒 5. „Trebuie să-mi protejez poarta AI de accesul neautorizat”</b></summary>
282
-
283
- Când expuneți un gateway AI în rețea (LAN, VPS, Docker), oricine are adresa poate consuma jetoanele/cota dezvoltatorului. Fără protecție, API-urile sunt vulnerabile la utilizare greșită, injectare promptă și abuz.
284
-
285
- **Cum o rezolvă OmniRoute:**
286
-
287
- - **Gestionarea cheilor API** — Generare, rotație și definire pentru fiecare furnizor cu o pagină dedicată `/dashboard/api-manager`
288
- - **Permisiuni la nivel de model** — Restricționați cheile API la anumite modele (`openai/*`, modele cu caractere metalice), cu comutatorul Permite toate/Restricționați
289
- - **API Endpoint Protection** — Solicitați o cheie pentru `/v1/models` și blocați anumiți furnizori din listă
290
- - **Auth Guard + CSRF Protection** — Toate rutele tabloului de bord sunt protejate cu middleware `withAuth` + jetoane CSRF
291
- - **Rate Limiter** — Limitarea ratei per-IP cu ferestre configurabile
292
- - **Filtrare IP** — Lista permisă/lista blocată pentru controlul accesului
293
- - **Prompt Injection Guard** — Igienizare împotriva tiparelor de prompte rău intenționate
294
- - **Criptare AES-256-GCM** — Acreditări criptate în repaus
295
-
296
- </details>
297
-
298
- <details>
299
- <summary><b>🛑 6. „Furnizorul meu a căzut și mi-am pierdut fluxul de codare”</b></summary>
300
-
301
- Furnizorii de AI pot deveni instabili, pot returna erori 5xx sau pot atinge limitele temporare ale ratei. Dacă un dezvoltator depinde de un singur furnizor, acesta este întrerupt. Fără întreruptoare, reîncercări repetate pot bloca aplicația.
302
-
303
- **Cum o rezolvă OmniRoute:**
304
-
305
- - **Circuit Breaker per furnizor** - Deschidere/închidere automată cu praguri configurabile și răcire (Închis/Deschis/Pe jumătate deschis)
306
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
307
- - **Backoff exponențial** — Întârzieri progresive ale reîncercării
308
- - **Anti-Thundering Herd** — Mutex + protecție semafor împotriva furtunilor concurente de reîncercare
309
- - **Combo Fallback Chains** — Dacă furnizorul principal eșuează, trece automat prin lanț fără nicio intervenție
310
- - **Combo Circuit Breaker** — Dezactivează automat furnizorii care eșuează dintr-un lanț combinat
311
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
312
- - **Tabloul de bord pentru sănătate** — Monitorizare timp de funcționare, stări întrerupătoare de circuit, blocări, statistici cache, latență p50/p95/p99
313
-
314
- </details>
315
-
316
- <details>
317
- <summary><b>🔧 7. „Configurarea fiecărui instrument AI este plictisitoare și repetitivă”</b></summary>
318
-
319
- Dezvoltatorii folosesc Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Fiecare instrument are nevoie de o configurație diferită (punct final API, cheie, model). Reconfigurarea la schimbarea de furnizor sau de model este o pierdere de timp.
320
-
321
- **Cum o rezolvă OmniRoute:**
322
-
323
- - **CLI Tools Dashboard** — pagină dedicată cu setare cu un singur clic pentru Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
324
- - **GitHub Copilot Config Generator** — generează `chatLanguageModels.json` pentru VS Code cu selecția în bloc a modelului
325
- - **Onboarding Wizard** — Configurare ghidată în 4 pași pentru utilizatorii debutanți
326
- - **Un punct final, toate modelele** — Configurați `http://localhost:20128/v1` o dată, accesați peste 36 de furnizori
327
-
328
- </details>
329
-
330
- <details>
331
- <summary><b>🔑 8. „Gestionarea jetoanelor OAuth de la mai mulți furnizori este un iad” </b></summary>
332
-
333
- Claude Code, Codex, Gemini CLI, Copilot - toate folosesc OAuth 2.0 cu token-uri care expiră. Dezvoltatorii trebuie să se reautentifice în mod constant, să se ocupe de `client_secret is missing`, `redirect_uri_mismatch` și defecțiunile de pe serverele de la distanță. OAuth pe LAN/VPS este deosebit de problematică.
334
-
335
- **Cum o rezolvă OmniRoute:**
336
-
337
- - **Reîmprospătare automată a simbolurilor** — jetoanele OAuth se reîmprospătează în fundal înainte de expirare
338
- - **OAuth 2.0 (PKCE) încorporat** — Flux automat pentru Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
339
- - **OAuth cu mai multe conturi** — Conturi multiple per furnizor prin extragerea jetonului JWT/ID
340
- - **OAuth LAN/Remediere la distanță** — Detectare IP privată pentru `redirect_uri` + modul URL manual pentru servere la distanță
341
- - **OAuth în spatele Nginx** — Utilizează `window.location.origin` pentru compatibilitatea cu proxy invers
342
- - **Ghid OAuth la distanță** — Ghid pas cu pas pentru acreditările Google Cloud pe VPS/Docker
343
-
344
- </details>
345
-
346
- <details>
347
- <summary><b>📊 9. „Nu știu cât cheltuiesc sau unde”</b></summary>
348
-
349
- Dezvoltatorii folosesc mai mulți furnizori plătiți, dar nu au o viziune unificată asupra cheltuielilor. Fiecare furnizor are propriul tablou de bord de facturare, dar nu există o vizualizare consolidată. Costurile neașteptate se pot acumula.
350
-
351
- **Cum o rezolvă OmniRoute:**
352
-
353
- - **Tabloul de bord pentru analiza costurilor** — Urmărirea costurilor pe token și gestionarea bugetului per furnizor
354
- - **Limite bugetare pe nivel** — Plafonul de cheltuieli pe nivel care declanșează o rezervă automată
355
- - **Configurație de preț pe model** — Prețuri configurabile pe model
356
- - **Statistici de utilizare per cheie API** — Numărul de solicitări și marcajul temporal al ultimei utilizări per cheie
357
- - **Tabloul de bord de analiză** — Carduri cu statistici, diagramă de utilizare a modelului, tabel cu furnizori cu rate de succes și latență
358
-
359
- </details>
360
-
361
- <details>
362
- <summary><b>🐛 10. „Nu pot diagnostica erorile și problemele în apelurile AI”</b></summary>
363
-
364
- Când un apel eșuează, dezvoltatorul nu știe dacă a fost o limită de rată, un simbol expirat, un format greșit sau o eroare a furnizorului. Jurnalele fragmentate pe diferite terminale. Fără observabilitate, depanarea este o încercare și eroare.
365
-
366
- **Cum o rezolvă OmniRoute:**
367
-
368
- - **Tabloul de bord pentru jurnalele unificate** — 4 file: jurnalele de solicitare, jurnalele proxy, jurnalele de audit, consolă
369
- - **Console Log Viewer** — Vizualizator în timp real în stil terminal cu niveluri codificate în culori, defilare automată, căutare, filtru
370
- - **SQLite Proxy Logs** — Jurnale persistente care supraviețuiesc repornirilor serverului
371
- - **Translator Playground** — 4 moduri de depanare: Playground (traducere format), Chat Tester (dus-întors), Test Bench (lot), Live Monitor (în timp real)
372
- - **Solicitare telemetrie** — latență p50/p95/p99 + urmărire X-Request-Id
373
- - **Înregistrare bazată pe fișiere cu rotație** — Interceptor de consolă captează totul în jurnalul JSON cu rotație bazată pe dimensiune
374
-
375
- </details>
376
-
377
- <details>
378
- <summary><b>🏗️ 11. „Implementarea și întreținerea gateway-ului este complexă”</b></summary>
379
-
380
- Instalarea, configurarea și menținerea unui proxy AI în diferite medii (local, VPS, Docker, cloud) necesită multă muncă. Probleme precum căile codificate hard, `EACCES` pe directoare, conflictele de porturi și versiunile pe mai multe platforme adaugă fricțiuni.
381
-
382
- **Cum o rezolvă OmniRoute:**
383
-
384
- - **npm global install** — `npm install -g omniroute && omniroute` — finalizat
385
- - **Docker Multi-Platform** - AMD64 + ARM64 nativ (Apple Silicon, AWS Graviton, Raspberry Pi)
386
- - **Docker Compose Profiles** — `base` (fără instrumente CLI) și `cli` (cu Claude Code, Codex, OpenClaw)
387
- - **Electron Desktop App** — aplicație nativă pentru Windows/macOS/Linux cu bară de sistem, pornire automată, mod offline
388
- - **Split-Port Mode** — API și tablou de bord pe porturi separate pentru scenarii avansate (reverse proxy, rețea container)
389
- - **Cloud Sync** — Configurați sincronizarea între dispozitive prin Cloudflare Workers
390
- - **Backups DB** — Backup automat, restaurare, export și import al tuturor setărilor
391
-
392
- </details>
393
-
394
- <details>
395
- <summary><b>🌍 12. „Interfața este doar în limba engleză și echipa mea nu vorbește engleză” </b></summary>
396
-
397
- Echipele din țările care nu vorbesc engleza, în special din America Latină, Asia și Europa, se luptă cu interfețele doar în limba engleză. Barierele lingvistice reduc adoptarea și cresc erorile de configurare.
398
-
399
- **Cum o rezolvă OmniRoute:**
400
-
401
- - **Tabloul de bord i18n — 30 de limbi** — Toate cele peste 500 de taste traduse, inclusiv arabă, bulgară, daneză, germană, spaniolă, finlandeză, franceză, ebraică, hindi, maghiară, indoneziană, italiană, japoneză, coreeană, malay, olandeză, norvegiană, poloneză, portugheză (PT/BR), română, rusă, slovacă, suedeză, thailandeză, ucraineană, filipineză, engleză, chineză, vietnameză,
402
- - ** Suport RTL** — Suport de la dreapta la stânga pentru arabă și ebraică
403
- - **ReadME-uri în mai multe limbi** — 30 de traduceri complete de documentație
404
- - **Selector de limbă** — Pictograma glob în antet pentru comutare în timp real
405
-
406
- </details>
407
-
408
- <details>
409
- <summary><b>🔄 13. „Am nevoie de mai mult decât de chat — am nevoie de încorporare, imagini, audio” </b></summary>
410
-
411
- AI nu este doar finalizarea chatului. Dezvoltatorii trebuie să genereze imagini, să transcrie sunetul, să creeze înglobări pentru RAG, să reclasifice documentele și să modereze conținutul. Fiecare API are un punct final și un format diferit.
412
-
413
- **Cum o rezolvă OmniRoute:**
414
-
415
- - **Embeddings** — `/v1/embeddings` cu 6 furnizori și peste 9 modele
416
- - **Generarea imaginii** — `/v1/images/generations` cu 10 furnizori și peste 20 de modele (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
417
- - **Text-to-Video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) și SD WebUI
418
- - **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
419
- - **Transcriere audio** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
420
- - **Text-to-Speech** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + furnizori existenți
421
- - **Moderări** — `/v1/moderations` — Verificări de siguranță a conținutului
422
- - **Reclasificare** — `/v1/rerank` — Reclasificarea relevanței documentului
423
- - **Responses API** — Suport complet `/v1/responses` pentru Codex
424
-
425
- </details>
426
-
427
- <details>
428
- <summary><b>🧪 14. „Nu am cum să testez și să compar calitatea între modele” </b></summary>
429
-
430
- Dezvoltatorii vor să știe care model este cel mai bun pentru cazul lor de utilizare - cod, traducere, raționament - dar compararea manuală este lentă. Nu există instrumente de evaluare integrate.
431
-
432
- **Cum o rezolvă OmniRoute:**
433
-
434
- - **Evaluări LLM** — Testarea setului de aur cu 10 cazuri preîncărcate care acoperă salutări, matematică, geografie, generare de cod, conformitate cu JSON, traducere, reducere, refuz de siguranță
435
- - **4 strategii de potrivire** — `exact`, `contains`, `regex`, `custom` (funcția JS)
436
- - **Translator Playground Test Bench** — Testare în loturi cu mai multe intrări și rezultate așteptate, comparație între furnizori
437
- - **Tester de chat** — Tur complet dus-întors cu randare vizuală a răspunsului
438
- - **Live Monitor** — Flux în timp real al tuturor solicitărilor care circulă prin proxy
439
-
440
- </details>
441
-
442
- <details>
443
- <summary><b>📈 15. „Trebuie să mă scalez fără a pierde performanța”</b></summary>
444
-
445
- Pe măsură ce volumul cererilor crește, fără memorarea în cache aceleași întrebări generează costuri duplicate. Fara idempotenta, cererile duplicate procesarea deseurilor. Limitele de tarife pentru fiecare furnizor trebuie respectate.
446
-
447
- **Cum o rezolvă OmniRoute:**
448
-
449
- - **Cache semantic** — Cache-ul pe două niveluri (semnătură + semantică) reduce costurile și latența
450
- - **Request Idempotency** — fereastră de deduplicare 5s pentru cereri identice
451
- - **Rate Limit Detection** — RPM per furnizor, interval minim și urmărire simultană maximă
452
- - **Limite de rată editabile** — Valori implicite configurabile în Setări → Reziliență cu persistență
453
- - **API Key Validation Cache** — cache pe 3 niveluri pentru performanța producției
454
- - **Tabloul de bord pentru sănătate cu telemetrie** — latență p50/p95/p99, statistici cache, timp de funcționare
455
-
456
- </details>
457
-
458
- <details>
459
- <summary><b>🤖 16. „Vreau să controlez comportamentul modelului la nivel global”</b></summary>
460
-
461
- Dezvoltatori care doresc toate răspunsurile într-o anumită limbă, cu un anumit ton sau care doresc să limiteze simbolurile de raționament. Configurarea acestui lucru în fiecare instrument/cerere nu este practică.
462
-
463
- **Cum o rezolvă OmniRoute:**
464
-
465
- - **System Prompt Injection** — Prompt global aplicat tuturor solicitărilor
466
- - **Thinking Budget Validation** — Controlul raționării alocării token-ului per cerere (transmis, automat, personalizat, adaptiv)
467
- - **6 Strategii de rutare** — Strategii globale care determină modul în care sunt distribuite cererile
468
- - **Wildcard Router** — modelele `provider/*` sunt direcționate dinamic către orice furnizor
469
- - **Combo Activare/Dezactivare Comutare** — Comută combo direct din tabloul de bord
470
- - **Comutare furnizor** — Activați/dezactivați toate conexiunile pentru un furnizor cu un singur clic
471
- - **Furnizori blocați** — Excludeți anumiți furnizori din lista `/v1/models`
472
-
473
- </details>
474
-
475
- <details>
476
- <summary><b>🧰 17. „Am nevoie de instrumente MCP ca capabilități de produs de primă clasă”</b></summary>
477
-
478
- Multe gateway-uri AI expun MCP doar ca un detaliu ascuns de implementare. Echipele au nevoie de un nivel de operare vizibil și ușor de gestionat.
479
-
480
- **Cum o rezolvă OmniRoute:**
481
-
482
- - MCP apare în panoul de bord de navigare și fila de protocol final
483
- - Pagina de management MCP dedicată cu proces, instrumente, domenii și audit
484
- - Pornire rapidă încorporată pentru `omniroute --mcp` și integrarea clientului
485
-
486
- </details>
487
-
488
- <details>
489
- <summary><b>🧠 18. „Am nevoie de orchestrare A2A cu sincronizare + căi de activități de flux” </b></summary>
490
-
491
- Fluxurile de lucru ale agenților necesită atât răspunsuri directe, cât și execuție în flux de lungă durată, cu control ciclului de viață.
492
-
493
- **Cum o rezolvă OmniRoute:**
494
-
495
- - Punct final A2A JSON-RPC (`POST /a2a`) cu `message/send` și `message/stream`
496
- - Streaming SSE cu propagare a stării terminale
497
- - API-uri pentru ciclul de viață al sarcinilor pentru `tasks/get` și `tasks/cancel`
498
-
499
- </details>
500
-
501
- <details>
502
- <summary><b>🛰️ 19. „Am nevoie de sănătate reală a procesului MCP, nu de stare ghicită” </b></summary>
503
-
504
- Echipele operaționale trebuie să știe dacă MCP este de fapt în viață, nu doar dacă un API este accesibil.
505
-
506
- **Cum o rezolvă OmniRoute:**
507
-
508
- - Fișier runtime heartbeat cu PID, marcaje de timp, transport, număr de instrumente și modul de aplicare
509
- - API de stare MCP care combină bătăile inimii + activitatea recentă
510
- - Carduri de stare a interfeței de utilizare pentru prospețimea procesului/uptime/inima
511
-
512
- </details>
513
-
514
- <details>
515
- <summary><b>📋 20. „Am nevoie de o execuție auditabilă a instrumentului MCP” </b></summary>
516
-
517
- Când instrumentele modifică configurația sau declanșează acțiuni operaționale, echipele au nevoie de trasabilitate criminalistică.
518
-
519
- **Cum o rezolvă OmniRoute:**
520
-
521
- - Înregistrare de audit susținută de SQLite pentru apelurile instrumentelor MCP
522
- - Filtrează după instrument, succes/eșec, cheie API și paginare
523
- - Tabelul de audit al tabloului de bord + punctele finale de statistici pentru automatizare
524
-
525
- </details>
526
-
527
- <details>
528
- <summary><b>🔐 21. „Am nevoie de permisiuni MCP pentru fiecare integrare” </b></summary>
529
-
530
- Clienții diferiți ar trebui să aibă cel mai mic privilegiu de acces la categoriile de instrumente.
531
-
532
- **Cum o rezolvă OmniRoute:**
533
-
534
- - 9 lunete MCP granulare pentru acces controlat la instrumente
535
- - Aplicarea domeniului de aplicare și vizibilitatea în interfața de utilizare a managementului MCP
536
- - Poziție implicită sigură pentru instrumentele operaționale
537
-
538
- </details>
539
-
540
- <details>
541
- <summary><b>⚙️ 22. „Am nevoie de controale operaționale fără redistribuire”</b></summary>
542
-
543
- Echipele au nevoie de modificări rapide ale timpului de rulare în timpul incidentelor sau evenimentelor de cost.
544
-
545
- **Cum o rezolvă OmniRoute:**
546
-
547
- - Comutați activarea comboi direct din tabloul de bord MCP
548
- - Aplicați profiluri de rezistență din pachetele de politici predefinite
549
- - Resetați starea întreruptorului de la același panou de operare
550
-
551
- </details>
552
-
553
- <details>
554
- <summary><b>🔄 23. „Am nevoie de vizibilitate și anulare a ciclului de viață a sarcinii A2A live”</b></summary>
555
-
556
- Fără vizibilitatea ciclului de viață, incidentele sarcinilor devin greu de triat.
557
-
558
- **Cum o rezolvă OmniRoute:**
559
-
560
- - Listarea sarcinilor/filtrarea după stare/abilitate cu paginare
561
- - Detaliați metadatele sarcinii, evenimentele și artefactele
562
- - Punct final de anulare a sarcinii și acțiune UI cu confirmare
563
-
564
- </details>
565
-
566
- <details>
567
- <summary><b>🌊 24. „Am nevoie de valori de flux active pentru încărcarea A2A”</b></summary>
568
-
569
- Fluxurile de lucru în flux necesită o perspectivă operațională privind concurența și conexiunile live.
570
-
571
- **Cum o rezolvă OmniRoute:**
572
-
573
- - Contoare active de flux integrate în starea A2A
574
- - Marcaj de timp pentru ultima sarcină și numărătoare pentru fiecare stat
575
- - Carduri de bord A2A pentru monitorizarea operațiunilor în timp real
576
-
577
- </details>
578
-
579
- <details>
580
- <summary><b>🪪 25. „Am nevoie de descoperire de agenți standard pentru clienți”</b></summary>
581
-
582
- Clienții externi și orchestratorii au nevoie de metadate care pot fi citite de mașină pentru integrare.
583
-
584
- **Cum o rezolvă OmniRoute:**
585
-
586
- - Card de agent expus la `/.well-known/agent.json`
587
- - Capacități și abilități afișate în UI de management
588
- - API-ul de stare A2A include metadate de descoperire pentru automatizare
589
-
590
- </details>
591
-
592
- <details>
593
- <summary><b>🧭 26. „Am nevoie de descoperirea protocolului în produsul UX”</b></summary>
594
-
595
- Dacă utilizatorii nu pot descoperi suprafețele de protocol, calitatea adoptării și a suportului scade.
596
-
597
- **Cum o rezolvă OmniRoute:**
598
-
599
- - Intrări din bara laterală pentru MCP și A2A
600
- - Pagina Endpoint Fila Protocoale cu pornire rapidă și stare
601
- - Link-uri de la prezentare generală la tablouri de bord dedicate de management
602
-
603
- </details>
604
-
605
- <details>
606
- <summary><b>🧪 27. „Am nevoie de validarea protocolului end-to-end cu clienți reali”</b></summary>
607
-
608
- Testele simulate nu sunt suficiente pentru a valida compatibilitatea protocolului înainte de lansare.
609
-
610
- **Cum o rezolvă OmniRoute:**
611
-
612
- - Suita E2E care pornește aplicația și utilizează transportul clientului MCP SDK real
613
- - Testele client A2A pentru descoperirea, trimiterea, transmiterea în flux, obținerea și anularea fluxurilor
614
- - Verificați încrucișați afirmațiile cu auditul MCP și API-urile pentru sarcini A2A
615
-
616
- </details>
617
-
618
- <details>
619
- <summary><b>📡 28. „Am nevoie de observabilitate unificată pe toate interfețele”</b></summary>
620
-
621
- Împărțirea observabilității în funcție de protocol creează puncte oarbe și MTTR mai lung.
622
-
623
- **Cum o rezolvă OmniRoute:**
624
-
625
- - Tablouri de bord/jurnale/analitice unificate într-un singur produs
626
- - Sănătate + audit + solicitare de telemetrie în straturi OpenAI, MCP și A2A
627
- - API-uri operaționale pentru stare și automatizare
628
-
629
- </details>
630
-
631
- <details>
632
- <summary><b>💼 29. „Am nevoie de un timp de rulare pentru proxy + instrumente + orchestrare agent”</b></summary>
633
-
634
- Rularea multor servicii separate crește costurile operaționale și modurile de eșec.
635
-
636
- **Cum o rezolvă OmniRoute:**
637
-
638
- - Proxy compatibil OpenAI, server MCP și server A2A într-o singură stivă
639
- - Autentificare partajată, rezistență, stocare de date și observabilitate
640
- - Model de politică consistent pe toate suprafețele de interacțiune
641
-
642
- </details>
643
-
644
- <details>
645
- <summary><b>🚀 30. „Trebuie să trimit fluxuri de lucru agentice fără extinderea codului lipici”</b></summary>
646
-
647
- Echipele își pierd din viteza atunci când realizează mai multe servicii și scripturi ad-hoc.
648
-
649
- **Cum o rezolvă OmniRoute:**
650
-
651
- - Strategie unificată pentru clienți și agenți
652
- - Interfețe de utilizare a protocolului încorporate și căi de validare a fumului
653
- - Baze pregătite pentru producție (securitate, logare, rezistență, backup)
654
-
655
- </details>
656
-
657
- ### Exemple de manuale (cazuri de utilizare integrate)
658
-
659
- **Playbook A: Maximizați abonamentul plătit + backup ieftin**
660
-
661
- ```txt
662
- Combo: "maximize-claude"
663
- 1. cc/claude-opus-4-6
664
- 2. glm/glm-4.7
665
- 3. if/kimi-k2-thinking
666
-
667
- Monthly cost: $20 + small backup spend
668
- Outcome: higher quality, near-zero interruption
669
- ```
670
-
671
- **Playbook B: teanc de codare cu costuri zero**
672
-
673
- ```txt
674
- Combo: "free-forever"
675
- 1. gc/gemini-3-flash
676
- 2. if/kimi-k2-thinking
677
- 3. qw/qwen3-coder-plus
678
-
679
- Monthly cost: $0
680
- Outcome: stable free coding workflow
681
- ```
682
-
683
- **Playbook C: lanț alternativ permanent activ 24/7**
684
-
685
- ```txt
686
- Combo: "always-on"
687
- 1. cc/claude-opus-4-6
688
- 2. cx/gpt-5.2-codex
689
- 3. glm/glm-4.7
690
- 4. minimax/MiniMax-M2.1
691
- 5. if/kimi-k2-thinking
692
-
693
- Outcome: deep fallback depth for deadline-critical workloads
694
- ```
695
-
696
- **Playbook D: Agentul operează cu MCP + A2A**
697
-
698
- ```txt
699
- 1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
700
- 2) Run A2A tasks via `message/send` and `message/stream`
701
- 3) Observe via /dashboard/mcp and /dashboard/a2a
702
- 4) Control incidents with resilience profile + task cancellation
703
- ```
704
-
705
- ---
706
-
707
- ## ⚡ Pornire rapidă
708
-
709
- **1. Instalați la nivel global:**
710
-
711
- ```bash
712
- npm install -g omniroute
713
- omniroute
714
- ```
715
-
716
- 🎉 Tabloul de bord se deschide la `http://localhost:20128`
717
-
718
- | Comanda | Descriere |
719
- | ----------------------- | ---------------------------------------- |
720
- | `omniroute` | Porniți serverul (portul implicit 20128) |
721
- | `omniroute --port 3000` | Utilizați portul personalizat |
722
- | `omniroute --no-open` | Nu deschideți automat browserul |
723
- | `omniroute --help` | Arată ajutor |
724
-
725
- **2. Conectați un furnizor GRATUIT:**
726
-
727
- Tabloul de bord → Furnizori → Conectare **Claude Code** sau **Antigravity** → Conectare OAuth → Gata!
728
-
729
- **3. Utilizați în instrumentul dvs. CLI:**
730
-
731
- ```
732
- Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
733
- Endpoint: http://localhost:20128/v1
734
- API Key: [copy from dashboard]
735
- Model: if/kimi-k2-thinking
736
- ```
737
-
738
- **Asta este!** Începeți să codați cu modele AI GRATUITE.
739
-
740
- **Alternativă - rulează de la sursă:**
741
-
742
- ```bash
743
- cp .env.example .env
744
- npm install
745
- PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
746
- ```
747
-
748
- ---
749
-
750
- ## 🐳 Docker
751
-
752
- OmniRoute este disponibil ca imagine publică Docker pe [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
753
-
754
- **Alergare rapidă:**
755
-
756
- ```bash
757
- docker run -d \
758
- --name omniroute \
759
- --restart unless-stopped \
760
- -p 20128:20128 \
761
- -v omniroute-data:/app/data \
762
- diegosouzapw/omniroute:latest
763
- ```
764
-
765
- **Cu fișierul de mediu:**
766
-
767
- ```bash
768
- # Copy and edit .env first
769
- cp .env.example .env
770
-
771
- docker run -d \
772
- --name omniroute \
773
- --restart unless-stopped \
774
- --env-file .env \
775
- -p 20128:20128 \
776
- -v omniroute-data:/app/data \
777
- diegosouzapw/omniroute:latest
778
- ```
779
-
780
- **Utilizarea Docker Compose:**
781
-
782
- ```bash
783
- # Base profile (no CLI tools)
784
- docker compose --profile base up -d
785
-
786
- # CLI profile (Claude Code, Codex, OpenClaw built-in)
787
- docker compose --profile cli up -d
788
- ```
789
-
790
- | Imagine | Etichetă | Dimensiune | Descriere |
791
- | ------------------------ | -------- | ---------- | ----------------------- |
792
- | `diegosouzapw/omniroute` | `latest` | ~250MB | Ultima versiune stabilă |
793
- | `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Versiunea curentă |
794
-
795
- ---
796
-
797
- ---
798
-
799
- ## 🖥️
800
-
801
- > 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
802
-
803
- - 🖥️ **Native Window** — Dedicated app window with system tray integration
804
- - 🔄 **Auto-Start** — Launch OmniRoute on system login
805
- - 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
806
- - ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
807
- - 🌐 **Offline Mode** — Works fully offline with bundled server
808
-
809
- ```bash
810
- npm run electron:dev # Development mode
811
- npm run electron:build # Current platform
812
- npm run electron:build:win # Windows (.exe)
813
- npm run electron:build:mac # macOS (.dmg)
814
- npm run electron:build:linux # Linux (.AppImage)
815
- ```
816
-
817
- 📖 Full documentation: [`electron/README.md`](electron/README.md)
818
-
819
- ---
820
-
821
- ## 💰 Prețurile dintr-o privire
822
-
823
- | Nivelul | Furnizor | Cost | Resetare cotă | Cel mai bun pentru |
824
- | ---------------- | ----------------- | ---------------------------- | --------------------------- | ------------------------- |
825
- | **💳 ABONARE** | Claude Code (Pro) | 20 USD/lună | 5h + săptămânal | Deja abonat |
826
- | | Codex (Plus/Pro) | 20-200 USD/lună | 5h + săptămânal | Utilizatori OpenAI |
827
- | | Gemeni CLI | **GRATIS** | 180K/lună + 1K/zi | Toată lumea! |
828
- | | GitHub Copilot | 10-19 USD/lună | Lunar | utilizatorii GitHub |
829
- | **🔑 CHEIA API** | NVIDIA NIM | **GRATIS** (1000 de credite) | O singură dată | Testare gratuită la nivel |
830
- | | DeepSeek | Plată-pe-utilizare | Niciuna | Cel mai bun preț/calitate |
831
- | | Groq | Nivel gratuit + plătit | Tarif limitat | Inferență ultra-rapidă |
832
- | | xAI (Grok) | Plată-pe-utilizare | Niciuna | Modele Grok |
833
- | | Mistral | Nivel gratuit + plătit | Tarif limitat | IA europeană |
834
- | | OpenRouter | Plată-pe-utilizare | Niciuna | 100+ modele |
835
- | **💰 IEFTIN** | GLM-4.7 | 0,6 USD/1 milion | Zilnic 10:00 | Backup buget |
836
- | | MiniMax M2.1 | 0,2 USD/1 milion | rulare de 5 ore | Cea mai ieftină opțiune |
837
- | | Kimi K2 | 9 USD/lună plat | 10 milioane de jetoane/lună | Cost previzibil |
838
- | **🆓 GRATUIT** | iFlow | $0 | Nelimitat | 8 modele gratuite |
839
- | | Qwen | $0 | Nelimitat | 3 modele gratuite |
840
- | | Kiro | $0 | Nelimitat | Claude liber |
841
-
842
- **💡 Sfat profesionist:** Începeți cu Gemini CLI (180K gratuit/lună) + iFlow (gratuit nelimitat) combo = cost 0 USD!
843
-
844
- ---
845
-
846
- ## 💡 Caracteristici cheie
847
-
848
- ### 🧠 Core Routing & Intelligence
849
-
850
- | Caracteristica | Ce face |
851
- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
852
- | 🎯 **Backback inteligent pe 4 niveluri** | Rută automată: Abonament → Cheie API → Ieftin → Gratuit |
853
- | 📊 **Urmărirea cotelor în timp real** | Numărătoare de jetoane live + numărătoare inversă de resetare per furnizor |
854
- | 🔄 **Traducerea formatului** | OpenAI ↔ Claude ↔ Gemeni ↔ Cursor ↔ Kiro fără întreruperi + dezinfectare răspuns |
855
- | 👥 **Asistență pentru mai multe conturi** | Conturi multiple per furnizor cu selecție inteligentă |
856
- | 🔄 **Reîmprospătare automată a simbolului** | Tokenurile OAuth se reîmprospătează automat cu reîncercarea |
857
- | 🎨 **Combinații personalizate** | 6 strategii: fill-first, round-robin, p2c, aleatoriu, cel mai puțin utilizat, optimizat din punct de vedere al costurilor |
858
- | 🧩 **Modele personalizate** | Adăugați orice ID de model oricărui furnizor |
859
- | 🌐 **Wildcard Router** | Dirijați dinamic modelele `provider/*` către orice furnizor |
860
- | 🧠 **Buget de gândire** | Moduri de trecere, automat, personalizat și adaptiv pentru modelele de raționament |
861
- | 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
862
- | ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
863
- | 💬 **System Prompt Injection** | Prompt de sistem global aplicat pentru toate solicitările |
864
- | 📄 **Responses API** | Compatibilitate completă cu OpenAI Responses API (`/v1/responses`) pentru Codex |
865
-
866
- ### 🎵 API-uri multimodale
867
-
868
- | Caracteristica | Ce face |
869
- | ------------------------- | ---------------------------------------------------------- |
870
- | 🖼️ **Generarea imaginii** | `/v1/images/generations` — 4 furnizori, peste 9 modele |
871
- | 📐 **Inglobări** | `/v1/embeddings` — 6 furnizori, peste 9 modele |
872
- | 🎤 **Transcriere audio** | `/v1/audio/transcriptions` — Compatibil cu Whisper |
873
- | 🔊 **Text-to-speech** | `/v1/audio/speech` — Sinteză audio cu mai mulți furnizori |
874
- | 🛡️ **Moderații** | `/v1/moderations` — Verificări de siguranță a conținutului |
875
- | 🔀 **Reclasificare** | `/v1/rerank` — Reclasificarea relevanței documentului |
876
-
877
- ### 🛡️ Reziliență și securitate
878
-
879
- | Caracteristica | Ce face |
880
- | -------------------------------------- | -------------------------------------------------------------------------------------- |
881
- | 🔌 **Disjunctor** | Deschidere/închidere automată pentru fiecare furnizor cu praguri configurabile |
882
- | 🛡️ **Turmă Anti-Tunete** | Limită de rată Mutex + semafor pentru furnizorii de chei API |
883
- | 🧠 **Cache semantic** | Cache-ul pe două niveluri (semnătură + semantică) reduce costurile și latența |
884
- | ⚡ **Solicita Idempotenta** | Fereastra de dedup 5s pentru cereri duplicate |
885
- | 🔒 **TLS Fingerprint Spoofing** | Ocoliți detectarea botului bazată pe TLS prin wreq-js |
886
- | 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
887
- | 🌐 **Filtrare IP** | Lista permisă/lista blocată pentru controlul accesului API |
888
- | 📊 **Limite de rată editabile** | RPM configurabil, interval minim și concurență maximă la nivel de sistem |
889
- | 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
890
- | 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
891
- | 🛡 **Protecție API Endpoint** | Autentificare + blocare furnizor pentru punctul final `/models` |
892
- | 🔒 **Vizibilitatea proxy** | Ecusoane cu coduri de culoare: 🟢 global, 🟡 furnizor, 🔵 per conexiune cu afișaj IP |
893
- | 🌐 **Configurare proxy pe 3 niveluri** | Configurați proxy-uri la nivel global, per furnizor sau per conexiune |
894
-
895
- ### 📊 Observabilitate și analiză
896
-
897
- | Caracteristica | Ce face |
898
- | -------------------------------------- | ------------------------------------------------------------------------------------------------- |
899
- | 📝 **Solicitare înregistrare** | Modul de depanare cu jurnalele complete de cereri/răspuns |
900
- | 💾 **Jurnale proxy SQLite** | Jurnalele proxy persistente supraviețuiesc repornirilor de server |
901
- | 📊 **Tabloul de bord de analiză** | Recharts-powered: carduri cu statistici, diagramă de utilizare a modelului, tabel furnizor |
902
- | 📈 **Urmărirea progresului** | Înscrieți-vă evenimentele de progres SSE pentru streaming |
903
- | 🧪 **Evaluări LLM** | Testarea setului de aur cu 4 strategii de meci |
904
- | 🔍 **Solicitare telemetrie** | agregare latență p50/p95/p99 + urmărire X-Request-Id |
905
- | 📋 **Tabloul de bord jurnal** | Pagina unificată cu 4 file: Jurnalele de solicitări, Jurnalele proxy, Jurnalele de audit, Consolă |
906
- | 🖥️ **Console Log Viewer** | Vizualizator în timp real în stil terminal cu filtru de nivel, căutare, defilare automată |
907
- | 📑 **Înregistrare pe bază de fișiere** | Interceptor de consolă captează toate ieșirile în fișierul jurnal JSON cu rotație |
908
- | 🏥 **Tabloul de bord pentru sănătate** | Timp de funcționare a sistemului, stări întrerupătoare, blocări, statistici cache |
909
- | 💰 **Urmărirea costurilor** | Gestionarea bugetului + configurarea prețurilor pe model |
910
-
911
- ### ☁️ Implementare și sincronizare
912
-
913
- | Caracteristica | Ce face |
914
- | ------------------------------------- | ------------------------------------------------------------------------------- |
915
- | 💾 **Cloud Sync** | Sincronizați configurația între dispozitive prin Cloudflare Workers |
916
- | 🌐 **Implementează oriunde** | Localhost, VPS, Docker, lucrători Cloudflare |
917
- | 🔑 **Administrarea cheilor API** | Generați, rotiți și stabiliți cheile API pentru fiecare furnizor |
918
- | 🧙 **Onboarding Wizard** | Configurare ghidată în 4 pași pentru utilizatorii debutanți |
919
- | 🔧 **Tabloul de bord CLI Tools** | Configurați cu un singur clic Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
920
- | 🔄 **Backup-uri DB** | Backup automat, restaurare, export și import pentru toate setările |
921
- | 🌐 **Internaționalizare** | I18n complet cu next-intl — suport engleză + portugheză (Brazilia) |
922
- | 🌍 **Selector de limbă** | Pictograma glob în antet pentru schimbarea limbii în timp real (🇺🇸/🇧🇷) |
923
- | 📂 **Director de date personalizate** | `DATA_DIR` env var pentru a înlocui calea de stocare implicită `~/.omniroute` |
924
-
925
- <details>
926
- <summary><b>📖 Detalii caracteristică</b></summary>
927
-
928
- ### 🎯 Smart 4-Tier Fallback
929
-
930
- Creați combinații cu rezervă automată:
931
-
932
- ```
933
- Combo: "my-coding-stack"
934
- 1. cc/claude-opus-4-6 (your subscription)
935
- 2. nvidia/llama-3.3-70b (free NVIDIA API)
936
- 3. glm/glm-4.7 (cheap backup, $0.6/1M)
937
- 4. if/kimi-k2-thinking (free fallback)
938
-
939
- → Auto switches when quota runs out or errors occur
940
- ```
941
-
942
- ### 📊 Urmărirea cotelor în timp real
943
-
944
- - Consumul de token per furnizor
945
- - Resetați numărătoarea inversă (5 ore, zilnic, săptămânal)
946
- - Estimarea costurilor pentru nivelurile plătite
947
- - Rapoarte lunare de cheltuieli
948
-
949
- ### 🔄 Format traducere
950
-
951
- Traducere fără întreruperi între formate:
952
-
953
- - **OpenAI** ↔ **Claude** ↔ **Gemeni** ↔ **Răspunsuri OpenAI**
954
- - Instrumentul dvs. CLI trimite formatul OpenAI → OmniRoute traduce → Furnizorul primește formatul nativ
955
- - Funcționează cu orice instrument care acceptă puncte finale personalizate OpenAI
956
- - **Sanitizarea răspunsului** — Elimina câmpurile nestandard pentru compatibilitate strictă cu OpenAI SDK
957
- - **Normalizarea rolurilor** — `developer` → `system` pentru non-OpenAI; `system` → `user` pentru modelele GLM/ERNIE
958
- - **Think tag extraction** — blocuri `<think>` → `reasoning_content` pentru modele de gândire
959
- - **Ieșire structurată** — `json_schema` → `responseMimeType`/`responseSchema` a lui Gemeni
960
-
961
- ### 👥 Suport pentru mai multe conturi
962
-
963
- - Adăugați mai multe conturi pentru fiecare furnizor
964
- - Auto round-robin sau rutare bazată pe prioritate
965
- - Revenire la următorul cont când cineva atinge cota
966
-
967
- ### 🔄 Reîmprospătare automată a simbolului
968
-
969
- - Tokenurile OAuth se reîmprospătează automat înainte de expirare
970
- - Nu este nevoie de re-autentificare manuală
971
- - Experiență perfectă pentru toți furnizorii
972
-
973
- ### 🎨 Combo personalizate
974
-
975
- - Creați combinații de modele nelimitate
976
- - 6 strategii: umplere întâi, round-robin, putere cu două alegeri, aleatoriu, cel mai puțin utilizat, optimizat din punct de vedere al costurilor
977
- - Partajați combo-uri pe dispozitive cu Cloud Sync
978
-
979
- ### 🏥 Tabloul de bord pentru sănătate
980
-
981
- - Starea sistemului (timp de funcționare, versiune, utilizare a memoriei)
982
- - Stări întrerupătoarelor de circuit pentru fiecare furnizor (Închis/Deschis/Pe jumătate deschis)
983
- - Starea limitei ratei și blocajele active
984
- - Statistici de cache pentru semnături
985
- - Telemetrie latență (p50/p95/p99) + cache prompt
986
- - Resetați starea de sănătate cu un singur clic
987
-
988
- ### 🔧 Translator Playground
989
-
990
- OmniRoute include un puternic Translator Playground încorporat cu **4 moduri** pentru depanare, testare și monitorizare a traducerilor API:
991
-
992
- | Modul | Descriere |
993
- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
994
- | **💻 Loc de joacă** | Traducere directă a formatului — inserați orice corp de solicitare API și vedeți instantaneu cum îl traduce OmniRoute între formatele de furnizor (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Include exemple de șabloane și detecție automată a formatului. |
995
- | **💬 Tester de chat** | Trimiteți cereri reale de chat prin OmniRoute și vedeți întregul drum dus-întors: intrarea dvs., solicitarea tradusă, răspunsul furnizorului și răspunsul tradus înapoi. Neprețuit pentru validarea rutei combinate. |
996
- | **🧪 Banc de testare** | Mod de testare în loturi — definiți mai multe cazuri de testare cu diferite intrări și rezultate așteptate, rulați-le pe toate simultan și comparați rezultatele între furnizori și modele. |
997
- | **📱 Monitor live** | Monitorizare în timp real a cererilor — urmăriți cererile primite în timp ce acestea trec prin OmniRoute, vedeți traducerile formatului care au loc în direct și identificați problemele instantaneu. |
998
-
999
- **Acces:** Tabloul de bord → Traducător (bara laterală)
1000
-
1001
- ### 💾 Cloud Sync
1002
-
1003
- - Sincronizați furnizorii, combo-urile și setările pe dispozitive
1004
- - Sincronizare automată în fundal
1005
- - Stocare securizată criptată
1006
-
1007
- </details>
1008
-
1009
- ## 🧪 Evaluări (Evaluări)
1010
-
1011
- OmniRoute include un cadru de evaluare încorporat pentru a testa calitatea răspunsului LLM față de un set de aur. Accesați-l prin **Analitice → Evaluări** în tabloul de bord.
1012
-
1013
- ### Set de aur încorporat
1014
-
1015
- „Setul de Aur OmniRoute” preîncărcat conține 10 cazuri de testare care acoperă:
1016
-
1017
- - Salutări, matematică, geografie, generare de cod
1018
- - Conformitatea formatului JSON, traducere, reducere
1019
- - Refuz de siguranță (conținut dăunător), numărare, logică booleană
1020
-
1021
- ### Strategii de evaluare
1022
-
1023
- | Strategie | Descriere | Exemplu |
1024
- | ---------- | ------------------------------------------------------------------------- | -------------------------------- |
1025
- | `exact` | Ieșirea trebuie să se potrivească exact cu | `"4"` |
1026
- | `contains` | Ieșirea trebuie să conțină subșir (indiferență de majuscule și minuscule) | `"Paris"` |
1027
- | `regex` | Ieșirea trebuie să se potrivească cu modelul regex | `"1.*2.*3"` |
1028
- | `custom` | Funcția JS personalizată returnează adevărat/fals | `(output) => output.length > 10` |
1029
-
1030
- ---
1031
-
1032
- ## 📖 Ghid de configurare
1033
-
1034
- <details>
1035
- <summary><b>💳 Furnizori de abonament</b></summary>
1036
-
1037
- ### Cod Claude (Pro/Max)
1038
-
1039
- ```bash
1040
- Dashboard → Providers → Connect Claude Code
1041
- → OAuth login → Auto token refresh
1042
- → 5-hour + weekly quota tracking
1043
-
1044
- Models:
1045
- cc/claude-opus-4-6
1046
- cc/claude-sonnet-4-5-20250929
1047
- cc/claude-haiku-4-5-20251001
1048
- ```
1049
-
1050
- **Sfat profesionist:** Folosiți Opus pentru sarcini complexe, Sonnet pentru viteză. OmniRoute urmărește cota per model!
1051
-
1052
- ### OpenAI Codex (Plus/Pro)
1053
-
1054
- ```bash
1055
- Dashboard → Providers → Connect Codex
1056
- → OAuth login (port 1455)
1057
- → 5-hour + weekly reset
1058
-
1059
- Models:
1060
- cx/gpt-5.2-codex
1061
- cx/gpt-5.1-codex-max
1062
- ```
1063
-
1064
- ### Gemini CLI (GRATIS 180K/lună!)
1065
-
1066
- ```bash
1067
- Dashboard → Providers → Connect Gemini CLI
1068
- → Google OAuth
1069
- → 180K completions/month + 1K/day
1070
-
1071
- Models:
1072
- gc/gemini-3-flash-preview
1073
- gc/gemini-2.5-pro
1074
- ```
1075
-
1076
- **Cea mai bună valoare:** Nivel gratuit imens! Utilizați acest lucru înainte de nivelurile plătite.
1077
-
1078
- ### GitHub Copilot
1079
-
1080
- ```bash
1081
- Dashboard → Providers → Connect GitHub
1082
- → OAuth via GitHub
1083
- → Monthly reset (1st of month)
1084
-
1085
- Models:
1086
- gh/gpt-5
1087
- gh/claude-4.5-sonnet
1088
- gh/gemini-3-pro
1089
- ```
1090
-
1091
- </details>
1092
-
1093
- <details>
1094
- <summary><b>🔑 Furnizori de chei API</b></summary>
1095
-
1096
- ### NVIDIA NIM (1000 de credite GRATUITE!)
1097
-
1098
- 1. Înscrieți-vă: [build.nvidia.com](https://build.nvidia.com)
1099
- 2. Obțineți cheia API gratuită (1000 de credite de inferență incluse)
1100
- 3. Tabloul de bord → Adăugați furnizor → NVIDIA NIM:
1101
- - Cheie API: `nvapi-your-key`
1102
-
1103
- **Modele:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` și peste 50 de altele
1104
-
1105
- **Sfat profesional:** API compatibil cu OpenAI - funcționează perfect cu traducerea formatului OmniRoute!
1106
-
1107
- ### DeepSeek
1108
-
1109
- 1. Înscrieți-vă: [platform.deepseek.com](https://platform.deepseek.com)
1110
- 2. Obțineți cheia API
1111
- 3. Tabloul de bord → Adăugați furnizor → DeepSeek
1112
-
1113
- **Modele:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
1114
-
1115
- ### Groq (nivel gratuit disponibil!)
1116
-
1117
- 1. Înscrieți-vă: [console.groq.com](https://console.groq.com)
1118
- 2. Obțineți cheia API (nivel gratuit inclus)
1119
- 3. Tabloul de bord → Adăugați furnizor → Groq
1120
-
1121
- **Modele:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
1122
-
1123
- **Sfat profesionist:** Inferență ultra-rapidă - cel mai bun pentru codare în timp real!
1124
-
1125
- ### OpenRouter (100+ modele)
1126
-
1127
- 1. Înscrieți-vă: [openrouter.ai](https://openrouter.ai)
1128
- 2. Obțineți cheia API
1129
- 3. Tabloul de bord → Adăugare furnizor → OpenRouter
1130
-
1131
- **Modele:** Accesați peste 100 de modele de la toți furnizorii importanți printr-o singură cheie API.
1132
-
1133
- </details>
1134
-
1135
- <details>
1136
- <summary><b>💰 Furnizori ieftini (backup)</b></summary>
1137
-
1138
- ### GLM-4.7 (Resetare zilnică, 0,6 USD/1 milion)
1139
-
1140
- 1. Înscrieți-vă: [Zhipu AI](https://open.bigmodel.cn/)
1141
- 2. Obțineți cheia API din Coding Plan
1142
- 3. Tabloul de bord → Adăugați cheia API:
1143
- - Furnizor: `glm`
1144
- - Cheie API: `your-key`
1145
-
1146
- **Utilizați:** `glm/glm-4.7`
1147
-
1148
- **Sfat profesionist:** Planul de codare oferă cotă de 3 ori la 1/7 cost! Resetați zilnic la 10:00.
1149
-
1150
- ### MiniMax M2.1 (resetare 5 ore, 0,20 USD/1 milion)
1151
-
1152
- 1. Înscrieți-vă: [MiniMax](https://www.minimax.io/)
1153
- 2. Obțineți cheia API
1154
- 3. Tabloul de bord → Adăugați cheia API
1155
-
1156
- **Utilizați:** `minimax/MiniMax-M2.1`
1157
-
1158
- **Sfat pro:** Cea mai ieftină opțiune pentru context lung (1 milion de jetoane)!
1159
-
1160
- ### Kimi K2 (9 USD/lună fix)
1161
-
1162
- 1. Abonați-vă: [Moonshot AI](https://platform.moonshot.ai/)
1163
- 2. Obțineți cheia API
1164
- 3. Tabloul de bord → Adăugați cheia API
1165
-
1166
- **Utilizați:** `kimi/kimi-latest`
1167
-
1168
- **Sfat profesionist:** Fix 9 USD/lună pentru 10 milioane de jetoane = 0,90 USD/cost efectiv de 1 milion!
1169
-
1170
- </details>
1171
-
1172
- <details>
1173
- <summary><b>🆓 Furnizori GRATUITI (Backup de urgență)</b></summary>
1174
-
1175
- ### iFlow (8 modele GRATUITE)
1176
-
1177
- ```bash
1178
- Dashboard → Connect iFlow
1179
- → iFlow OAuth login
1180
- → Unlimited usage
1181
-
1182
- Models:
1183
- if/kimi-k2-thinking
1184
- if/qwen3-coder-plus
1185
- if/glm-4.7
1186
- if/minimax-m2
1187
- if/deepseek-r1
1188
- ```
1189
-
1190
- ### Qwen (3 modele GRATUITE)
1191
-
1192
- ```bash
1193
- Dashboard → Connect Qwen
1194
- → Device code authorization
1195
- → Unlimited usage
1196
-
1197
- Models:
1198
- qw/qwen3-coder-plus
1199
- qw/qwen3-coder-flash
1200
- ```
1201
-
1202
- ### Kiro (Claude GRATUIT)
1203
-
1204
- ```bash
1205
- Dashboard → Connect Kiro
1206
- → AWS Builder ID or Google/GitHub
1207
- → Unlimited usage
1208
-
1209
- Models:
1210
- kr/claude-sonnet-4.5
1211
- kr/claude-haiku-4.5
1212
- ```
1213
-
1214
- </details>
1215
-
1216
- <details>
1217
- <summary><b>🎨 Creați combinații</b></summary>
1218
-
1219
- ### Exemplul 1: Maximizați abonamentul → Backup ieftin
1220
-
1221
- ```
1222
- Dashboard → Combos → Create New
1223
-
1224
- Name: premium-coding
1225
- Models:
1226
- 1. cc/claude-opus-4-6 (Subscription primary)
1227
- 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
1228
- 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
1229
-
1230
- Use in CLI: premium-coding
1231
- ```
1232
-
1233
- ### Exemplul 2: Numai gratuit (cost zero)
1234
-
1235
- ```
1236
- Name: free-combo
1237
- Models:
1238
- 1. gc/gemini-3-flash-preview (180K free/month)
1239
- 2. if/kimi-k2-thinking (unlimited)
1240
- 3. qw/qwen3-coder-plus (unlimited)
1241
-
1242
- Cost: $0 forever!
1243
- ```
1244
-
1245
- </details>
1246
-
1247
- <details>
1248
- <summary><b>🔧 Integrare CLI</b></summary>
1249
-
1250
- ### Cursor IDE
1251
-
1252
- ```
1253
- Settings → Models → Advanced:
1254
- OpenAI API Base URL: http://localhost:20128/v1
1255
- OpenAI API Key: [from OmniRoute dashboard]
1256
- Model: cc/claude-opus-4-6
1257
- ```
1258
-
1259
- ### Claude Cod
1260
-
1261
- Utilizați pagina **Instrumente CLI** din tabloul de bord pentru configurarea cu un singur clic sau editați manual `~/.claude/settings.json`.
1262
-
1263
- ### Codex CLI
1264
-
1265
- ```bash
1266
- export OPENAI_BASE_URL="http://localhost:20128"
1267
- export OPENAI_API_KEY="your-omniroute-api-key"
1268
-
1269
- codex "your prompt"
1270
- ```
1271
-
1272
- ### OpenClaw
1273
-
1274
- **Opțiunea 1 — Tabloul de bord (recomandat):**
1275
-
1276
- ```
1277
- Dashboard → CLI Tools → OpenClaw → Select Model → Apply
1278
- ```
1279
-
1280
- **Opțiunea 2 — Manual:** Editați `~/.openclaw/openclaw.json`:
1281
-
1282
- ```json
1283
- {
1284
- "models": {
1285
- "providers": {
1286
- "omniroute": {
1287
- "baseUrl": "http://127.0.0.1:20128/v1",
1288
- "apiKey": "sk_omniroute",
1289
- "api": "openai-completions"
1290
- }
1291
- }
1292
- }
1293
- }
1294
- ```
1295
-
1296
- > **Notă:** OpenClaw funcționează numai cu OmniRoute local. Utilizați `127.0.0.1` în loc de `localhost` pentru a evita problemele de rezoluție IPv6.
1297
-
1298
- ### Cline / Continuare / RooCode
1299
-
1300
- ```
1301
- Settings → API Configuration:
1302
- Provider: OpenAI Compatible
1303
- Base URL: http://localhost:20128/v1
1304
- API Key: [from OmniRoute dashboard]
1305
- Model: if/kimi-k2-thinking
1306
- ```
1307
-
1308
- </details>
1309
-
1310
- ---
1311
-
1312
- ## 🐛 Depanare
1313
-
1314
- <details>
1315
- <summary><b>Faceți clic pentru a extinde ghidul de depanare</b></summary>
1316
-
1317
- **„Modelul de limbă nu a furnizat mesaje”**
1318
-
1319
- - Cota de furnizor epuizată → Verificați instrumentul de urmărire a cotei din tabloul de bord
1320
- - Soluție: utilizați alternativă combinată sau treceți la un nivel mai ieftin
1321
-
1322
- **Limitarea ratei**
1323
-
1324
- - Scăderea cotei de abonament → Fallback la GLM/MiniMax
1325
- - Adăugați combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1326
-
1327
- **Tokenul OAuth a expirat**
1328
-
1329
- - Reîmprospătat automat de OmniRoute
1330
- - Dacă problemele persistă: Dashboard → Provider → Reconnect
1331
-
1332
- **Costuri mari**
1333
-
1334
- - Verificați statisticile de utilizare în Tabloul de bord → Costuri
1335
- - Comutați modelul principal la GLM/MiniMax
1336
- - Utilizați nivelul gratuit (Gemini CLI, iFlow) pentru sarcini necritice
1337
-
1338
- **Tabloul de bord se deschide pe portul greșit**
1339
-
1340
- - Setați `PORT=20128` și `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
1341
-
1342
- **Erori de sincronizare în cloud**
1343
-
1344
- - Verificați `BASE_URL` puncte către instanța dvs. care rulează
1345
- - Verificați `CLOUD_URL` puncte către punctul final din cloud așteptat
1346
- - Păstrați valorile `NEXT_PUBLIC_*` aliniate cu valorile de pe partea serverului
1347
-
1348
- **Prima conectare nu funcționează**
1349
-
1350
- - Verificați `INITIAL_PASSWORD` în `.env`
1351
- - Dacă nu este setată, parola de rezervă este `123456`
1352
-
1353
- **Fără jurnal de solicitare**
1354
-
1355
- - Setați `ENABLE_REQUEST_LOGS=true` în `.env`
1356
-
1357
- **Testul de conectare arată „Invalid” pentru furnizorii compatibili cu OpenAI**
1358
-
1359
- - Mulți furnizori nu expun un punct final `/models`
1360
- - OmniRoute v1.0.6+ include validarea de rezervă prin finalizarea chatului
1361
- - Asigurați-vă că adresa URL de bază include sufixul `/v1`
1362
-
1363
- ### 🔐 OAuth
1364
-
1365
- <a name="oauth-em-servidor-remoto"></a>
1366
-
1367
- > **⚠️ IMPORTANT pentru utilizatorii cu OmniRoute în VPS/Docker/servidor remoto**
1368
-
1369
- #### OAuth
1370
-
1371
- Pentru autentificare, **Antigravity** și **Gemini CLI** folosesc **Google OAuth 2.0**. O Google exige que a `redirect_uri` utilizat nu fluxo OAuth seja **exatamente** uma das URIs pre-cadastradas no Google Cloud Console do aplicative.
1372
-
1373
- As credenciais OAuth embutidas no OmniRoute esteo cadastradas **apenas for `localhost`**. Când accesați OmniRoute într-un server la distanță (ex: `https://omniroute.meuservidor.com`), sau Google respinge autentificarea com:
1374
-
1375
- ```
1376
- Error 400: redirect_uri_mismatch
1377
- ```
1378
-
1379
- ### Soluție: Configurați propriile acreditări OAuth
1380
-
1381
- Você necesita criar um **OAuth 2.0 Client ID** nu Google Cloud Console ca URI pentru server.
1382
-
1383
- #### Passo a passo
1384
-
1385
- **1. Acces sau Google Cloud Console**
1386
-
1387
- Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
1388
-
1389
- **2. Plângeți nou OAuth 2.0 Client ID**
1390
-
1391
- - Faceți clic pe **"+ Create Credentials"** → **"OAuth client ID"**
1392
- - Tip de aplicație: **"Aplicație web"**
1393
- - Nume: scolha qualquer nome (ex: `OmniRoute Remote`)
1394
-
1395
- **3. Adăugați ca URI de redirecționare autorizate**
1396
-
1397
- No campo **„URI-uri de redirecționare autorizate”**, adiție:
1398
-
1399
- ```
1400
- https://seu-servidor.com/callback
1401
- ```
1402
-
1403
- > Substitue `seu-servidor.com` pelo domínio sau IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
1404
-
1405
- **4. Salve și copie ca credenciais**
1406
-
1407
- Após criar, o Google afișează o **Client ID** e o **Client Secret**.
1408
-
1409
- **5. Configurați ca variabile de mediu**
1410
-
1411
- Nu ai `.env` (ai variat de ambient do Docker):
1412
-
1413
- ```bash
1414
- # Para Antigravity:
1415
- ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1416
- ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1417
-
1418
- # Para Gemini CLI:
1419
- GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1420
- GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1421
- GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1422
- ```
1423
-
1424
- **6. Reinicie o OmniRoute**
1425
-
1426
- ```bash
1427
- # Se usando npm:
1428
- npm run dev
1429
-
1430
- # Se usando Docker:
1431
- docker restart omniroute
1432
- ```
1433
-
1434
- **7. Tente connect novamente**
1435
-
1436
- Tabloul de bord → Furnizori → Antigravity (sau Gemini CLI) → OAuth
1437
-
1438
- Agora sau Google redirecționează corect pentru `https://seu-servidor.com/callback` și funcționează autenticação.
1439
-
1440
- ---
1441
-
1442
- ### Soluție temporară (sem configurar credenciais proprias)
1443
-
1444
- Nu vă rugăm să vă convingeți acum, dar este posibil să utilizați sau să fluxați **manual de URL**:
1445
-
1446
- 1. OmniRoute deschide o adresă URL de autorizare Google
1447
- 2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no server remote)
1448
- 3. **Copiați o adresă URL completă** da bara de accesare a browserului (mesmo que a page não carregue)
1449
- 4. Cole essa URL nu există câmpuri care nu apar modal de conexão pentru OmniRoute
1450
- 5. Faceți clic pe **„Conectați-vă”**
1451
-
1452
- > Această soluție de soluționare funcționează deoarece codul de autorizare a URL-ului este valabil independent de redirecționare pentru a încărca sau nu.
1453
-
1454
- </details>
1455
-
1456
- ---
1457
-
1458
- ## 🛠️
1459
-
1460
- - **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ este **nu este acceptat** - `better-sqlite3` binarele native sunt incompatibile)
1461
- - **Limba**: TypeScript 5.9 — **100% TypeScript** în `src/` și `open-sse/` (v1.0.6)
1462
- - **Cadru**: Next.js 16 + React 19 + Tailwind CSS 4
1463
- - **Bază de date**: LowDB (JSON) + SQLite (starea domeniului + jurnalele proxy)
1464
- - **Streaming**: evenimente trimise de server (SSE)
1465
- - **Auth**: OAuth 2.0 (PKCE) + JWT + chei API
1466
- - **Testare**: Runner de testare Node.js (368+ teste unitare)
1467
- - **CI/CD**: GitHub Actions (publicare automată npm + Docker Hub la lansare)
1468
- - **Site web**: [omniroute.online](https://omniroute.online)
1469
- - **Pachet**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1470
- - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1471
- - **Reziliență**: întrerupător de circuit, backoff exponențial, turmă anti-tunet, falsificare TLS
1472
-
1473
- ---
1474
-
1475
- ## 📖 Documentație
1476
-
1477
- | Document | Descriere |
1478
- | -------------------------------------------- | --------------------------------------------------------- |
1479
- | [User Guide](docs/USER_GUIDE.md) | Furnizori, combo-uri, integrare CLI, implementare |
1480
- | [API Reference](docs/API_REFERENCE.md) | Toate punctele finale cu exemple |
1481
- | [Troubleshooting](docs/TROUBLESHOOTING.md) | Probleme și soluții comune |
1482
- | [Architecture](docs/ARCHITECTURE.md) | Arhitectura sistemului și elementele interne |
1483
- | [Contributing](CONTRIBUTING.md) | Configurare și linii directoare de dezvoltare |
1484
- | [OpenAPI Spec](docs/openapi.yaml) | Specificație OpenAPI 3.0 |
1485
- | [Security Policy](SECURITY.md) | Raportarea vulnerabilităților și practicile de securitate |
1486
- | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Ghid complet: VM + nginx + configurare Cloudflare |
1487
- | [Features Gallery](docs/FEATURES.md) | Tur vizual al tabloului de bord cu capturi de ecran |
1488
-
1489
- ### 📸 Previzualizarea tabloului de bord
1490
-
1491
- <details>
1492
- <summary><b>Faceți clic pentru a vedea capturile de ecran de pe tabloul de bord</b></summary>
1493
-
1494
- | Pagina | Captură de ecran |
1495
- | ------------------------ | ------------------------------------------------- |
1496
- | **Furnizori** | ![Providers](docs/screenshots/01-providers.png) |
1497
- | **Combo** | ![Combos](docs/screenshots/02-combos.png) |
1498
- | **Analitice** | ![Analytics](docs/screenshots/03-analytics.png) |
1499
- | **Sănătate** | ![Health](docs/screenshots/04-health.png) |
1500
- | **Translator** | ![Translator](docs/screenshots/05-translator.png) |
1501
- | **Setări** | ![Settings](docs/screenshots/06-settings.png) |
1502
- | **Instrumente CLI** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1503
- | **Jurnale de utilizare** | ![Usage](docs/screenshots/08-usage.png) |
1504
- | **Punctul final** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1505
-
1506
- </details>
1507
-
1508
- ---
1509
-
1510
- ## 🗺️
1511
-
1512
- OmniRoute are **210+ funcții planificate** în mai multe faze de dezvoltare. Iată domeniile cheie:
1513
-
1514
- | Categoria | Caracteristici planificate | Repere |
1515
- | --------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
1516
- | 🧠 **Routing & Intelligence** | 25+ | Rutare cu cea mai mică latență, rutare bazată pe etichete, verificare preliminară a cotei, selecție contului P2C |
1517
- | 🔒 **Securitate și conformitate** | 20+ | Întărirea SSRF, acoperirea acreditărilor, limita de rată per punct final, domeniul de aplicare al cheii de management |
1518
- | 📊 **Observabilitate** | 15+ | Integrarea OpenTelemetry, monitorizarea cotelor în timp real, urmărirea costurilor per model |
1519
- | 🔄 **Integrări furnizori** | 20+ | Registrul modelului dinamic, perioadele de încărcare ale furnizorului, Codexul cu mai multe conturi, analiza cotelor Copilot |
1520
- | ⚡ **Performanță** | 15+ | Strat cache dublu, cache prompt, cache de răspuns, streaming keepalive, API batch |
1521
- | 🌐 **Ecosistem** | 10+ | WebSocket API, config hot-reload, magazin de configurare distribuit, mod comercial |
1522
-
1523
- ### 🔜 În curând
1524
-
1525
- - 🔗 **Integrare OpenCode** — Suport furnizor nativ pentru IDE-ul de codare OpenCode AI
1526
- - 🔗 **Integrare TRAE** — Suport complet pentru cadrul de dezvoltare TRAE AI
1527
- - 📦 **Batch API** — Procesare asincronă în lot pentru solicitări în bloc
1528
- - 🎯 **Rutare bazată pe etichete** — Solicitări de rutare bazate pe etichete și metadate personalizate
1529
- - 💰 **Strategia cu cel mai mic cost** — Selectați automat cel mai ieftin furnizor disponibil
1530
-
1531
- > 📝 Specificații complete ale caracteristicilor disponibile în [link](docs/new-features/) (217 specificații detaliate)
1532
-
1533
- ---
1534
-
1535
- ## 👥 Colaboratori
1536
-
1537
- [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1538
-
1539
- ### Cum să contribui
1540
-
1541
- 1. Bifurcați depozitul
1542
- 2. Creați-vă ramura caracteristică (`git checkout -b feature/amazing-feature`)
1543
- 3. Afișează modificările (`git commit -m 'Add amazing feature'`)
1544
- 4. Apăsați la ramură (`git push origin feature/amazing-feature`)
1545
- 5. Deschideți o cerere de tragere
1546
-
1547
- Consultați [CONTRIBUTING.md](CONTRIBUTING.md) pentru instrucțiuni detaliate.
1548
-
1549
- ### Lansarea unei noi versiuni
1550
-
1551
- ```bash
1552
- # Create a release — npm publish happens automatically
1553
- gh release create v1.0.6 --title "v1.0.6" --generate-notes
1554
- ```
1555
-
1556
- ---
1557
-
1558
- ## 📊 Istoria stelelor
1559
-
1560
- <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1561
- <picture>
1562
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1563
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1564
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1565
- </picture>
1566
- </a>
1567
-
1568
- ---
1569
-
1570
- ## 🙏 Mulțumiri
1571
-
1572
- Mulțumiri speciale pentru **[9router](https://github.com/decolua/9router)** de **[decolua](https://github.com/decolua)** — proiectul original care a inspirat această furcă. OmniRoute se bazează pe această bază incredibilă cu funcții suplimentare, API-uri multimodale și o rescrie completă TypeScript.
1573
-
1574
- Mulțumiri speciale pentru **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — implementarea Go originală care a inspirat acest port JavaScript.
1575
-
1576
- ---
1577
-
1578
- ## 📄 Licență
1579
-
1580
- Licență MIT - consultați [LICENSE](LICENSE) pentru detalii.
1581
-
1582
- ---
1583
-
1584
- <div align="center">
1585
- <sub>Construit cu ❤️ pentru dezvoltatorii care codifică 24/7</sub>
1586
- <br/>
1587
- <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1588
- </div>