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.uk-UA.md DELETED
@@ -1,1592 +0,0 @@
1
- <div align="center">
2
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
3
-
4
- # 🚀 OmniRoute — безкоштовний ШІ-шлюз
5
-
6
- ### Ніколи не припиняйте кодувати. Розумна маршрутизація до **БЕЗКОШТОВНИХ і недорогих моделей штучного інтелекту** з автоматичним резервним копіюванням.
7
-
8
- _Ваш універсальний API-проксі — одна кінцева точка, понад 36 провайдерів, нуль простоїв._
9
-
10
- **Завершення чату • Вбудовування • Генерація зображень • Аудіо • Реранжування • 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
- ### 🤖 Безкоштовний постачальник AI для ваших улюблених агентів кодування
27
-
28
- _Підключіть будь-який інструмент IDE або CLI на основі штучного інтелекту через OmniRoute — безкоштовний шлюз API для необмеженого програмування._
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>📡 Усі агенти підключаються через <code>http://localhost:20128/v1</code> або <code>http://cloud.omniroute.online/v1</code> — одна конфігурація, необмежена кількість моделей і квота</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
- ## 🤔 Чому OmniRoute?
155
-
156
- **Припиніть витрачати гроші та досягати лімітів:**
157
-
158
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Квота підписки закінчується без використання кожного місяця
159
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Обмеження швидкості перешкоджають кодуванню в середині
160
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Дорогі API ($20-50/місяць за постачальника)
161
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Ручне перемикання між провайдерами
162
-
163
- **OmniRoute вирішує цю проблему:**
164
-
165
- - ✅ **Збільште кількість підписок** - Відстежуйте квоту, використовуйте кожен біт перед скиданням
166
- - ✅ **Автоматичний резерв** - Підписка → Ключ API → Дешево → Безкоштовно, без простоїв
167
- - ✅ **Кілька облікових записів** - Циклічний цикл між обліковими записами кожного постачальника
168
- - ✅ **Універсальний** - Працює з Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, будь-яким інструментом CLI
169
-
170
- ---
171
-
172
- ## 📧 Підтримка
173
-
174
- > 💬 **Приєднуйтесь до нашої спільноти!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — отримуйте допомогу, діліться порадами та будьте в курсі подій.
175
-
176
- - **Веб-сайт**: [omniroute.online](https://omniroute.online)
177
- - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
178
- - **Проблеми**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
179
- - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
180
- - **Оригінальний проект**: [9router by decolua](https://github.com/decolua/9router)
181
-
182
- ---
183
-
184
- ## 🔄 Як це працює
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
- ## 🎯 Що вирішує OmniRoute — 30 реальних проблем і варіантів використання
214
-
215
- > **Кожен розробник, який використовує інструменти штучного інтелекту, щодня стикається з цими проблемами.** OmniRoute було створено, щоб вирішити їх усі — від перевитрати коштів до регіональних блокувань, від порушених потоків OAuth до операцій протоколу та спостережуваності підприємства.
216
-
217
- <details>
218
- <summary><b>💸 1. «Я плачу за дорогу підписку, але мене все одно переривають через обмеження» </b></summary>
219
-
220
- Розробники платять 20–200 доларів на місяць за Claude Pro, Codex Pro або GitHub Copilot. Навіть якщо платити, квота має максимальну межу — 5 годин використання, тижневі ліміти або ліміти за хвилину. У середині сеансу кодування постачальник перестає відповідати, а розробник втрачає швидкість і продуктивність.
221
-
222
- **Як це вирішує OmniRoute:**
223
-
224
- - **Smart 4-Tier Fallback** — якщо квота підписки закінчується, автоматично перенаправляється до API Key → Дешево → Безкоштовно без ручного втручання
225
- - **Відстеження квот у реальному часі** — показує споживання токенів у реальному часі зі зворотним відліком скидання (5 годин, щодня, щотижня)
226
- - **Підтримка кількох облікових записів** — кілька облікових записів у кожного постачальника з автоматичним циклічним перебором — коли один закінчується, перемикається на наступний
227
- - **Користувацькі комбінації** — резервні ланцюжки, які можна налаштувати, із 6 стратегіями балансування (спочатку заповнення, циклічний, P2C, випадковий, найменш використовуваний, економічно оптимізований)
228
- - **Бізнес-квоти Codex** — Моніторинг квот робочого простору бізнесу/команди безпосередньо на інформаційній панелі
229
-
230
- </details>
231
-
232
- <details>
233
- <summary><b>🔌 2. «Мені потрібно використовувати кілька постачальників, але кожен має різний API» </b></summary>
234
-
235
- OpenAI використовує один формат, Claude (Anthropic) використовує інший, Gemini ще інший. Якщо розробник хоче перевірити моделі від різних постачальників або повернутися до них, йому потрібно переналаштувати SDK, змінити кінцеві точки, мати справу з несумісними форматами. Спеціальні постачальники (FriendLI, NIM) мають нестандартні кінцеві точки моделі.
236
-
237
- **Як це вирішує OmniRoute:**
238
-
239
- - **Уніфікована кінцева точка** — один `http://localhost:20128/v1` служить проксі для всіх 36+ постачальників
240
- - **Переклад форматів** — автоматичний і прозорий: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
241
- - **Response Sanitization** — видаляє нестандартні поля (`x_groq`, `usage_breakdown`, `service_tier`), які порушують роботу OpenAI SDK v1.83+
242
- - **Нормалізація ролі** — перетворює `developer` → `system` для постачальників, які не є OpenAI; `system` → `user` для GLM/ERNIE
243
- - **Think Tag Extraction** — витягує блоки `<think>` із таких моделей, як DeepSeek R1, у стандартизований `reasoning_content`
244
- - **Структурований вихід для Gemini** — `json_schema` → `responseMimeType`/`responseSchema` автоматичне перетворення
245
- - **`stream` за замовчуванням — `false`** — відповідає специфікації OpenAI, уникаючи неочікуваних SSE у Python/Rust/Go SDK.
246
-
247
- </details>
248
-
249
- <details>
250
- <summary><b>🌐 3. «Мій постачальник штучного інтелекту блокує мій регіон/країну» </b></summary>
251
-
252
- Такі постачальники, як OpenAI/Codex, блокують доступ із певних географічних регіонів. Користувачі отримують помилки на зразок `unsupported_country_region_territory` під час з’єднань OAuth і API. Це особливо засмучує розробників із країн, що розвиваються.
253
-
254
- **Як це вирішує OmniRoute:**
255
-
256
- - **3-рівнева конфігурація проксі-сервера** — налаштовується проксі-сервер на 3 рівнях: глобальний (увесь трафік), для кожного постачальника (лише один постачальник) і для кожного підключення/ключа
257
- - **Значки проксі-сервера з кольоровим кодуванням** — Візуальні індикатори: 🟢 глобальний проксі, 🟡 проксі-сервер постачальника, 🔵 проксі-сервер підключення, завжди показує IP-адресу
258
- - **Обмін маркерами OAuth через проксі** — потік OAuth також проходить через проксі, вирішуючи `unsupported_country_region_territory`
259
- - **Тестування з’єднання через проксі** — тестування з’єднання використовує налаштований проксі (без прямого обходу)
260
- - **Підтримка SOCKS5** — повна підтримка проксі SOCKS5 для вихідної маршрутизації
261
- - **TLS Fingerprint Spoofing** — TLS-відбиток, як у браузері, через `wreq-js` для обходу виявлення ботів
262
-
263
- </details>
264
-
265
- <details>
266
- <summary><b>🆓 4. «Я хочу використовувати ШІ для кодування, але в мене немає грошей» </b></summary>
267
-
268
- Не кожен може платити 20–200 доларів на місяць за підписку на AI. Студентам, розробникам із країн, що розвиваються, любителям і фрілансерам потрібен доступ до якісних моделей за нульовою ціною.
269
-
270
- **Як це вирішує OmniRoute:**
271
-
272
- - **Вбудовані безкоштовні постачальники рівня** — Вбудована підтримка 100% безкоштовних постачальників: iFlow (8 необмежених моделей), Qwen (3 необмежені моделі), Kiro (Claude безкоштовно), Gemini CLI (180K/місяць безкоштовно)
273
- - **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/<model>` prefix
274
- - **Безкоштовні комбінації** — ланцюжок `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 доларів США/місяць без простоїв
275
- - **Безкоштовні кредити NVIDIA NIM** — інтегровано 1000 безкоштовних кредитів
276
- - **Стратегія оптимізації витрат** — стратегія маршрутизації, яка автоматично вибирає найдешевшого доступного постачальника
277
-
278
- </details>
279
-
280
- <details>
281
- <summary><b>🔒 5. «Мені потрібно захистити свій ШІ-шлюз від несанкціонованого доступу» </b></summary>
282
-
283
- Коли шлюз штучного інтелекту надається мережі (LAN, VPS, Docker), будь-хто, хто має адресу, може використовувати токени/квоту розробника. Без захисту API вразливі до неправильного використання, швидкого впровадження та зловживання.
284
-
285
- **Як це вирішує OmniRoute:**
286
-
287
- - **Керування ключами API** — генерація, ротація та визначення обсягу для кожного постачальника за допомогою спеціальної сторінки `/dashboard/api-manager`
288
- - **Дозволи на рівні моделі** — обмежте ключі API певними моделями (`openai/*`, шаблони узагальнення) із перемикачем «Дозволити все»/«Обмежити»
289
- - **API Endpoint Protection** — вимагати ключ для `/v1/models` і блокувати певних постачальників зі списку
290
- - **Auth Guard + CSRF Protection** — усі маршрути інформаційної панелі захищені проміжним програмним забезпеченням `withAuth` + маркерами CSRF
291
- - **Обмежувач швидкості** — обмеження швидкості за IP-адресою з настроюваними вікнами
292
- - **IP Filtering** — список дозволених/чорних адрес для контролю доступу
293
- - **Prompt Injection Guard** — очищення від шкідливих шаблонів підказок
294
- - **Шифрування AES-256-GCM** — облікові дані зашифровані в стані спокою
295
-
296
- </details>
297
-
298
- <details>
299
- <summary><b>🛑 6. «Мій постачальник не працює, і я втратив потік кодування» </b></summary>
300
-
301
- Постачальники AI можуть стати нестабільними, повертати помилки 5xx або досягати тимчасових обмежень швидкості. Якщо розробник залежить від одного постачальника, вони перериваються. Без автоматичних вимикачів повторні спроби можуть призвести до збою програми.
302
-
303
- **Як це вирішує OmniRoute:**
304
-
305
- - **Автоматичний вимикач для кожного постачальника** — автоматичне розмикання/замикання з настроюваними пороговими значеннями та часом відновлення (закрито/розімкнуто/напіврозімкнуто)
306
- - **Exponential Backoff** — прогресивні затримки повторних спроб
307
- - **Anti-Thundering Herd** — Mutex + захист семафора від одночасних повторних штормів
308
- - **Комбіновані запасні ланцюги** — якщо основний постачальник виходить з ладу, автоматично проходить через ланцюжок без втручання.
309
- - **Combo Circuit Breaker** — автоматично вимикає несправні постачальники в комбінованому ланцюжку
310
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
311
- - **Health Dashboard** — Моніторинг безвідмовної роботи, стани автоматичного вимикача, блокування, статистика кешу, затримка p50/p95/p99
312
-
313
- </details>
314
-
315
- <details>
316
- <summary><b>🔧 7. «Налаштування кожного інструменту штучного інтелекту є виснажливим і повторюваним процесом» </b></summary>
317
-
318
- Розробники використовують Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Кожному інструменту потрібна інша конфігурація (кінцева точка API, ключ, модель). Перенастроювання при зміні постачальника чи моделі – марна трата часу.
319
-
320
- **Як це вирішує OmniRoute:**
321
-
322
- - **Панель інструментів CLI** — спеціальна сторінка з налаштуванням одним клацанням для Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
323
- - **GitHub Copilot Config Generator** — генерує `chatLanguageModels.json` для коду VS із масовим вибором моделі
324
- - **Майстер адаптації** — 4-етапне налаштування для тих, хто вперше користується
325
- - **Одна кінцева точка, усі моделі** — налаштуйте `http://localhost:20128/v1` один раз, отримайте доступ до 36+ постачальників
326
-
327
- </details>
328
-
329
- <details>
330
- <summary><b>🔑 8. «Керування токенами OAuth від кількох постачальників — це пекло» </b></summary>
331
-
332
- Claude Code, Codex, Gemini CLI, Copilot — усі використовують OAuth 2.0 із терміном дії маркерів. Розробникам необхідно постійно проходити повторну автентифікацію, мати справу з `client_secret is missing`, `redirect_uri_mismatch` і збоями на віддалених серверах. OAuth у LAN/VPS є особливо проблематичним.
333
-
334
- **Як це вирішує OmniRoute:**
335
-
336
- - **Auto Token Refresh** — маркери OAuth оновлюються у фоновому режимі до завершення терміну дії
337
- - **Вбудований OAuth 2.0 (PKCE)** — автоматичний потік для Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
338
- - **Multi-Account OAuth** — кілька облікових записів на постачальника за допомогою вилучення токенів JWT/ID
339
- - **OAuth LAN/Remote Fix** — виявлення приватної IP-адреси для `redirect_uri` + ручний режим URL-адреси для віддалених серверів
340
- - **OAuth за Nginx** — використовує `window.location.origin` для зворотної сумісності проксі
341
- - **Remote OAuth Guide** — покроковий посібник для облікових даних Google Cloud на VPS/Docker
342
-
343
- </details>
344
-
345
- <details>
346
- <summary><b>📊 9. «Я не знаю, скільки я витрачаю і куди» </b></summary>
347
-
348
- Розробники використовують кілька платних постачальників, але не мають єдиного уявлення про витрати. Кожен постачальник має власну платіжну панель, але немає консолідованого перегляду. Несподівані витрати можуть накопичитися.
349
-
350
- **Як це вирішує OmniRoute:**
351
-
352
- - **Інформаційна панель аналізу витрат** — відстеження вартості кожного токена та керування бюджетом для кожного постачальника
353
- - **Бюджетні обмеження на рівень** — максимальна сума витрат на рівень, що запускає автоматичний відкат
354
- - **Конфігурація ціни за модель** — налаштовувані ціни за модель
355
- - **Статистика використання за ключ API** — кількість запитів і позначка часу останнього використання для кожного ключа
356
- - **Інформаційна панель аналітики** — картки зі статистичними даними, діаграма використання моделі, таблиця постачальників із показниками успіху та затримкою
357
-
358
- </details>
359
-
360
- <details>
361
- <summary><b>🐛 10. «Я не можу діагностувати помилки та проблеми під час викликів ШІ» </b></summary>
362
-
363
- Коли виклик не вдається, розробник не знає, чи це було обмеження швидкості, прострочений маркер, неправильний формат чи помилка постачальника. Фрагментовані журнали на різних терміналах. Без спостережливості налагодження відбувається методом проб і помилок.
364
-
365
- **Як це вирішує OmniRoute:**
366
-
367
- - **Інформаційна панель уніфікованих журналів** — 4 вкладки: журнали запитів, журнали проксі, журнали аудиту, консоль
368
- - **Console Log Viewer** — засіб перегляду терміналу в режимі реального часу з кольоровими рівнями, автопрокручуванням, пошуком, фільтром
369
- - **Проксі-журнали SQLite** — постійні журнали, які залишаються після перезапуску сервера
370
- - **Translator Playground** — 4 режими налагодження: Playground (переклад формату), Chat Tester (туди й назад), Test Bench (пакет), Live Monitor (у реальному часі)
371
- - **Запит телеметрії** — затримка p50/p95/p99 + трасування X-Request-Id
372
- - **Логування на основі файлів із ротацією** — консольний перехоплювач записує все в журнал JSON із ротацією на основі розміру
373
-
374
- </details>
375
-
376
- <details>
377
- <summary><b>🏗️ 11. «Розгортання та підтримка шлюзу є складною справою» </b></summary>
378
-
379
- Встановлення, налаштування та обслуговування проксі ШІ в різних середовищах (локальне, VPS, Docker, хмара) є трудомістким. Такі проблеми, як жорстко закодовані шляхи, `EACCES` у каталогах, конфлікти портів і кросплатформні збірки, додають тертя.
380
-
381
- **Як це вирішує OmniRoute:**
382
-
383
- - **npm global install** — `npm install -g omniroute && omniroute` — готово
384
- - **Мультиплатформенний Docker** — нативний AMD64 + ARM64 (Apple Silicon, AWS Graviton, Raspberry Pi)
385
- - **Профілі створення Docker** — `base` (без інструментів CLI) і `cli` (з Claude Code, Codex, OpenClaw)
386
- - **Electron Desktop App** — рідна програма для Windows/macOS/Linux із системним треєм, автозапуском, офлайн-режимом
387
- - **Режим розділеного порту** — API та інформаційна панель на окремих портах для розширених сценаріїв (зворотний проксі, мережа контейнерів)
388
- - **Cloud Sync** — синхронізація налаштувань між пристроями через Cloudflare Workers
389
- - **Резервне копіювання БД** — автоматичне резервне копіювання, відновлення, експорт та імпорт усіх налаштувань
390
-
391
- </details>
392
-
393
- <details>
394
- <summary><b>🌍 12. «Інтерфейс лише англійською мовою, і моя команда не розмовляє англійською» </b></summary>
395
-
396
- Команди в неангломовних країнах, особливо в Латинській Америці, Азії та Європі, стикаються з інтерфейсами лише англійською мовою. Мовні бар’єри зменшують адаптацію та збільшують кількість помилок конфігурації.
397
-
398
- **Як це вирішує OmniRoute:**
399
-
400
- - **Інформаційна панель i18n — 30 мов** — перекладено всі 500+ клавіш, включаючи арабську, болгарську, датську, німецьку, іспанську, фінську, французьку, іврит, гінді, угорську, індонезійську, італійську, японську, корейську, малайську, голландську, норвезьку, польську, португальську (PT/BR), румунську, російську, словацьку, шведську, тайську, українську, в’єтнамську, китайська, філіппінська, англійська
401
- - **Підтримка RTL** — підтримка арабської та івриту справа наліво
402
- - **Багатомовні файли README** — 30 повних перекладів документації
403
- - **Вибір мови** — значок глобуса в заголовку для перемикання в реальному часі
404
-
405
- </details>
406
-
407
- <details>
408
- <summary><b>🔄 13. «Мені потрібно більше, ніж чат — мені потрібні вставки, зображення, аудіо» </b></summary>
409
-
410
- ШІ — це не просто завершення чату. Розробникам потрібно генерувати зображення, транскрибувати аудіо, створювати вбудовування для RAG, змінювати рейтинг документів і модерувати вміст. Кожен API має різну кінцеву точку та формат.
411
-
412
- **Як це вирішує OmniRoute:**
413
-
414
- - **Вбудовування** — `/v1/embeddings` із 6 постачальниками та 9+ моделями
415
- - **Генерація зображень** — `/v1/images/generations` із 10 постачальниками та понад 20 моделями (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
416
- - **Текст у відео** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) і SD WebUI
417
- - **Текст у музику** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
418
- - **Транскрипція аудіо** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
419
- - **Перетворення тексту в мовлення** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT + існуючі постачальники
420
- - **Модерації** — `/v1/moderations` — Перевірки безпеки вмісту
421
- - **Переранжування** — `/v1/rerank` — Переранжування релевантності документа
422
- - **Responses API** — повна підтримка `/v1/responses` для Codex
423
-
424
- </details>
425
-
426
- <details>
427
- <summary><b>🧪 14. «У мене немає можливості перевірити та порівняти якість різних моделей» </b></summary>
428
-
429
- Розробники хочуть знати, яка модель найкраще підходить для їхнього випадку використання — код, переклад, міркування — але порівнювати вручну повільно. Інтегрованих інструментів оцінювання не існує.
430
-
431
- **Як це вирішує OmniRoute:**
432
-
433
- - **Оцінки LLM** — Золотий набір тестів із 10 попередньо завантаженими випадками, що охоплюють привітання, математику, географію, генерацію коду, відповідність JSON, переклад, уцінку, відмову безпеки
434
- - **4 стратегії збігу** — `exact`, `contains`, `regex`, `custom` (функція JS)
435
- - **Translator Playground Test Bench** — Пакетне тестування з кількома входами та очікуваними результатами, порівняння між постачальниками
436
- - **Chat Tester** — повний цикл із візуальним відтворенням відповідей
437
- - **Live Monitor** — потік усіх запитів, що проходять через проксі, у реальному часі
438
-
439
- </details>
440
-
441
- <details>
442
- <summary><b>📈 15. «Мені потрібно масштабувати без втрати продуктивності» </b></summary>
443
-
444
- Оскільки кількість запитів зростає, без кешування ті самі запитання створюють дублюючі витрати. Без ідемпотентності, дублікат запитів обробки відходів. Необхідно дотримуватися обмежень тарифів для кожного постачальника.
445
-
446
- **Як це вирішує OmniRoute:**
447
-
448
- - **Семантичний кеш** — дворівневий кеш (підпис + семантичний) зменшує вартість і затримку
449
- - **Request Idempotency** — вікно дедуплікації 5 с для ідентичних запитів
450
- - **Виявлення ліміту швидкості** — RPM для кожного постачальника, мінімальний розрив і максимальне одночасне відстеження
451
- - **Обмеження швидкості, які можна редагувати** — налаштування за замовчуванням у Параметрах → Стійкість із наполегливістю
452
- - **API Key Validation Cache** — 3-рівневий кеш для продуктивності
453
- - **Інформаційна панель справності з телеметрією** — затримка p50/p95/p99, статистика кешу, час роботи
454
-
455
- </details>
456
-
457
- <details>
458
- <summary><b>🤖 16. «Я хочу глобально контролювати поведінку моделі» </b></summary>
459
-
460
- Розробники, які хочуть, щоб усі відповіді відповідали певною мовою, з певним тоном або хочуть обмежити маркери міркування. Налаштовувати це в кожному інструменті/запиті є недоцільним.
461
-
462
- **Як це вирішує OmniRoute:**
463
-
464
- - **Впровадження системної підказки** — глобальна підказка застосовується до всіх запитів
465
- - **Thinking Budget Validation** — Контроль розподілу токенів міркувань за запитом (прохідний, автоматичний, спеціальний, адаптивний)
466
- - **6 стратегій маршрутизації** — глобальні стратегії, які визначають спосіб розподілу запитів
467
- - **Wildcard Router** — шаблони `provider/*` динамічно маршрутизують до будь-якого постачальника
468
- - **Увімкнути/вимкнути комбо** — перемикайте комбо безпосередньо з інформаційної панелі
469
- - **Перемикнути постачальника** — увімкнути/вимкнути всі з’єднання для постачальника одним клацанням миші
470
- - **Заблоковані постачальники** — виключити певних постачальників зі списку `/v1/models`
471
-
472
- </details>
473
-
474
- <details>
475
- <summary><b>🧰 17. «Мені потрібні інструменти MCP як першокласні можливості продукту» </b></summary>
476
-
477
- Багато шлюзів ШІ розкривають MCP лише як приховану деталь реалізації. Командам потрібен видимий, керований рівень операцій.
478
-
479
- **Як це вирішує OmniRoute:**
480
-
481
- - MCP з’являється на панелі навігації та на вкладці протоколу кінцевої точки
482
- - Спеціальна сторінка керування MCP із процесом, інструментами, обсягами й аудитом
483
- - Вбудований швидкий запуск для `omniroute --mcp` і адаптація клієнта
484
-
485
- </details>
486
-
487
- <details>
488
- <summary><b>🧠 18. «Мені потрібна оркестровка A2A із синхронізацією + шляхи завдань потоку» </b></summary>
489
-
490
- Робочі процеси агента потребують як прямих відповідей, так і тривалого потокового виконання з контролем життєвого циклу.
491
-
492
- **Як це вирішує OmniRoute:**
493
-
494
- - Кінцева точка A2A JSON-RPC (`POST /a2a`) з `message/send` і `message/stream`
495
- - Потокова передача SSE з розповсюдженням стану терміналу
496
- - API життєвого циклу завдань для `tasks/get` і `tasks/cancel`
497
-
498
- </details>
499
-
500
- <details>
501
- <summary><b>🛰️ 19. «Мені потрібна реальна справність процесу MCP, а не вгаданий статус» </b></summary>
502
-
503
- Операційним групам потрібно знати, чи справді MCP активний, а не лише те, чи доступний API.
504
-
505
- **Як це вирішує OmniRoute:**
506
-
507
- - Файл серцевого ритму виконання з PID, часовими мітками, транспортом, кількістю інструментів і режимом області
508
- - API статусу MCP, що поєднує серцебиття + останню активність
509
- - Картки стану інтерфейсу користувача для процесу/часу безперебійної роботи/свіжості пульсу
510
-
511
- </details>
512
-
513
- <details>
514
- <summary><b>📋 20. «Мені потрібне виконання інструменту MCP з можливістю перевірки» </b></summary>
515
-
516
- Коли інструменти змінюють конфігурацію або запускають операційні дії, командам потрібна криміналістична відстежуваність.
517
-
518
- **Як це вирішує OmniRoute:**
519
-
520
- — Журнал аудиту з підтримкою SQLite для викликів інструментів MCP
521
-
522
- - Фільтри за інструментом, успіхом/невдачею, ключем API та розбивкою на сторінки
523
- - Таблиця аудиту інформаційної панелі + кінцеві точки статистики для автоматизації
524
-
525
- </details>
526
-
527
- <details>
528
- <summary><b>🔐 21. «Мені потрібні обмежені дозволи MCP для інтеграції» </b></summary>
529
-
530
- Різні клієнти повинні мати мінімальний доступ до категорій інструментів.
531
-
532
- **Як це вирішує OmniRoute:**
533
-
534
- - 9 детальних областей MCP для контрольованого доступу до інструменту
535
- - Застосування обсягу та видимість в інтерфейсі користувача керування MCP
536
- - Безпечна поза за замовчуванням для робочих інструментів
537
-
538
- </details>
539
-
540
- <details>
541
- <summary><b>⚙️ 22. «Мені потрібен оперативний контроль без перерозподілу» </b></summary>
542
-
543
- Командам потрібні швидкі зміни часу виконання під час інцидентів або витрат.
544
-
545
- **Як це вирішує OmniRoute:**
546
-
547
- - Перемикання комбо-активації безпосередньо з інформаційної панелі MCP
548
- - Застосовуйте профілі стійкості з попередньо визначених пакетів політик
549
- - Скинути стан автоматичного вимикача з тієї ж панелі керування
550
-
551
- </details>
552
-
553
- <details>
554
- <summary><b>🔄 23. «Мені потрібна видимість і скасування життєвого циклу завдання A2A» </b></summary>
555
-
556
- Без видимості життєвого циклу інциденти завдань стає важко сортувати.
557
-
558
- **Як це вирішує OmniRoute:**
559
-
560
- — Список завдань/фільтрування за станом/навиками з розбивкою на сторінки
561
-
562
- - Деталізація метаданих завдань, подій і артефактів
563
- - Кінцева точка скасування завдання та дія інтерфейсу користувача з підтвердженням
564
-
565
- </details>
566
-
567
- <details>
568
- <summary><b>🌊 24. «Мені потрібні активні показники потоку для завантаження A2A» </b></summary>
569
-
570
- Робочі процеси потокової передачі вимагають оперативного розуміння паралельності та живих з’єднань.
571
-
572
- **Як це вирішує OmniRoute:**
573
-
574
- — Лічильники активних потоків інтегровані в статус A2A
575
-
576
- - Мітка часу останнього завдання та підрахунок стану
577
- - Картки інформаційної панелі A2A для моніторингу операцій у реальному часі
578
-
579
- </details>
580
-
581
- <details>
582
- <summary><b>🪪 25. «Мені потрібне стандартне виявлення агентів для клієнтів» </b></summary>
583
-
584
- Зовнішнім клієнтам і оркестрантам потрібні машинозчитувані метадані для адаптації.
585
-
586
- **Як це вирішує OmniRoute:**
587
-
588
- - Картка агента розкрита на `/.well-known/agent.json`
589
- - Можливості та навички, показані в інтерфейсі користувача користувача
590
- - API стану A2A включає метадані виявлення для автоматизації
591
-
592
- </details>
593
-
594
- <details>
595
- <summary><b>🧭 26. «Мені потрібна можливість виявлення протоколу в UX продукту» </b></summary>
596
-
597
- Якщо користувачі не можуть виявити поверхні протоколу, якість впровадження та підтримки падає.
598
-
599
- **Як це вирішує OmniRoute:**
600
-
601
- — Записи бічної панелі для MCP і A2A
602
-
603
- - Сторінка кінцевої точки Вкладка протоколів із швидким запуском і статусом
604
- - Посилання з огляду на спеціальні інформаційні панелі керування
605
-
606
- </details>
607
-
608
- <details>
609
- <summary><b>🧪 27. «Мені потрібна наскрізна перевірка протоколу з реальними клієнтами» </b></summary>
610
-
611
- Пробних тестів недостатньо для перевірки сумісності протоколу перед випуском.
612
-
613
- **Як це вирішує OmniRoute:**
614
-
615
- - Комплект E2E, який завантажує програму та використовує реальний клієнтський транспорт MCP SDK
616
- - Клієнт A2A перевіряє потоки виявлення, надсилання, потокової передачі, отримання та скасування
617
- - Перехресна перевірка тверджень щодо аудиту MCP та API завдань A2A
618
-
619
- </details>
620
-
621
- <details>
622
- <summary><b>📡 28. «Мені потрібна уніфікована можливість спостереження через усі інтерфейси» </b></summary>
623
-
624
- Поділ спостережуваності за протоколом створює сліпі зони та довший MTTR.
625
-
626
- **Як це вирішує OmniRoute:**
627
-
628
- - Уніфіковані інформаційні панелі/журнали/аналітика в одному продукті
629
- - Справність + аудит + телеметрія запитів на рівнях OpenAI, MCP і A2A
630
- - Операційні API для статусу та автоматизації
631
-
632
- </details>
633
-
634
- <details>
635
- <summary><b>💼 29. «Мені потрібне одне середовище виконання для проксі + інструментів + оркестровки агента» </b></summary>
636
-
637
- Запуск багатьох окремих служб збільшує експлуатаційні витрати та частоту збоїв.
638
-
639
- **Як це вирішує OmniRoute:**
640
-
641
- - OpenAI-сумісний проксі, сервер MCP і сервер A2A в одному стеку
642
- - Спільна автентифікація, стійкість, зберігання даних і можливість спостереження
643
- - Послідовна модель політики на всіх поверхнях взаємодії
644
-
645
- </details>
646
-
647
- <details>
648
- <summary><b>🚀 30. «Мені потрібно надсилати агентські робочі процеси без розповсюдження клею-коду» </b></summary>
649
-
650
- Команди втрачають швидкість під час з’єднання кількох спеціальних служб і сценаріїв.
651
-
652
- **Як це вирішує OmniRoute:**
653
-
654
- - Уніфікована стратегія кінцевих точок для клієнтів і агентів
655
- — Вбудовані інтерфейси керування протоколами та шляхи перевірки диму
656
- - Основи, готові до виробництва (безпека, журналювання, стійкість, резервне копіювання)
657
-
658
- </details>
659
-
660
- ### Приклади Playbooks
661
-
662
- **Playbook A: Максимальна кількість платної підписки + дешеве резервне копіювання**
663
-
664
- ```txt
665
- Combo: "maximize-claude"
666
- 1. cc/claude-opus-4-6
667
- 2. glm/glm-4.7
668
- 3. if/kimi-k2-thinking
669
-
670
- Monthly cost: $20 + small backup spend
671
- Outcome: higher quality, near-zero interruption
672
- ```
673
-
674
- **Playbook B: стек кодування без витрат**
675
-
676
- ```txt
677
- Combo: "free-forever"
678
- 1. gc/gemini-3-flash
679
- 2. if/kimi-k2-thinking
680
- 3. qw/qwen3-coder-plus
681
-
682
- Monthly cost: $0
683
- Outcome: stable free coding workflow
684
- ```
685
-
686
- **Playbook C: резервний ланцюжок 24/7**
687
-
688
- ```txt
689
- Combo: "always-on"
690
- 1. cc/claude-opus-4-6
691
- 2. cx/gpt-5.2-codex
692
- 3. glm/glm-4.7
693
- 4. minimax/MiniMax-M2.1
694
- 5. if/kimi-k2-thinking
695
-
696
- Outcome: deep fallback depth for deadline-critical workloads
697
- ```
698
-
699
- **Playbook D: Операції агента з MCP + A2A**
700
-
701
- ```txt
702
- 1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
703
- 2) Run A2A tasks via `message/send` and `message/stream`
704
- 3) Observe via /dashboard/mcp and /dashboard/a2a
705
- 4) Control incidents with resilience profile + task cancellation
706
- ```
707
-
708
- ---
709
-
710
- ## ⚡ Швидкий старт
711
-
712
- **1. Встановити глобально:**
713
-
714
- ```bash
715
- npm install -g omniroute
716
- omniroute
717
- ```
718
-
719
- 🎉 Інформаційна панель відкривається в `http://localhost:20128`
720
-
721
- | Команда | Опис |
722
- | ----------------------- | ---------------------------------------------- |
723
- | `omniroute` | Запустити сервер (порт за замовчуванням 20128) |
724
- | `omniroute --port 3000` | Використовувати спеціальний порт |
725
- | `omniroute --no-open` | Не відкривати автоматично браузер |
726
- | `omniroute --help` | Показати довідку |
727
-
728
- **2. Підключіть БЕЗКОШТОВНОГО провайдера:**
729
-
730
- Інформаційна панель → Постачальники → Підключити **Claude Code** або **Antigravity** → Вхід OAuth → Готово!
731
-
732
- **3. Використовуйте у своєму інструменті CLI:**
733
-
734
- ```
735
- Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
736
- Endpoint: http://localhost:20128/v1
737
- API Key: [copy from dashboard]
738
- Model: if/kimi-k2-thinking
739
- ```
740
-
741
- **Ось і все!** Почніть кодувати з БЕЗКОШТОВНИМИ моделями ШІ.
742
-
743
- **Альтернатива — запустити з джерела:**
744
-
745
- ```bash
746
- cp .env.example .env
747
- npm install
748
- PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
749
- ```
750
-
751
- ---
752
-
753
- ## 🐳 Докер
754
-
755
- OmniRoute доступний як загальнодоступний образ Docker на [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
756
-
757
- **Швидкий біг:**
758
-
759
- ```bash
760
- docker run -d \
761
- --name omniroute \
762
- --restart unless-stopped \
763
- -p 20128:20128 \
764
- -v omniroute-data:/app/data \
765
- diegosouzapw/omniroute:latest
766
- ```
767
-
768
- **З файлом середовища:**
769
-
770
- ```bash
771
- # Copy and edit .env first
772
- cp .env.example .env
773
-
774
- docker run -d \
775
- --name omniroute \
776
- --restart unless-stopped \
777
- --env-file .env \
778
- -p 20128:20128 \
779
- -v omniroute-data:/app/data \
780
- diegosouzapw/omniroute:latest
781
- ```
782
-
783
- **Використання Docker Compose:**
784
-
785
- ```bash
786
- # Base profile (no CLI tools)
787
- docker compose --profile base up -d
788
-
789
- # CLI profile (Claude Code, Codex, OpenClaw built-in)
790
- docker compose --profile cli up -d
791
- ```
792
-
793
- | Зображення | Тег | Розмір | Опис |
794
- | ------------------------ | -------- | ------- | -------------------------- |
795
- | `diegosouzapw/omniroute` | `latest` | ~250 МБ | Останній стабільний випуск |
796
- | `diegosouzapw/omniroute` | `1.0.3` | ~250 МБ | Поточна версія |
797
-
798
- ---
799
-
800
- ---
801
-
802
- ## 🖥️
803
-
804
- > 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
805
-
806
- - 🖥️ **Native Window** — Dedicated app window with system tray integration
807
- - 🔄 **Auto-Start** — Launch OmniRoute on system login
808
- - 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
809
- - ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
810
- - 🌐 **Offline Mode** — Works fully offline with bundled server
811
-
812
- ```bash
813
- npm run electron:dev # Development mode
814
- npm run electron:build # Current platform
815
- npm run electron:build:win # Windows (.exe)
816
- npm run electron:build:mac # macOS (.dmg)
817
- npm run electron:build:linux # Linux (.AppImage)
818
- ```
819
-
820
- 📖 Full documentation: [`electron/README.md`](electron/README.md)
821
-
822
- ---
823
-
824
- ## 💰 Короткий огляд цін
825
-
826
- | Рівень | Постачальник | Вартість | Скидання квоти | Найкраще для |
827
- | ------------------ | ---------------- | ------------------------------- | ----------------------------- | ---------------------------- |
828
- | **💳 ПІДПИСКА** | Клод Код (Pro) | 20 доларів США на місяць | 5 годин + щотижня | Вже підписані |
829
- | | Codex (Plus/Pro) | $20-200/міс | 5 годин + щотижня | Користувачі OpenAI |
830
- | | Gemini CLI | **БЕЗКОШТОВНО** | 180 тис./місяць + 1 тис./день | всі! |
831
- | | Копілот GitHub | $10-19/міс | Щомісяця | Користувачі GitHub |
832
- | **🔑 КЛЮЧ API** | NVIDIA NIM | **БЕЗКОШТОВНО** (1000 кредитів) | Одноразова | Безкоштовне тестування рівня |
833
- | | DeepSeek | Оплата за використання | Жодного | Краща ціна/якість |
834
- | | Groq | Безкоштовний рівень + платний | Оцінка обмежена | Надшвидкий висновок |
835
- | | xAI (Грок) | Оплата за використання | Жодного | Моделі Grok |
836
- | | Містраль | Безкоштовний рівень + платний | Оцінка обмежена | Європейський ШІ |
837
- | | OpenRouter | Оплата за використання | Жодного | 100+ моделей |
838
- | **💰 ДЕШЕВО** | GLM-4.7 | $0,6/1 млн | Щодня о 10 ранку | Резервне копіювання бюджету |
839
- | | MiniMax M2.1 | $0,2/1 млн | 5-годинний роликовий | Найдешевший варіант |
840
- | | Кімі К2 | 9 $/міс квартира | 10 млн токенів/міс | Передбачувана вартість |
841
- | **🆓 БЕЗКОШТОВНО** | iFlow | $0 | Необмежений | 8 моделей безкоштовно |
842
- | | Квен | $0 | Необмежений | 3 моделі безкоштовно |
843
- | | Кіро | $0 | Необмежений | Клод безкоштовно |
844
-
845
- **💡 Порада професіонала:** Почніть із Gemini CLI (180 тис. безкоштовно/місяць) + iFlow (необмежено безкоштовно) = 0 доларів США!
846
-
847
- ---
848
-
849
- ## 💡 Основні характеристики
850
-
851
- ### 🧠 Основна маршрутизація та інтелект
852
-
853
- | Особливість | Що він робить |
854
- | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
855
- | 🎯 **Розумний 4-рівневий резервний варіант** | Авто-маршрут: Підписка → Ключ API → Дешево → Безкоштовно |
856
- | 📊 **Відстеження квот у реальному часі** | Підрахунок живих токенів + скидання зворотного відліку для кожного постачальника |
857
- | 🔄 **Формат перекладу** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro seamless + відповідь санація |
858
- | 👥 **Підтримка кількох облікових записів** | Кілька облікових записів на постачальника з інтелектуальним вибором |
859
- | 🔄 **Автоматичне оновлення токенів** | Маркери OAuth оновлюються автоматично з повторною спробою |
860
- | 🎨 **Користувацькі комбо** | 6 стратегій: спочатку заповнює, циклічний, p2c, випадковий, найменш використовуваний, оптимізований за витратами |
861
- | 🧩 **Користувацькі моделі** | Додайте будь-який ідентифікатор моделі до будь-якого постачальника |
862
- | 🌐 **Wildcard Router** | Динамічно направляйте шаблони `provider/*` до будь-якого постачальника |
863
- | 🧠 **Мислення про бюджет** | Наскрізний, автоматичний, настроюваний і адаптивний режими для моделей міркування |
864
- | 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
865
- | ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
866
- | 💬 **Швидке впровадження системи** | Глобальне системне підказка застосовується до всіх запитів |
867
- | 📄 **API відповідей** | Повна підтримка OpenAI Responses API (`/v1/responses`) для Codex |
868
-
869
- ### 🎵 Мультимодальні API
870
-
871
- | Особливість | Що він робить |
872
- | ---------------------------------- | ----------------------------------------------------- |
873
- | 🖼️ **Створення зображень** | `/v1/images/generations` — 4 провайдери, 9+ моделей |
874
- | 📐 **Вбудовування** | `/v1/embeddings` — 6 провайдерів, 9+ моделей |
875
- | 🎤 **Транскрипція аудіо** | `/v1/audio/transcriptions` — сумісний із Whisper |
876
- | 🔊 **Створення тексту в мовлення** | `/v1/audio/speech` — Багатопровайдерний аудіосинтез |
877
- | 🛡️ **Модерації** | `/v1/moderations` — Перевірка безпеки вмісту |
878
- | 🔀 **Переранжування** | `/v1/rerank` — Переранжування релевантності документа |
879
-
880
- ### 🛡️ Стійкість і безпека
881
-
882
- | Особливість | Що він робить |
883
- | ------------------------------------- | ----------------------------------------------------------------------------------------------------- |
884
- | 🔌 **Автоматичний вимикач** | Автоматичне відкриття/закриття для кожного постачальника з настроюваними пороговими значеннями |
885
- | 🛡️ **Anti-Thundering Herd** | Mutex + обмеження швидкості семафора для постачальників ключів API |
886
- | 🧠 **Семантичний кеш** | Дворівневий кеш (підпис + семантика) зменшує вартість і затримку |
887
- | ⚡ **Запит на ідемпотентність** | 5-секундне вікно дедупляції для дублікатів запитів |
888
- | 🔒 **Підробка відбитків пальців TLS** | Обійти виявлення ботів на основі TLS через wreq-js |
889
- | 🌐 **IP-фільтрація** | Білий/чорний список для керування доступом API |
890
- | 📊 **Редаговані ліміти ставок** | Конфігурація RPM, мінімальний проміжок і максимальна одночасність на рівні системи |
891
- | 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
892
- | 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
893
- | 🛡 **API Endpoint Protection** | Аутентифікація + блокування постачальника для кінцевої точки `/models` |
894
- | 🔒 **Видимість проксі** | Кольорові значки: 🟢 глобальний, 🟡 постачальник, 🔵 кожне підключення з відображенням IP |
895
- | 🌐 **3-рівнева конфігурація проксі** | Налаштуйте проксі-сервери на глобальному рівні, на рівні кожного постачальника чи кожного підключення |
896
-
897
- ### 📊 Спостережливість і аналітика
898
-
899
- | Особливість | Що він робить |
900
- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
901
- | 📝 **Подати запит на реєстрацію** | Режим налагодження з повними журналами запитів/відповідей |
902
- | 💾 **Журнали проксі SQLite** | Постійні журнали проксі зберігаються після перезавантаження сервера |
903
- | 📊 **Інформаційна панель аналітики** | На основі Recharts: картки статистики, діаграма використання моделей, таблиця провайдерів |
904
- | 📈 **Відстеження прогресу** | Увімкніть події прогресу SSE для потокового передавання |
905
- | 🧪 **Оцінки LLM** | Тестування золотого набору з 4 стратегіями матчу |
906
- | 🔍 **Надіслати запит на телеметрію** | агрегація затримок p50/p95/p99 + трасування X-Request-Id |
907
- | 📋 **Інформаційна панель журналів** | Уніфікована сторінка з 4 вкладками: журнали запитів, журнали проксі, журнали аудиту, консоль |
908
- | 🖥️ **Перегляд журналу консолі** | Переглядач у режимі реального часу у стилі терміналу з фільтром рівнів, пошуком, автоматичним прокручуванням |
909
- | 📑 **Логування на основі файлів** | Перехоплювач консолі захоплює весь вихід у файл журналу JSON із обертанням |
910
- | 🏥 **Інформаційна панель здоров’я** | Час роботи системи, стани автоматичного вимикача, блокування, статистика кешу |
911
- | 💰 **Відстеження витрат** | Управління бюджетом + конфігурація ціноутворення для кожної моделі |
912
-
913
- ### ☁️ Розгортання та синхронізація
914
-
915
- | Особливість | Що він робить |
916
- | ------------------------------------------- | ----------------------------------------------------------------------------------- |
917
- | 💾 **Хмарна синхронізація** | Синхронізація конфігурації між пристроями через Cloudflare Workers |
918
- | 🌐 **Розгортайте будь-де** | Localhost, VPS, Docker, Cloudflare Workers |
919
- | 🔑 **Керування ключами API** | Генерувати, обертати та використовувати ключі API для кожного постачальника |
920
- | 🧙 **Майстер адаптації** | 4-етапне покрокове налаштування для користувачів, які вперше |
921
- | 🔧 **Інформаційна панель інструментів CLI** | Налаштувати в один клік Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
922
- | 🔄 **Резервне копіювання БД** | Автоматичне резервне копіювання, відновлення, експорт і імпорт для всіх налаштувань |
923
- | 🌐 **Інтернаціоналізація** | Повний i18n із next-intl — підтримка англійської та португальської (Бразилія) |
924
- | 🌍 **Вибір мови** | Значок глобуса в заголовку для перемикання мов у реальному часі (🇺🇸/🇧🇷) |
925
- | 📂 **Каталог користувацьких даних** | `DATA_DIR` змінна env для перевизначення типового шляху зберігання `~/.omniroute` |
926
-
927
- <details>
928
- <summary><b>📖 Деталі функції</b></summary>
929
-
930
- ### 🎯 Smart 4-Tier Fallback
931
-
932
- Створюйте комбо з автоматичним резервним варіантом:
933
-
934
- ```
935
- Combo: "my-coding-stack"
936
- 1. cc/claude-opus-4-6 (your subscription)
937
- 2. nvidia/llama-3.3-70b (free NVIDIA API)
938
- 3. glm/glm-4.7 (cheap backup, $0.6/1M)
939
- 4. if/kimi-k2-thinking (free fallback)
940
-
941
- → Auto switches when quota runs out or errors occur
942
- ```
943
-
944
- ### 📊 Відстеження квот у реальному часі
945
-
946
- - Споживання токенів на постачальника
947
- - Скидання зворотного відліку (5 годин, щодня, щотижня)
948
- - Оцінка вартості платних рівнів
949
- - Щомісячні звіти про витрати
950
-
951
- ### 🔄 Переклад формату
952
-
953
- Плавний переклад між форматами:
954
-
955
- - **OpenAI** ↔ **Клод** ↔ **Близнюки** ↔ **Відповіді OpenAI**
956
- - Ваш інструмент CLI надсилає формат OpenAI → OmniRoute перекладає → Постачальник отримує рідний формат
957
- - Працює з будь-яким інструментом, який підтримує спеціальні кінцеві точки OpenAI
958
- - **Дезінфікація відповіді** — видаляє нестандартні поля для суворої сумісності з OpenAI SDK
959
- - **Нормалізація ролі** — `developer` → `system` для не-OpenAI; `system` → `user` для моделей GLM/ERNIE
960
- - **Вилучення тегів мислення** — `<think>` блоків → `reasoning_content` для моделей мислення
961
- - **Структурований вихід** — `json_schema` → Gemini `responseMimeType`/`responseSchema`
962
-
963
- ### 👥 Підтримка кількох облікових записів
964
-
965
- - Додайте кілька облікових записів для кожного постачальника
966
- - Автоматична циклічна або пріоритетна маршрутизація
967
- - Повернення до наступного облікового запису, коли досягається квота
968
-
969
- ### 🔄 Автоматичне оновлення токенів
970
-
971
- - Маркери OAuth автоматично оновлюються до закінчення терміну дії
972
- - Повторна автентифікація вручну не потрібна
973
- - Бездоганний досвід у всіх постачальників
974
-
975
- ### 🎨 Спеціальні комбо
976
-
977
- - Створюйте необмежену кількість комбінацій моделей
978
- - 6 стратегій: спочатку заповнюй, циклічна, сила двох варіантів, випадкова, найменш використовувана, оптимізована за витратами
979
- - Діліться комбо на різних пристроях за допомогою Cloud Sync
980
-
981
- ### 🏥 Інформаційна панель здоров'я
982
-
983
- - Статус системи (час роботи, версія, використання пам'яті)
984
- - Стани автоматичного вимикача для кожного постачальника (замкнуто/розімкнуто/напіврозімкнуто)
985
- - Статус обмеження швидкості та активні блокування
986
- — Статистика кешу підписів
987
- - Телеметрія затримки (p50/p95/p99) + кеш підказок
988
- - Скинути стан здоров'я одним клацанням миші
989
-
990
- ### 🔧 Ігровий майданчик для перекладачів
991
-
992
- OmniRoute містить потужний вбудований Translator Playground із **4 режимами** для налагодження, тестування та моніторингу перекладів API:
993
-
994
- | Режим | Опис |
995
- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
996
- | **💻 Ігровий майданчик** | Прямий переклад формату — вставте будь-яке тіло запиту API та миттєво подивіться, як OmniRoute перекладає його між форматами постачальників (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Включає приклади шаблонів і автоматичне визначення формату. |
997
- | **💬 Тестер чату** | Надсилайте справжні запити в чат через OmniRoute і переглядайте повну інформацію: ваші дані, перекладений запит, відповідь постачальника та перекладену відповідь. Безцінний для перевірки комбінованої маршрутизації. |
998
- | **🧪 Тестовий стенд** | Режим пакетного тестування — визначте кілька тестів із різними вхідними та очікуваними результатами, запустіть їх усі одночасно та порівняйте результати між постачальниками та моделями. |
999
- | **📱 Live Monitor** | Моніторинг запитів у режимі реального часу — спостерігайте за вхідними запитами, коли вони проходять через OmniRoute, переглядайте трансляції форматів у реальному часі та миттєво виявляйте проблеми. |
1000
-
1001
- **Доступ:** Інформаційна панель → Перекладач (бічна панель)
1002
-
1003
- ### 💾 Cloud Sync
1004
-
1005
- - Синхронізація постачальників, комбінацій і налаштувань на всіх пристроях
1006
- - Автоматична фонова синхронізація
1007
- - Безпечне зашифроване сховище
1008
-
1009
- </details>
1010
-
1011
- ## 🧪 Оцінки (Evals)
1012
-
1013
- OmniRoute містить вбудовану систему оцінювання для перевірки якості відповіді LLM на відповідність золотому набору. Доступ до нього через **Аналітика → Оцінки** на інформаційній панелі.
1014
-
1015
- ### Вбудований Золотий набір
1016
-
1017
- Попередньо завантажений "Золотий набір OmniRoute" містить 10 тестів, які охоплюють:
1018
-
1019
- - Привітання, математика, географія, генерація коду
1020
- - Відповідність формату JSON, переклад, розмітка
1021
- - Відмова безпеки (шкідливий контент), підрахунок, булева логіка
1022
-
1023
- ### Стратегії оцінювання
1024
-
1025
- | Стратегія | Опис | Приклад |
1026
- | ---------- | -------------------------------------------------------------- | -------------------------------- |
1027
- | `exact` | Вихідні дані повинні точно відповідати | `"4"` |
1028
- | `contains` | Вихідні дані повинні містити підрядок (незалежно від регістру) | `"Paris"` |
1029
- | `regex` | Вихідні дані мають відповідати шаблону регулярного виразу | `"1.*2.*3"` |
1030
- | `custom` | Спеціальна функція JS повертає true/false | `(output) => output.length > 10` |
1031
-
1032
- ---
1033
-
1034
- ## 📖 Посібник із налаштування
1035
-
1036
- <details>
1037
- <summary><b>💳 Постачальники підписки</b></summary>
1038
-
1039
- ### Claude Code (Pro/Max)
1040
-
1041
- ```bash
1042
- Dashboard → Providers → Connect Claude Code
1043
- → OAuth login → Auto token refresh
1044
- → 5-hour + weekly quota tracking
1045
-
1046
- Models:
1047
- cc/claude-opus-4-6
1048
- cc/claude-sonnet-4-5-20250929
1049
- cc/claude-haiku-4-5-20251001
1050
- ```
1051
-
1052
- **Професійна порада:** використовуйте Opus для складних завдань, Sonnet для швидкості. OmniRoute відстежує квоту на модель!
1053
-
1054
- ### OpenAI Codex (Plus/Pro)
1055
-
1056
- ```bash
1057
- Dashboard → Providers → Connect Codex
1058
- → OAuth login (port 1455)
1059
- → 5-hour + weekly reset
1060
-
1061
- Models:
1062
- cx/gpt-5.2-codex
1063
- cx/gpt-5.1-codex-max
1064
- ```
1065
-
1066
- ### Gemini CLI (БЕЗКОШТОВНО 180K/місяць!)
1067
-
1068
- ```bash
1069
- Dashboard → Providers → Connect Gemini CLI
1070
- → Google OAuth
1071
- → 180K completions/month + 1K/day
1072
-
1073
- Models:
1074
- gc/gemini-3-flash-preview
1075
- gc/gemini-2.5-pro
1076
- ```
1077
-
1078
- **Найкраще:** Величезний безкоштовний рівень! Використовуйте це перед платними рівнями.
1079
-
1080
- ### Копілот GitHub
1081
-
1082
- ```bash
1083
- Dashboard → Providers → Connect GitHub
1084
- → OAuth via GitHub
1085
- → Monthly reset (1st of month)
1086
-
1087
- Models:
1088
- gh/gpt-5
1089
- gh/claude-4.5-sonnet
1090
- gh/gemini-3-pro
1091
- ```
1092
-
1093
- </details>
1094
-
1095
- <details>
1096
- <summary><b>🔑 Постачальники ключів API</b></summary>
1097
-
1098
- ### NVIDIA NIM (БЕЗКОШТОВНІ 1000 кредитів!)
1099
-
1100
- 1. Зареєструйтесь: [build.nvidia.com](https://build.nvidia.com)
1101
- 2. Отримайте безкоштовний ключ API (1000 кредитів включено)
1102
- 3. Інформаційна панель → Додати постачальника → NVIDIA NIM:
1103
- - Ключ API: `nvapi-your-key`
1104
-
1105
- **Моделі:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` та понад 50 інших
1106
-
1107
- **Порада професіонала:** OpenAI-сумісний API — бездоганно працює з перекладом формату OmniRoute!
1108
-
1109
- ### DeepSeek
1110
-
1111
- 1. Зареєструйтеся: [platform.deepseek.com](https://platform.deepseek.com)
1112
- 2. Отримайте ключ API
1113
- 3. Інформаційна панель → Додати постачальника → DeepSeek
1114
-
1115
- **Моделі:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
1116
-
1117
- ### Groq (доступний безкоштовний рівень!)
1118
-
1119
- 1. Зареєструйтеся: [console.groq.com](https://console.groq.com)
1120
- 2. Отримайте ключ API (включає безкоштовний рівень)
1121
- 3. Інформаційна панель → Додати постачальника → Groq
1122
-
1123
- **Моделі:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
1124
-
1125
- **Професійна порада:** Надшвидкий висновок — найкращий для кодування в реальному часі!
1126
-
1127
- ### OpenRouter (100+ моделей)
1128
-
1129
- 1. Зареєструйтеся: [openrouter.ai](https://openrouter.ai)
1130
- 2. Отримайте ключ API
1131
- 3. Інформаційна панель → Додати провайдера → OpenRouter
1132
-
1133
- **Моделі:** Отримуйте доступ до понад 100 моделей від усіх основних постачальників за допомогою єдиного ключа API.
1134
-
1135
- </details>
1136
-
1137
- <details>
1138
- <summary><b>💰 Дешеві постачальники (резервні)</b></summary>
1139
-
1140
- ### GLM-4.7 (щоденне скидання, $0,6/1 млн)
1141
-
1142
- 1. Зареєструйтеся: [Zhipu AI](https://open.bigmodel.cn/)
1143
- 2. Отримайте ключ API від Coding Plan
1144
- 3. Інформаційна панель → Додати ключ API:
1145
- - Постачальник: `glm`
1146
- - Ключ API: `your-key`
1147
-
1148
- **Використовуйте:** `glm/glm-4.7`
1149
-
1150
- **Професійна порада:** План кодування пропонує 3x квоту за 1/7 вартості! Скидання щодня о 10:00.
1151
-
1152
- ### MiniMax M2.1 (5 годин скидання, $0,20/1 млн)
1153
-
1154
- 1. Зареєструйтеся: [MiniMax](https://www.minimax.io/)
1155
- 2. Отримайте ключ API
1156
- 3. Інформаційна панель → Додати ключ API
1157
-
1158
- **Використовуйте:** `minimax/MiniMax-M2.1`
1159
-
1160
- **Порада:** Найдешевший варіант для довгого контексту (1 млн токенів)!
1161
-
1162
- ### Kimi K2 ($9/місяць)
1163
-
1164
- 1. Підпишіться: [Moonshot AI](https://platform.moonshot.ai/)
1165
- 2. Отримайте ключ API
1166
- 3. Інформаційна панель → Додати ключ API
1167
-
1168
- **Використання:** `kimi/kimi-latest`
1169
-
1170
- **Професійна порада:** Фіксовані 9 доларів США на місяць за 10 мільйонів токенів = 0,90 доларів США за 1 млн. ефективних витрат!
1171
-
1172
- </details>
1173
-
1174
- <details>
1175
- <summary><b>🆓 БЕЗКОШТОВНІ постачальники (аварійне резервне копіювання)</b></summary>
1176
-
1177
- ### iFlow (8 БЕЗКОШТОВНИХ моделей)
1178
-
1179
- ```bash
1180
- Dashboard → Connect iFlow
1181
- → iFlow OAuth login
1182
- → Unlimited usage
1183
-
1184
- Models:
1185
- if/kimi-k2-thinking
1186
- if/qwen3-coder-plus
1187
- if/glm-4.7
1188
- if/minimax-m2
1189
- if/deepseek-r1
1190
- ```
1191
-
1192
- ### Qwen (3 БЕЗКОШТОВНІ моделі)
1193
-
1194
- ```bash
1195
- Dashboard → Connect Qwen
1196
- → Device code authorization
1197
- → Unlimited usage
1198
-
1199
- Models:
1200
- qw/qwen3-coder-plus
1201
- qw/qwen3-coder-flash
1202
- ```
1203
-
1204
- ### Кіро (Клод БЕЗКОШТОВНО)
1205
-
1206
- ```bash
1207
- Dashboard → Connect Kiro
1208
- → AWS Builder ID or Google/GitHub
1209
- → Unlimited usage
1210
-
1211
- Models:
1212
- kr/claude-sonnet-4.5
1213
- kr/claude-haiku-4.5
1214
- ```
1215
-
1216
- </details>
1217
-
1218
- <details>
1219
- <summary><b>🎨 Створення комбо</b></summary>
1220
-
1221
- ### Приклад 1: максимізація підписки → дешеве резервне копіювання
1222
-
1223
- ```
1224
- Dashboard → Combos → Create New
1225
-
1226
- Name: premium-coding
1227
- Models:
1228
- 1. cc/claude-opus-4-6 (Subscription primary)
1229
- 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
1230
- 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
1231
-
1232
- Use in CLI: premium-coding
1233
- ```
1234
-
1235
- ### Приклад 2: лише безкоштовно (нульова вартість)
1236
-
1237
- ```
1238
- Name: free-combo
1239
- Models:
1240
- 1. gc/gemini-3-flash-preview (180K free/month)
1241
- 2. if/kimi-k2-thinking (unlimited)
1242
- 3. qw/qwen3-coder-plus (unlimited)
1243
-
1244
- Cost: $0 forever!
1245
- ```
1246
-
1247
- </details>
1248
-
1249
- <details>
1250
- <summary><b>🔧 Інтеграція CLI</b></summary>
1251
-
1252
- ### Курсор IDE
1253
-
1254
- ```
1255
- Settings → Models → Advanced:
1256
- OpenAI API Base URL: http://localhost:20128/v1
1257
- OpenAI API Key: [from OmniRoute dashboard]
1258
- Model: cc/claude-opus-4-6
1259
- ```
1260
-
1261
- ### Клод Код
1262
-
1263
- Використовуйте сторінку **Інструменти CLI** на інформаційній панелі для налаштування одним клацанням миші або редагуйте `~/.claude/settings.json` вручну.
1264
-
1265
- ### Codex CLI
1266
-
1267
- ```bash
1268
- export OPENAI_BASE_URL="http://localhost:20128"
1269
- export OPENAI_API_KEY="your-omniroute-api-key"
1270
-
1271
- codex "your prompt"
1272
- ```
1273
-
1274
- ### OpenClaw
1275
-
1276
- **Варіант 1 — Інформаційна панель (рекомендовано):**
1277
-
1278
- ```
1279
- Dashboard → CLI Tools → OpenClaw → Select Model → Apply
1280
- ```
1281
-
1282
- **Варіант 2 — вручну:** Редагувати `~/.openclaw/openclaw.json`:
1283
-
1284
- ```json
1285
- {
1286
- "models": {
1287
- "providers": {
1288
- "omniroute": {
1289
- "baseUrl": "http://127.0.0.1:20128/v1",
1290
- "apiKey": "sk_omniroute",
1291
- "api": "openai-completions"
1292
- }
1293
- }
1294
- }
1295
- }
1296
- ```
1297
-
1298
- > **Примітка:** OpenClaw працює лише з локальним OmniRoute. Використовуйте `127.0.0.1` замість `localhost`, щоб уникнути проблем із вирішенням IPv6.
1299
-
1300
- ### Cline / Продовжити / RooCode
1301
-
1302
- ```
1303
- Settings → API Configuration:
1304
- Provider: OpenAI Compatible
1305
- Base URL: http://localhost:20128/v1
1306
- API Key: [from OmniRoute dashboard]
1307
- Model: if/kimi-k2-thinking
1308
- ```
1309
-
1310
- </details>
1311
-
1312
- ---
1313
-
1314
- ## 🐛 Усунення несправностей
1315
-
1316
- <details>
1317
- <summary><b>Натисніть, щоб розгорнути посібник з усунення несправностей</b></summary>
1318
-
1319
- **"Мовна модель не надавала повідомлень"**
1320
-
1321
- - Квота постачальника вичерпана → Перевірте систему відстеження квот на інформаційній панелі
1322
- - Рішення: скористайтеся комбінованим альтернативним варіантом або перейдіть на дешевший рівень
1323
-
1324
- **Обмеження швидкості**
1325
-
1326
- — Вичерпана квота на підписку → Повернення до GLM/MiniMax
1327
-
1328
- - Додати комбо: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1329
-
1330
- **Термін дії маркера OAuth минув**
1331
-
1332
- — Автоматично оновлено OmniRoute
1333
-
1334
- - Якщо проблеми не зникають: Інформаційна панель → Постачальник → Повторне підключення
1335
-
1336
- **Високі витрати**
1337
-
1338
- - Перевірте статистику використання в Інформаційній панелі → Витрати
1339
- - Переключіть основну модель на GLM/MiniMax
1340
- - Використовуйте безкоштовний рівень (Gemini CLI, iFlow) для некритичних завдань
1341
-
1342
- **Інформаційна панель відкривається через неправильний порт**
1343
-
1344
- - Встановити `PORT=20128` та `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
1345
-
1346
- **Помилки хмарної синхронізації**
1347
-
1348
- - Переконайтеся, що `BASE_URL` вказує на ваш запущений екземпляр
1349
- - Перевірте `CLOUD_URL` вказує на очікувану кінцеву точку хмари
1350
- - Зберігайте значення `NEXT_PUBLIC_*` у відповідності зі значеннями на стороні сервера
1351
-
1352
- **Перший вхід не працює**
1353
-
1354
- - Перевірте `INITIAL_PASSWORD` в `.env`
1355
- - Якщо не встановлено, резервний пароль – `123456`
1356
-
1357
- **Немає журналів запитів**
1358
-
1359
- - Установіть `ENABLE_REQUEST_LOGS=true` в `.env`
1360
-
1361
- **Тест з’єднання показує «Недійсне» для OpenAI-сумісних постачальників**
1362
-
1363
- - Багато постачальників не розкривають кінцеву точку `/models`
1364
- - OmniRoute v1.0.6+ включає резервну перевірку через завершення чату
1365
- - Переконайтеся, що базова URL-адреса містить суфікс `/v1`
1366
-
1367
- ### 🔐 OAuth
1368
-
1369
- <a name="oauth-em-servidor-remoto"></a>
1370
-
1371
- > **⚠️ ВАЖЛИВО для використання OmniRoute у віддаленому VPS/Docker/сервері**
1372
-
1373
- ### OAuth
1374
-
1375
- Провідники **Antigravity** і **Gemini CLI** використовують **Google OAuth 2.0** для автентифікації. Google вимагає, щоб `redirect_uri` не використовував fluxo OAuth, який **exatamente** має URI перед кадастрадами без додатка Google Cloud Console.
1376
-
1377
- Оскільки повноваження OAuth embutidas, OmniRoute не встановлено в кадастрадах **apenas para `localhost`**. Якщо ви маєте доступ до OmniRoute у віддаленому сервері (наприклад: `https://omniroute.meuservidor.com`), або Google rejeita a autenticação com:
1378
-
1379
- ```
1380
- Error 400: redirect_uri_mismatch
1381
- ```
1382
-
1383
- ### Рішення: налаштуйте власні облікові записи OAuth
1384
-
1385
- Потрібно точно написати **Ідентифікатор клієнта OAuth 2.0** у Google Cloud Console через URI вашого сервера.
1386
-
1387
- #### Passo a passo
1388
-
1389
- **1. Доступ до Google Cloud Console**
1390
-
1391
- Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
1392
-
1393
- **2. Crie um novo OAuth 2.0 ID клієнта**
1394
-
1395
- - Натисніть **"+ Створити облікові дані"** → **"Ідентифікатор клієнта OAuth"**
1396
- - Tipo de aplicativo: **"Веб-програма"**
1397
- - Назва: escolha qualquer nome (наприклад: `OmniRoute Remote`)
1398
-
1399
- **3. Додайте як авторизовані URI перенаправлення**
1400
-
1401
- Без поля **"Авторизовані URI перенаправлення"**, додайте:
1402
-
1403
- ```
1404
- https://seu-servidor.com/callback
1405
- ```
1406
-
1407
- > Замініть `seu-servidor.com` домен або IP на свій сервер (включно з необхідним портом, наприклад: `http://45.33.32.156:20128/callback`).
1408
-
1409
- **4. Зберегти електронну копію як ідентифікацію**
1410
-
1411
- Наприклад, Google показує **Ідентифікатор клієнта** і **Секрет клієнта**.
1412
-
1413
- **5. Налаштувати як variáveis de ambiente**
1414
-
1415
- Немає `.env` (або наших варіантів середовища Docker):
1416
-
1417
- ```bash
1418
- # Para Antigravity:
1419
- ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1420
- ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1421
-
1422
- # Para Gemini CLI:
1423
- GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1424
- GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1425
- GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1426
- ```
1427
-
1428
- **6. Reinicie o OmniRoute**
1429
-
1430
- ```bash
1431
- # Se usando npm:
1432
- npm run dev
1433
-
1434
- # Se usando Docker:
1435
- docker restart omniroute
1436
- ```
1437
-
1438
- **7. Tente conectar novamente**
1439
-
1440
- Інформаційна панель → Постачальники → Антигравітація (або Gemini CLI) → OAuth
1441
-
1442
- Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a authenticação funcionará.
1443
-
1444
- ---
1445
-
1446
- ### Тимчасове вирішення проблеми (необхідне налаштування облікових записів)
1447
-
1448
- Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
1449
-
1450
- 1. OmniRoute скидає URL-адресу авторизації Google
1451
- 2. Якщо ви авторизуєтеся, перенаправлення даних Google для `localhost` (неможливо віддалено від сервера)
1452
- 3. **Скопіюйте повну URL-адресу** для переходу до вашого браузера (повідомте, що сторінка не створена)
1453
- 4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
1454
- 5. Натисніть **"Підключити"**
1455
-
1456
- > Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
1457
-
1458
- </details>
1459
-
1460
- ---
1461
-
1462
- ## 🛠️
1463
-
1464
- - **Серед виконання**: Node.js 18–22 LTS (⚠️ Node.js 24+ **не підтримується** — рідні двійкові файли `better-sqlite3` несумісні)
1465
- - **Мова**: TypeScript 5.9 — **100% TypeScript** для `src/` та `open-sse/` (версія 1.0.6)
1466
- - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
1467
- - **База даних**: LowDB (JSON) + SQLite (стан домену + журнали проксі)
1468
- - **Потокове передавання**: події, надіслані сервером (SSE)
1469
- - **Auth**: OAuth 2.0 (PKCE) + JWT + ключі API
1470
- - **Тестування**: програма для тестування Node.js (368+ модульних тестів)
1471
- - **CI/CD**: дії GitHub (автоматична публікація npm + Docker Hub після випуску)
1472
- - **Веб-сайт**: [omniroute.online](https://omniroute.online)
1473
- - **Пакет**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1474
- - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1475
- - **Стійкість**: автоматичний вимикач, експоненціальна віддача, захист від громового стада, підробка TLS
1476
-
1477
- ---
1478
-
1479
- ## 📖 Документація
1480
-
1481
- | Документ | Опис |
1482
- | -------------------------------------------- | ----------------------------------------------------- |
1483
- | [User Guide](docs/USER_GUIDE.md) | Постачальники, комбо, інтеграція CLI, розгортання |
1484
- | [API Reference](docs/API_REFERENCE.md) | Усі кінцеві точки з прикладами |
1485
- | [Troubleshooting](docs/TROUBLESHOOTING.md) | Загальні проблеми та рішення |
1486
- | [Architecture](docs/ARCHITECTURE.md) | Архітектура системи та внутрішні |
1487
- | [Contributing](CONTRIBUTING.md) | Розробка установки та рекомендацій |
1488
- | [OpenAPI Spec](docs/openapi.yaml) | Специфікація OpenAPI 3.0 |
1489
- | [Security Policy](SECURITY.md) | Повідомлення про вразливості та методи безпеки |
1490
- | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Повний посібник: налаштування VM + nginx + Cloudflare |
1491
- | [Features Gallery](docs/FEATURES.md) | Огляд інформаційної панелі зі знімками екрана |
1492
-
1493
- ### 📸 Попередній перегляд інформаційної панелі
1494
-
1495
- <details>
1496
- <summary><b>Натисніть, щоб переглянути знімки панелі інструментів</b></summary>
1497
-
1498
- | Сторінка | Скріншот |
1499
- | ------------------------ | ------------------------------------------------- |
1500
- | **Постачальники** | ![Providers](docs/screenshots/01-providers.png) |
1501
- | **Комбінації** | ![Combos](docs/screenshots/02-combos.png) |
1502
- | **Аналітика** | ![Analytics](docs/screenshots/03-analytics.png) |
1503
- | **Здоров'я** | ![Health](docs/screenshots/04-health.png) |
1504
- | **Перекладач** | ![Translator](docs/screenshots/05-translator.png) |
1505
- | **Налаштування** | ![Settings](docs/screenshots/06-settings.png) |
1506
- | **Інструменти CLI** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1507
- | **Журнали використання** | ![Usage](docs/screenshots/08-usage.png) |
1508
- | **Кінцева точка** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1509
-
1510
- </details>
1511
-
1512
- ---
1513
-
1514
- ## 🗺️
1515
-
1516
- OmniRoute має **заплановано понад 210 функцій** на кількох етапах розробки. Ось ключові області:
1517
-
1518
- | Категорія | Заплановані особливості | Основні моменти |
1519
- | -------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------- |
1520
- | 🧠 **Маршрутизація та інтелект** | 25+ | Маршрутизація з найменшою затримкою, маршрутизація на основі тегів, попередній перегляд квот, вибір облікового запису P2C |
1521
- | 🔒 **Безпека та відповідність** | 20+ | Захист SSRF, маскування облікових даних, обмеження швидкості для кінцевої точки, визначення обсягу ключа керування |
1522
- | 📊 **Спостережливість** | 15+ | Інтеграція OpenTelemetry, моніторинг квот у реальному часі, відстеження витрат на модель |
1523
- | 🔄 **Інтеграція постачальників** | 20+ | Реєстр динамічної моделі, час відновлення провайдера, Codex із кількома обліковими записами, розбір квоти Copilot |
1524
- | ⚡ **Виконання** | 15+ | Подвійний рівень кешу, кеш запитів, кеш відповідей, потокове підтримання активності, пакетний API |
1525
- | 🌐 **Екосистема** | 10+ | API WebSocket, гаряче перезавантаження конфігурації, розподілене сховище конфігурацій, комерційний режим |
1526
-
1527
- ### 🔜 Незабаром
1528
-
1529
- - 🔗 **Інтеграція OpenCode** — власна підтримка постачальника для IDE кодування OpenCode AI
1530
- - 🔗 **Інтеграція TRAE** — повна підтримка інфраструктури розробки TRAE AI
1531
- - 📦 **Batch API** — асинхронна пакетна обробка масових запитів
1532
- - 🎯 **Маршрутизація на основі тегів** — Маршрутизація запитів на основі спеціальних тегів і метаданих
1533
- - 💰 **Стратегія найнижчої вартості** — автоматично вибирайте найдешевшого доступного постачальника
1534
-
1535
- > 📝 Повні специфікації функцій доступні в [link](docs/new-features/) (217 детальних специфікацій)
1536
-
1537
- ---
1538
-
1539
- ## 👥 Автори
1540
-
1541
- [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1542
-
1543
- ### Як зробити внесок
1544
-
1545
- 1. Розгалужте репозиторій
1546
- 2. Створіть свою гілку функцій (`git checkout -b feature/amazing-feature`)
1547
- 3. Зафіксуйте свої зміни (`git commit -m 'Add amazing feature'`)
1548
- 4. Push до відділення (`git push origin feature/amazing-feature`)
1549
- 5. Відкрийте Pull Request
1550
-
1551
- Див. [CONTRIBUTING.md](CONTRIBUTING.md), щоб отримати докладні вказівки.
1552
-
1553
- ### Випуск нової версії
1554
-
1555
- ```bash
1556
- # Create a release — npm publish happens automatically
1557
- gh release create v1.0.6 --title "v1.0.6" --generate-notes
1558
- ```
1559
-
1560
- ---
1561
-
1562
- ## 📊 Зоряна історія
1563
-
1564
- <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1565
- <picture>
1566
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1567
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1568
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1569
- </picture>
1570
- </a>
1571
-
1572
- ---
1573
-
1574
- ## 🙏 Подяка
1575
-
1576
- Особлива подяка **[9router](https://github.com/decolua/9router)** від **[decolua](https://github.com/decolua)** — оригінального проекту, який надихнув цей форк. OmniRoute спирається на цю неймовірну основу завдяки додатковим функціям, мультимодальним API і повному перепису TypeScript.
1577
-
1578
- Особлива подяка **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — оригінальній реалізації Go, яка надихнула цей порт JavaScript.
1579
-
1580
- ---
1581
-
1582
- ## 📄 Ліцензія
1583
-
1584
- Ліцензія Массачусетського технологічного інституту – подробиці див. [LICENSE](LICENSE).
1585
-
1586
- ---
1587
-
1588
- <div align="center">
1589
- <sub>Створено з ❤️ для розробників, які працюють у режимі 24/7</sub>
1590
- <br/>
1591
- <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1592
- </div>