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.pt.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 — O gateway de IA gratuito
5
-
6
- ### Nunca pare de codificar. Roteamento inteligente para **modelos de IA GRATUITOS e de baixo custo** com fallback automático.
7
-
8
- _Seu proxy de API universal — um endpoint, mais de 36 provedores, tempo de inatividade zero._
9
-
10
- **Conclusões de bate-papo • Incorporações • Geração de imagem • Áudio • Reclassificação • 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
- ### 🤖 Provedor de IA gratuito para seus agentes de codificação favoritos
27
-
28
- _Conecte qualquer ferramenta IDE ou CLI com tecnologia de IA por meio do OmniRoute - gateway de API gratuito para codificação ilimitada._
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>📡 Todos os agentes se conectam via <code>http://localhost:20128/v1</code> ou <code>http://cloud.omniroute.online/v1</code> — uma configuração, modelos ilimitados e cota</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
- ## 🤔 Por que OmniRoute?
155
-
156
- **Pare de desperdiçar dinheiro e atingir limites:**
157
-
158
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> A cota de assinatura expira sem ser utilizada todos os meses
159
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Os limites de taxa impedem você no meio da codificação
160
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> APIs caras (US$ 20-50/mês por provedor)
161
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Troca manual entre provedores
162
-
163
- **OmniRoute resolve isso:**
164
-
165
- - ✅ **Maximize as assinaturas** - Rastreie a cota, use cada bit antes de redefinir
166
- - ✅ **Fullback automático** - Assinatura → Chave de API → Barato → Gratuito, tempo de inatividade zero
167
- - ✅ **Múltiplas contas** - Round-robin entre contas por provedor
168
- - ✅ **Universal** - Funciona com Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, qualquer ferramenta CLI
169
-
170
- ---
171
-
172
- ## 📧 Suporte
173
-
174
- > 💬 **Junte-se à nossa comunidade!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Obtenha ajuda, compartilhe dicas e fique atualizado.
175
-
176
- - **Site**: [omniroute.online](https://omniroute.online)
177
- - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
178
- - **Problemas**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
179
- - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
180
- - **Projeto Original**: [9router by decolua](https://github.com/decolua/9router)
181
-
182
- ---
183
-
184
- ## 🔄 Como funciona
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
- ## 🎯 O que o OmniRoute resolve — 30 pontos reais de dor e casos de uso
214
-
215
- > **Todo desenvolvedor que usa ferramentas de IA enfrenta esses problemas diariamente.** O OmniRoute foi criado para resolver todos eles, desde custos excessivos até bloqueios regionais, desde fluxos quebrados de OAuth até operações de protocolo e observabilidade empresarial.
216
-
217
- <details>
218
- <summary><b>💸 1. "Eu pago por uma assinatura cara, mas ainda sou interrompido pelos limites"</b></summary>
219
-
220
- Os desenvolvedores pagam US$ 20–200/mês pelo Claude Pro, Codex Pro ou GitHub Copilot. Mesmo pagando, a cota tem um limite máximo – 5h de uso, limites semanais ou limites de taxa por minuto. No meio da sessão de codificação, o provedor para de responder e o desenvolvedor perde fluxo e produtividade.
221
-
222
- **Como o OmniRoute resolve isso:**
223
-
224
- - **Smart 4-Tier Fallback** — Se a cota de assinatura acabar, redireciona automaticamente para API Key → Barato → Gratuito sem intervenção manual
225
- - **Rastreamento de cota em tempo real** — Mostra o consumo de tokens em tempo real com contagem regressiva redefinida (5h, diariamente, semanalmente)
226
- - **Suporte para múltiplas contas** — Várias contas por provedor com round-robin automático — quando uma acabar, muda para a próxima
227
- - **Combos personalizados** — Cadeias alternativas personalizáveis com 6 estratégias de balanceamento (preencher primeiro, round-robin, P2C, aleatório, menos usado, com custo otimizado)
228
- - **Codex Business Quotas** — Monitoramento de cotas de espaço de trabalho de negócios/equipe diretamente no painel
229
-
230
- </details>
231
-
232
- <details>
233
- <summary><b>🔌 2. "Preciso usar vários provedores, mas cada um tem uma API diferente"</b></summary>
234
-
235
- OpenAI usa um formato, Claude (Anthropic) usa outro, Gemini ainda outro. Se um desenvolvedor quiser testar modelos de diferentes provedores ou fazer fallback entre eles, ele precisará reconfigurar SDKs, alterar endpoints e lidar com formatos incompatíveis. Provedores personalizados (FriendLI, NIM) possuem endpoints de modelo não padrão.
236
-
237
- **Como o OmniRoute resolve isso:**
238
-
239
- - **Endpoint unificado** — Um único `http://localhost:20128/v1` serve como proxy para todos os mais de 36 provedores
240
- - **Tradução de formato** — Automática e transparente: OpenAI ↔ Claude ↔ Gemini ↔ API de respostas
241
- - **Response Sanitization** — Remove campos não padrão (`x_groq`, `usage_breakdown`, `service_tier`) que quebram o OpenAI SDK v1.83+
242
- - **Normalização de função** — Converte `developer` → `system` para provedores não-OpenAI; `system` → `user` para GLM/ERNIE
243
- - **Think Tag Extraction** — Extrai blocos `<think>` de modelos como DeepSeek R1 em `reasoning_content` padronizado
244
- - **Saída estruturada para Gemini** — `json_schema` → conversão automática `responseMimeType`/`responseSchema`
245
- - **`stream` é padronizado como `false`** — Alinha-se com as especificações OpenAI, evitando SSE inesperado em SDKs Python/Rust/Go
246
-
247
- </details>
248
-
249
- <details>
250
- <summary><b>🌐 3. "Meu provedor de IA bloqueia minha região/país"</b></summary>
251
-
252
- Provedores como OpenAI/Codex bloqueiam o acesso de determinadas regiões geográficas. Os usuários recebem erros como `unsupported_country_region_territory` durante conexões OAuth e API. Isto é especialmente frustrante para desenvolvedores de países em desenvolvimento.
253
-
254
- **Como o OmniRoute resolve isso:**
255
-
256
- - **Configuração de proxy de 3 níveis** — Proxy configurável em 3 níveis: global (todo o tráfego), por provedor (apenas um provedor) e por conexão/chave
257
- - **Selos de proxy codificados por cores** — Indicadores visuais: 🟢 proxy global, 🟡 proxy do provedor, 🔵 proxy de conexão, sempre mostrando o IP
258
- - **Troca de token OAuth por meio de proxy** — O fluxo OAuth também passa pelo proxy, resolvendo `unsupported_country_region_territory`
259
- - **Testes de conexão via proxy** — Os testes de conexão usam o proxy configurado (não há mais bypass direto)
260
- - **Suporte SOCKS5** — Suporte completo ao proxy SOCKS5 para roteamento de saída
261
- - **TLS Fingerprint Spoofing** — Impressão digital TLS semelhante a um navegador via `wreq-js` para ignorar a detecção de bot
262
-
263
- </details>
264
-
265
- <details>
266
- <summary><b>🆓 4. "Quero usar IA para codificação, mas não tenho dinheiro"</b></summary>
267
-
268
- Nem todos podem pagar US$ 20–200/mês por assinaturas de IA. Estudantes, desenvolvedores de países emergentes, amadores e freelancers precisam de acesso a modelos de qualidade a custo zero.
269
-
270
- **Como o OmniRoute resolve isso:**
271
-
272
- - **Provedores de nível gratuito integrados** — Suporte nativo para provedores 100% gratuitos: iFlow (8 modelos ilimitados), Qwen (3 modelos ilimitados), Kiro (Claude grátis), Gemini CLI (180 mil/mês grátis)
273
- - **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/<model>` prefix
274
- - **Combos somente gratuitos** — Cadeia `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = US$ 0/mês com tempo de inatividade zero
275
- - **Créditos gratuitos NVIDIA NIM** — 1.000 créditos gratuitos integrados
276
- - **Estratégia de Custo Otimizado** — Estratégia de roteamento que escolhe automaticamente o provedor mais barato disponível
277
-
278
- </details>
279
-
280
- <details>
281
- <summary><b>🔒 5. "Preciso proteger meu gateway de IA contra acesso não autorizado"</b></summary>
282
-
283
- Ao expor um gateway de IA à rede (LAN, VPS, Docker), qualquer pessoa com o endereço pode consumir os tokens/cota do desenvolvedor. Sem proteção, as APIs ficam vulneráveis ​​ao uso indevido, injeção imediata e abuso.
284
-
285
- **Como o OmniRoute resolve isso:**
286
-
287
- - **Gerenciamento de chaves de API** — Geração, rotação e escopo por provedor com uma página `/dashboard/api-manager` dedicada
288
- - **Permissões em nível de modelo** — Restringir chaves de API a modelos específicos (`openai/*`, padrões curinga), com alternância Permitir tudo/Restringir
289
- - **API Endpoint Protection** — Exija uma chave para `/v1/models` e bloqueie provedores específicos da listagem
290
- - **Auth Guard + Proteção CSRF** — Todas as rotas do painel protegidas com middleware `withAuth` + tokens CSRF
291
- - **Rate Limiter** — Limitação de taxa por IP com janelas configuráveis
292
- - **Filtragem de IP** — Lista de permissões/lista de bloqueio para controle de acesso
293
- - **Prompt Injection Guard** — Sanitização contra padrões de prompt maliciosos
294
- - **Criptografia AES-256-GCM** — Credenciais criptografadas em repouso
295
-
296
- </details>
297
-
298
- <details>
299
- <summary><b>🛑 6. "Meu provedor caiu e perdi meu fluxo de codificação"</b></summary>
300
-
301
- Os provedores de IA podem ficar instáveis, retornar erros 5xx ou atingir limites de taxa temporários. Se um desenvolvedor depender de um único provedor, ele será interrompido. Sem disjuntores, tentativas repetidas podem travar o aplicativo.
302
-
303
- **Como o OmniRoute resolve isso:**
304
-
305
- - **Disjuntor por provedor** — Abertura/fechamento automático com limites e resfriamento configuráveis (Fechado/Aberto/Meio-aberto)
306
- - **Retirada exponencial** — Atrasos progressivos em novas tentativas
307
- - **Rebanho Anti-Trovão** — Proteção Mutex + semáforo contra tempestades de novas tentativas simultâneas
308
- - **Combo Fallback Chains** — Se o provedor primário falhar, ele cairá automaticamente na cadeia sem intervenção
309
- - **Combo Circuit Breaker** — Desativa automaticamente provedores com falha em uma cadeia de combinação
310
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
311
- - **Health Dashboard** — Monitoramento de tempo de atividade, estados de disjuntores, bloqueios, estatísticas de cache, latência p50/p95/p99
312
-
313
- </details>
314
-
315
- <details>
316
- <summary><b>🔧 7. "Configurar cada ferramenta de IA é tedioso e repetitivo"</b></summary>
317
-
318
- Os desenvolvedores usam Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Cada ferramenta precisa de uma configuração diferente (endpoint da API, chave, modelo). Reconfigurar ao trocar de provedor ou modelo é uma perda de tempo.
319
-
320
- **Como o OmniRoute resolve isso:**
321
-
322
- - **CLI Tools Dashboard** — Página dedicada com configuração de um clique para Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
323
- - **GitHub Copilot Config Generator** — Gera `chatLanguageModels.json` para VS Code com seleção de modelo em massa
324
- - **Assistente de integração** — Configuração guiada em 4 etapas para usuários iniciantes
325
- - **Um endpoint, todos os modelos** — Configure `http://localhost:20128/v1` uma vez, acesse mais de 36 provedores
326
-
327
- </details>
328
-
329
- <details>
330
- <summary><b>🔑 8. "Gerenciar tokens OAuth de vários provedores é um inferno"</b></summary>
331
-
332
- Claude Code, Codex, Gemini CLI, Copilot — todos usam OAuth 2.0 com tokens expirados. Os desenvolvedores precisam se autenticar novamente constantemente, lidar com `client_secret is missing`, `redirect_uri_mismatch` e falhas em servidores remotos. OAuth em LAN/VPS é particularmente problemático.
333
-
334
- **Como o OmniRoute resolve isso:**
335
-
336
- - **Atualização automática de token** — Os tokens OAuth são atualizados em segundo plano antes da expiração
337
- - **OAuth 2.0 (PKCE) integrado ** — Fluxo automático para Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
338
- - **OAuth de várias contas** — Várias contas por provedor por meio de extração de token JWT/ID
339
- - **OAuth LAN/Remote Fix** — Detecção de IP privado para `redirect_uri` + modo URL manual para servidores remotos
340
- - **OAuth Behind Nginx** — Usa `window.location.origin` para compatibilidade de proxy reverso
341
- - **Guia OAuth remoto** — Guia passo a passo para credenciais do Google Cloud em VPS/Docker
342
-
343
- </details>
344
-
345
- <details>
346
- <summary><b>📊 9. "Não sei quanto estou gastando ou onde"</b></summary>
347
-
348
- Os desenvolvedores usam vários provedores pagos, mas não têm uma visão unificada dos gastos. Cada provedor possui seu próprio painel de faturamento, mas não há visão consolidada. Custos inesperados podem se acumular.
349
-
350
- **Como o OmniRoute resolve isso:**
351
-
352
- - **Painel de análise de custos** — Acompanhamento de custos por token e gerenciamento de orçamento por provedor
353
- - **Limites de orçamento por nível** — Teto de gastos por nível que aciona substituto automático
354
- - **Configuração de preços por modelo** — Preços configuráveis por modelo
355
- - **Estatísticas de uso por chave de API** — Contagem de solicitações e carimbo de data/hora do último uso por chave
356
- - **Painel de análise** — Cartões de estatísticas, gráfico de uso do modelo, tabela de provedores com taxas de sucesso e latência
357
-
358
- </details>
359
-
360
- <details>
361
- <summary><b>🐛 10. "Não consigo diagnosticar erros e problemas em chamadas de IA"</b></summary>
362
-
363
- Quando uma chamada falha, o desenvolvedor não sabe se foi um limite de taxa, um token expirado, um formato errado ou um erro do provedor. Logs fragmentados em diferentes terminais. Sem observabilidade, a depuração é uma tentativa e erro.
364
-
365
- **Como o OmniRoute resolve isso:**
366
-
367
- - **Painel de registros unificados** — 4 guias: registros de solicitação, registros de proxy, registros de auditoria, console
368
- - **Console Log Viewer** — Visualizador em estilo terminal em tempo real com níveis codificados por cores, rolagem automática, pesquisa, filtro
369
- - **SQLite Proxy Logs** — Logs persistentes que sobrevivem às reinicializações do servidor
370
- - **Translator Playground** — 4 modos de depuração: Playground (tradução de formato), Chat Tester (ida e volta), Test Bench (lote), Live Monitor (tempo real)
371
- - **Solicitar telemetria** — latência p50/p95/p99 + rastreamento X-Request-Id
372
- - **Registro baseado em arquivo com rotação** — O interceptador do console captura tudo no log JSON com rotação baseada em tamanho
373
-
374
- </details>
375
-
376
- <details>
377
- <summary><b>🏗️ 11. "Implantar e manter o gateway é complexo"</b></summary>
378
-
379
- Instalar, configurar e manter um proxy de IA em diferentes ambientes (local, VPS, Docker, nuvem) exige muito trabalho. Problemas como caminhos codificados, `EACCES` em diretórios, conflitos de porta e compilações entre plataformas aumentam o atrito.
380
-
381
- **Como o OmniRoute resolve isso:**
382
-
383
- - **instalação global npm** — `npm install -g omniroute && omniroute` — concluído
384
- - **Docker Multiplataforma** — AMD64 + ARM64 nativo (Apple Silicon, AWS Graviton, Raspberry Pi)
385
- - **Perfis Docker Compose** — `base` (sem ferramentas CLI) e `cli` (com Claude Code, Codex, OpenClaw)
386
- - **Aplicativo Electron Desktop** — Aplicativo nativo para Windows/macOS/Linux com bandeja do sistema, inicialização automática e modo offline
387
- - **Modo Split-Port** — API e Dashboard em portas separadas para cenários avançados (proxy reverso, rede de contêineres)
388
- - **Cloud Sync** — Sincronização de configuração entre dispositivos via Cloudflare Workers
389
- - **Backups de banco de dados** — Backup, restauração, exportação e importação automática de todas as configurações
390
-
391
- </details>
392
-
393
- <details>
394
- <summary><b>🌍 12. "A interface é somente em inglês e minha equipe não fala inglês"</b></summary>
395
-
396
- Equipes em países que não falam inglês, especialmente na América Latina, Ásia e Europa, enfrentam dificuldades com interfaces somente em inglês. As barreiras linguísticas reduzem a adoção e aumentam os erros de configuração.
397
-
398
- **Como o OmniRoute resolve isso:**
399
-
400
- - **Painel i18n — 30 idiomas** — Todas as mais de 500 teclas traduzidas, incluindo árabe, búlgaro, dinamarquês, alemão, espanhol, finlandês, francês, hebraico, hindi, húngaro, indonésio, italiano, japonês, coreano, malaio, holandês, norueguês, polonês, português (PT/BR), romeno, russo, eslovaco, sueco, tailandês, ucraniano, vietnamita, chinês, filipino, inglês
401
- - **Suporte RTL** — Suporte da direita para a esquerda para árabe e hebraico
402
- - **READMEs multilíngues** — 30 traduções completas de documentação
403
- - **Seletor de idioma** — Ícone de globo no cabeçalho para troca em tempo real
404
-
405
- </details>
406
-
407
- <details>
408
- <summary><b>🔄 13. "Preciso de mais do que bate-papo - preciso de incorporações, imagens, áudio"</b></summary>
409
-
410
- IA não é apenas conclusão de bate-papo. Os desenvolvedores precisam gerar imagens, transcrever áudio, criar embeddings para RAG, reclassificar documentos e moderar conteúdo. Cada API possui um endpoint e formato diferente.
411
-
412
- **Como o OmniRoute resolve isso:**
413
-
414
- - **Embeddings** — `/v1/embeddings` com 6 provedores e mais de 9 modelos
415
- - **Geração de imagem** — `/v1/images/generations` com 10 provedores e mais de 20 modelos (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
416
- - **Texto para vídeo** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) e SD WebUI
417
- - **Texto para música** — `/v1/music/generations` — ComfyUI (áudio estável aberto, MusicGen)
418
- - **Transcrição de áudio** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
419
- - **Conversão de texto em fala** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + provedores existentes
420
- - **Moderações** — `/v1/moderations` — Verificações de segurança de conteúdo
421
- - **Reclassificação** — `/v1/rerank` — Reclassificação da relevância do documento
422
- - **API de respostas ** — Suporte completo a `/v1/responses` para Codex
423
-
424
- </details>
425
-
426
- <details>
427
- <summary><b>🧪 14. "Não tenho como testar e comparar a qualidade entre modelos"</b></summary>
428
-
429
- Os desenvolvedores querem saber qual modelo é melhor para seu caso de uso – código, tradução, raciocínio – mas comparar manualmente é lento. Não existem ferramentas de avaliação integradas.
430
-
431
- **Como o OmniRoute resolve isso:**
432
-
433
- - **Avaliações LLM** — Teste Golden Set com 10 casos pré-carregados cobrindo saudações, matemática, geografia, geração de código, conformidade com JSON, tradução, remarcação, recusa de segurança
434
- - **4 estratégias de correspondência** — `exact`, `contains`, `regex`, `custom` (função JS)
435
- - **Translator Playground Test Bench** — Teste em lote com múltiplas entradas e saídas esperadas, comparação entre fornecedores
436
- - **Testador de bate-papo** — Ida e volta completa com renderização de resposta visual
437
- - **Monitoramento ao vivo** — Transmissão em tempo real de todas as solicitações que passam pelo proxy
438
-
439
- </details>
440
-
441
- <details>
442
- <summary><b>📈 15. "Preciso escalar sem perder desempenho"</b></summary>
443
-
444
- À medida que o volume de solicitações aumenta, sem armazenar em cache as mesmas perguntas geram custos duplicados. Sem idempotência, solicitações duplicadas desperdiçam processamento. Os limites de tarifas por provedor devem ser respeitados.
445
-
446
- **Como o OmniRoute resolve isso:**
447
-
448
- - **Cache Semântico** — Cache de duas camadas (assinatura + semântica) reduz custo e latência
449
- - **Idempotência de solicitação** — janela de desduplicação de 5s para solicitações idênticas
450
- - **Detecção de limite de taxa** — RPM por provedor, intervalo mínimo e rastreamento simultâneo máximo
451
- - **Limites de taxa editáveis** — Padrões configuráveis em Configurações → Resiliência com persistência
452
- - **Cache de validação de chave de API** — cache de três camadas para desempenho de produção
453
- - **Health Dashboard com telemetria** — latência p50/p95/p99, estatísticas de cache, tempo de atividade
454
-
455
- </details>
456
-
457
- <details>
458
- <summary><b>🤖 16. "Quero controlar o comportamento do modelo globalmente"</b></summary>
459
-
460
- Desenvolvedores que desejam todas as respostas em um idioma específico, com um tom específico ou que desejam limitar os tokens de raciocínio. Configurar isso em cada ferramenta/solicitação é impraticável.
461
-
462
- **Como o OmniRoute resolve isso:**
463
-
464
- - **Injeção de Prompt do Sistema** — Prompt global aplicado a todas as solicitações
465
- - **Thinking Budget Validation** — Controle de alocação de token de raciocínio por solicitação (passthrough, automático, personalizado, adaptativo)
466
- - **6 Estratégias de Roteamento** — Estratégias globais que determinam como as solicitações são distribuídas
467
- - **Wildcard Router** — Os padrões `provider/*` roteiam dinamicamente para qualquer provedor
468
- - **Combo Habilitar/Desabilitar Alternar** — Alternar combos diretamente do painel
469
- - **Alternância de provedor** — Habilite/desabilite todas as conexões de um provedor com um clique
470
- - **Provedores bloqueados** — Excluir provedores específicos da listagem `/v1/models`
471
-
472
- </details>
473
-
474
- <details>
475
- <summary><b>🧰 17. "Preciso de ferramentas MCP como recursos de produto de primeira classe"</b></summary>
476
-
477
- Muitos gateways de IA expõem o MCP apenas como um detalhe de implementação oculto. As equipes precisam de uma camada operacional visível e gerenciável.
478
-
479
- **Como o OmniRoute resolve isso:**
480
-
481
- - MCP aparece na navegação do painel e na guia protocolo de endpoint
482
- - Página dedicada de gerenciamento de MCP com processos, ferramentas, escopos e auditoria
483
- - Início rápido integrado para `omniroute --mcp` e integração de cliente
484
-
485
- </details>
486
-
487
- <details>
488
- <summary><b>🧠 18. "Preciso de orquestração A2A com caminhos de tarefa de sincronização + fluxo"</b></summary>
489
-
490
- Os fluxos de trabalho do agente precisam de respostas diretas e execução em streaming de longa duração com controle do ciclo de vida.
491
-
492
- **Como o OmniRoute resolve isso:**
493
-
494
- - Endpoint A2A JSON-RPC (`POST /a2a`) com `message/send` e `message/stream`
495
- - Streaming SSE com propagação de estado terminal
496
- - APIs de ciclo de vida de tarefas para `tasks/get` e `tasks/cancel`
497
-
498
- </details>
499
-
500
- <details>
501
- <summary><b>🛰️ 19. "Preciso de integridade real do processo MCP, não de status adivinhado"</b></summary>
502
-
503
- As equipes operacionais precisam saber se o MCP está realmente ativo, e não apenas se uma API está acessível.
504
-
505
- **Como o OmniRoute resolve isso:**
506
-
507
- - Arquivo de pulsação em tempo de execução com PID, carimbos de data/hora, transporte, contagem de ferramentas e modo de escopo
508
- - API de status MCP combinando pulsação + atividade recente
509
- - Cartões de status da interface do usuário para atualização de processo/tempo de atividade/pulsação
510
-
511
- </details>
512
-
513
- <details>
514
- <summary><b>📋 20. "Preciso de execução auditável da ferramenta MCP"</b></summary>
515
-
516
- Quando as ferramentas alteram a configuração ou acionam ações operacionais, as equipes precisam de rastreabilidade forense.
517
-
518
- **Como o OmniRoute resolve isso:**
519
-
520
- - Registro de auditoria apoiado por SQLite para chamadas de ferramentas MCP
521
- - Filtros por ferramenta, sucesso/falha, chave de API e paginação
522
- - Tabela de auditoria do painel + endpoints de estatísticas para automação
523
-
524
- </details>
525
-
526
- <details>
527
- <summary><b>🔐 21. "Preciso de permissões MCP com escopo definido por integração"</b></summary>
528
-
529
- Clientes diferentes devem ter acesso com privilégios mínimos às categorias de ferramentas.
530
-
531
- **Como o OmniRoute resolve isso:**
532
-
533
- - 9 escopos MCP granulares para acesso controlado à ferramenta
534
- - Aplicação do escopo e visibilidade na UI de gerenciamento do MCP
535
- - Postura padrão segura para ferramentas operacionais
536
-
537
- </details>
538
-
539
- <details>
540
- <summary><b>⚙️ 22. "Preciso de controles operacionais sem reimplantar"</b></summary>
541
-
542
- As equipes precisam de mudanças rápidas no tempo de execução durante incidentes ou eventos de custo.
543
-
544
- **Como o OmniRoute resolve isso:**
545
-
546
- - Alternar ativação combinada diretamente do painel MCP
547
- - Aplicar perfis de resiliência de pacotes de políticas predefinidos
548
- - Redefinir o estado do disjuntor no mesmo painel de operações
549
-
550
- </details>
551
-
552
- <details>
553
- <summary><b>🔄 23. "Preciso de visibilidade e cancelamento do ciclo de vida da tarefa A2A ao vivo"</b></summary>
554
-
555
- Sem visibilidade do ciclo de vida, os incidentes de tarefas tornam-se difíceis de triagem.
556
-
557
- **Como o OmniRoute resolve isso:**
558
-
559
- - Listagem/filtragem de tarefas por estado/habilidade com paginação
560
- - Detalhamento de metadados de tarefas, eventos e artefatos
561
- - Terminal de cancelamento de tarefa e ação de UI com confirmação
562
-
563
- </details>
564
-
565
- <details>
566
- <summary><b>🌊 24. "Preciso de métricas de fluxo ativo para carga A2A"</b></summary>
567
-
568
- Os fluxos de trabalho de streaming exigem insights operacionais sobre simultaneidade e conexões em tempo real.
569
-
570
- **Como o OmniRoute resolve isso:**
571
-
572
- - Contadores de fluxo ativos integrados ao status A2A
573
- - Carimbo de data/hora da última tarefa e contagens por estado
574
- - Cartões de painel A2A para monitoramento de operações em tempo real
575
-
576
- </details>
577
-
578
- <details>
579
- <summary><b>🪪 25. "Preciso de descoberta de agente padrão para clientes"</b></summary>
580
-
581
- Clientes e orquestradores externos precisam de metadados legíveis por máquina para integração.
582
-
583
- **Como o OmniRoute resolve isso:**
584
-
585
- - Cartão de agente exposto em `/.well-known/agent.json`
586
- - Capacidades e habilidades mostradas na UI de gerenciamento
587
- - A API de status A2A inclui metadados de descoberta para automação
588
-
589
- </details>
590
-
591
- <details>
592
- <summary><b>🧭 26. "Preciso de descoberta de protocolo na UX do produto"</b></summary>
593
-
594
- Se os usuários não conseguirem descobrir superfícies de protocolo, a adoção e a qualidade do suporte cairão.
595
-
596
- **Como o OmniRoute resolve isso:**
597
-
598
- - Entradas da barra lateral para MCP e A2A
599
- - Guia Protocolos da página Endpoint com início rápido e status
600
- - Links da visão geral para painéis de gerenciamento dedicados
601
-
602
- </details>
603
-
604
- <details>
605
- <summary><b>🧪 27. "Preciso de validação de protocolo ponta a ponta com clientes reais"</b></summary>
606
-
607
- Os testes simulados não são suficientes para validar a compatibilidade do protocolo antes do lançamento.
608
-
609
- **Como o OmniRoute resolve isso:**
610
-
611
- - Suíte E2E que inicializa o aplicativo e usa transporte de cliente SDK MCP real
612
- - Testes de cliente A2A para fluxos de descoberta, envio, streaming, obtenção e cancelamento
613
- - Verificação cruzada de afirmações com APIs de auditoria MCP e tarefas A2A
614
-
615
- </details>
616
-
617
- <details>
618
- <summary><b>📡 28. "Preciso de observabilidade unificada em todas as interfaces"</b></summary>
619
-
620
- A divisão da observabilidade por protocolo cria pontos cegos e MTTR mais longo.
621
-
622
- **Como o OmniRoute resolve isso:**
623
-
624
- - Painéis/logs/análises unificados em um produto
625
- - Saúde + auditoria + solicitação de telemetria nas camadas OpenAI, MCP e A2A
626
- - APIs operacionais para status e automação
627
-
628
- </details>
629
-
630
- <details>
631
- <summary><b>💼 29. "Preciso de um tempo de execução para proxy + ferramentas + orquestração de agente"</b></summary>
632
-
633
- A execução de muitos serviços separados aumenta o custo operacional e os modos de falha.
634
-
635
- **Como o OmniRoute resolve isso:**
636
-
637
- - Proxy compatível com OpenAI, servidor MCP e servidor A2A em uma pilha
638
- - Autenticação compartilhada, resiliência, armazenamento de dados e observabilidade
639
- - Modelo de política consistente em todas as superfícies de interação
640
-
641
- </details>
642
-
643
- <details>
644
- <summary><b>🚀 30. "Preciso enviar fluxos de trabalho de agente sem expansão de códigos colados"</b></summary>
645
-
646
- As equipes perdem velocidade ao unir vários serviços e scripts ad hoc.
647
-
648
- **Como o OmniRoute resolve isso:**
649
-
650
- - Estratégia unificada de endpoint para clientes e agentes
651
- - UIs de gerenciamento de protocolo integradas e caminhos de validação de fumaça
652
- - Fundações prontas para produção (segurança, registro, resiliência, backup)
653
-
654
- </details>
655
-
656
- ### Exemplos de manuais (casos de uso integrados)
657
-
658
- **Manual A: Maximize a assinatura paga + backup barato**
659
-
660
- ```txt
661
- Combo: "maximize-claude"
662
- 1. cc/claude-opus-4-6
663
- 2. glm/glm-4.7
664
- 3. if/kimi-k2-thinking
665
-
666
- Monthly cost: $20 + small backup spend
667
- Outcome: higher quality, near-zero interruption
668
- ```
669
-
670
- **Manual B: Pilha de codificação de custo zero**
671
-
672
- ```txt
673
- Combo: "free-forever"
674
- 1. gc/gemini-3-flash
675
- 2. if/kimi-k2-thinking
676
- 3. qw/qwen3-coder-plus
677
-
678
- Monthly cost: $0
679
- Outcome: stable free coding workflow
680
- ```
681
-
682
- **Manual C: cadeia de fallback sempre ativa 24 horas por dia, 7 dias por semana**
683
-
684
- ```txt
685
- Combo: "always-on"
686
- 1. cc/claude-opus-4-6
687
- 2. cx/gpt-5.2-codex
688
- 3. glm/glm-4.7
689
- 4. minimax/MiniMax-M2.1
690
- 5. if/kimi-k2-thinking
691
-
692
- Outcome: deep fallback depth for deadline-critical workloads
693
- ```
694
-
695
- **Manual D: Operações de agente com MCP + A2A**
696
-
697
- ```txt
698
- 1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
699
- 2) Run A2A tasks via `message/send` and `message/stream`
700
- 3) Observe via /dashboard/mcp and /dashboard/a2a
701
- 4) Control incidents with resilience profile + task cancellation
702
- ```
703
-
704
- ---
705
-
706
- ## ⚡ Início rápido
707
-
708
- **1. Instale globalmente:**
709
-
710
- ```bash
711
- npm install -g omniroute
712
- omniroute
713
- ```
714
-
715
- 🎉 O painel abre às `http://localhost:20128`
716
-
717
- | Comando | Descrição |
718
- | ----------------------- | ------------------------------------- |
719
- | `omniroute` | Iniciar servidor (porta padrão 20128) |
720
- | `omniroute --port 3000` | Usar porta personalizada |
721
- | `omniroute --no-open` | Não abra o navegador automaticamente |
722
- | `omniroute --help` | Mostrar ajuda |
723
-
724
- **2. Conecte um provedor GRATUITO:**
725
-
726
- Painel → Provedores → Conectar **Claude Code** ou **Antigravidade** → Login OAuth → Concluído!
727
-
728
- **3. Use em sua ferramenta CLI:**
729
-
730
- ```
731
- Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
732
- Endpoint: http://localhost:20128/v1
733
- API Key: [copy from dashboard]
734
- Model: if/kimi-k2-thinking
735
- ```
736
-
737
- **É isso aí!** Comece a codificar com modelos de IA GRATUITOS.
738
-
739
- **Alternativa – execute a partir da fonte:**
740
-
741
- ```bash
742
- cp .env.example .env
743
- npm install
744
- PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
745
- ```
746
-
747
- ---
748
-
749
- ## 🐳 Docker
750
-
751
- OmniRoute está disponível como uma imagem pública do Docker em [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
752
-
753
- **Execução rápida:**
754
-
755
- ```bash
756
- docker run -d \
757
- --name omniroute \
758
- --restart unless-stopped \
759
- -p 20128:20128 \
760
- -v omniroute-data:/app/data \
761
- diegosouzapw/omniroute:latest
762
- ```
763
-
764
- **Com arquivo de ambiente:**
765
-
766
- ```bash
767
- # Copy and edit .env first
768
- cp .env.example .env
769
-
770
- docker run -d \
771
- --name omniroute \
772
- --restart unless-stopped \
773
- --env-file .env \
774
- -p 20128:20128 \
775
- -v omniroute-data:/app/data \
776
- diegosouzapw/omniroute:latest
777
- ```
778
-
779
- **Usando Docker Compose:**
780
-
781
- ```bash
782
- # Base profile (no CLI tools)
783
- docker compose --profile base up -d
784
-
785
- # CLI profile (Claude Code, Codex, OpenClaw built-in)
786
- docker compose --profile cli up -d
787
- ```
788
-
789
- | Imagem | Etiqueta | Tamanho | Descrição |
790
- | ------------------------ | -------- | ------- | --------------------- |
791
- | `diegosouzapw/omniroute` | `latest` | ~250 MB | Última versão estável |
792
- | `diegosouzapw/omniroute` | `1.0.3` | ~250 MB | Versão atual |
793
-
794
- ---
795
-
796
- ---
797
-
798
- ## 🖥️
799
-
800
- > 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
801
-
802
- - 🖥️ **Native Window** — Dedicated app window with system tray integration
803
- - 🔄 **Auto-Start** — Launch OmniRoute on system login
804
- - 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
805
- - ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
806
- - 🌐 **Offline Mode** — Works fully offline with bundled server
807
-
808
- ```bash
809
- npm run electron:dev # Development mode
810
- npm run electron:build # Current platform
811
- npm run electron:build:win # Windows (.exe)
812
- npm run electron:build:mac # macOS (.dmg)
813
- npm run electron:build:linux # Linux (.AppImage)
814
- ```
815
-
816
- 📖 Full documentation: [`electron/README.md`](electron/README.md)
817
-
818
- ---
819
-
820
- ## 💰 Visão geral dos preços
821
-
822
- | Nível | Provedor | Custo | Redefinição de cota | Melhor para |
823
- | ------------------- | ------------------- | -------------------------- | ------------------------ | ----------------------- |
824
- | **💳 ASSINATURA** | Código Claude (Pro) | $ 20/mês | 5h + semanalmente | Já inscrito |
825
- | | Códice (Plus/Pro) | US$ 20-200/mês | 5h + semanalmente | Usuários OpenAI |
826
- | | Gêmeos CLI | **GRÁTIS** | 180 mil/mês + 1 mil/dia | Todos! |
827
- | | Copiloto GitHub | US$ 10-19/mês | Mensalmente | Usuários do GitHub |
828
- | **🔑 CHAVE DE API** | NVIDIA NIM | **GRÁTIS** (1000 créditos) | Único | Teste de nível gratuito |
829
- | | DeepSeek | Pagamento conforme uso | Nenhum | Melhor preço/qualidade |
830
- | | Groq | Nível gratuito + pago | Taxa limitada | Inferência ultrarrápida |
831
- | | xAI (Groque) | Pagamento conforme uso | Nenhum | Modelos Grok |
832
- | | Mistral | Nível gratuito + pago | Taxa limitada | IA Europeia |
833
- | | OpenRouter | Pagamento conforme uso | Nenhum | Mais de 100 modelos |
834
- | **💰 BARATO** | GLM-4.7 | US$ 0,6/1 milhão | Diariamente 10h | Backup de orçamento |
835
- | | MiniMax M2.1 | US$ 0,2/1 milhão | Rolamento de 5 horas | Opção mais barata |
836
- | | Kimi K2 | $ 9 / mês fixo | 10 milhões de tokens/mês | Custo previsível |
837
- | **🆓 GRÁTIS** | iFlow | $0 | Ilimitado | 8 modelos grátis |
838
- | | Qwen | $0 | Ilimitado | 3 modelos grátis |
839
- | | Kiro | $0 | Ilimitado | Cláudio grátis |
840
-
841
- **💡 Dica profissional:** Comece com Gemini CLI (180 mil grátis/mês) + combo iFlow (gratuito ilimitado) = custo de $ 0!
842
-
843
- ---
844
-
845
- ## 💡 Principais recursos
846
-
847
- ### 🧠 Roteamento e inteligência central
848
-
849
- | Recurso | O que faz |
850
- | -------------------------------------------- | -------------------------------------------------------------------------------------------------- |
851
- | 🎯 **Fullback inteligente de 4 camadas** | Roteamento automático: Assinatura → Chave de API → Barato → Grátis |
852
- | 📊 **Acompanhamento de cotas em tempo real** | Contagem de tokens ativos + contagem regressiva redefinida por provedor |
853
- | 🔄 **Tradução de formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro sem costura + higienização de resposta |
854
- | 👥 **Suporte para múltiplas contas** | Múltiplas contas por provedor com seleção inteligente |
855
- | 🔄 **Atualização automática de token** | Os tokens OAuth são atualizados automaticamente com nova tentativa |
856
- | 🎨 **Combos Personalizados** | 6 estratégias: preencher primeiro, round-robin, p2c, aleatório, menos usado, otimizado para custos |
857
- | 🧩 **Modelos Personalizados** | Adicione qualquer ID de modelo a qualquer provedor |
858
- | 🌐 **Roteador curinga** | Rotear padrões `provider/*` para qualquer provedor dinamicamente |
859
- | 🧠 **Pensando no Orçamento** | Modos de passagem, automático, personalizado e adaptativo para modelos de raciocínio |
860
- | 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
861
- | ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
862
- | 💬 **Injeção imediata do sistema** | Prompt de sistema global aplicado em todas as solicitações |
863
- | 📄 **API de respostas** | Suporte completo à API de respostas OpenAI (`/v1/responses`) para Codex |
864
-
865
- ### 🎵 APIs multimodais
866
-
867
- | Recurso | O que faz |
868
- | --------------------------------- | ----------------------------------------------------------- |
869
- | 🖼️ **Geração de imagens** | `/v1/images/generations` — 4 provedores, mais de 9 modelos |
870
- | 📐 **Incorporações** | `/v1/embeddings` — 6 provedores, mais de 9 modelos |
871
- | 🎤 **Transcrição de áudio** | `/v1/audio/transcriptions` — Compatível com sussurro |
872
- | 🔊 **Conversão de texto em fala** | `/v1/audio/speech` — Síntese de áudio multiprovedor |
873
- | 🛡️ **Moderações** | `/v1/moderations` — Verificações de segurança de conteúdo |
874
- | 🔀 **Reclassificação** | `/v1/rerank` — Reclassificação da relevância dos documentos |
875
-
876
- ### 🛡️ Resiliência e segurança
877
-
878
- | Recurso | O que faz |
879
- | -------------------------------------------- | ------------------------------------------------------------------------------------ |
880
- | 🔌 **Disjuntor** | Abertura/fechamento automático por provedor com limites configuráveis ​​ |
881
- | 🛡️ **Rebanho Anti-Trovão** | Mutex + limite de taxa de semáforo para provedores de chaves de API |
882
- | 🧠 **Cache Semântico** | Cache de duas camadas (assinatura + semântica) reduz custo e latência |
883
- | ⚡ **Solicitar Idempotência** | Janela de desduplicação 5s para solicitações duplicadas |
884
- | 🔒 **Falsificação de impressão digital TLS** | Ignore a detecção de bot baseada em TLS via wreq-js |
885
- | 🌐 **Filtragem de IP** | Lista de permissões/lista de bloqueio para controle de acesso à API |
886
- | 📊 **Limites de taxas editáveis** | RPM configurável, intervalo mínimo e simultâneo máximo no nível do sistema |
887
- | 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
888
- | 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
889
- | 🛡 **Proteção de endpoint de API** | Autenticação + bloqueio de provedor para o endpoint `/models` |
890
- | 🔒 **Visibilidade do proxy** | Crachás codificados por cores: 🟢 global, 🟡 provedor, 🔵 por conexão com display IP |
891
- | 🌐 **Configuração de proxy de 3 níveis** | Configurar proxies em nível global, por provedor ou por conexão |
892
-
893
- ### 📊 Observabilidade e análise
894
-
895
- | Recurso | O que faz |
896
- | ------------------------------------------- | ------------------------------------------------------------------------------------------------ |
897
- | 📝 **Solicitar registro** | Modo de depuração com logs completos de solicitação/resposta |
898
- | 💾 **Logs de proxy SQLite** | Logs de proxy persistentes sobrevivem às reinicializações do servidor |
899
- | 📊 **Painel de análise** | Alimentado por recargas: cartões de estatísticas, gráfico de uso de modelo, tabela de provedores |
900
- | 📈 **Acompanhamento do progresso** | Eventos de progresso SSE opcionais para streaming |
901
- | 🧪 **Avaliações LLM** | Teste de Golden Set com 4 estratégias de jogo |
902
- | 🔍 **Solicitar Telemetria** | Agregação de latência p50/p95/p99 + rastreamento X-Request-Id |
903
- | 📋 **Painel de registros** | Página unificada de 4 guias: Logs de solicitação, Logs de proxy, Logs de auditoria, Console |
904
- | 🖥️ **Visualizador de registros do console** | Visualizador em estilo terminal em tempo real com filtro de nível, pesquisa, rolagem automática |
905
- | 📑 **Registro baseado em arquivo** | O interceptor do console captura toda a saída para o arquivo de log JSON com rotação |
906
- | 🏥 **Painel de saúde** | Tempo de atividade do sistema, estados de disjuntores, bloqueios, estatísticas de cache |
907
- | 💰 **Acompanhamento de custos** | Gestão orçamentária + configuração de preços por modelo |
908
-
909
- ### ☁️ Implantação e sincronização
910
-
911
- | Recurso | O que faz |
912
- | --------------------------------------- | ------------------------------------------------------------------------------------ |
913
- | 💾 **Sincronização na nuvem** | Sincronize a configuração entre dispositivos por meio do Cloudflare Workers |
914
- | 🌐 **Implante em qualquer lugar** | Localhost, VPS, Docker, Cloudflare Workers |
915
- | 🔑 **Gerenciamento de chaves de API** | Gerar, alternar e definir o escopo de chaves de API por provedor |
916
- | 🧙 **Assistente de integração** | Configuração guiada em 4 etapas para usuários iniciantes |
917
- | 🔧 **Painel de Ferramentas CLI** | Configurar com um clique Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
918
- | 🔄 **Backups de banco de dados** | Backup, restauração, exportação e importação automáticos para todas as configurações |
919
- | 🌐 **Internacionalização** | i18n completo com next-intl — Suporte Inglês + Português (Brasil) |
920
- | 🌍 **Seletor de idioma** | Ícone de globo no cabeçalho para troca de idioma em tempo real (🇺🇸/🇧🇷) |
921
- | 📂 **Diretório de dados personalizado** | `DATA_DIR` env var para substituir o caminho de armazenamento padrão `~/.omniroute` |
922
-
923
- <details>
924
- <summary><b>📖 Detalhes do recurso</b></summary>
925
-
926
- ### 🎯 Fallback inteligente de 4 camadas
927
-
928
- Crie combos com fallback automático:
929
-
930
- ```
931
- Combo: "my-coding-stack"
932
- 1. cc/claude-opus-4-6 (your subscription)
933
- 2. nvidia/llama-3.3-70b (free NVIDIA API)
934
- 3. glm/glm-4.7 (cheap backup, $0.6/1M)
935
- 4. if/kimi-k2-thinking (free fallback)
936
-
937
- → Auto switches when quota runs out or errors occur
938
- ```
939
-
940
- ### 📊 Rastreamento de cotas em tempo real
941
-
942
- - Consumo de token por provedor
943
- - Redefinir contagem regressiva (5 horas, diariamente, semanalmente)
944
- - Estimativa de custos para níveis pagos
945
- - Relatórios mensais de gastos
946
-
947
- ### 🔄 Tradução de formato
948
-
949
- Tradução perfeita entre formatos:
950
-
951
- - **OpenAI** ↔ **Claude** ↔ **Gêmeos** ↔ **Respostas OpenAI**
952
- - Sua ferramenta CLI envia o formato OpenAI → OmniRoute traduz → O provedor recebe o formato nativo
953
- - Funciona com qualquer ferramenta que suporte endpoints OpenAI personalizados
954
- - **Higienização de resposta** — Remove campos não padrão para compatibilidade estrita com o OpenAI SDK
955
- - **Normalização de funções** — `developer` → `system` para não-OpenAI; `system` → `user` para modelos GLM/ERNIE
956
- - ** Extração de tags Think ** — `<think>` blocos → `reasoning_content` para modelos de pensamento
957
- - **Saída estruturada** — `json_schema` → `responseMimeType`/`responseSchema` de Gêmeos
958
-
959
- ### 👥 Suporte para múltiplas contas
960
-
961
- - Adicione várias contas por provedor
962
- - Round-robin automático ou roteamento baseado em prioridade
963
- - Fallback para a próxima conta quando alguém atingir a cota
964
-
965
- ### 🔄 Atualização automática de token
966
-
967
- - Os tokens OAuth são atualizados automaticamente antes da expiração
968
- - Não é necessária reautenticação manual
969
- - Experiência perfeita em todos os provedores
970
-
971
- ### 🎨 Combos Personalizados
972
-
973
- - Crie combinações ilimitadas de modelos
974
- - 6 estratégias: preencher primeiro, round-robin, poder de duas escolhas, aleatório, menos usado, otimizado para custos
975
- - Compartilhe combos entre dispositivos com Cloud Sync
976
-
977
- ### 🏥 Painel de saúde
978
-
979
- - Status do sistema (tempo de atividade, versão, uso de memória)
980
- - Estados do disjuntor por provedor (Fechado/Aberto/Meio-Aberto)
981
- - Status do limite de taxa e bloqueios ativos
982
- - Estatísticas de cache de assinatura
983
- - Telemetria de latência (p50/p95/p99) + cache de prompt
984
- - Redefinir o status de saúde com um clique
985
-
986
- ### 🔧 Parque do Tradutor
987
-
988
- OmniRoute inclui um poderoso Translator Playground integrado com **4 modos** para depuração, teste e monitoramento de traduções de API:
989
-
990
- | Modo | Descrição |
991
- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
992
- | **💻 Parque Infantil** | Tradução direta de formato — cole qualquer corpo de solicitação de API e veja instantaneamente como o OmniRoute o traduz entre formatos de provedor (OpenAI ↔ Claude ↔ Gemini ↔ API de respostas). Inclui modelos de exemplo e detecção automática de formato. |
993
- | **💬 Testador de bate-papo** | Envie solicitações de chat reais por meio do OmniRoute e veja o percurso completo: sua entrada, a solicitação traduzida, a resposta do provedor e a resposta traduzida de volta. Inestimável para validar o roteamento combinado. |
994
- | **🧪 Bancada de testes** | Modo de teste em lote — defina vários casos de teste com diferentes entradas e resultados esperados, execute-os todos de uma vez e compare os resultados entre provedores e modelos. |
995
- | **📱Monitoramento ao vivo** | Monitoramento de solicitações em tempo real: observe as solicitações recebidas conforme elas fluem pelo OmniRoute, veja as traduções de formato acontecendo ao vivo e identifique problemas instantaneamente. |
996
-
997
- **Acesso:** Painel → Tradutor (barra lateral)
998
-
999
- ### 💾 Sincronização na nuvem
1000
-
1001
- - Sincronize provedores, combos e configurações entre dispositivos
1002
- - Sincronização automática em segundo plano
1003
- - Armazenamento criptografado seguro
1004
-
1005
- </details>
1006
-
1007
- ## 🧪 Avaliações (Evals)
1008
-
1009
- OmniRoute inclui uma estrutura de avaliação integrada para testar a qualidade da resposta do LLM em relação a um conjunto dourado. Acesse-o em **Analytics → Evals** no painel.
1010
-
1011
- ### Conjunto Dourado Integrado
1012
-
1013
- O "OmniRoute Golden Set" pré-carregado contém 10 casos de teste cobrindo:
1014
-
1015
- - Saudações, matemática, geografia, geração de código
1016
- - Conformidade com o formato JSON, tradução, remarcação
1017
- - Recusa de segurança (conteúdo prejudicial), contagem, lógica booleana
1018
-
1019
- ### Estratégias de Avaliação
1020
-
1021
- | Estratégia | Descrição | Exemplo |
1022
- | ---------- | --------------------------------------------------------------------------- | -------------------------------- |
1023
- | `exact` | A saída deve corresponder exatamente | `"4"` |
1024
- | `contains` | A saída deve conter substring (sem distinção entre maiúsculas e minúsculas) | `"Paris"` |
1025
- | `regex` | A saída deve corresponder ao padrão regex | `"1.*2.*3"` |
1026
- | `custom` | Função JS personalizada retorna verdadeiro/falso | `(output) => output.length > 10` |
1027
-
1028
- ---
1029
-
1030
- ## 📖 Guia de configuração
1031
-
1032
- <details>
1033
- <summary><b>💳 Provedores de assinatura</b></summary>
1034
-
1035
- ### Código Claude (Pro/Max)
1036
-
1037
- ```bash
1038
- Dashboard → Providers → Connect Claude Code
1039
- → OAuth login → Auto token refresh
1040
- → 5-hour + weekly quota tracking
1041
-
1042
- Models:
1043
- cc/claude-opus-4-6
1044
- cc/claude-sonnet-4-5-20250929
1045
- cc/claude-haiku-4-5-20251001
1046
- ```
1047
-
1048
- **Dica profissional:** Use o Opus para tarefas complexas e o Sonnet para velocidade. OmniRoute rastreia cota por modelo!
1049
-
1050
- ### Codex OpenAI (Plus/Pro)
1051
-
1052
- ```bash
1053
- Dashboard → Providers → Connect Codex
1054
- → OAuth login (port 1455)
1055
- → 5-hour + weekly reset
1056
-
1057
- Models:
1058
- cx/gpt-5.2-codex
1059
- cx/gpt-5.1-codex-max
1060
- ```
1061
-
1062
- ### Gemini CLI (GRÁTIS 180K/mês!)
1063
-
1064
- ```bash
1065
- Dashboard → Providers → Connect Gemini CLI
1066
- → Google OAuth
1067
- → 180K completions/month + 1K/day
1068
-
1069
- Models:
1070
- gc/gemini-3-flash-preview
1071
- gc/gemini-2.5-pro
1072
- ```
1073
-
1074
- **Melhor valor:** Grande nível gratuito! Use isso antes dos níveis pagos.
1075
-
1076
- ### GitHub Copiloto
1077
-
1078
- ```bash
1079
- Dashboard → Providers → Connect GitHub
1080
- → OAuth via GitHub
1081
- → Monthly reset (1st of month)
1082
-
1083
- Models:
1084
- gh/gpt-5
1085
- gh/claude-4.5-sonnet
1086
- gh/gemini-3-pro
1087
- ```
1088
-
1089
- </details>
1090
-
1091
- <details>
1092
- <summary><b>🔑 Provedores de chave de API</b></summary>
1093
-
1094
- ### NVIDIA NIM (1000 créditos GRÁTIS!)
1095
-
1096
- 1. Inscreva-se: [build.nvidia.com](https://build.nvidia.com)
1097
- 2. Obtenha uma chave de API gratuita (1.000 créditos de inferência incluídos)
1098
- 3. Painel → Adicionar Provedor → NVIDIA NIM:
1099
- - Chave API: `nvapi-your-key`
1100
-
1101
- **Modelos:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` e mais de 50
1102
-
1103
- **Dica profissional:** API compatível com OpenAI — funciona perfeitamente com a tradução de formato do OmniRoute!
1104
-
1105
- ### DeepSeek
1106
-
1107
- 1. Inscreva-se: [platform.deepseek.com](https://platform.deepseek.com)
1108
- 2. Obtenha a chave API
1109
- 3. Painel → Adicionar provedor → DeepSeek
1110
-
1111
- **Modelos:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
1112
-
1113
- ### Groq (nível gratuito disponível!)
1114
-
1115
- 1. Inscreva-se: [console.groq.com](https://console.groq.com)
1116
- 2. Obtenha a chave API (nível gratuito incluído)
1117
- 3. Painel → Adicionar Provedor → Groq
1118
-
1119
- **Modelos:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
1120
-
1121
- **Dica profissional:** Inferência ultrarrápida — melhor para codificação em tempo real!
1122
-
1123
- ### OpenRouter (mais de 100 modelos)
1124
-
1125
- 1. Inscreva-se: [openrouter.ai](https://openrouter.ai)
1126
- 2. Obtenha a chave API
1127
- 3. Painel → Adicionar Provedor → OpenRouter
1128
-
1129
- **Modelos:** acesse mais de 100 modelos de todos os principais fornecedores por meio de uma única chave de API.
1130
-
1131
- </details>
1132
-
1133
- <details>
1134
- <summary><b>💰 Provedores baratos (backup)</b></summary>
1135
-
1136
- ### GLM-4.7 (redefinição diária, US$ 0,6/1 milhão)
1137
-
1138
- 1. Inscreva-se: [Zhipu AI](https://open.bigmodel.cn/)
1139
- 2. Obtenha a chave API do plano de codificação
1140
- 3. Painel → Adicionar chave API:
1141
- - Provedor: `glm`
1142
- - Chave API: `your-key`
1143
-
1144
- **Usar:** `glm/glm-4.7`
1145
-
1146
- **Dica profissional:** O plano de codificação oferece cota 3× com custo de 1/7! Redefinir diariamente às 10h.
1147
-
1148
- ### MiniMax M2.1 (redefinição de 5h, US$ 0,20/1 milhão)
1149
-
1150
- 1. Inscreva-se: [MiniMax](https://www.minimax.io/)
1151
- 2. Obtenha a chave API
1152
- 3. Painel → Adicionar chave API
1153
-
1154
- **Usar:** `minimax/MiniMax-M2.1`
1155
-
1156
- **Dica profissional:** Opção mais barata para contexto longo (1 milhão de tokens)!
1157
-
1158
- ### Kimi K2 (US$ 9/mês fixo)
1159
-
1160
- 1. Inscreva-se: [Moonshot AI](https://platform.moonshot.ai/)
1161
- 2. Obtenha a chave API
1162
- 3. Painel → Adicionar chave API
1163
-
1164
- **Usar:** `kimi/kimi-latest`
1165
-
1166
- **Dica profissional:** $9 fixos/mês para 10 milhões de tokens = $0,90/custo efetivo de 1 milhão!
1167
-
1168
- </details>
1169
-
1170
- <details>
1171
- <summary><b>🆓 Provedores GRATUITOS (backup de emergência)</b></summary>
1172
-
1173
- ### iFlow (8 modelos GRATUITOS)
1174
-
1175
- ```bash
1176
- Dashboard → Connect iFlow
1177
- → iFlow OAuth login
1178
- → Unlimited usage
1179
-
1180
- Models:
1181
- if/kimi-k2-thinking
1182
- if/qwen3-coder-plus
1183
- if/glm-4.7
1184
- if/minimax-m2
1185
- if/deepseek-r1
1186
- ```
1187
-
1188
- ### Qwen (3 modelos GRATUITOS)
1189
-
1190
- ```bash
1191
- Dashboard → Connect Qwen
1192
- → Device code authorization
1193
- → Unlimited usage
1194
-
1195
- Models:
1196
- qw/qwen3-coder-plus
1197
- qw/qwen3-coder-flash
1198
- ```
1199
-
1200
- ### Kiro (Claude GRÁTIS)
1201
-
1202
- ```bash
1203
- Dashboard → Connect Kiro
1204
- → AWS Builder ID or Google/GitHub
1205
- → Unlimited usage
1206
-
1207
- Models:
1208
- kr/claude-sonnet-4.5
1209
- kr/claude-haiku-4.5
1210
- ```
1211
-
1212
- </details>
1213
-
1214
- <details>
1215
- <summary><b>🎨 Criar Combos</b></summary>
1216
-
1217
- ### Exemplo 1: Maximize a assinatura → Backup barato
1218
-
1219
- ```
1220
- Dashboard → Combos → Create New
1221
-
1222
- Name: premium-coding
1223
- Models:
1224
- 1. cc/claude-opus-4-6 (Subscription primary)
1225
- 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
1226
- 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
1227
-
1228
- Use in CLI: premium-coding
1229
- ```
1230
-
1231
- ### Exemplo 2: somente gratuito (custo zero)
1232
-
1233
- ```
1234
- Name: free-combo
1235
- Models:
1236
- 1. gc/gemini-3-flash-preview (180K free/month)
1237
- 2. if/kimi-k2-thinking (unlimited)
1238
- 3. qw/qwen3-coder-plus (unlimited)
1239
-
1240
- Cost: $0 forever!
1241
- ```
1242
-
1243
- </details>
1244
-
1245
- <details>
1246
- <summary><b>🔧 Integração CLI</b></summary>
1247
-
1248
- ### Cursor IDE
1249
-
1250
- ```
1251
- Settings → Models → Advanced:
1252
- OpenAI API Base URL: http://localhost:20128/v1
1253
- OpenAI API Key: [from OmniRoute dashboard]
1254
- Model: cc/claude-opus-4-6
1255
- ```
1256
-
1257
- ### Código Cláudio
1258
-
1259
- Use a página **Ferramentas CLI** no painel para configuração com um clique ou edite `~/.claude/settings.json` manualmente.
1260
-
1261
- ### CLI do Codex
1262
-
1263
- ```bash
1264
- export OPENAI_BASE_URL="http://localhost:20128"
1265
- export OPENAI_API_KEY="your-omniroute-api-key"
1266
-
1267
- codex "your prompt"
1268
- ```
1269
-
1270
- ###OpenClaw
1271
-
1272
- **Opção 1 — Painel (recomendado):**
1273
-
1274
- ```
1275
- Dashboard → CLI Tools → OpenClaw → Select Model → Apply
1276
- ```
1277
-
1278
- **Opção 2 — Manual:** Editar `~/.openclaw/openclaw.json`:
1279
-
1280
- ```json
1281
- {
1282
- "models": {
1283
- "providers": {
1284
- "omniroute": {
1285
- "baseUrl": "http://127.0.0.1:20128/v1",
1286
- "apiKey": "sk_omniroute",
1287
- "api": "openai-completions"
1288
- }
1289
- }
1290
- }
1291
- }
1292
- ```
1293
-
1294
- > **Observação:** OpenClaw só funciona com OmniRoute local. Use `127.0.0.1` em vez de `localhost` para evitar problemas de resolução de IPv6.
1295
-
1296
- ### Cline / Continuar / RooCode
1297
-
1298
- ```
1299
- Settings → API Configuration:
1300
- Provider: OpenAI Compatible
1301
- Base URL: http://localhost:20128/v1
1302
- API Key: [from OmniRoute dashboard]
1303
- Model: if/kimi-k2-thinking
1304
- ```
1305
-
1306
- </details>
1307
-
1308
- ---
1309
-
1310
- ## 🐛 Solução de problemas
1311
-
1312
- <details>
1313
- <summary><b>Clique para expandir o guia de solução de problemas</b></summary>
1314
-
1315
- **"O modelo de linguagem não forneceu mensagens"**
1316
-
1317
- - Cota do provedor esgotada → Verifique o rastreador de cota do painel
1318
- - Solução: use o combo substituto ou mude para um nível mais barato
1319
-
1320
- ** Limitação de taxa **
1321
-
1322
- - Cota de assinatura esgotada → Fallback para GLM/MiniMax
1323
- - Adicionar combinação: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1324
-
1325
- **O token OAuth expirou**
1326
-
1327
- - Atualizado automaticamente pelo OmniRoute
1328
- - Se os problemas persistirem: Painel → Provedor → Reconectar
1329
-
1330
- **Custos elevados**
1331
-
1332
- - Verifique as estatísticas de uso em Painel → Custos
1333
- - Mude o modelo primário para GLM/MiniMax
1334
- - Use o nível gratuito (Gemini CLI, iFlow) para tarefas não críticas
1335
-
1336
- **Painel abre na porta errada**
1337
-
1338
- - Definir `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
1339
-
1340
- **Erros de sincronização na nuvem**
1341
-
1342
- - Verifique `BASE_URL` aponta para sua instância em execução
1343
- - Verifique os pontos `CLOUD_URL` para o endpoint de nuvem esperado
1344
- - Mantenha os valores `NEXT_PUBLIC_*` alinhados com os valores do lado do servidor
1345
-
1346
- **Primeiro login não funciona**
1347
-
1348
- - Verifique `INITIAL_PASSWORD` em `.env`
1349
- - Se não definida, a senha substituta é `123456`
1350
-
1351
- **Sem registros de solicitação**
1352
-
1353
- - Definir `ENABLE_REQUEST_LOGS=true` em `.env`
1354
-
1355
- **O teste de conexão mostra "Inválido" para provedores compatíveis com OpenAI**
1356
-
1357
- - Muitos provedores não expõem um endpoint `/models`
1358
- - OmniRoute v1.0.6+ inclui validação de fallback por meio de conclusões de chat
1359
- - Certifique-se de que o URL base inclua o sufixo `/v1`
1360
-
1361
- ### 🔐 OAuth
1362
-
1363
- <a name="oauth-em-servidor-remoto"></a>
1364
-
1365
- > **⚠️ IMPORTANTE para usuários com OmniRoute em VPS/Docker/servidor remoto**
1366
-
1367
- #### OAuth
1368
-
1369
- Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para autenticação. O Google exige que um `redirect_uri` usado no fluxo OAuth seja **exatamente** uma das URIs pré-cadastradas no Google Cloud Console do aplicativo.
1370
-
1371
- As credenciais OAuth incorporadas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
1372
-
1373
- ```
1374
- Error 400: redirect_uri_mismatch
1375
- ```
1376
-
1377
- #### Solução: Configure suas próprias credenciais OAuth
1378
-
1379
- Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com o URI do seu servidor.
1380
-
1381
- ####Passo a passo
1382
-
1383
- **1. Acesse o Console do Google Cloud**
1384
-
1385
- Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
1386
-
1387
- **2. Crie um novo ID de cliente OAuth 2.0**
1388
-
1389
- - Clique em **"+ Criar credenciais"** → **"ID do cliente OAuth"**
1390
- - Tipo de aplicativo: **"Aplicativo Web"**
1391
- - Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
1392
-
1393
- **3. Adicionar como URIs de redirecionamento autorizados**
1394
-
1395
- No campo **"URIs de redirecionamento autorizados"**, adicionado:
1396
-
1397
- ```
1398
- https://seu-servidor.com/callback
1399
- ```
1400
-
1401
- > Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
1402
-
1403
- **4. Salve e copie as credenciais**
1404
-
1405
- Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
1406
-
1407
- **5. Configurar como variáveis de ambiente**
1408
-
1409
- No seu `.env` (ou nas variáveis de ambiente do Docker):
1410
-
1411
- ```bash
1412
- # Para Antigravity:
1413
- ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1414
- ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1415
-
1416
- # Para Gemini CLI:
1417
- GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1418
- GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1419
- GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1420
- ```
1421
-
1422
- **6. Reinicie o OmniRoute**
1423
-
1424
- ```bash
1425
- # Se usando npm:
1426
- npm run dev
1427
-
1428
- # Se usando Docker:
1429
- docker restart omniroute
1430
- ```
1431
-
1432
- **7. Tente conectar novamente**
1433
-
1434
- Painel → Provedores → Antigravidade (ou Gemini CLI) → OAuth
1435
-
1436
- Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
1437
-
1438
- ---
1439
-
1440
- #### Solução alternativa temporária (sem configurar credenciais próprias)
1441
-
1442
- Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
1443
-
1444
- 1. O OmniRoute abrirá uma URL de autorização do Google
1445
- 2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
1446
- 3. **Copie a URL completa** da barra de endereço do seu navegador (mesmo que a página não carregue)
1447
- 4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
1448
- 5. Clique em **"Conectar"**
1449
-
1450
- > Esta solução alternativa funciona porque o código de autorização na URL é válido, independentemente do redirecionamento ter sido carregado ou não.
1451
-
1452
- </details>
1453
-
1454
- ---
1455
-
1456
- ## 🛠️
1457
-
1458
- - **Tempo de execução**: Node.js 18–22 LTS (⚠️ Node.js 24+ **não é compatível** — `better-sqlite3` binários nativos são incompatíveis)
1459
- - **Idioma**: TypeScript 5.9 — **100% TypeScript** em `src/` e `open-sse/` (v1.0.6)
1460
- - **Estrutura**: Next.js 16 + React 19 + Tailwind CSS 4
1461
- - **Banco de dados**: LowDB (JSON) + SQLite (estado do domínio + logs de proxy)
1462
- - **Streaming**: eventos enviados pelo servidor (SSE)
1463
- - **Autenticação**: OAuth 2.0 (PKCE) + JWT + chaves de API
1464
- - **Testes**: executor de testes Node.js (mais de 368 testes de unidade)
1465
- - **CI/CD**: GitHub Actions (publicação automática de npm + Docker Hub no lançamento)
1466
- - **Site**: [omniroute.online](https://omniroute.online)
1467
- - **Pacote**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1468
- - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1469
- - **Resiliência**: Disjuntor, espera exponencial, rebanho anti-trovão, falsificação de TLS
1470
-
1471
- ---
1472
-
1473
- ## 📖 Documentação
1474
-
1475
- | Documento | Descrição |
1476
- | -------------------------------------------- | ------------------------------------------------------ |
1477
- | [User Guide](docs/USER_GUIDE.md) | Provedores, combos, integração CLI, implantação |
1478
- | [API Reference](docs/API_REFERENCE.md) | Todos os endpoints com exemplos |
1479
- | [Troubleshooting](docs/TROUBLESHOOTING.md) | Problemas e soluções comuns |
1480
- | [Architecture](docs/ARCHITECTURE.md) | Arquitetura do sistema e componentes internos |
1481
- | [Contributing](CONTRIBUTING.md) | Configuração e diretrizes de desenvolvimento |
1482
- | [OpenAPI Spec](docs/openapi.yaml) | Especificação OpenAPI 3.0 |
1483
- | [Security Policy](SECURITY.md) | Relatórios de vulnerabilidades e práticas de segurança |
1484
- | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Guia completo: configuração de VM + nginx + Cloudflare |
1485
- | [Features Gallery](docs/FEATURES.md) | Tour visual do painel com capturas de tela |
1486
-
1487
- ### 📸 Visualização do painel
1488
-
1489
- <details>
1490
- <summary><b>Clique para ver as capturas de tela do painel</b></summary>
1491
-
1492
- | Página | Captura de tela |
1493
- | -------------------- | ------------------------------------------------- |
1494
- | **Fornecedores** | ![Providers](docs/screenshots/01-providers.png) |
1495
- | **Combos** | ![Combos](docs/screenshots/02-combos.png) |
1496
- | **Análise** | ![Analytics](docs/screenshots/03-analytics.png) |
1497
- | **Saúde** | ![Health](docs/screenshots/04-health.png) |
1498
- | **Tradutor** | ![Translator](docs/screenshots/05-translator.png) |
1499
- | **Configurações** | ![Settings](docs/screenshots/06-settings.png) |
1500
- | **Ferramentas CLI** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1501
- | **Registros de uso** | ![Usage](docs/screenshots/08-usage.png) |
1502
- | **Ponto final** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1503
-
1504
- </details>
1505
-
1506
- ---
1507
-
1508
- ## 🗺️
1509
-
1510
- OmniRoute tem **210+ recursos planejados** em diversas fases de desenvolvimento. Aqui estão as principais áreas:
1511
-
1512
- | Categoria | Recursos planejados | Destaques |
1513
- | --------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------ |
1514
- | 🧠 **Roteamento e Inteligência** | 25+ | Roteamento de menor latência, roteamento baseado em tags, simulação de cota, seleção de conta P2C |
1515
- | 🔒 **Segurança e Conformidade** | 20+ | Proteção SSRF, camuflagem de credenciais, limite de taxa por endpoint, escopo de chave de gerenciamento |
1516
- | 📊 **Observabilidade** | 15+ | Integração OpenTelemetry, monitoramento de cotas em tempo real, rastreamento de custos por modelo |
1517
- | 🔄 **Integrações com Provedores** | 20+ | Registro de modelo dinâmico, resfriamento de provedor, Codex multicontas, análise de cotas do Copilot |
1518
- | ⚡ **Desempenho** | 15+ | Camada de cache dupla, cache de prompt, cache de resposta, manutenção de atividade de streaming, API em lote |
1519
- | 🌐 **Ecossistema** | 10+ | API WebSocket, configuração hot-reload, armazenamento de configuração distribuído, modo comercial |
1520
-
1521
- ### 🔜 Em breve
1522
-
1523
- - 🔗 **Integração OpenCode** — Suporte de provedor nativo para o IDE de codificação OpenCode AI
1524
- - 🔗 **Integração TRAE** — Suporte total para a estrutura de desenvolvimento TRAE AI
1525
- - 📦 **API Batch** — Processamento assíncrono em lote para solicitações em massa
1526
- - 🎯 **Roteamento baseado em tags** — Roteie solicitações com base em tags personalizadas e metadados
1527
- - 💰 **Estratégia de custo mais baixo** — Selecione automaticamente o provedor mais barato disponível
1528
-
1529
- > 📝 Especificações completas de recursos disponíveis em [link](docs/new-features/) (217 especificações detalhadas)
1530
-
1531
- ---
1532
-
1533
- ## 👥 Colaboradores
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
- ### Como contribuir
1538
-
1539
- 1. Bifurque o repositório
1540
- 2. Crie sua ramificação de recursos (`git checkout -b feature/amazing-feature`)
1541
- 3. Confirme suas alterações (`git commit -m 'Add amazing feature'`)
1542
- 4. Envie para a ramificação (`git push origin feature/amazing-feature`)
1543
- 5. Abra uma solicitação pull
1544
-
1545
- Consulte [CONTRIBUTING.md](CONTRIBUTING.md) para obter diretrizes detalhadas.
1546
-
1547
- ### Lançando uma nova versão
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
- ## 📊 História das Estrelas
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
- ## 🙏 Agradecimentos
1569
-
1570
- Agradecimentos especiais a **[9router](https://github.com/decolua/9router)** de **[decolua](https://github.com/decolua)** — o projeto original que inspirou este fork. OmniRoute se baseia nessa base incrível com recursos adicionais, APIs multimodais e uma reescrita completa do TypeScript.
1571
-
1572
- Agradecimentos especiais a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — a implementação Go original que inspirou esta versão JavaScript.
1573
-
1574
- ---
1575
-
1576
- ## 📄 Licença
1577
-
1578
- Licença MIT - consulte [LICENSE](LICENSE) para obter detalhes.
1579
-
1580
- ---
1581
-
1582
- <div align="center">
1583
- <sub>Construído com ❤️ para desenvolvedores que codificam 24 horas por dia, 7 dias por semana</sub>
1584
- <br/>
1585
- <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1586
- </div>