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.pl.md DELETED
@@ -1,1586 +0,0 @@
1
- <div align="center">
2
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
3
-
4
- # 🚀 OmniRoute — darmowa bramka AI
5
-
6
- ### Nigdy nie przestawaj kodować. Inteligentne przekierowywanie do **BEZPŁATNYCH i tanich modeli AI** z automatycznym powrotem.
7
-
8
- _Twój uniwersalny serwer proxy API — jeden punkt końcowy, ponad 36 dostawców, zero przestojów._
9
-
10
- **Uzupełnienia czatu • Osadzania • Generowanie obrazu • Dźwięk • Zmiana rankingu • 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
- ### 🤖 Bezpłatny dostawca AI dla Twoich ulubionych agentów kodujących
27
-
28
- _Połącz dowolne narzędzie IDE lub CLI oparte na sztucznej inteligencji poprzez OmniRoute — bezpłatną bramę API dla nieograniczonego kodowania._
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>📡 Wszyscy agenci łączą się przez <code>http://localhost:20128/v1</code> lub <code>http://cloud.omniroute.online/v1</code> — jedna konfiguracja, nieograniczona liczba modeli i limit</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
- ## 🤔 Dlaczego OmniRoute?
155
-
156
- **Przestań marnować pieniądze i przekraczać limity:**
157
-
158
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Limit subskrypcji wygasa niewykorzystany co miesiąc
159
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Limity szybkości zatrzymują Cię w połowie kodowania
160
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Drogie interfejsy API (20-50 USD miesięcznie na dostawcę)
161
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Ręczne przełączanie pomiędzy dostawcami
162
-
163
- **OmniRoute rozwiązuje ten problem:**
164
-
165
- - ✅ **Maksymalizuj liczbę subskrypcji** - Śledź limit, wykorzystaj każdy bit przed zresetowaniem
166
- - ✅ **Automatyczny powrót** - Subskrypcja → Klucz API → Tani → Bezpłatny, zero przestojów
167
- - ✅ **Wiele kont** - Praca okrężna pomiędzy kontami każdego dostawcy
168
- - ✅ **Uniwersalny** - Działa z Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw i dowolnym narzędziem CLI
169
-
170
- ---
171
-
172
- ## 📧 Wsparcie
173
-
174
- > 💬 **Dołącz do naszej społeczności!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Uzyskaj pomoc, dziel się wskazówkami i bądź na bieżąco.
175
-
176
- - **Strona internetowa**: [omniroute.online](https://omniroute.online)
177
- - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
178
- - **Problemy**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
179
- - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
180
- - **Oryginalny projekt**: [9router by decolua](https://github.com/decolua/9router)
181
-
182
- ---
183
-
184
- ## 🔄 Jak to działa
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
- ## 🎯 Co rozwiązuje OmniRoute — 30 rzeczywistych problemów i przypadków użycia
214
-
215
- > **Każdy programista korzystający z narzędzi AI codziennie spotyka się z tymi problemami.** OmniRoute został stworzony, aby rozwiązać je wszystkie — od przekroczeń kosztów po blokady regionalne, od zepsutych przepływów OAuth po operacje protokołów i obserwowalność przedsiębiorstwa.
216
-
217
- <details>
218
- <summary><b>💸 1. „Płacę za kosztowną subskrypcję, ale nadal przeszkadzają mi limity”</b></summary>
219
-
220
- Programiści płacą 20–200 USD miesięcznie za Claude Pro, Codex Pro lub GitHub Copilot. Nawet płacąc, limit ma pułap – 5 godzin użytkowania, limity tygodniowe lub limity stawek za minutę. W połowie sesji kodowania dostawca przestaje odpowiadać, a programista traci płynność i produktywność.
221
-
222
- **Jak rozwiązuje to OmniRoute:**
223
-
224
- - **Inteligentny 4-poziomowy powrót** — Jeśli limit subskrypcji się wyczerpie, automatycznie przekierowuje do klucza API → Tani → Bezpłatny bez ręcznej interwencji
225
- - **Śledzenie limitów w czasie rzeczywistym** — Pokazuje zużycie tokenów w czasie rzeczywistym z resetowanym odliczaniem (5 godzin, codziennie, co tydzień)
226
- - **Obsługa wielu kont** — Wiele kont na dostawcę z funkcją automatycznego przełączania między kontami — gdy skończy się jedno, następuje przejście do następnego
227
- - **Niestandardowe kombinacje** — Konfigurowalne łańcuchy rezerwowe z 6 strategiami równoważenia (pierwsze wypełnienie, działanie okrężne, P2C, losowe, najrzadziej używane, zoptymalizowane pod względem kosztów)
228
- - **Przydziały biznesowe Kodeksu** — monitorowanie przydziałów przestrzeni roboczej firmy/zespołu bezpośrednio na pulpicie nawigacyjnym
229
-
230
- </details>
231
-
232
- <details>
233
- <summary><b>🔌 2. „Muszę korzystać z wielu dostawców, ale każdy ma inny interfejs API”</b></summary>
234
-
235
- OpenAI używa jednego formatu, Claude (Anthropic) używa innego, Gemini jeszcze innego. Jeśli programista chce przetestować modele od różnych dostawców lub korzystać z nich w trybie awaryjnym, musi ponownie skonfigurować pakiety SDK, zmienić punkty końcowe i poradzić sobie z niekompatybilnymi formatami. Dostawcy niestandardowi (FriendLI, NIM) mają niestandardowe punkty końcowe modelu.
236
-
237
- **Jak rozwiązuje to OmniRoute:**
238
-
239
- - **Ujednolicony punkt końcowy** — pojedynczy `http://localhost:20128/v1` służy jako serwer proxy dla wszystkich ponad 36 dostawców
240
- - **Tłumaczenie formatu** — Automatyczne i przejrzyste: OpenAI ↔ Claude ↔ Gemini ↔ API odpowiedzi
241
- - **Odkażanie odpowiedzi** — usuwa niestandardowe pola (`x_groq`, `usage_breakdown`, `service_tier`), które psują OpenAI SDK v1.83+
242
- - **Normalizacja ról** — Konwertuje `developer` → `system` dla dostawców innych niż OpenAI; `system` → `user` dla GLM/ERNIE
243
- - **Pomyśl o ekstrakcji tagów** — wyodrębnia bloki `<think>` z modeli takich jak DeepSeek R1 do standardowego `reasoning_content`
244
- - **Wyjście strukturalne dla Gemini** — `json_schema` → `responseMimeType`/`responseSchema` automatyczna konwersja
245
- - **`stream` domyślnie to `false`** — Zgodność ze specyfikacją OpenAI, unikanie nieoczekiwanego SSE w pakietach SDK Python/Rust/Go
246
-
247
- </details>
248
-
249
- <details>
250
- <summary><b>🌐 3. „Mój dostawca AI blokuje mój region/kraj”</b></summary>
251
-
252
- Dostawcy tacy jak OpenAI/Codex blokują dostęp z określonych regionów geograficznych. Podczas połączeń OAuth i API użytkownicy otrzymują błędy takie jak `unsupported_country_region_territory`. Jest to szczególnie frustrujące dla programistów z krajów rozwijających się.
253
-
254
- **Jak rozwiązuje to OmniRoute:**
255
-
256
- - **3-poziomowa konfiguracja serwera proxy** — Konfigurowalny serwer proxy na 3 poziomach: globalny (cały ruch), na dostawcę (tylko jeden dostawca) i na połączenie/klucz
257
- - **Oznaczone kolorami identyfikatory proxy** — Wskaźniki wizualne: 🟢 globalny serwer proxy, 🟡 serwer proxy dostawcy, 🔵 serwer proxy połączenia, zawsze pokazujący adres IP
258
- - **Wymiana tokenów OAuth przez serwer proxy** — Przepływ OAuth przechodzi również przez serwer proxy, co rozwiązuje problem `unsupported_country_region_territory`
259
- - **Test połączenia przez serwer proxy** — Testy połączenia wykorzystują skonfigurowany serwer proxy (koniec z bezpośrednim obejściem)
260
- - **Obsługa SOCKS5** — Pełna obsługa proxy SOCKS5 dla routingu wychodzącego
261
- - **Podrabianie odcisków palców TLS** — Odcisk palca TLS podobny do przeglądarki za pośrednictwem `wreq-js` w celu ominięcia wykrywania botów
262
-
263
- </details>
264
-
265
- <details>
266
- <summary><b>🆓 4. „Chcę używać AI do kodowania, ale nie mam pieniędzy”</b></summary>
267
-
268
- Nie każdy może zapłacić 20–200 USD miesięcznie za subskrypcje AI. Studenci, programiści z krajów wschodzących, hobbyści i freelancerzy potrzebują dostępu do wysokiej jakości modeli po zerowych kosztach.
269
-
270
- **Jak rozwiązuje to OmniRoute:**
271
-
272
- - **Wbudowani dostawcy bezpłatnych poziomów** — Natywne wsparcie dla w 100% darmowych dostawców: iFlow (8 nielimitowanych modeli), Qwen (3 nieograniczone modele), Kiro (Claude za darmo), Gemini CLI (180 tys./miesiąc za darmo)
273
- - **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/<model>` prefix
274
- - **Kombinacje dostępne wyłącznie bezpłatnie** — Łańcuch `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 USD/miesiąc z zerowymi przestojami
275
- - **Darmowe kredyty NVIDIA NIM** — zintegrowane 1000 darmowych kredytów
276
- - **Strategia zoptymalizowana pod względem kosztów** — Strategia routingu, która automatycznie wybiera najtańszego dostępnego dostawcę
277
-
278
- </details>
279
-
280
- <details>
281
- <summary><b>🔒 5. „Muszę chronić moją bramę AI przed nieautoryzowanym dostępem”</b></summary>
282
-
283
- Podczas udostępniania bramy AI w sieci (LAN, VPS, Docker) każda osoba posiadająca adres może wykorzystać tokeny/przydział programisty. Bez ochrony interfejsy API są podatne na niewłaściwe użycie, natychmiastowe wstrzyknięcie i nadużycia.
284
-
285
- **Jak rozwiązuje to OmniRoute:**
286
-
287
- - **Zarządzanie kluczami API** — generowanie, rotacja i ustalanie zakresu dla każdego dostawcy za pomocą dedykowanej strony `/dashboard/api-manager`
288
- - **Uprawnienia na poziomie modelu** — Ogranicz klucze API do określonych modeli (`openai/*`, wzorce symboli wieloznacznych), za pomocą przełącznika Zezwalaj na wszystko/Ogranicz
289
- - **API Endpoint Protection** — Wymagaj klucza dla `/v1/models` i blokuj określonych dostawców na liście
290
- - **Auth Guard + ochrona CSRF** — Wszystkie trasy panelu kontrolnego chronione oprogramowaniem pośredniczącym `withAuth` + tokenami CSRF
291
- - **Rate Limiter** — Ograniczanie szybkości na IP z konfigurowalnymi oknami
292
- - **Filtrowanie IP** — Lista dozwolonych/blokowanych do kontroli dostępu
293
- - **Szybka ochrona przed wstrzyknięciem** — Oczyszczanie przed złośliwymi wzorcami podpowiedzi
294
- - **Szyfrowanie AES-256-GCM** — Poświadczenia szyfrowane w stanie spoczynku
295
-
296
- </details>
297
-
298
- <details>
299
- <summary><b>🛑 6. „Mój dostawca przestał działać i straciłem płynność kodowania”</b></summary>
300
-
301
- Dostawcy sztucznej inteligencji mogą stać się niestabilni, zwracać błędy 5xx lub przekraczać tymczasowe limity szybkości. Jeśli programista jest zależny od jednego dostawcy, jego praca jest przerywana. Bez wyłączników automatycznych wielokrotne próby mogą spowodować awarię aplikacji.
302
-
303
- **Jak rozwiązuje to OmniRoute:**
304
-
305
- - **Wyłącznik automatyczny na dostawcę** — Automatyczne otwieranie/zamykanie z konfigurowalnymi progami i czasem schładzania (zamknięty/otwarty/półotwarty)
306
- - **Wykładniczy wycofywanie** — Stopniowe opóźnienia ponownych prób
307
- - **Anti-Thundering Herd** — Mutex + ochrona semaforów przed równoczesnymi burzami ponownych prób
308
- - **Łańcuchy awaryjne typu Combo** — jeśli główny dostawca zawiedzie, automatycznie przejdzie przez łańcuch bez interwencji
309
- - **Wyłącznik automatyczny** — automatycznie wyłącza niesprawnych dostawców w łańcuchu combo
310
- - **Panel stanu** — Monitorowanie czasu pracy, stany wyłączników, blokady, statystyki pamięci podręcznej, opóźnienia p50/p95/p99
311
-
312
- </details>
313
-
314
- <details>
315
- <summary><b>🔧 7. „Konfigurowanie każdego narzędzia AI jest żmudne i powtarzalne”</b></summary>
316
-
317
- Programiści używają Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Każde narzędzie wymaga innej konfiguracji (punkt końcowy API, klucz, model). Ponowna konfiguracja w przypadku zmiany dostawcy lub modelu jest stratą czasu.
318
-
319
- **Jak rozwiązuje to OmniRoute:**
320
-
321
- - ** Panel narzędzi CLI** — Dedykowana strona z konfiguracją jednym kliknięciem dla Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
322
- - **Generator konfiguracji GitHub Copilot** — Generuje `chatLanguageModels.json` dla kodu VS z zbiorczym wyborem modelu
323
- - **Kreator wprowadzenia** — konfiguracja w 4 krokach dla początkujących użytkowników
324
- - **Jeden punkt końcowy, wszystkie modele** — Skonfiguruj `http://localhost:20128/v1` raz, uzyskaj dostęp do ponad 36 dostawców
325
-
326
- </details>
327
-
328
- <details>
329
- <summary><b>🔑 8. „Zarządzanie tokenami OAuth od wielu dostawców to piekło”</b></summary>
330
-
331
- Claude Code, Codex, Gemini CLI, Copilot — wszystkie korzystają z OAuth 2.0 z wygasającymi tokenami. Programiści muszą stale przeprowadzać ponowne uwierzytelnianie, radzić sobie z `client_secret is missing`, `redirect_uri_mismatch` i awariami na zdalnych serwerach. Szczególnie problematyczny jest protokół OAuth w sieci LAN/VPS.
332
-
333
- **Jak rozwiązuje to OmniRoute:**
334
-
335
- - **Automatyczne odświeżanie tokenu** — tokeny OAuth odświeżają się w tle przed wygaśnięciem
336
- - **Wbudowany OAuth 2.0 (PKCE)** — Automatyczny przepływ dla Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
337
- - **Wielokontowy OAuth** — wiele kont na dostawcę poprzez ekstrakcję tokenów JWT/ID
338
- - **OAuth LAN/remote fix** — wykrywanie prywatnego adresu IP dla `redirect_uri` + ręczny tryb adresu URL dla serwerów zdalnych
339
- - **OAuth Behind Nginx** — wykorzystuje `window.location.origin` w celu zapewnienia zgodności z odwrotnym proxy
340
- - **Przewodnik po zdalnym OAuth** — szczegółowy przewodnik dotyczący danych uwierzytelniających Google Cloud na platformie VPS/Docker
341
-
342
- </details>
343
-
344
- <details>
345
- <summary><b>📊 9. „Nie wiem, ile i gdzie wydaję”</b></summary>
346
-
347
- Programiści korzystają z wielu płatnych dostawców, ale nie mają jednolitego widoku wydatków. Każdy dostawca ma własny pulpit rozliczeniowy, ale nie ma widoku skonsolidowanego. Nieoczekiwane koszty mogą się kumulować.
348
-
349
- **Jak rozwiązuje to OmniRoute:**
350
-
351
- - **Panel analizy kosztów** — śledzenie kosztów według tokenu i zarządzanie budżetem dla każdego dostawcy
352
- - **Limity budżetowe na poziom** — Pułap wydatków na poziom, który uruchamia automatyczne wycofanie
353
- - **Konfiguracja cen dla poszczególnych modeli** — Ceny dla poszczególnych modeli można konfigurować
354
- - **Statystyki użytkowania na klucz API** — Liczba żądań i znacznik czasu ostatniego użycia na klucz
355
- - **Panel analityczny** — karty statystyk, wykres wykorzystania modelu, tabela dostawców ze wskaźnikami powodzenia i opóźnieniami
356
-
357
- </details>
358
-
359
- <details>
360
- <summary><b>🐛 10. „Nie mogę diagnozować błędów i problemów w wywołaniach AI”</b></summary>
361
-
362
- Gdy połączenie nie powiedzie się, programista nie wie, czy był to limit szybkości, wygasły token, nieprawidłowy format czy błąd dostawcy. Fragmentowane dzienniki na różnych terminalach. Bez obserwowalności debugowanie odbywa się metodą prób i błędów.
363
-
364
- **Jak rozwiązuje to OmniRoute:**
365
-
366
- - **Ujednolicony pulpit nawigacyjny** — 4 karty: Dzienniki żądań, Dzienniki proxy, Dzienniki audytu, Konsola
367
- - **Przeglądarka logów w konsoli** — Przeglądarka działająca w stylu terminala w czasie rzeczywistym z poziomami oznaczonymi kolorami, automatycznym przewijaniem, wyszukiwaniem i filtrowaniem
368
- - **Dzienniki proxy SQLite** — trwałe dzienniki, które przetrwają ponowne uruchomienie serwera
369
- - **Plac zabaw dla tłumaczy** — 4 tryby debugowania: Plac zabaw (tłumaczenie formatu), Tester czatu (w obie strony), Stanowisko testowe (wsadowe), Monitor na żywo (w czasie rzeczywistym)
370
- - **Żądanie telemetrii** — opóźnienie p50/p95/p99 + śledzenie identyfikatora X-Request-Id
371
- - **Logowanie oparte na plikach z rotacją** — Przechwytywacz konsoli przechwytuje wszystko do dziennika JSON z rotacją na podstawie rozmiaru
372
-
373
- </details>
374
-
375
- <details>
376
- <summary><b>🏗️ 11. „Wdrażanie i konserwacja bramy jest skomplikowane”</b></summary>
377
-
378
- Instalacja, konfiguracja i utrzymanie serwera proxy AI w różnych środowiskach (lokalnym, VPS, Docker, chmura) jest pracochłonne. Problemy takie jak zakodowane na stałe ścieżki, `EACCES` w katalogach, konflikty portów i kompilacje międzyplatformowe zwiększają tarcia.
379
-
380
- **Jak rozwiązuje to OmniRoute:**
381
-
382
- - **npm globalna instalacja** — `npm install -g omniroute && omniroute` — gotowe
383
- - **Docker Multi-platform** — natywny AMD64 + ARM64 (Apple Silicon, AWS Graviton, Raspberry Pi)
384
- - **Profile Docker Compose** — `base` (bez narzędzi CLI) i `cli` (z Claude Code, Codex, OpenClaw)
385
- - **Electron Desktop App** — Natywna aplikacja dla systemów Windows/macOS/Linux z zasobnikiem systemowym, automatycznym uruchamianiem i trybem offline
386
- - **Tryb Split-Port** — API i pulpit nawigacyjny na oddzielnych portach dla zaawansowanych scenariuszy (odwrotne proxy, sieć kontenerowa)
387
- - **Cloud Sync** — skonfiguruj synchronizację między urządzeniami za pośrednictwem Cloudflare Workers
388
- - **Kopie zapasowe DB** — Automatyczne tworzenie kopii zapasowych, przywracanie, eksportowanie i importowanie wszystkich ustawień
389
-
390
- </details>
391
-
392
- <details>
393
- <summary><b>🌍 12. „Interfejs jest wyłącznie w języku angielskim, a mój zespół nie mówi po angielsku”</b></summary>
394
-
395
- Zespoły w krajach nieanglojęzycznych, szczególnie w Ameryce Łacińskiej, Azji i Europie, mają trudności z interfejsami dostępnymi wyłącznie w języku angielskim. Bariery językowe ograniczają wdrażanie i zwiększają liczbę błędów konfiguracyjnych.
396
-
397
- **Jak rozwiązuje to OmniRoute:**
398
-
399
- - ** Panel i18n — 30 języków** — Przetłumaczono ponad 500 klawiszy, w tym arabski, bułgarski, duński, niemiecki, hiszpański, fiński, francuski, hebrajski, hindi, węgierski, indonezyjski, włoski, japoński, koreański, malajski, holenderski, norweski, polski, portugalski (PT/BR), rumuński, rosyjski, słowacki, szwedzki, tajski, ukraiński, wietnamski, chiński, filipiński, angielski
400
- - **Obsługa RTL** — obsługa tekstu od prawej do lewej w języku arabskim i hebrajskim
401
- - **Wielojęzyczne pliki README** — 30 kompletnych tłumaczeń dokumentacji
402
- - **Wybór języka** — Ikona kuli ziemskiej w nagłówku umożliwiająca przełączanie w czasie rzeczywistym
403
-
404
- </details>
405
-
406
- <details>
407
- <summary><b>🔄 13. „Potrzebuję czegoś więcej niż czatu — potrzebuję osadzania, obrazów i dźwięku”</b></summary>
408
-
409
- Sztuczna inteligencja to nie tylko ukończenie czatu. Twórcy muszą generować obrazy, transkrybować dźwięk, tworzyć osadzania dla RAG, zmieniać rangę dokumentów i moderować treści. Każdy interfejs API ma inny punkt końcowy i format.
410
-
411
- **Jak rozwiązuje to OmniRoute:**
412
-
413
- - **Osadzania** — `/v1/embeddings` z 6 dostawcami i ponad 9 modelami
414
- - **Generowanie obrazu** — `/v1/images/generations` z 10 dostawcami i ponad 20 modelami (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
415
- - **Tekst na wideo** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) i SD WebUI
416
- - **Tekst na muzykę** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
417
- - **Transkrypcja audio** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
418
- - **Zamiana tekstu na mowę** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + obecni dostawcy
419
- - **Moderacje** — `/v1/moderations` — Sprawdzanie bezpieczeństwa treści
420
- - **Reranking** — `/v1/rerank` — Zmiana rankingu trafności dokumentu
421
- - **Responses API** — Pełna obsługa `/v1/responses` dla Codexu
422
-
423
- </details>
424
-
425
- <details>
426
- <summary><b>🧪 14. „Nie mam możliwości przetestowania i porównania jakości pomiędzy modelami”</b></summary>
427
-
428
- Programiści chcą wiedzieć, który model jest najlepszy dla ich przypadku użycia — kodu, tłumaczenia, rozumowania — ale ręczne porównywanie jest powolne. Nie istnieją żadne zintegrowane narzędzia eval.
429
-
430
- **Jak rozwiązuje to OmniRoute:**
431
-
432
- - **Oceny LLM** — Testowanie złotego zestawu z 10 fabrycznie załadowanymi skrzynkami obejmującymi pozdrowienia, matematykę, geografię, generowanie kodu, zgodność z JSON, tłumaczenie, przeceny, odmowy ze względów bezpieczeństwa
433
- - **4 strategie dopasowania** — `exact`, `contains`, `regex`, `custom` (funkcja JS)
434
- - **Stolik testowy dla tłumaczy** — Testowanie wsadowe z wieloma danymi wejściowymi i oczekiwanymi wynikami, porównanie różnych dostawców
435
- - **Tester czatu** — Pełna podróż w obie strony z renderowaniem odpowiedzi wizualnych
436
- - **Live Monitor** — Strumień w czasie rzeczywistym wszystkich żądań przepływających przez serwer proxy
437
-
438
- </details>
439
-
440
- <details>
441
- <summary><b>📈 15. „Muszę skalować bez utraty wydajności”</b></summary>
442
-
443
- W miarę wzrostu liczby żądań bez buforowania tych samych pytań generowane są podwójne koszty. Bez idempotencji zduplikowane żądania przetwarzania odpadów. Należy przestrzegać limitów stawek dla poszczególnych dostawców.
444
-
445
- **Jak rozwiązuje to OmniRoute:**
446
-
447
- - **Semantyczna pamięć podręczna** — Dwuwarstwowa pamięć podręczna (podpis + semantyka) zmniejsza koszty i opóźnienia
448
- - **Request Idempotency** — okno deduplikacji 5 s dla identycznych żądań
449
- - **Wykrywanie limitów szybkości** — RPM na dostawcę, minimalna przerwa i maksymalne jednoczesne śledzenie
450
- - **Edytowalne limity szybkości** — Konfigurowalne ustawienia domyślne w Ustawieniach → Odporność z trwałością
451
- - **API Key Validation Cache** — 3-warstwowa pamięć podręczna zapewniająca wydajność produkcyjną
452
- - **Panel kontrolny stanu z telemetrią** — opóźnienia p50/p95/p99, statystyki pamięci podręcznej, czas pracy
453
-
454
- </details>
455
-
456
- <details>
457
- <summary><b>🤖 16. „Chcę kontrolować zachowanie modelu globalnie”</b></summary>
458
-
459
- Deweloperzy, którzy chcą wszystkich odpowiedzi w określonym języku, w określonym tonie lub chcą ograniczyć tokeny rozumowania. Konfigurowanie tego w każdym narzędziu/żądaniu jest niepraktyczne.
460
-
461
- **Jak rozwiązuje to OmniRoute:**
462
-
463
- - **Wstrzykiwanie monitu systemowego** — monit globalny stosowany do wszystkich żądań
464
- - **Przemyślana walidacja budżetu** — Kontrola alokacji tokenów rozumowania na każde żądanie (przejściowe, automatyczne, niestandardowe, adaptacyjne)
465
- - **6 Strategii routingu** — Globalne strategie określające sposób dystrybucji żądań
466
- - **Wildcard Router** — wzorce `provider/*` są przesyłane dynamicznie do dowolnego dostawcy
467
- - **Przełączanie kombinacji włącz/wyłącz** — przełączaj kombinacje bezpośrednio z pulpitu nawigacyjnego
468
- - **Przełączanie dostawcy** — Włącz/wyłącz wszystkie połączenia dla dostawcy jednym kliknięciem
469
- - **Zablokowani dostawcy** — Wyklucz określonych dostawców z listy `/v1/models`
470
-
471
- </details>
472
-
473
- <details>
474
- <summary><b>🧰 17. „Potrzebuję narzędzi MCP jako produktów najwyższej klasy”</b></summary>
475
-
476
- Wiele bram AI ujawnia MCP jedynie jako ukryty szczegół implementacji. Zespoły potrzebują widocznej, zarządzalnej warstwy operacyjnej.
477
-
478
- **Jak rozwiązuje to OmniRoute:**
479
-
480
- - MCP pojawia się w panelu nawigacji na desce rozdzielczej i w zakładce protokołu punktu końcowego
481
- - Dedykowana strona zarządzania MCP z procesem, narzędziami, zakresami i audytem
482
- - Wbudowany szybki start dla `omniroute --mcp` i dołączania klientów
483
-
484
- </details>
485
-
486
- <details>
487
- <summary><b>🧠 18. „Potrzebuję orkiestracji A2A ze ścieżkami zadań synchronizacji i strumieniowania”</b></summary>
488
-
489
- Przepływy pracy agentów wymagają zarówno bezpośrednich odpowiedzi, jak i długotrwałego wykonywania strumieniowego z kontrolą cyklu życia.
490
-
491
- **Jak rozwiązuje to OmniRoute:**
492
-
493
- - Punkt końcowy A2A JSON-RPC (`POST /a2a`) z `message/send` i `message/stream`
494
- - Przesyłanie strumieniowe SSE z propagacją stanu terminala
495
- — Interfejsy API cyklu życia zadań dla `tasks/get` i `tasks/cancel`
496
-
497
- </details>
498
-
499
- <details>
500
- <summary><b>🛰️ 19. „Potrzebuję prawdziwego stanu procesu MCP, a nie zgadniętego statusu”</b></summary>
501
-
502
- Zespoły operacyjne muszą wiedzieć, czy MCP rzeczywiście żyje, a nie tylko, czy można uzyskać dostęp do interfejsu API.
503
-
504
- **Jak rozwiązuje to OmniRoute:**
505
-
506
- - Plik pulsu środowiska wykonawczego z PID, znacznikami czasu, transportem, liczbą narzędzi i trybem zakresu
507
- - API statusu MCP łączące puls + ostatnią aktywność
508
- - Karty stanu interfejsu użytkownika dotyczące świeżości procesów/czasu pracy/bicia serca
509
-
510
- </details>
511
-
512
- <details>
513
- <summary><b>📋 20. „Potrzebuję wykonania narzędzia MCP z możliwością audytu”</b></summary>
514
-
515
- Gdy narzędzia modyfikują konfigurację lub uruchamiają działania operacyjne, zespoły potrzebują identyfikowalności kryminalistycznej.
516
-
517
- **Jak rozwiązuje to OmniRoute:**
518
-
519
- - Wspierane przez SQLite rejestrowanie audytu dla wywołań narzędzi MCP
520
- - Filtruje według narzędzia, sukcesu/porażki, klucza API i paginacji
521
- - Tabela audytu pulpitu nawigacyjnego + punkty końcowe statystyk dla automatyzacji
522
-
523
- </details>
524
-
525
- <details>
526
- <summary><b>🔐 21. „Potrzebuję uprawnień MCP o określonym zakresie na integrację”</b></summary>
527
-
528
- Różni klienci powinni mieć najniższy dostęp do kategorii narzędzi.
529
-
530
- **Jak rozwiązuje to OmniRoute:**
531
-
532
- - 9 szczegółowych zakresów MCP zapewniających kontrolowany dostęp do narzędzi
533
- - Egzekwowanie zakresu i widoczność w interfejsie zarządzania MCP
534
- - Bezpieczna domyślna pozycja dla narzędzi operacyjnych
535
-
536
- </details>
537
-
538
- <details>
539
- <summary><b>⚙️ 22. „Potrzebuję kontroli operacyjnej bez ponownego wdrażania”</b></summary>
540
-
541
- Zespoły potrzebują szybkich zmian w czasie działania podczas incydentów lub zdarzeń kosztowych.
542
-
543
- **Jak rozwiązuje to OmniRoute:**
544
-
545
- - Aktywacja kombinacji przełączników bezpośrednio z pulpitu nawigacyjnego MCP
546
- - Zastosuj profile odporności ze wstępnie zdefiniowanych pakietów zasad
547
- - Zresetuj stan wyłącznika automatycznego z tego samego panelu operacyjnego
548
-
549
- </details>
550
-
551
- <details>
552
- <summary><b>🔄 23. „Potrzebuję widoczności i anulowania cyklu życia zadania A2A na żywo”</b></summary>
553
-
554
- Bez widoczności cyklu życia zdarzenia związane z zadaniami stają się trudne do segregacji.
555
-
556
- **Jak rozwiązuje to OmniRoute:**
557
-
558
- - Lista zadań/filtrowanie według stanu/umiejętności z paginacją
559
- - Szczegółowa analiza metadanych zadań, zdarzeń i artefaktów
560
- - Punkt końcowy anulowania zadania i akcja interfejsu użytkownika z potwierdzeniem
561
-
562
- </details>
563
-
564
- <details>
565
- <summary><b>🌊 24. „Potrzebuję metryk aktywnego strumienia dla obciążenia A2A”</b></summary>
566
-
567
- Przepływy pracy związane z przesyłaniem strumieniowym wymagają operacyjnego wglądu w współbieżność i połączenia na żywo.
568
-
569
- **Jak rozwiązuje to OmniRoute:**
570
-
571
- - Aktywne liczniki strumieni zintegrowane ze statusem A2A
572
- - Znacznik czasu ostatniego zadania i liczba stanów
573
- - Karty pulpitu A2A do monitorowania operacji w czasie rzeczywistym
574
-
575
- </details>
576
-
577
- <details>
578
- <summary><b>🪪 25. „Potrzebuję standardowego wyszukiwania agentów dla klientów”</b></summary>
579
-
580
- Zewnętrzni klienci i koordynatorzy potrzebują metadanych do odczytu maszynowego na potrzeby wdrożenia.
581
-
582
- **Jak rozwiązuje to OmniRoute:**
583
-
584
- - Karta agenta ujawniona pod adresem `/.well-known/agent.json`
585
- - Możliwości i umiejętności pokazane w interfejsie zarządzania
586
- - Interfejs API stanu A2A zawiera metadane wykrywania do automatyzacji
587
-
588
- </details>
589
-
590
- <details>
591
- <summary><b>🧭 26. „Potrzebuję możliwości wykrycia protokołu w UX produktu”</b></summary>
592
-
593
- Jeśli użytkownicy nie mogą odkryć powierzchni protokołu, spada jakość przyjęcia i wsparcia.
594
-
595
- **Jak rozwiązuje to OmniRoute:**
596
-
597
- - Wpisy na pasku bocznym dla MCP i A2A
598
- - Strona punktu końcowego, zakładka Protokoły z szybkim startem i statusem
599
- - Linki z przeglądu do dedykowanych pulpitów zarządzania
600
-
601
- </details>
602
-
603
- <details>
604
- <summary><b>🧪 27. „Potrzebuję kompleksowej weryfikacji protokołu z prawdziwymi klientami”</b></summary>
605
-
606
- Testy próbne nie wystarczą do sprawdzenia zgodności protokołu przed wydaniem.
607
-
608
- **Jak rozwiązuje to OmniRoute:**
609
-
610
- - Pakiet E2E, który uruchamia aplikację i wykorzystuje prawdziwy transport klienta MCP SDK
611
- - Testy klienta A2A pod kątem wykrywania, wysyłania, przesyłania strumieniowego, pobierania i anulowania przepływów
612
- - Sprawdzaj twierdzenia względem interfejsów API audytu MCP i zadań A2A
613
-
614
- </details>
615
-
616
- <details>
617
- <summary><b>📡 28. „Potrzebuję ujednoliconej obserwowalności na wszystkich interfejsach”</b></summary>
618
-
619
- Podział obserwowalności według protokołu tworzy martwe punkty i wydłuża MTTR.
620
-
621
- **Jak rozwiązuje to OmniRoute:**
622
-
623
- - Ujednolicone dashboardy/dzienniki/analizy w jednym produkcie
624
- - Stan + audyt + telemetria żądań w warstwach OpenAI, MCP i A2A
625
- - Operacyjne interfejsy API dla statusu i automatyzacji
626
-
627
- </details>
628
-
629
- <details>
630
- <summary><b>💼 29. „Potrzebuję jednego środowiska wykonawczego dla serwera proxy + narzędzi + orkiestracji agenta”</b></summary>
631
-
632
- Uruchamianie wielu oddzielnych usług zwiększa koszty operacyjne i tryby awarii.
633
-
634
- **Jak rozwiązuje to OmniRoute:**
635
-
636
- - Serwer proxy zgodny z OpenAI, serwer MCP i serwer A2A w jednym stosie
637
- - Wspólne uwierzytelnianie, odporność, magazyn danych i obserwowalność
638
- - Spójny model polityki na wszystkich płaszczyznach interakcji
639
-
640
- </details>
641
-
642
- <details>
643
- <summary><b>🚀 30. „Muszę dostarczać agentowe przepływy pracy bez konieczności rozrzucania kodu kleju”</b></summary>
644
-
645
- Zespoły tracą prędkość podczas łączenia wielu usług i skryptów ad hoc.
646
-
647
- **Jak rozwiązuje to OmniRoute:**
648
-
649
- - Ujednolicona strategia dotycząca punktów końcowych dla klientów i agentów
650
- - Wbudowane interfejsy zarządzania protokołami i ścieżki sprawdzania dymu
651
- - Podstawy gotowe do produkcji (bezpieczeństwo, logowanie, odporność, kopie zapasowe)
652
-
653
- </details>
654
-
655
- ### Przykładowe podręczniki (zintegrowane przypadki użycia)
656
-
657
- **Poradnik A: maksymalizuj płatną subskrypcję + tanią kopię zapasową**
658
-
659
- ```txt
660
- Combo: "maximize-claude"
661
- 1. cc/claude-opus-4-6
662
- 2. glm/glm-4.7
663
- 3. if/kimi-k2-thinking
664
-
665
- Monthly cost: $20 + small backup spend
666
- Outcome: higher quality, near-zero interruption
667
- ```
668
-
669
- **Poradnik B: stos kodowania o zerowym koszcie**
670
-
671
- ```txt
672
- Combo: "free-forever"
673
- 1. gc/gemini-3-flash
674
- 2. if/kimi-k2-thinking
675
- 3. qw/qwen3-coder-plus
676
-
677
- Monthly cost: $0
678
- Outcome: stable free coding workflow
679
- ```
680
-
681
- **Poradnik C: łańcuch awaryjny działający 24 godziny na dobę, 7 dni w tygodniu**
682
-
683
- ```txt
684
- Combo: "always-on"
685
- 1. cc/claude-opus-4-6
686
- 2. cx/gpt-5.2-codex
687
- 3. glm/glm-4.7
688
- 4. minimax/MiniMax-M2.1
689
- 5. if/kimi-k2-thinking
690
-
691
- Outcome: deep fallback depth for deadline-critical workloads
692
- ```
693
-
694
- **Poradnik D: Operacje agenta z MCP + A2A**
695
-
696
- ```txt
697
- 1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
698
- 2) Run A2A tasks via `message/send` and `message/stream`
699
- 3) Observe via /dashboard/mcp and /dashboard/a2a
700
- 4) Control incidents with resilience profile + task cancellation
701
- ```
702
-
703
- ---
704
-
705
- ## ⚡ Szybki start
706
-
707
- **1. Zainstaluj globalnie:**
708
-
709
- ```bash
710
- npm install -g omniroute
711
- omniroute
712
- ```
713
-
714
- 🎉 Panel otwiera się o `http://localhost:20128`
715
-
716
- | Polecenie | Opis |
717
- | ----------------------- | --------------------------------------- |
718
- | `omniroute` | Uruchom serwer (domyślny port 20128) |
719
- | `omniroute --port 3000` | Użyj niestandardowego portu |
720
- | `omniroute --no-open` | Nie otwieraj automatycznie przeglądarki |
721
- | `omniroute --help` | Pokaż pomoc |
722
-
723
- **2. Połącz się z DARMOWYM dostawcą:**
724
-
725
- Panel kontrolny → Dostawcy → Połącz **Kod Claude** lub **Antygrawitacja** → Logowanie OAuth → Gotowe!
726
-
727
- **3. Użyj w swoim narzędziu CLI:**
728
-
729
- ```
730
- Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
731
- Endpoint: http://localhost:20128/v1
732
- API Key: [copy from dashboard]
733
- Model: if/kimi-k2-thinking
734
- ```
735
-
736
- **To wszystko!** Zacznij kodować za pomocą DARMOWYCH modeli AI.
737
-
738
- **Alternatywa — uruchamiana ze źródła:**
739
-
740
- ```bash
741
- cp .env.example .env
742
- npm install
743
- PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
744
- ```
745
-
746
- ---
747
-
748
- ## 🐳 Doker
749
-
750
- OmniRoute jest dostępny jako publiczny obraz Dockera na [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
751
-
752
- **Szybki bieg:**
753
-
754
- ```bash
755
- docker run -d \
756
- --name omniroute \
757
- --restart unless-stopped \
758
- -p 20128:20128 \
759
- -v omniroute-data:/app/data \
760
- diegosouzapw/omniroute:latest
761
- ```
762
-
763
- **Z plikiem środowiska:**
764
-
765
- ```bash
766
- # Copy and edit .env first
767
- cp .env.example .env
768
-
769
- docker run -d \
770
- --name omniroute \
771
- --restart unless-stopped \
772
- --env-file .env \
773
- -p 20128:20128 \
774
- -v omniroute-data:/app/data \
775
- diegosouzapw/omniroute:latest
776
- ```
777
-
778
- **Korzystanie z funkcji Docker Compose:**
779
-
780
- ```bash
781
- # Base profile (no CLI tools)
782
- docker compose --profile base up -d
783
-
784
- # CLI profile (Claude Code, Codex, OpenClaw built-in)
785
- docker compose --profile cli up -d
786
- ```
787
-
788
- | Obraz | Oznacz | Rozmiar | Opis |
789
- | ------------------------ | -------- | ------- | ------------------------- |
790
- | `diegosouzapw/omniroute` | `latest` | ~250 MB | Najnowsza stabilna wersja |
791
- | `diegosouzapw/omniroute` | `1.0.3` | ~250 MB | Aktualna wersja |
792
-
793
- ---
794
-
795
- ---
796
-
797
- ## 🖥️
798
-
799
- > 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
800
-
801
- - 🖥️ **Native Window** — Dedicated app window with system tray integration
802
- - 🔄 **Auto-Start** — Launch OmniRoute on system login
803
- - 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
804
- - ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
805
- - 🌐 **Offline Mode** — Works fully offline with bundled server
806
-
807
- ```bash
808
- npm run electron:dev # Development mode
809
- npm run electron:build # Current platform
810
- npm run electron:build:win # Windows (.exe)
811
- npm run electron:build:mac # macOS (.dmg)
812
- npm run electron:build:linux # Linux (.AppImage)
813
- ```
814
-
815
- 📖 Full documentation: [`electron/README.md`](electron/README.md)
816
-
817
- ---
818
-
819
- ## 💰 Ceny w skrócie
820
-
821
- | Poziom | Dostawca | Koszt | Reset przydziału | Najlepsze dla |
822
- | ------------------ | ------------------- | ----------------------------- | ----------------------------- | -------------------------------- |
823
- | **💳 SUBSKRYPCJA** | Claude Code (Pro) | 20 USD/mies. | 5h + tygodniowo | Już subskrybujesz |
824
- | | Kodeks (Plus/Pro) | 20-200 $/mies. | 5h + tygodniowo | Użytkownicy OpenAI |
825
- | | Bliźnięta CLI | **BEZPŁATNE** | 180 tys./mies. + 1 tys./dzień | Wszyscy! |
826
- | | Drugi pilot GitHuba | 10–19 USD/mies. | Miesięczne | Użytkownicy GitHuba |
827
- | **🔑 KLUCZ API** | NVIDIA NIM | **BEZPŁATNE** (1000 kredytów) | Jednorazowe | Bezpłatne testowanie poziomów |
828
- | | DeepSeek | Płatność za użycie | Brak | Najlepsza cena/jakość |
829
- | | Groq | Poziom bezpłatny + płatny | Stawka ograniczona | Ultraszybkie wnioskowanie |
830
- | | xAI (Grok) | Płatność za użycie | Brak | Modele Groka |
831
- | | Mistral | Poziom bezpłatny + płatny | Stawka ograniczona | Europejska sztuczna inteligencja |
832
- | | OtwórzRouter | Płatność za użycie | Brak | Ponad 100 modeli |
833
- | **💰 TANIO** | GLM-4.7 | 0,6 USD/1 mln | Codziennie 10:00 | Kopia zapasowa budżetu |
834
- | | MiniMax M2.1 | 0,2 USD/1 mln | 5-godzinne toczenie | Najtańsza opcja |
835
- | | Kimi K2 | 9 USD miesięcznie | 10 mln tokenów/mies. | Przewidywalny koszt |
836
- | **🆓 DARMOWE** | iFlow | 0 dolarów | Nieograniczony | 8 modeli za darmo |
837
- | | Qwen | 0 dolarów | Nieograniczony | 3 modele za darmo |
838
- | | Kiro | 0 dolarów | Nieograniczony | Claude wolny |
839
-
840
- **💡 Wskazówka dla profesjonalistów:** Zacznij od zestawu Gemini CLI (180 tys. za darmo/miesiąc) + iFlow (bez ograniczeń za darmo) = koszt 0 USD!
841
-
842
- ---
843
-
844
- ## 💡 Kluczowe funkcje
845
-
846
- ### 🧠 Routing i inteligencja rdzenia
847
-
848
- | Funkcja | Co to robi |
849
- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
850
- | 🎯 **Inteligentny 4-poziomowy powrót** | Auto-trasa: Subskrypcja → Klucz API → Tanie → Bezpłatne |
851
- | 📊 **Śledzenie limitów w czasie rzeczywistym** | Liczba tokenów na żywo + odliczanie resetowania dla każdego dostawcy |
852
- | 🔄 **Tłumaczenie formatu** | OpenAI ↔ Claude ↔ Bliźnięta ↔ Kursor ↔ Kiro bezproblemowo + oczyszczanie odpowiedzi |
853
- | 👥 **Obsługa wielu kont** | Wiele kont na dostawcę z inteligentnym wyborem |
854
- | 🔄 **Automatyczne odświeżanie tokena** | Tokeny OAuth odświeżają się automatycznie przy ponownej próbie |
855
- | 🎨 **Niestandardowe kombinacje** | 6 strategii: najpierw wypełnij, okrężnie, p2c, losowa, najrzadziej używana, zoptymalizowana pod względem kosztów |
856
- | 🧩 **Modele niestandardowe** | Dodaj dowolny identyfikator modelu do dowolnego dostawcy |
857
- | 🌐 **Router z dziką kartą** | Dynamicznie kieruj `provider/*` wzorce do dowolnego dostawcy |
858
- | 🧠 **Myślący budżet** | Tryby przekazywania, automatyczne, niestandardowe i adaptacyjne dla modeli wnioskowania |
859
- | 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
860
- | ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
861
- | 💬 **Wstrzyknięcie monitu systemowego** | Globalny monit systemowy stosowany do wszystkich żądań |
862
- | 📄 **API odpowiedzi** | Pełna obsługa OpenAI Responses API (`/v1/responses`) dla Codexu |
863
-
864
- ### 🎵 Wielomodalne interfejsy API
865
-
866
- | Funkcja | Co to robi |
867
- | ----------------------------- | ------------------------------------------------------ |
868
- | 🖼️ **Generowanie obrazu** | `/v1/images/generations` — 4 dostawców, ponad 9 modeli |
869
- | 📐 **Osadzenia** | `/v1/embeddings` — 6 dostawców, ponad 9 modeli |
870
- | 🎤 **Transkrypcja audio** | `/v1/audio/transcriptions` — Kompatybilny z szeptem |
871
- | 🔊 **Zamiana tekstu na mowę** | `/v1/audio/speech` — Synteza dźwięku wielu dostawców |
872
- | 🛡️ **Moderacje** | `/v1/moderations` — Kontrola bezpieczeństwa treści |
873
- | 🔀 **Ponowna pozycja** | `/v1/rerank` — Zmiana rankingu trafności dokumentu |
874
-
875
- ### 🛡️ Odporność i bezpieczeństwo
876
-
877
- | Funkcja | Co to robi |
878
- | --------------------------------------------- | ------------------------------------------------------------------------------------------- |
879
- | 🔌 **Wyłącznik** | Automatyczne otwieranie/zamykanie dla każdego dostawcy z konfigurowalnymi progami |
880
- | 🛡️ **Stado Przeciw Gromom** | Mutex + limit szybkości semaforów dla dostawców kluczy API |
881
- | 🧠 **Pamięć podręczna semantyczna** | Dwuwarstwowa pamięć podręczna (podpis + semantyka) zmniejsza koszty i opóźnienia |
882
- | ⚡ **Poproś o idempotencję** | Okno deduplikacji 5s dla zduplikowanych żądań |
883
- | 🔒 **Podrabianie odcisków palców TLS** | Pomiń wykrywanie botów opartych na TLS poprzez wreq-js |
884
- | 🌐 **Filtrowanie IP** | Lista dozwolonych/blokowanych dla kontroli dostępu API |
885
- | 📊 **Edytowalne limity stawek** | Konfigurowalne obroty, minimalna przerwa i maksymalna równowaga na poziomie systemu |
886
- | 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
887
- | 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
888
- | 🛡 **Ochrona punktu końcowego API** | Bramkowanie uwierzytelniania + blokowanie dostawcy dla punktu końcowego `/models` |
889
- | 🔒 **Widoczność proxy** | Oznaczone kolorami plakietki: 🟢 globalny, 🟡 dostawca, 🔵 na połączenie z wyświetlaczem IP |
890
- | 🌐 **3-poziomowa konfiguracja serwera proxy** | Skonfiguruj serwery proxy na poziomie globalnym, dla dostawcy lub dla połączenia |
891
-
892
- ### 📊 Obserwacja i analityka
893
-
894
- | Funkcja | Co to robi |
895
- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
896
- | 📝 **Poproś o zalogowanie** | Tryb debugowania z pełnymi dziennikami żądań/odpowiedzi |
897
- | 💾 **Dzienniki proxy SQLite** | Trwałe dzienniki proxy przetrwają ponowne uruchomienie serwera |
898
- | 📊 **Panel analityczny** | Oparte na Recharts: karty statystyk, wykres wykorzystania modelu, tabela dostawców |
899
- | 📈 **Śledzenie postępów** | Zapisz się na wydarzenia postępu SSE dla transmisji strumieniowej |
900
- | 🧪 **Oceny LLM** | Testowanie złotego seta z 4 strategiami meczowymi |
901
- | 🔍 **Poproś o telemetrię** | Agregacja opóźnień p50/p95/p99 + śledzenie X-Request-Id |
902
- | 📋 **Panel logów** | Ujednolicona strona z czterema zakładkami: Dzienniki żądań, Dzienniki proxy, Dzienniki audytu, Konsola |
903
- | 🖥️ **Przeglądarka logów konsoli** | Przeglądarka przypominająca terminal w czasie rzeczywistym z filtrem poziomów, wyszukiwaniem i automatycznym przewijaniem |
904
- | 📑 **Rejestrowanie oparte na plikach** | Przechwytywacz konsoli przechwytuje wszystkie dane wyjściowe do pliku dziennika JSON z rotacją |
905
- | 🏥 **Panel zdrowia** | Czas pracy systemu, stany wyłączników, blokady, statystyki pamięci podręcznej |
906
- | 💰 **Śledzenie kosztów** | Zarządzanie budżetem + konfiguracja cen dla poszczególnych modeli |
907
-
908
- ### ☁️ Wdrożenie i synchronizacja
909
-
910
- | Funkcja | Co to robi |
911
- | ------------------------------------ | ------------------------------------------------------------------------------------------------------- |
912
- | 💾 **Synchronizacja z chmurą** | Synchronizuj konfigurację między urządzeniami za pośrednictwem Cloudflare Workers |
913
- | 🌐 **Wdrażaj gdziekolwiek** | Localhost, VPS, Docker, Pracownicy Cloudflare |
914
- | 🔑 **Zarządzanie kluczami API** | Generuj, obracaj i ustalaj zakres kluczy API dla każdego dostawcy |
915
- | 🧙 **Kreator wdrażania** | Konfiguracja z przewodnikiem w 4 krokach dla początkujących użytkowników |
916
- | 🔧 **Panel narzędzi CLI** | Jednym kliknięciem skonfiguruj Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
917
- | 🔄 **Kopie zapasowe DB** | Automatyczne tworzenie kopii zapasowych, przywracanie, eksportowanie i importowanie wszystkich ustawień |
918
- | 🌐 **Internacjonalizacja** | Pełny i18n z next-intl — obsługa języka angielskiego i portugalskiego (Brazylia) |
919
- | 🌍 **Wybór języka** | Ikona kuli ziemskiej w nagłówku umożliwiająca zmianę języka w czasie rzeczywistym (🇺🇸/🇧🇷) |
920
- | 📂 **Niestandardowy katalog danych** | `DATA_DIR` env var, aby zastąpić domyślną ścieżkę przechowywania `~/.omniroute` |
921
-
922
- <details>
923
- <summary><b>📖 Szczegóły funkcji</b></summary>
924
-
925
- ### 🎯 Inteligentny 4-poziomowy powrót awaryjny
926
-
927
- Twórz kombinacje z automatycznym cofaniem:
928
-
929
- ```
930
- Combo: "my-coding-stack"
931
- 1. cc/claude-opus-4-6 (your subscription)
932
- 2. nvidia/llama-3.3-70b (free NVIDIA API)
933
- 3. glm/glm-4.7 (cheap backup, $0.6/1M)
934
- 4. if/kimi-k2-thinking (free fallback)
935
-
936
- → Auto switches when quota runs out or errors occur
937
- ```
938
-
939
- ### 📊 Śledzenie limitów w czasie rzeczywistym
940
-
941
- - Zużycie tokenów na dostawcę
942
- - Zresetuj odliczanie (5-godzinne, dzienne, tygodniowe)
943
- - Szacowanie kosztów dla płatnych poziomów
944
- - Miesięczne raporty wydatków
945
-
946
- ### 🔄 Tłumaczenie formatu
947
-
948
- Płynne tłumaczenie pomiędzy formatami:
949
-
950
- - **OpenAI** ↔ **Claude** ↔ **Bliźnięta** ↔ **Odpowiedzi OpenAI**
951
- - Twoje narzędzie CLI wysyła format OpenAI → OmniRoute tłumaczy → Dostawca otrzymuje format natywny
952
- - Działa z każdym narzędziem obsługującym niestandardowe punkty końcowe OpenAI
953
- - **Oczyszczanie odpowiedzi** — Usuwa niestandardowe pola w celu zapewnienia ścisłej zgodności z OpenAI SDK
954
- - **Normalizacja ról** — `developer` → `system` dla innych niż OpenAI; `system` → `user` dla modeli GLM/ERNIE
955
- - **Pomyśl o ekstrakcji tagów** — `<think>` bloki → `reasoning_content` dla modeli myślących
956
- - **Ustrukturyzowane dane wyjściowe** — `json_schema` → Gemini `responseMimeType`/`responseSchema`
957
-
958
- ### 👥 Obsługa wielu kont
959
-
960
- - Dodaj wiele kont na dostawcę
961
- - Automatyczne routing okrężny lub oparty na priorytetach
962
- - Powrót do następnego konta, gdy jedno osiągnie limit
963
-
964
- ### 🔄 Automatyczne odświeżanie tokena
965
-
966
- - Tokeny OAuth są automatycznie odświeżane przed wygaśnięciem
967
- - Nie ma potrzeby ręcznego ponownego uwierzytelniania
968
- - Jednolite doświadczenie u wszystkich dostawców
969
-
970
- ### 🎨 Niestandardowe kombinacje
971
-
972
- - Twórz nieograniczone kombinacje modeli
973
- - 6 strategii: najpierw wypełnij, okrężnie, siła dwóch wyborów, losowa, najrzadziej używana, zoptymalizowana pod względem kosztów
974
- - Udostępniaj kombinacje na różnych urządzeniach dzięki Cloud Sync
975
-
976
- ### 🏥 Panel zdrowia
977
-
978
- - Stan systemu (czas działania, wersja, wykorzystanie pamięci)
979
- - Stany wyłączników według dostawcy (zamknięty/otwarty/półotwarty)
980
- - Stan limitu szybkości i aktywne blokady
981
- - Statystyki pamięci podręcznej podpisów
982
- - Telemetria opóźnień (p50/p95/p99) + pamięć podręczna podpowiedzi
983
- - Zresetuj stan zdrowia jednym kliknięciem
984
-
985
- ### 🔧 Plac zabaw dla tłumaczy
986
-
987
- OmniRoute zawiera potężny, wbudowany plac zabaw dla tłumaczy z **4 trybami** do debugowania, testowania i monitorowania tłumaczeń API:
988
-
989
- | Tryb | Opis |
990
- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
991
- | **💻 Plac zabaw** | Bezpośrednie tłumaczenie formatu — wklej dowolną treść żądania API i od razu zobacz, jak OmniRoute tłumaczy ją pomiędzy formatami dostawców (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Zawiera przykładowe szablony i automatyczne wykrywanie formatu. |
992
- | **💬 Tester czatu** | Wysyłaj prawdziwe prośby o czat za pośrednictwem OmniRoute i zobacz pełny przebieg: Twoje dane wejściowe, przetłumaczone żądanie, odpowiedź dostawcy i przetłumaczona odpowiedź z powrotem. Nieocenione przy sprawdzaniu routingu combo. |
993
- | **🧪 Stanowisko testowe** | Tryb testowania wsadowego — zdefiniuj wiele przypadków testowych z różnymi danymi wejściowymi i oczekiwanymi wynikami, uruchom je wszystkie na raz i porównaj wyniki u różnych dostawców i modeli. |
994
- | **📱 Monitorowanie na żywo** | Monitorowanie żądań w czasie rzeczywistym — obserwuj przychodzące żądania przepływające przez OmniRoute, obserwuj na żywo tłumaczenia formatów i natychmiast identyfikuj problemy. |
995
-
996
- **Dostęp:** Panel → Tłumacz (pasek boczny)
997
-
998
- ### 💾 Synchronizacja z chmurą
999
-
1000
- - Synchronizuj dostawców, kombinacje i ustawienia na różnych urządzeniach
1001
- - Automatyczna synchronizacja w tle
1002
- - Bezpieczne szyfrowane przechowywanie
1003
-
1004
- </details>
1005
-
1006
- ## 🧪 Oceny (Ewaluacje)
1007
-
1008
- OmniRoute zawiera wbudowaną platformę ewaluacyjną do testowania jakości odpowiedzi LLM na podstawie złotego zestawu. Uzyskaj do niego dostęp poprzez **Analytics → Evals** na pulpicie nawigacyjnym.
1009
-
1010
- ### Wbudowany złoty zestaw
1011
-
1012
- Fabrycznie załadowany „Złoty zestaw OmniRoute” zawiera 10 przypadków testowych obejmujących:
1013
-
1014
- - Pozdrowienia, matematyka, geografia, generowanie kodu
1015
- - Zgodność z formatem JSON, tłumaczenie, przecena
1016
- - Odmowa bezpieczeństwa (szkodliwa treść), liczenie, logika boolowska
1017
-
1018
- ### Strategie oceny
1019
-
1020
- | Strategia | Opis | Przykład |
1021
- | ---------- | ----------------------------------------------------------------------- | -------------------------------- |
1022
- | `exact` | Dane wyjściowe muszą dokładnie odpowiadać | `"4"` |
1023
- | `contains` | Dane wyjściowe muszą zawierać podciąg (wielkość liter nie ma znaczenia) | `"Paris"` |
1024
- | `regex` | Dane wyjściowe muszą pasować do wzorca wyrażenia regularnego | `"1.*2.*3"` |
1025
- | `custom` | Niestandardowa funkcja JS zwraca wartość prawda/fałsz | `(output) => output.length > 10` |
1026
-
1027
- ---
1028
-
1029
- ## 📖 Przewodnik konfiguracji
1030
-
1031
- <details>
1032
- <summary><b>💳 Dostawcy subskrypcji</b></summary>
1033
-
1034
- ### Kod Claude’a (Pro/Max)
1035
-
1036
- ```bash
1037
- Dashboard → Providers → Connect Claude Code
1038
- → OAuth login → Auto token refresh
1039
- → 5-hour + weekly quota tracking
1040
-
1041
- Models:
1042
- cc/claude-opus-4-6
1043
- cc/claude-sonnet-4-5-20250929
1044
- cc/claude-haiku-4-5-20251001
1045
- ```
1046
-
1047
- **Wskazówka dla profesjonalistów:** używaj Opus do skomplikowanych zadań, a Sonnet do szybkości. OmniRoute śledzi limit na model!
1048
-
1049
- ### Kodeks OpenAI (Plus/Pro)
1050
-
1051
- ```bash
1052
- Dashboard → Providers → Connect Codex
1053
- → OAuth login (port 1455)
1054
- → 5-hour + weekly reset
1055
-
1056
- Models:
1057
- cx/gpt-5.2-codex
1058
- cx/gpt-5.1-codex-max
1059
- ```
1060
-
1061
- ### Gemini CLI (DARMOWE 180 tys./miesiąc!)
1062
-
1063
- ```bash
1064
- Dashboard → Providers → Connect Gemini CLI
1065
- → Google OAuth
1066
- → 180K completions/month + 1K/day
1067
-
1068
- Models:
1069
- gc/gemini-3-flash-preview
1070
- gc/gemini-2.5-pro
1071
- ```
1072
-
1073
- **Najlepsza wartość:** Ogromny darmowy poziom! Użyj tego przed płatnymi poziomami.
1074
-
1075
- ### Drugi pilot GitHuba
1076
-
1077
- ```bash
1078
- Dashboard → Providers → Connect GitHub
1079
- → OAuth via GitHub
1080
- → Monthly reset (1st of month)
1081
-
1082
- Models:
1083
- gh/gpt-5
1084
- gh/claude-4.5-sonnet
1085
- gh/gemini-3-pro
1086
- ```
1087
-
1088
- </details>
1089
-
1090
- <details>
1091
- <summary><b>🔑 Dostawcy kluczy API</b></summary>
1092
-
1093
- ### NVIDIA NIM (DARMOWE 1000 kredytów!)
1094
-
1095
- 1. Zarejestruj się: [build.nvidia.com](https://build.nvidia.com)
1096
- 2. Uzyskaj bezpłatny klucz API (w cenie 1000 kredytów)
1097
- 3. Panel kontrolny → Dodaj dostawcę → NVIDIA NIM:
1098
- - Klucz API: `nvapi-your-key`
1099
-
1100
- **Modele:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` i ponad 50 innych
1101
-
1102
- **Wskazówka dla profesjonalistów:** API zgodne z OpenAI — działa bezproblemowo z tłumaczeniem formatu OmniRoute!
1103
-
1104
- ### DeepSeek
1105
-
1106
- 1. Zarejestruj się: [platform.deepseek.com](https://platform.deepseek.com)
1107
- 2. Zdobądź klucz API
1108
- 3. Panel kontrolny → Dodaj dostawcę → DeepSeek
1109
-
1110
- **Modele:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
1111
-
1112
- ### Groq (dostępny bezpłatny poziom!)
1113
-
1114
- 1. Zarejestruj się: [console.groq.com](https://console.groq.com)
1115
- 2. Uzyskaj klucz API (w cenie bezpłatna warstwa)
1116
- 3. Panel kontrolny → Dodaj dostawcę → Groq
1117
-
1118
- **Modele:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
1119
-
1120
- **Wskazówka dla profesjonalistów:** Ultraszybkie wnioskowanie — najlepsze do kodowania w czasie rzeczywistym!
1121
-
1122
- ### OpenRouter (ponad 100 modeli)
1123
-
1124
- 1. Zarejestruj się: [openrouter.ai](https://openrouter.ai)
1125
- 2. Zdobądź klucz API
1126
- 3. Panel kontrolny → Dodaj dostawcę → OpenRouter
1127
-
1128
- **Modele:** Uzyskaj dostęp do ponad 100 modeli wszystkich głównych dostawców za pomocą jednego klucza API.
1129
-
1130
- </details>
1131
-
1132
- <details>
1133
- <summary><b>💰 Tani dostawcy (kopia zapasowa)</b></summary>
1134
-
1135
- ### GLM-4.7 (reset dzienny, 0,6 USD/1 mln)
1136
-
1137
- 1. Zarejestruj się: [Zhipu AI](https://open.bigmodel.cn/)
1138
- 2. Uzyskaj klucz API z planu kodowania
1139
- 3. Panel → Dodaj klucz API:
1140
- - Dostawca: `glm`
1141
- - Klucz API: `your-key`
1142
-
1143
- **Użyj:** `glm/glm-4.7`
1144
-
1145
- **Wskazówka dla profesjonalistów:** Plan kodowania oferuje 3× limit przy cenie 1/7! Resetuj codziennie o 10:00.
1146
-
1147
- ### MiniMax M2.1 (reset 5 godz., 0,20 USD/1 mln)
1148
-
1149
- 1. Zarejestruj się: [MiniMax](https://www.minimax.io/)
1150
- 2. Zdobądź klucz API
1151
- 3. Panel → Dodaj klucz API
1152
-
1153
- **Użyj:** `minimax/MiniMax-M2.1`
1154
-
1155
- **Wskazówka dla profesjonalistów:** Najtańsza opcja dla długiego kontekstu (1 milion tokenów)!
1156
-
1157
- ### Kimi K2 (9 USD miesięcznie)
1158
-
1159
- 1. Subskrybuj: [Moonshot AI](https://platform.moonshot.ai/)
1160
- 2. Zdobądź klucz API
1161
- 3. Panel → Dodaj klucz API
1162
-
1163
- **Użyj:** `kimi/kimi-latest`
1164
-
1165
- **Wskazówka dla profesjonalistów:** Naprawiono 9 USD miesięcznie za 10 mln tokenów = efektywny koszt 0,90 USD/1 mln!
1166
-
1167
- </details>
1168
-
1169
- <details>
1170
- <summary><b>🆓 BEZPŁATNI dostawcy (awaryjna kopia zapasowa)</b></summary>
1171
-
1172
- ### iFlow (8 DARMOWYCH modeli)
1173
-
1174
- ```bash
1175
- Dashboard → Connect iFlow
1176
- → iFlow OAuth login
1177
- → Unlimited usage
1178
-
1179
- Models:
1180
- if/kimi-k2-thinking
1181
- if/qwen3-coder-plus
1182
- if/glm-4.7
1183
- if/minimax-m2
1184
- if/deepseek-r1
1185
- ```
1186
-
1187
- ### Qwen (3 DARMOWE modele)
1188
-
1189
- ```bash
1190
- Dashboard → Connect Qwen
1191
- → Device code authorization
1192
- → Unlimited usage
1193
-
1194
- Models:
1195
- qw/qwen3-coder-plus
1196
- qw/qwen3-coder-flash
1197
- ```
1198
-
1199
- ### Kiro (Claude ZA DARMO)
1200
-
1201
- ```bash
1202
- Dashboard → Connect Kiro
1203
- → AWS Builder ID or Google/GitHub
1204
- → Unlimited usage
1205
-
1206
- Models:
1207
- kr/claude-sonnet-4.5
1208
- kr/claude-haiku-4.5
1209
- ```
1210
-
1211
- </details>
1212
-
1213
- <details>
1214
- <summary><b>🎨 Utwórz kombinacje</b></summary>
1215
-
1216
- ### Przykład 1: Maksymalizuj subskrypcję → Tania kopia zapasowa
1217
-
1218
- ```
1219
- Dashboard → Combos → Create New
1220
-
1221
- Name: premium-coding
1222
- Models:
1223
- 1. cc/claude-opus-4-6 (Subscription primary)
1224
- 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
1225
- 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
1226
-
1227
- Use in CLI: premium-coding
1228
- ```
1229
-
1230
- ### Przykład 2: Tylko bezpłatny (zero kosztów)
1231
-
1232
- ```
1233
- Name: free-combo
1234
- Models:
1235
- 1. gc/gemini-3-flash-preview (180K free/month)
1236
- 2. if/kimi-k2-thinking (unlimited)
1237
- 3. qw/qwen3-coder-plus (unlimited)
1238
-
1239
- Cost: $0 forever!
1240
- ```
1241
-
1242
- </details>
1243
-
1244
- <details>
1245
- <summary><b>🔧 Integracja z CLI</b></summary>
1246
-
1247
- ### IDE kursora
1248
-
1249
- ```
1250
- Settings → Models → Advanced:
1251
- OpenAI API Base URL: http://localhost:20128/v1
1252
- OpenAI API Key: [from OmniRoute dashboard]
1253
- Model: cc/claude-opus-4-6
1254
- ```
1255
-
1256
- ### Kod Claude’a
1257
-
1258
- Użyj strony **Narzędzia CLI** w panelu kontrolnym, aby dokonać konfiguracji jednym kliknięciem, lub edytuj ręcznie `~/.claude/settings.json`.
1259
-
1260
- ### Interfejs wiersza polecenia Kodeksu
1261
-
1262
- ```bash
1263
- export OPENAI_BASE_URL="http://localhost:20128"
1264
- export OPENAI_API_KEY="your-omniroute-api-key"
1265
-
1266
- codex "your prompt"
1267
- ```
1268
-
1269
- ### OpenClaw
1270
-
1271
- **Opcja 1 — Panel kontrolny (zalecany):**
1272
-
1273
- ```
1274
- Dashboard → CLI Tools → OpenClaw → Select Model → Apply
1275
- ```
1276
-
1277
- **Opcja 2 — Ręcznie:** Edytuj `~/.openclaw/openclaw.json`:
1278
-
1279
- ```json
1280
- {
1281
- "models": {
1282
- "providers": {
1283
- "omniroute": {
1284
- "baseUrl": "http://127.0.0.1:20128/v1",
1285
- "apiKey": "sk_omniroute",
1286
- "api": "openai-completions"
1287
- }
1288
- }
1289
- }
1290
- }
1291
- ```
1292
-
1293
- > **Uwaga:** OpenClaw działa tylko z lokalnym OmniRoute. Użyj `127.0.0.1` zamiast `localhost`, aby uniknąć problemów z rozdzielczością IPv6.
1294
-
1295
- ### Kliknij / Kontynuuj / RooCode
1296
-
1297
- ```
1298
- Settings → API Configuration:
1299
- Provider: OpenAI Compatible
1300
- Base URL: http://localhost:20128/v1
1301
- API Key: [from OmniRoute dashboard]
1302
- Model: if/kimi-k2-thinking
1303
- ```
1304
-
1305
- </details>
1306
-
1307
- ---
1308
-
1309
- ## 🐛 Rozwiązywanie problemów
1310
-
1311
- <details>
1312
- <summary><b>Kliknij, aby rozwinąć przewodnik rozwiązywania problemów</b></summary>
1313
-
1314
- **„Model językowy nie dostarczał komunikatów”**
1315
-
1316
- - Wyczerpany limit dostawcy → Sprawdź moduł śledzenia limitów na pulpicie nawigacyjnym
1317
- - Rozwiązanie: użyj kombinacji zastępczej lub przejdź na tańszy poziom
1318
-
1319
- **Ograniczenie szybkości**
1320
-
1321
- - Limit subskrypcji wyczerpany → Powrót do GLM/MiniMax
1322
- - Dodaj kombinację: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1323
-
1324
- **Token OAuth wygasł**
1325
-
1326
- - Automatyczne odświeżanie przez OmniRoute
1327
- - Jeśli problemy nadal występują: Panel kontrolny → Dostawca → Połącz ponownie
1328
-
1329
- **Wysokie koszty**
1330
-
1331
- - Sprawdź statystyki użytkowania w Panelu → Koszty
1332
- - Zmień model podstawowy na GLM/MiniMax
1333
- - Korzystaj z bezpłatnej warstwy (Gemini CLI, iFlow) do zadań niekrytycznych
1334
-
1335
- ** Panel otwiera się na złym porcie **
1336
-
1337
- - Ustaw `PORT=20128` i `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
1338
-
1339
- **Błędy synchronizacji z chmurą**
1340
-
1341
- - Sprawdź, czy `BASE_URL` wskazuje na działającą instancję
1342
- - Sprawdź, czy `CLOUD_URL` wskazuje na oczekiwany punkt końcowy w chmurze
1343
- - Zachowaj wyrównanie wartości `NEXT_PUBLIC_*` z wartościami po stronie serwera
1344
-
1345
- **Pierwsze logowanie nie działa**
1346
-
1347
- - Sprawdź `INITIAL_PASSWORD` w `.env`
1348
- - Jeśli nieustawione, hasło zastępcze to `123456`
1349
-
1350
- **Brak dzienników żądań**
1351
-
1352
- - Ustaw `ENABLE_REQUEST_LOGS=true` w `.env`
1353
-
1354
- **Test połączenia pokazuje „Nieprawidłowy” dla dostawców kompatybilnych z OpenAI**
1355
-
1356
- - Wielu dostawców nie udostępnia punktu końcowego `/models`
1357
- - OmniRoute v1.0.6+ zawiera weryfikację awaryjną poprzez uzupełnianie czatu
1358
- - Upewnij się, że podstawowy adres URL zawiera przyrostek `/v1`
1359
-
1360
- ### 🔐 OAuth na serwerze zdalnym (zdalna konfiguracja OAuth)
1361
-
1362
- <a name="oauth-em-servidor-remoto"></a>
1363
-
1364
- > **⚠️ WAŻNE dla zwykłych usług OmniRoute w VPS/Docker/serwidor zdalny**
1365
-
1366
- #### OAuth
1367
-
1368
- Sprawdzone **Antigravity** i **Gemini CLI** używane **Google OAuth 2.0** dla autentyczności. O Google, jeśli potrzebujesz `redirect_uri`, aby nie zmieniać protokołu OAuth seja **exatamente** uma das URI pre-cadastradas no Google Cloud Console to aplicativo.
1369
-
1370
- Jako uwierzytelnienie OAuth zostało wydane przez OmniRoute w cadastradas **apenas dla `localhost`**. Możesz uzyskać dostęp do OmniRoute na serwerze zdalnym (np.: `https://omniroute.meuservidor.com`), lub Google rejeita a autenticação com:
1371
-
1372
- ```
1373
- Error 400: redirect_uri_mismatch
1374
- ```
1375
-
1376
- ### Rozwiązanie: Skonfiguruj suas próprias credenciais OAuth
1377
-
1378
- Precyzyjne żądanie **Identyfikator klienta OAuth 2.0** nie Google Cloud Console poprzez URI do tego serwera.
1379
-
1380
- #### Passo za passo
1381
-
1382
- **1. Dostęp do konsoli Google Cloud**
1383
-
1384
- Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
1385
-
1386
- **2. Wezwij nowy identyfikator klienta OAuth 2.0**
1387
-
1388
- - Kliknij **"+ Utwórz dane uwierzytelniające"** → **"Identyfikator klienta OAuth"**
1389
- - Typ aplikacji: **"Aplikacja internetowa"**
1390
- - Nazwa: escolha qualquer nom (np.: `OmniRoute Remote`)
1391
-
1392
- **3. Adicione jako autoryzowane identyfikatory URI przekierowań**
1393
-
1394
- Bez komentarza **„Autoryzowane identyfikatory URI przekierowań”**, rada:
1395
-
1396
- ```
1397
- https://seu-servidor.com/callback
1398
- ```
1399
-
1400
- > Substitua `seu-servidor.com` pelo domínio lub IP do seu servidor (w tym porta se necessário, np.: `http://45.33.32.156:20128/callback`).
1401
-
1402
- **4. Zapisz i skopiuj jako poświadczenie**
1403
-
1404
- Após criar, o Google mostrará o **Identyfikator klienta** i o **Tajemnica klienta**.
1405
-
1406
- **5. Skonfiguruj jako variáveis de ambiente**
1407
-
1408
- Nie seu `.env` (lub nas variáveis de ambiente do Docker):
1409
-
1410
- ```bash
1411
- # Para Antigravity:
1412
- ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1413
- ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1414
-
1415
- # Para Gemini CLI:
1416
- GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1417
- GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1418
- GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1419
- ```
1420
-
1421
- **6. Reinicie lub OmniRoute**
1422
-
1423
- ```bash
1424
- # Se usando npm:
1425
- npm run dev
1426
-
1427
- # Se usando Docker:
1428
- docker restart omniroute
1429
- ```
1430
-
1431
- **7. Tente conectar novamente**
1432
-
1433
- Panel kontrolny → Dostawcy → Antygrawitacja (lub Gemini CLI) → OAuth
1434
-
1435
- Agora o Google redirecionará corretamente dla `https://seu-servidor.com/callback` i autentyczna funkcja.
1436
-
1437
- ---
1438
-
1439
- ### Obejście tymczasowe (sem configurar credenciais prróprias)
1440
-
1441
- Jeśli chcesz uzyskać dostęp do **podręcznika URL**:
1442
-
1443
- 1. OmniRoute abrirá adres URL autoryzacji w Google
1444
- 2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
1445
- 3. **Skopiuj kompletny adres URL** da barra de endereço do seu przeglądarki (wiadomość que a página não carregue)
1446
- 4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
1447
- 5. Kliknij je **„Połącz”**
1448
-
1449
- > To obejście funkcji porque o kodigo de autorização na URL é válido niezależny do przekierowania ter carregado ou não.
1450
-
1451
- </details>
1452
-
1453
- ---
1454
-
1455
- ## 🛠️
1456
-
1457
- - **Środowisko wykonawcze**: Node.js 18–22 LTS (⚠️ Node.js 24+ jest **nieobsługiwany** — `better-sqlite3` natywne pliki binarne są niekompatybilne)
1458
- - **Język**: TypeScript 5.9 — **100% TypeScript** w `src/` i `open-sse/` (v1.0.6)
1459
- - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
1460
- - **Baza danych**: LowDB (JSON) + SQLite (stan domeny + logi proxy)
1461
- - **Streaming**: zdarzenia wysyłane przez serwer (SSE)
1462
- - **Auth**: OAuth 2.0 (PKCE) + JWT + klucze API
1463
- - **Testowanie**: Uruchomienie testu Node.js (ponad 368 testów jednostkowych)
1464
- - **CI/CD**: Akcje GitHub (automatyczne publikowanie npm + Docker Hub w momencie wydania)
1465
- - **Strona internetowa**: [omniroute.online](https://omniroute.online)
1466
- - **Pakiet**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1467
- - **Doker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1468
- - **Odporność**: wyłącznik automatyczny, wykładnicze wycofywanie, stado przeciwgrzmotowe, fałszowanie TLS
1469
-
1470
- ---
1471
-
1472
- ## 📖 Dokumentacja
1473
-
1474
- | Dokument | Opis |
1475
- | -------------------------------------------- | ----------------------------------------------------------- |
1476
- | [User Guide](docs/USER_GUIDE.md) | Dostawcy, kombinacje, integracja CLI, wdrożenie |
1477
- | [API Reference](docs/API_REFERENCE.md) | Wszystkie punkty końcowe z przykładami |
1478
- | [Troubleshooting](docs/TROUBLESHOOTING.md) | Typowe problemy i rozwiązania |
1479
- | [Architecture](docs/ARCHITECTURE.md) | Architektura systemu i elementy wewnętrzne |
1480
- | [Contributing](CONTRIBUTING.md) | Konfiguracja i wytyczne dotyczące programowania |
1481
- | [OpenAPI Spec](docs/openapi.yaml) | Specyfikacja OpenAPI 3.0 |
1482
- | [Security Policy](SECURITY.md) | Zgłaszanie luk w zabezpieczeniach i praktyki bezpieczeństwa |
1483
- | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Kompletny przewodnik: konfiguracja VM + nginx + Cloudflare |
1484
- | [Features Gallery](docs/FEATURES.md) | Wizualna wycieczka po panelu ze zrzutami ekranu |
1485
-
1486
- ### 📸 Podgląd panelu
1487
-
1488
- <details>
1489
- <summary><b>Kliknij, aby zobaczyć zrzuty ekranu panelu kontrolnego</b></summary>
1490
-
1491
- | Strona | Zrzut ekranu |
1492
- | ------------------------- | ------------------------------------------------- |
1493
- | **Dostawcy** | ![Providers](docs/screenshots/01-providers.png) |
1494
- | **Kombinacje** | ![Combos](docs/screenshots/02-combos.png) |
1495
- | **Analiza** | ![Analytics](docs/screenshots/03-analytics.png) |
1496
- | **Zdrowie** | ![Health](docs/screenshots/04-health.png) |
1497
- | **Tłumacz** | ![Translator](docs/screenshots/05-translator.png) |
1498
- | **Ustawienia** | ![Settings](docs/screenshots/06-settings.png) |
1499
- | **Narzędzia CLI** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1500
- | **Dzienniki użytkowania** | ![Usage](docs/screenshots/08-usage.png) |
1501
- | **Punkt końcowy** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1502
-
1503
- </details>
1504
-
1505
- ---
1506
-
1507
- ## 🗺️
1508
-
1509
- OmniRoute ma **ponad 210 funkcji zaplanowanych** w wielu fazach rozwoju. Oto kluczowe obszary:
1510
-
1511
- | Kategoria | Planowane funkcje | Najważniejsze |
1512
- | -------------------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
1513
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
1514
- | 🧠 **Routing i inteligencja** | 25+ | Routing z najmniejszym opóźnieniem, routing oparty na tagach, wstępna inspekcja przydziału, wybór konta P2C |
1515
- | 🔒 **Bezpieczeństwo i zgodność** | 20+ | Wzmocnienie SSRF, maskowanie poświadczeń, limit szybkości na punkt końcowy, zakres kluczy zarządzania |
1516
- | 📊 **Obserwowalność** | 15+ | Integracja OpenTelemetry, monitorowanie kwot w czasie rzeczywistym, śledzenie kosztów według modelu |
1517
- | 🔄 **Integracja dostawców** | 20+ | Rejestr modeli dynamicznych, czasy odnowienia dostawcy, Kodeks dla wielu kont, analiza przydziału Copilot |
1518
- | ⚡ **Wydajność** | 15+ | Podwójna warstwa pamięci podręcznej, pamięć podręczna podpowiedzi, pamięć podręczna odpowiedzi, utrzymywanie transmisji strumieniowej, wsadowe API |
1519
- | 🌐 **Ekosystem** | 10+ | WebSocket API, ładowanie konfiguracji na gorąco, rozproszony magazyn konfiguracji, tryb komercyjny |
1520
-
1521
- ### 🔜 Już wkrótce
1522
-
1523
- - 🔗 **Integracja OpenCode** — natywna obsługa dostawców dla IDE kodowania OpenCode AI
1524
- - 🔗 **Integracja z TRAE** — Pełne wsparcie dla platformy rozwojowej TRAE AI
1525
- - 📦 **Batch API** — Asynchroniczne przetwarzanie wsadowe dla żądań masowych
1526
- - 🎯 **Routing oparty na tagach** — Kieruj żądania na podstawie niestandardowych tagów i metadanych
1527
- - 💰 **Strategia najniższych kosztów** — Automatycznie wybierz najtańszego dostępnego dostawcę
1528
-
1529
- > 📝 Pełna specyfikacja funkcji dostępna w [link](docs/new-features/) (217 szczegółowych specyfikacji)
1530
-
1531
- ---
1532
-
1533
- ## 👥 Współtwórcy
1534
-
1535
- [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1536
-
1537
- ### Jak wnieść swój wkład
1538
-
1539
- 1. Forkuj repozytorium
1540
- 2. Utwórz gałąź funkcji (`git checkout -b feature/amazing-feature`)
1541
- 3. Zatwierdź zmiany (`git commit -m 'Add amazing feature'`)
1542
- 4. Wciśnij do oddziału (`git push origin feature/amazing-feature`)
1543
- 5. Otwórz żądanie ściągnięcia
1544
-
1545
- Szczegółowe wytyczne można znaleźć w [CONTRIBUTING.md](CONTRIBUTING.md).
1546
-
1547
- ### Wydanie nowej wersji
1548
-
1549
- ```bash
1550
- # Create a release — npm publish happens automatically
1551
- gh release create v1.0.6 --title "v1.0.6" --generate-notes
1552
- ```
1553
-
1554
- ---
1555
-
1556
- ## 📊 Historia gwiazd
1557
-
1558
- <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1559
- <picture>
1560
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1561
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1562
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1563
- </picture>
1564
- </a>
1565
-
1566
- ---
1567
-
1568
- ## 🙏 Podziękowania
1569
-
1570
- Specjalne podziękowania dla **[9router](https://github.com/decolua/9router)** autorstwa **[decolua](https://github.com/decolua)** — oryginalnego projektu, który zainspirował ten widelec. OmniRoute opiera się na tym niesamowitym fundamencie dzięki dodatkowym funkcjom, wielomodalnym interfejsom API i pełnemu przepisaniu TypeScriptu.
1571
-
1572
- Specjalne podziękowania dla **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — oryginalnej implementacji Go, która zainspirowała ten port JavaScript.
1573
-
1574
- ---
1575
-
1576
- ## 📄 Licencja
1577
-
1578
- Licencja MIT — szczegółowe informacje można znaleźć w [LICENSE](LICENSE).
1579
-
1580
- ---
1581
-
1582
- <div align="center">
1583
- <sub>Zbudowany z ❤️ dla programistów, którzy kodują 24 godziny na dobę, 7 dni w tygodniu</sub>
1584
- <br/>
1585
- <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1586
- </div>