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-BR.md DELETED
@@ -1,1499 +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 programar. Roteamento inteligente para **modelos de IA GRATUITOS e baratos** com fallback automático.
7
-
8
- _Seu proxy de API universal — um endpoint, 36+ provedores, zero tempo de inatividade._
9
-
10
- **Chat Completions • Embeddings • Geração de Imagem • Vídeo • Música • Áudio • Reranking • 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 programação favoritos
27
-
28
- _Conecte qualquer IDE ou ferramenta CLI com IA através do OmniRoute — gateway de API gratuito para programaçã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 e cota ilimitados</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) • [🚀 Início Rápido](#-início-rápido) • [💡 Funcionalidades](#-funcionalidades-principais) • [📖 Docs](#-documentação) • [💰 Preços](#-preços-resumidos)
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 bater em limites:**
157
-
158
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Cota de assinatura expira sem uso todo mês
159
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Limites de taxa param você no meio da programação
160
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> APIs caras ($20-50/mês por provedor)
161
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Trocar manualmente entre provedores
162
-
163
- **OmniRoute resolve isso:**
164
-
165
- - ✅ **Maximize assinaturas** - Rastreie cotas, use tudo antes do reset
166
- - ✅ **Fallback automático** - Assinatura → API Key → Barato → Gratuito, zero tempo de inatividade
167
- - ✅ **Multi-conta** - 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
- > 💬 **Participe da comunidade!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Tire dúvidas, compartilhe dicas e fique atualizado.
175
-
176
- - **Website**: [omniroute.online](https://omniroute.online)
177
- - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
178
- - **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
179
- - **WhatsApp**: [Grupo da Comunidade](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
180
- - **Projeto Original**: [9router por decolua](https://github.com/decolua/9router)
181
-
182
- ---
183
-
184
- ## 🔄 Como Funciona
185
-
186
- ```
187
- ┌─────────────┐
188
- │ Sua CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
189
- │ Tool │
190
- └──────┬──────┘
191
- │ http://localhost:20128/v1
192
-
193
- ┌─────────────────────────────────────────┐
194
- │ OmniRoute (Roteador Inteligente) │
195
- │ • Tradução de formato (OpenAI ↔ Claude) │
196
- │ • Rastreamento de cota + Embeddings + Imagens │
197
- │ • Renovação automática de tokens │
198
- └──────┬──────────────────────────────────┘
199
-
200
- ├─→ [Tier 1: ASSINATURA] Claude Code, Codex, Gemini CLI
201
- │ ↓ cota esgotada
202
- ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
203
- │ ↓ limite de orçamento
204
- ├─→ [Tier 3: BARATO] GLM ($0.6/1M), MiniMax ($0.2/1M)
205
- │ ↓ limite de orçamento
206
- └─→ [Tier 4: GRATUITO] iFlow, Qwen, Kiro (ilimitado)
207
-
208
- Resultado: Nunca pare de programar, custo mínimo
209
- ```
210
-
211
- ---
212
-
213
- ## 🎯 O que o OmniRoute resolve — 30 dores reais 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 estouro de custos e bloqueios regionais até operações de protocolo e observabilidade de nível produção.
216
-
217
- <details>
218
- <summary><b>💸 1. "Pago uma assinatura cara e ainda sou interrompido por limites"</b></summary>
219
-
220
- Desenvolvedores pagam de $20 a $200/mês por Claude Pro, Codex Pro ou GitHub Copilot. Mesmo pagando, há teto de cota, limite de 5h, limites semanais ou por minuto. No meio da sessão de coding, o provedor para de responder e o desenvolvedor perde fluxo e produtividade.
221
-
222
- **Como o OmniRoute resolve isso:**
223
-
224
- - **Fallback Inteligente em 4 Tiers** — Se a cota de assinatura acabar, redireciona automaticamente para API Key → Barato → Gratuito sem intervenção manual
225
- - **Rastreamento de Cota em Tempo Real** — Exibe consumo de tokens ao vivo com contagem regressiva de reset (5h, diário, semanal)
226
- - **Suporte Multi-Conta** — Várias contas por provedor com round-robin automático; quando uma esgota, passa para a próxima
227
- - **Combos Personalizados** — Cadeias de fallback customizáveis com 6 estratégias (fill-first, round-robin, P2C, aleatório, least-used, cost-optimized)
228
- - **Cotas Business do Codex** — Monitoramento de cota de workspace Business/Team direto no dashboard
229
-
230
- </details>
231
-
232
- <details>
233
- <summary><b>🔌 2. "Preciso usar múltiplos provedores, mas cada um tem uma API diferente"</b></summary>
234
-
235
- OpenAI usa um formato, Claude (Anthropic) usa outro, Gemini usa outro. Se o dev quer testar modelos de provedores diferentes ou fazer fallback entre eles, precisa reconfigurar SDKs, trocar endpoints e lidar com formatos incompatíveis. Provedores customizados (FriendLI, NIM) também têm endpoints não padronizados.
236
-
237
- **Como o OmniRoute resolve isso:**
238
-
239
- - **Endpoint Unificado** — Um único `http://localhost:20128/v1` serve como proxy para 36+ provedores
240
- - **Tradução de Formato** — Conversão automática e transparente: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
241
- - **Sanitização de Resposta** — Remove campos fora do padrão (`x_groq`, `usage_breakdown`, `service_tier`) que quebram OpenAI SDK v1.83+
242
- - **Normalização de Roles** — Converte `developer` → `system` para provedores não-OpenAI; `system` → `user` para GLM/ERNIE
243
- - **Extração de Tags Think** — Extrai blocos `<think>` de modelos como DeepSeek R1 para `reasoning_content` padronizado
244
- - **Saída Estruturada no Gemini** — Conversão automática de `json_schema` → `responseMimeType`/`responseSchema`
245
- - **`stream` padrão `false`** — Alinha com a especificação OpenAI e evita 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 acesso em determinadas regiões. Usuários recebem erros como `unsupported_country_region_territory` durante OAuth e conexões de API. Isso é especialmente frustrante para desenvolvedores de países emergentes.
253
-
254
- **Como o OmniRoute resolve isso:**
255
-
256
- - **Config de Proxy em 3 Níveis** — Proxy configurável em nível global (todo tráfego), por provedor e por conexão/chave
257
- - **Badges de Proxy por Cor** — Indicadores visuais: 🟢 proxy global, 🟡 proxy do provedor, 🔵 proxy da conexão, sempre mostrando o IP
258
- - **Troca de Token OAuth via Proxy** — O fluxo OAuth também passa pelo proxy, resolvendo `unsupported_country_region_territory`
259
- - **Teste de Conexão via Proxy** — Testes usam o proxy configurado (sem bypass direto)
260
- - **Suporte SOCKS5** — Suporte completo a proxy SOCKS5 para roteamento de saída
261
- - **Spoofing de Impressão TLS** — Fingerprint TLS estilo navegador via `wreq-js` para contornar detecção de bot
262
-
263
- </details>
264
-
265
- <details>
266
- <summary><b>🆓 4. "Quero usar IA para programar, mas não tenho dinheiro"</b></summary>
267
-
268
- Nem todo mundo pode pagar $20–200/mês em assinaturas de IA. Estudantes, devs de países emergentes, hobistas e freelancers precisam de acesso a modelos de qualidade com custo zero.
269
-
270
- **Como o OmniRoute resolve isso:**
271
-
272
- - **Provedores Gratuitos nativos** — Suporte nativo a provedores 100% free: iFlow (8 modelos ilimitados), Qwen (3 ilimitados), Kiro (Claude grátis), Gemini CLI (180K/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 Apenas Gratuitos** — Cadeia `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/mês com zero downtime
275
- - **Créditos Gratuitos NVIDIA NIM** — 1000 créditos free integrados
276
- - **Estratégia Cost Optimized** — Estratégia 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 na rede (LAN, VPS, Docker), qualquer pessoa com o endereço pode consumir tokens/cota do desenvolvedor. Sem proteção, as APIs ficam vulneráveis a uso indevido, prompt injection e abuso.
284
-
285
- **Como o OmniRoute resolve isso:**
286
-
287
- - **Gestão de API Keys** — Geração, rotação e escopo por provedor com página dedicada em `/dashboard/api-manager`
288
- - **Permissões por Modelo** — Restringe chaves a modelos específicos (`openai/*`, padrões wildcard), com toggle Allow All/Restrict
289
- - **Proteção de Endpoint de API** — Exige chave para `/v1/models` e bloqueia provedores específicos da listagem
290
- - **Auth Guard + CSRF Protection** — Todas as rotas do dashboard protegidas com middleware `withAuth` + tokens CSRF
291
- - **Rate Limiter** — Limite por IP com janelas configuráveis
292
- - **Filtragem por IP** — Allowlist/blocklist para controle de acesso
293
- - **Proteção contra Prompt Injection** — Sanitização contra padrões maliciosos
294
- - **Criptografia AES-256-GCM** — Credenciais criptografadas em repouso
295
-
296
- </details>
297
-
298
- <details>
299
- <summary><b>🛑 6. "Meu provedor caiu e eu perdi meu fluxo de programação"</b></summary>
300
-
301
- Provedores de IA podem ficar instáveis, retornar erro 5xx ou atingir limites temporários de taxa. Se o dev depende de um único provedor, ele é interrompido. Sem circuit breaker, retries repetidos podem derrubar a aplicação.
302
-
303
- **Como o OmniRoute resolve isso:**
304
-
305
- - **Circuit Breaker por modelo** — Abre/fecha automaticamente com limiares e cooldown configuráveis (Closed/Open/Half-Open)
306
- - **Exponential Backoff** — Atrasos progressivos de retry
307
- - **Anti-Thundering Herd** — Proteção com mutex + semáforo contra tempestade de retries concorrentes
308
- - **Cadeias de Fallback em Combo** — Se o primário falhar, avança automaticamente na cadeia sem intervenção
309
- - **Circuit Breaker de Combo** — Desativa automaticamente provedores com falha dentro da cadeia
310
- - **Health Dashboard** — Monitoramento de uptime, estados de breaker, lockouts, estatísticas de cache e latência p50/p95/p99
311
-
312
- </details>
313
-
314
- <details>
315
- <summary><b>🔧 7. "Configurar cada ferramenta de IA é tedioso e repetitivo"</b></summary>
316
-
317
- Desenvolvedores usam Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Cada ferramenta pede configuração diferente (endpoint, chave, modelo). Reconfigurar ao trocar de provedor ou modelo é perda de tempo.
318
-
319
- **Como o OmniRoute resolve isso:**
320
-
321
- - **Dashboard de Ferramentas CLI** — Página dedicada com setup em 1 clique para Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity e Cline
322
- - **Gerador de Config do GitHub Copilot** — Gera `chatLanguageModels.json` para VS Code com seleção em lote de modelos
323
- - **Onboarding Wizard** — Fluxo guiado de 4 etapas para novos usuários
324
- - **Um endpoint para todos os modelos** — Configure `http://localhost:20128/v1` uma vez e acesse 36+ provedores
325
-
326
- </details>
327
-
328
- <details>
329
- <summary><b>🔑 8. "Gerenciar tokens OAuth de múltiplos provedores é um caos"</b></summary>
330
-
331
- Claude Code, Codex, Gemini CLI e Copilot usam OAuth 2.0 com tokens que expiram. Devs precisam reautenticar o tempo todo e lidar com erros como `client_secret is missing`, `redirect_uri_mismatch` e falhas em servidores remotos. OAuth em LAN/VPS é especialmente problemático.
332
-
333
- **Como o OmniRoute resolve isso:**
334
-
335
- - **Auto Token Refresh** — Tokens OAuth renovados em background antes da expiração
336
- - **OAuth 2.0 (PKCE) nativo** — Fluxo automático para Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen e iFlow
337
- - **OAuth Multi-Conta** — Múltiplas contas por provedor via extração de JWT/ID token
338
- - **Correções OAuth LAN/Remoto** — Detecção de IP privado para `redirect_uri` + modo manual de URL para servidores remotos
339
- - **OAuth atrás de Nginx** — Usa `window.location.origin` para compatibilidade com reverse proxy
340
- - **Guia de OAuth Remoto** — Passo a passo para credenciais Google Cloud em VPS/Docker
341
-
342
- </details>
343
-
344
- <details>
345
- <summary><b>📊 9. "Não sei quanto estou gastando nem onde"</b></summary>
346
-
347
- Desenvolvedores usam vários provedores pagos, mas não têm visão unificada de gastos. Cada provedor tem seu dashboard de billing, sem consolidação. Custos inesperados podem se acumular.
348
-
349
- **Como o OmniRoute resolve isso:**
350
-
351
- - **Dashboard de Analytics de Custo** — Rastreamento de custo por token e gestão de orçamento por provedor
352
- - **Limites de Orçamento por Tier** — Teto de gasto por tier que aciona fallback automático
353
- - **Configuração de Preço por Modelo** — Preços configuráveis por modelo
354
- - **Estatísticas de Uso por API Key** — Contagem de requests e timestamp de último uso por chave
355
- - **Analytics Dashboard** — Cards, gráfico de uso por modelo e tabela de provedores com taxa de sucesso e latência
356
-
357
- </details>
358
-
359
- <details>
360
- <summary><b>🐛 10. "Não consigo diagnosticar erros e problemas nas chamadas de IA"</b></summary>
361
-
362
- Quando uma chamada falha, o dev não sabe se foi rate limit, token expirado, formato incorreto ou erro do provedor. Logs ficam fragmentados em terminais diferentes. Sem observabilidade, debug vira tentativa e erro.
363
-
364
- **Como o OmniRoute resolve isso:**
365
-
366
- - **Dashboard de Logs Unificado** — 4 abas: Request Logs, Proxy Logs, Audit Logs e Console
367
- - **Visualizador de Console** — Viewer em tempo real estilo terminal com níveis por cor, auto-scroll, busca e filtros
368
- - **Proxy Logs em SQLite** — Logs persistentes que sobrevivem a reinícios do servidor
369
- - **Playground do Tradutor** — 4 modos de debug: Playground (tradução), Chat Tester (round-trip), Test Bench (lote), Live Monitor (tempo real)
370
- - **Telemetria de Request** — Latência p50/p95/p99 + rastreamento por X-Request-Id
371
- - **Logging em Arquivo com Rotação** — Interceptador de console grava tudo em JSON com rotação por tamanho
372
-
373
- </details>
374
-
375
- <details>
376
- <summary><b>🏗️ 11. "Implantar e manter o gateway é complexo"</b></summary>
377
-
378
- Instalar, configurar e manter um proxy de IA em ambientes diferentes (local, VPS, Docker, cloud) exige muito trabalho. Problemas como caminhos hardcoded, `EACCES` em diretórios, conflito de portas e build cross-platform aumentam a fricção.
379
-
380
- **Como o OmniRoute resolve isso:**
381
-
382
- - **Instalação global via npm** — `npm install -g omniroute && omniroute` e pronto
383
- - **Docker Multi-Platform** — AMD64 + ARM64 nativo (Apple Silicon, AWS Graviton, Raspberry Pi)
384
- - **Perfis Docker Compose** — `base` (sem ferramentas CLI) e `cli` (com Claude Code, Codex, OpenClaw)
385
- - **App Desktop Electron** — App nativo para Windows/macOS/Linux com bandeja, auto-start e modo offline
386
- - **Modo de Porta Separada** — API e Dashboard em portas distintas para cenários avançados (reverse proxy, rede de containers)
387
- - **Cloud Sync** — Sincronização de configuração entre dispositivos via Cloudflare Workers
388
- - **Backups de DB** — Backup automático, restauração, export e import de todas as configurações
389
-
390
- </details>
391
-
392
- <details>
393
- <summary><b>🌍 12. "A interface é só em inglês e meu time não fala inglês"</b></summary>
394
-
395
- Times em países não anglófonos, especialmente na América Latina, Ásia e Europa, sofrem com interfaces só em inglês. A barreira de idioma reduz adoção e aumenta erros de configuração.
396
-
397
- **Como o OmniRoute resolve isso:**
398
-
399
- - **i18n do Dashboard — 30 idiomas** — Mais de 500 chaves 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 e inglês
400
- - **Suporte RTL** — Suporte right-to-left para árabe e hebraico
401
- - **READMEs multilíngues** — 30 traduções completas de documentação
402
- - **Seletor de Idioma** — Ícone de globo no header para troca em tempo real
403
-
404
- </details>
405
-
406
- <details>
407
- <summary><b>🔄 13. "Preciso de mais do que chat: embeddings, imagens, áudio"</b></summary>
408
-
409
- IA não é só chat completion. Devs precisam gerar imagens, transcrever áudio, criar embeddings para RAG, reranquear documentos e moderar conteúdo. Cada API tem endpoint e formato diferentes.
410
-
411
- **Como o OmniRoute resolve isso:**
412
-
413
- - **Embeddings** — `/v1/embeddings` com 6 provedores e 9+ modelos
414
- - **Geração de Imagem** — `/v1/images/generations` com 10 provedores e 20+ modelos (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
415
- - **Texto para Vídeo** — `/v1/videos/generations` com ComfyUI (AnimateDiff, SVD) e SD WebUI
416
- - **Texto para Música** — `/v1/music/generations` com ComfyUI (Stable Audio Open, MusicGen)
417
- - **Transcrição de Áudio** — `/v1/audio/transcriptions` com Whisper + Nvidia NIM, HuggingFace e Qwen3
418
- - **Texto para Fala (TTS)** — `/v1/audio/speech` com ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise e Qwen3
419
- - **Moderações** — `/v1/moderations` para checagens de segurança de conteúdo
420
- - **Reranking** — `/v1/rerank` para relevância de documentos
421
- - **Responses API** — Suporte completo a `/v1/responses` para Codex
422
-
423
- </details>
424
-
425
- <details>
426
- <summary><b>🧪 14. "Não tenho como testar e comparar qualidade entre modelos"</b></summary>
427
-
428
- Desenvolvedores querem saber qual modelo é melhor para cada caso de uso (código, tradução, raciocínio), mas comparar manualmente é lento. Não existem ferramentas integradas de avaliação na maioria das stacks.
429
-
430
- **Como o OmniRoute resolve isso:**
431
-
432
- - **Avaliações de LLM** — Golden set com 10 casos pré-carregados cobrindo saudação, matemática, geografia, geração de código, conformidade JSON, tradução, markdown e recusa de conteúdo inseguro
433
- - **4 Estratégias de Match** — `exact`, `contains`, `regex`, `custom` (função JS)
434
- - **Test Bench do Playground do Tradutor** — Testes em lote com múltiplas entradas/saídas esperadas e comparação entre provedores
435
- - **Chat Tester** — Round-trip completo com renderização visual da resposta
436
- - **Live Monitor** — Stream em tempo real de todas as requisições que passam pelo proxy
437
-
438
- </details>
439
-
440
- <details>
441
- <summary><b>📈 15. "Preciso escalar sem perder performance"</b></summary>
442
-
443
- À medida que o volume cresce, sem cache as mesmas perguntas geram custos duplicados. Sem idempotência, requisições duplicadas desperdiçam processamento. Também é necessário respeitar rate limits por provedor.
444
-
445
- **Como o OmniRoute resolve isso:**
446
-
447
- - **Cache Semântico** — Cache em duas camadas (assinatura + semântico) para reduzir custo e latência
448
- - **Idempotência de Request** — Janela de deduplicação de 5s para requisições idênticas
449
- - **Detecção de Rate Limit** — Rastreamento por provedor de RPM, intervalo mínimo e concorrência máxima
450
- - **Rate Limits Editáveis** — Padrões configuráveis em Settings → Resilience com persistência
451
- - **Cache de Validação de API Key** — Cache em 3 camadas para performance em produção
452
- - **Health Dashboard com Telemetria** — Latência p50/p95/p99, estatísticas de cache e uptime
453
-
454
- </details>
455
-
456
- <details>
457
- <summary><b>🤖 16. "Quero controlar o comportamento dos modelos globalmente"</b></summary>
458
-
459
- Desenvolvedores podem querer todas as respostas em um idioma específico, com tom específico ou com limite de tokens de raciocínio. Configurar isso em cada ferramenta/requisição é impraticável.
460
-
461
- **Como o OmniRoute resolve isso:**
462
-
463
- - **Injeção de System Prompt** — Prompt global aplicado a todas as requisições
464
- - **Validação de Thinking Budget** — Controle de alocação de tokens de raciocínio por requisição (passthrough, auto, custom, adaptive)
465
- - **6 Estratégias de Roteamento** — Estratégias globais que definem como as requisições são distribuídas
466
- - **Wildcard Router** — Padrões `provider/*` roteiam dinamicamente para qualquer provedor
467
- - **Toggle de Combo** — Ativa/desativa combos diretamente no dashboard
468
- - **Toggle de Provedor** — Ativa/desativa todas as conexões de um provedor com um clique
469
- - **Provedores Bloqueados** — Exclui provedores específicos da listagem de `/v1/models`
470
-
471
- </details>
472
-
473
- <details>
474
- <summary><b>🧰 17. "Preciso de ferramentas MCP como capacidades de primeira classe do produto"</b></summary>
475
-
476
- Muitos gateways de IA expõem MCP apenas como detalhe de implementação oculto. Times precisam de uma camada operacional visível e gerenciável.
477
-
478
- **Como o OmniRoute resolve isso:**
479
-
480
- - MCP aparece no menu do dashboard e na aba de protocolos em Endpoint
481
- - Página dedicada de gestão MCP com processo, ferramentas, escopos e auditoria
482
- - Quick-start embutido para `omniroute --mcp` e onboarding de clientes
483
-
484
- </details>
485
-
486
- <details>
487
- <summary><b>🧠 18. "Preciso de orquestração A2A com caminhos síncronos + streaming"</b></summary>
488
-
489
- Fluxos de agentes precisam de respostas diretas e também de execuções longas com streaming e controle de ciclo de vida.
490
-
491
- **Como o OmniRoute resolve isso:**
492
-
493
- - Endpoint A2A JSON-RPC (`POST /a2a`) com `message/send` e `message/stream`
494
- - Streaming SSE com propagação de estado terminal
495
- - APIs de ciclo de vida de tarefas para `tasks/get` e `tasks/cancel`
496
-
497
- </details>
498
-
499
- <details>
500
- <summary><b>🛰️ 19. "Preciso de saúde real do processo MCP, não status estimado"</b></summary>
501
-
502
- Times operacionais precisam saber se o MCP está realmente ativo, não apenas se uma API está respondendo.
503
-
504
- **Como o OmniRoute resolve isso:**
505
-
506
- - Arquivo de heartbeat em runtime com PID, timestamps, transporte, quantidade de ferramentas e modo de escopo
507
- - API de status MCP combinando heartbeat + atividade recente
508
- - Cards de status na UI para processo/uptime/frescor do heartbeat
509
-
510
- </details>
511
-
512
- <details>
513
- <summary><b>📋 20. "Preciso de execução auditável das ferramentas MCP"</b></summary>
514
-
515
- Quando ferramentas alteram configuração ou disparam ações operacionais, os times precisam de rastreabilidade forense.
516
-
517
- **Como o OmniRoute resolve isso:**
518
-
519
- - Auditoria de chamadas MCP baseada em SQLite
520
- - Filtros por ferramenta, sucesso/falha, chave de API e paginação
521
- - Tabela de auditoria no dashboard + endpoints de métricas para automação
522
-
523
- </details>
524
-
525
- <details>
526
- <summary><b>🔐 21. "Preciso de permissões MCP por escopo para cada integração"</b></summary>
527
-
528
- Clientes diferentes devem operar com privilégio mínimo por categoria de ferramenta.
529
-
530
- **Como o OmniRoute resolve isso:**
531
-
532
- - 9 escopos MCP granulares para controle de acesso às ferramentas
533
- - Aplicação de escopo e visibilidade na UI de gestão MCP
534
- - Postura segura por padrão para operações sensíveis
535
-
536
- </details>
537
-
538
- <details>
539
- <summary><b>⚙️ 22. "Preciso de controles operacionais sem redeploy"</b></summary>
540
-
541
- Times precisam de mudanças rápidas em runtime durante incidentes e picos de custo.
542
-
543
- **Como o OmniRoute resolve isso:**
544
-
545
- - Troca de ativação de combo direto no dashboard de MCP
546
- - Aplicação de perfis de resiliência via pacotes de política prontos
547
- - Reset de circuit breaker no mesmo painel operacional
548
-
549
- </details>
550
-
551
- <details>
552
- <summary><b>🔄 23. "Preciso de visibilidade ao vivo do ciclo de vida A2A e cancelamento"</b></summary>
553
-
554
- Sem visibilidade de lifecycle, incidentes de tarefas ficam difíceis de investigar e corrigir.
555
-
556
- **Como o OmniRoute resolve isso:**
557
-
558
- - Listagem/filtragem de tarefas por estado/skill com paginação
559
- - Drill-down de metadados, eventos e artefatos da tarefa
560
- - Endpoint de cancelamento + ação de UI com confirmação
561
-
562
- </details>
563
-
564
- <details>
565
- <summary><b>🌊 24. "Preciso de métricas de streams ativos para carga A2A"</b></summary>
566
-
567
- Fluxos em streaming exigem visão operacional de concorrência e conexões ativas.
568
-
569
- **Como o OmniRoute resolve isso:**
570
-
571
- - Contadores de streams ativos integrados ao status A2A
572
- - Timestamp da última tarefa e contagens por estado
573
- - Cards no dashboard A2A para monitoramento operacional em tempo real
574
-
575
- </details>
576
-
577
- <details>
578
- <summary><b>🪪 25. "Preciso de descoberta padrão de agente para clientes"</b></summary>
579
-
580
- Clientes externos e orquestradores precisam de metadados legíveis por máquina para onboarding automático.
581
-
582
- **Como o OmniRoute resolve isso:**
583
-
584
- - Agent Card exposto em `/.well-known/agent.json`
585
- - Capacidades e skills exibidas na UI de gestão
586
- - API de status A2A inclui metadados de descoberta para automação
587
-
588
- </details>
589
-
590
- <details>
591
- <summary><b>🧭 26. "Preciso de descobribilidade de protocolos na experiência do produto"</b></summary>
592
-
593
- Se os usuários não encontram superfícies de protocolo, adoção e qualidade de suporte caem.
594
-
595
- **Como o OmniRoute resolve isso:**
596
-
597
- - Entradas MCP e A2A na sidebar
598
- - Aba Protocolos em Endpoint com quick-start e status
599
- - Links do overview para dashboards dedicados de gestão
600
-
601
- </details>
602
-
603
- <details>
604
- <summary><b>🧪 27. "Preciso de validação end-to-end de protocolo com clientes reais"</b></summary>
605
-
606
- Testes mockados não bastam para validar compatibilidade de protocolo antes do release.
607
-
608
- **Como o OmniRoute resolve isso:**
609
-
610
- - Suíte E2E que sobe a aplicação e usa transporte real do SDK MCP
611
- - Testes de cliente A2A para discovery, send, stream, get e cancel
612
- - Cross-check das validações com APIs de auditoria MCP e tarefas A2A
613
-
614
- </details>
615
-
616
- <details>
617
- <summary><b>📡 28. "Preciso de observabilidade unificada em todas as interfaces"</b></summary>
618
-
619
- Separar observabilidade por protocolo cria pontos cegos e aumenta o MTTR.
620
-
621
- **Como o OmniRoute resolve isso:**
622
-
623
- - Dashboards/logs/analytics unificados no mesmo produto
624
- - Saúde + auditoria + telemetria de requisição em OpenAI, MCP e A2A
625
- - APIs operacionais de status para automação
626
-
627
- </details>
628
-
629
- <details>
630
- <summary><b>💼 29. "Preciso de um runtime único para proxy + tools + orquestração de agentes"</b></summary>
631
-
632
- Manter vários serviços separados aumenta custo operacional e modos de falha.
633
-
634
- **Como o OmniRoute resolve isso:**
635
-
636
- - Proxy OpenAI-compatible, servidor MCP e servidor A2A na mesma stack
637
- - Autenticação, resiliência, armazenamento e observabilidade compartilhados
638
- - Modelo de políticas consistente em todas as superfícies de interação
639
-
640
- </details>
641
-
642
- <details>
643
- <summary><b>🚀 30. "Preciso entregar workflows agênticos sem sprawl de glue code"</b></summary>
644
-
645
- Times perdem velocidade quando precisam costurar múltiplos serviços e scripts ad hoc.
646
-
647
- **Como o OmniRoute resolve isso:**
648
-
649
- - Estratégia de endpoint unificada para clientes e agentes
650
- - UIs de gestão de protocolo e fluxos de validação/smoke embutidos
651
- - Base pronta para produção (segurança, logging, resiliência e backup)
652
-
653
- </details>
654
-
655
- ### Exemplos de Playbooks (Casos de Uso Integrados)
656
-
657
- **Playbook A: Maximizar assinatura paga + backup barato**
658
-
659
- ```txt
660
- Combo: "maximize-claude"
661
- 1. cc/claude-opus-4-6
662
- 2. glm/glm-4.7
663
- 3. if/kimi-k2-thinking
664
-
665
- Custo mensal: $20 + pequeno gasto de backup
666
- Resultado: qualidade maior, interrupção quase zero
667
- ```
668
-
669
- **Playbook B: Stack de programação com custo zero**
670
-
671
- ```txt
672
- Combo: "free-forever"
673
- 1. gc/gemini-3-flash
674
- 2. if/kimi-k2-thinking
675
- 3. qw/qwen3-coder-plus
676
-
677
- Custo mensal: $0
678
- Resultado: fluxo de coding gratuito e estável
679
- ```
680
-
681
- ## ⚡ Início Rápido
682
-
683
- **1. Instale globalmente:**
684
-
685
- ```bash
686
- npm install -g omniroute
687
- omniroute
688
- ```
689
-
690
- 🎉 Dashboard abre em `http://localhost:20128`
691
-
692
- | Comando | Descrição |
693
- | ----------------------- | ------------------------------------- |
694
- | `omniroute` | Iniciar servidor (porta padrão 20128) |
695
- | `omniroute --port 3000` | Usar porta personalizada |
696
- | `omniroute --no-open` | Não abrir navegador automaticamente |
697
- | `omniroute --help` | Mostrar ajuda |
698
-
699
- **2. Conecte um provedor GRATUITO:**
700
-
701
- Dashboard → Provedores → Conectar **Claude Code** ou **Antigravity** → Login OAuth → Pronto!
702
-
703
- **3. Use na sua ferramenta CLI:**
704
-
705
- ```
706
- Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Configurações:
707
- Endpoint: http://localhost:20128/v1
708
- API Key: [copie do dashboard]
709
- Model: if/kimi-k2-thinking
710
- ```
711
-
712
- **Pronto!** Comece a programar com modelos de IA GRATUITOS.
713
-
714
- **Alternativa — rodar a partir do código-fonte:**
715
-
716
- ```bash
717
- cp .env.example .env
718
- npm install
719
- PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
720
- ```
721
-
722
- ---
723
-
724
- ## 🐳 Docker
725
-
726
- OmniRoute está disponível como imagem Docker pública no [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
727
-
728
- **Execução rápida:**
729
-
730
- ```bash
731
- docker run -d \
732
- --name omniroute \
733
- --restart unless-stopped \
734
- -p 20128:20128 \
735
- -v omniroute-data:/app/data \
736
- diegosouzapw/omniroute:latest
737
- ```
738
-
739
- **Com arquivo de ambiente:**
740
-
741
- ```bash
742
- # Copie e edite o .env primeiro
743
- cp .env.example .env
744
-
745
- docker run -d \
746
- --name omniroute \
747
- --restart unless-stopped \
748
- --env-file .env \
749
- -p 20128:20128 \
750
- -v omniroute-data:/app/data \
751
- diegosouzapw/omniroute:latest
752
- ```
753
-
754
- **Usando Docker Compose:**
755
-
756
- ```bash
757
- # Perfil base (sem ferramentas CLI)
758
- docker compose --profile base up -d
759
-
760
- # Perfil CLI (Claude Code, Codex, OpenClaw integrados)
761
- docker compose --profile cli up -d
762
- ```
763
-
764
- | Imagem | Tag | Tamanho | Descrição |
765
- | ------------------------ | -------- | ------- | --------------------- |
766
- | `diegosouzapw/omniroute` | `latest` | ~250MB | Última versão estável |
767
- | `diegosouzapw/omniroute` | `1.0.6` | ~250MB | Versão atual |
768
-
769
- ---
770
-
771
- ---
772
-
773
- ## 🖥️
774
-
775
- > 🆕 **NOVO!** O OmniRoute agora está disponível como **aplicativo desktop nativo** para Windows, macOS e Linux.
776
-
777
- Execute o OmniRoute como um aplicativo desktop autônomo — sem terminal, sem navegador, sem internet necessária para modelos locais. O app baseado em Electron inclui:
778
-
779
- - 🖥️ **Janela Nativa** — Janela dedicada com integração à bandeja do sistema
780
- - 🔄 **Iniciar Automaticamente** — Inicie o OmniRoute ao fazer login no sistema
781
- - 🔔 **Notificações Nativas** — Receba alertas sobre esgotamento de cota ou problemas
782
- - ⚡ **Instalação com Um Clique** — NSIS (Windows), DMG (macOS), AppImage (Linux)
783
- - 🌐 **Modo Offline** — Funciona totalmente offline com servidor embarcado
784
-
785
- ### Início Rápido
786
-
787
- ```bash
788
- # Modo desenvolvimento
789
- npm run electron:dev
790
-
791
- # Compilar para sua plataforma
792
- npm run electron:build # Plataforma atual
793
- npm run electron:build:win # Windows (.exe)
794
- npm run electron:build:mac # macOS (.dmg) — x64 & arm64
795
- npm run electron:build:linux # Linux (.AppImage)
796
- ```
797
-
798
- ### Bandeja do Sistema
799
-
800
- Quando minimizado, o OmniRoute fica na bandeja do sistema com ações rápidas:
801
-
802
- - Abrir dashboard
803
- - Alterar porta do servidor
804
- - Sair do aplicativo
805
-
806
- 📖 Documentação completa: [`electron/README.md`](electron/README.md)
807
-
808
- ---
809
-
810
- ## 💰 Preços Resumidos
811
-
812
- | Tier | Provedor | Custo | Reset de Cota | Melhor Para |
813
- | ----------------- | ----------------- | ---------------------------- | ----------------- | ----------------------- |
814
- | **💳 ASSINATURA** | Claude Code (Pro) | $20/mês | 5h + semanal | Já é assinante |
815
- | | Codex (Plus/Pro) | $20-200/mês | 5h + semanal | Usuários OpenAI |
816
- | | Gemini CLI | **GRATUITO** | 180K/mês + 1K/dia | Todos! |
817
- | | GitHub Copilot | $10-19/mês | Mensal | Usuários GitHub |
818
- | **🔑 API KEY** | NVIDIA NIM | **GRATUITO** (1000 créditos) | Único | Testes gratuitos |
819
- | | DeepSeek | Por uso | Nenhum | Melhor preço/qualidade |
820
- | | Groq | Tier gratuito + pago | Limitado | Inferência ultra-rápida |
821
- | | xAI (Grok) | Por uso | Nenhum | Modelos Grok |
822
- | | Mistral | Tier gratuito + pago | Limitado | IA Europeia |
823
- | | OpenRouter | Por uso | Nenhum | 100+ modelos |
824
- | **💰 BARATO** | GLM-4.7 | $0.6/1M | Diário 10h | Backup econômico |
825
- | | MiniMax M2.1 | $0.2/1M | Rotativo 5h | Opção mais barata |
826
- | | Kimi K2 | $9/mês fixo | 10M tokens/mês | Custo previsível |
827
- | **🆓 GRATUITO** | iFlow | $0 | Ilimitado | 8 modelos gratuitos |
828
- | | Qwen | $0 | Ilimitado | 3 modelos gratuitos |
829
- | | Kiro | $0 | Ilimitado | Claude gratuito |
830
-
831
- **💡 Dica Pro:** Comece com Gemini CLI (180K grátis/mês) + iFlow (ilimitado grátis) = $0 de custo!
832
-
833
- ---
834
-
835
- ## 💡 Funcionalidades Principais
836
-
837
- ### 🧭 Gestão MCP + A2A (Camada Operacional)
838
-
839
- A maioria dos gateways de IA expõe MCP/A2A apenas como endpoints “escondidos”. O OmniRoute traz operação de primeira classe para os dois protocolos:
840
-
841
- - **Descoberta na interface** — Entradas `MCP` e `A2A` na sidebar e aba `Protocolos` na página de Endpoint com quick-start e cartões de status.
842
- - **Painel operacional MCP** (`/dashboard/mcp`) — Status real do processo por heartbeat, inventário de ferramentas/scopes, auditoria com filtros e controles operacionais (trocar combo, aplicar perfil de resiliência, resetar breakers).
843
- - **Painel operacional A2A** (`/dashboard/a2a`) — Visão do agent card, ciclo de vida de tarefas por estado, contagem de streams ativos, drill-down/cancelamento de tasks e smoke tests de `message/send` e `message/stream`.
844
- - **APIs de monitoramento** — Endpoints `/api/mcp/*` e `/api/a2a/*` para status, tasks, auditoria e automações externas.
845
-
846
- Por que isso é relevante:
847
-
848
- - **Um runtime, três papéis**: router/proxy OpenAI-compatible + servidor de ferramentas MCP + servidor agente A2A.
849
- - **Governança unificada**: autenticação, auditoria e controles de resiliência compartilhados.
850
- - **Operação confiável**: times conseguem validar, monitorar e depurar comportamento dos protocolos sem sair do produto.
851
-
852
- ### 🧠 Roteamento e Inteligência
853
-
854
- | Funcionalidade | O que Faz |
855
- | ----------------------------------------- | ---------------------------------------------------------------------------------- |
856
- | 🎯 **Fallback Inteligente 4 Tiers** | Auto-roteamento: Assinatura → API Key → Barato → Gratuito |
857
- | 📊 **Rastreamento de Cota em Tempo Real** | Contagem de tokens ao vivo + countdown de reset por provedor |
858
- | 🔄 **Tradução de Formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro transparente |
859
- | 👥 **Suporte Multi-Conta** | Múltiplas contas por provedor com seleção inteligente |
860
- | 🔄 **Renovação Automática de Token** | Tokens OAuth renovam automaticamente com retry |
861
- | 🎨 **Combos Personalizados** | 6 estratégias: fill-first, round-robin, p2c, random, least-used, cost-optimized |
862
- | 🧩 **Modelos Personalizados** | Adicione qualquer ID de modelo a qualquer provedor |
863
- | 🌐 **Roteador Wildcard** | Roteie padrões `provider/*` para qualquer provedor dinamicamente |
864
- | 🧠 **Budget de Raciocínio** | Modos passthrough, auto, custom e adaptativo para modelos de raciocínio |
865
- | � **Aliases de Modelo** | Redireciona IDs de modelos depreciados para substitutos atuais (built-in + custom) |
866
- | ⚡ **Degradação em Background** | Redireciona tarefas em background (títulos, resumos) para modelos mais baratos |
867
- | �💬 **Injeção de System Prompt** | System prompt global aplicado em todas as requisições |
868
- | 📄 **API Responses** | Suporte completo à API Responses da OpenAI (`/v1/responses`) para Codex |
869
-
870
- ### 🎵 APIs Multi-Modal
871
-
872
- | Funcionalidade | O que Faz |
873
- | --------------------------- | ----------------------------------------------------------------------------------------------------------- |
874
- | 🖼️ **Geração de Imagem** | `/v1/images/generations` — 10 provedores, 20+ modelos (cloud + local) |
875
- | 📐 **Embeddings** | `/v1/embeddings` — 6 provedores, 9+ modelos |
876
- | 🎤 **Transcrição de Áudio** | `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3 |
877
- | 🔊 **Texto para Fala** | `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT |
878
- | 🎬 **Geração de Vídeo** | `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD), SD WebUI |
879
- | 🎵 **Geração de Música** | `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen) |
880
- | 🛡️ **Moderações** | `/v1/moderations` — Verificações de segurança |
881
- | 🔀 **Reranking** | `/v1/rerank` — Reranking de relevância de documentos |
882
-
883
- ### 🛡️ Resiliência e Segurança
884
-
885
- | Funcionalidade | O que Faz |
886
- | ----------------------------------- | ----------------------------------------------------------------------------- |
887
- | 🔌 **Circuit Breaker** | Trip/recover por modelo com limites configuráveis |
888
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
889
- | 🛡️ **Anti-Thundering Herd** | Mutex + semáforo rate-limit para provedores com API key |
890
- | 🧠 **Cache Semântico** | Cache de duas camadas (assinatura + semântico) reduz custo e latência |
891
- | ⚡ **Idempotência de Requisição** | Janela de dedup de 5s para requisições duplicadas |
892
- | 🔒 **Spoofing de Fingerprint TLS** | Bypass de detecção de bot via TLS com wreq-js |
893
- | 🌐 **Filtragem de IP** | Allowlist/blocklist para controle de acesso à API |
894
- | 📊 **Rate Limits Editáveis** | RPM, gap mínimo e concorrência máxima configuráveis |
895
- | 💾 **Persistência de Rate Limits** | Limites aprendidos persistem via SQLite com debounce de 60s + 24h de validade |
896
- | 🔄 **Resiliência de Token Refresh** | Circuit breaker por provedor (5 falhas→30min) + timeout de 30s por tentativa |
897
- | 🛡 **Proteção de Endpoint API** | Gateway de Auth + bloqueio de provedores para o endpoint `/models` |
898
- | 🔒 **Visibilidade de Proxy** | Badges coloridos: 🟢 global, 🟡 provedor, 🔵 por-conexão com exibição de IP |
899
- | 🌐 **Proxy em 3 Níveis** | Configure proxies em nível global, por provedor ou por conexão |
900
-
901
- ### 📊 Observabilidade e Analytics
902
-
903
- | Funcionalidade | O que Faz |
904
- | -------------------------------- | --------------------------------------------------------------------- |
905
- | 📝 **Logs de Requisição** | Modo debug com logs completos de request/response |
906
- | 💾 **Logs SQLite** | Logs de proxy persistentes sobrevivem a reinicializações |
907
- | 📊 **Dashboard de Analytics** | Recharts: cards de estatísticas, gráfico de uso, tabela de provedores |
908
- | 📈 **Rastreamento de Progresso** | Eventos de progresso SSE opt-in para streaming |
909
- | 🧪 **Avaliações de LLM** | Testes com conjunto golden e 4 estratégias de match |
910
- | 🔍 **Telemetria de Requisição** | Agregação de latência p50/p95/p99 + rastreamento X-Request-Id |
911
- | 📋 **Logs + Cotas** | Páginas dedicadas para navegação de logs e rastreamento de cotas |
912
- | 🏥 **Dashboard de Saúde** | Uptime, estados de circuit breaker, lockouts, stats de cache |
913
- | 💰 **Rastreamento de Custo** | Gestão de orçamento + configuração de preços por modelo |
914
-
915
- ### ☁️ Deploy e Sincronização
916
-
917
- | Funcionalidade | O que Faz |
918
- | --------------------------------- | --------------------------------------------------------------------------------- |
919
- | 💾 **Cloud Sync** | Sincronize configurações entre dispositivos via Cloudflare Workers |
920
- | 🌐 **Deploy em Qualquer Lugar** | Localhost, VPS, Docker, Cloudflare Workers |
921
- | 🔑 **Gestão de API Keys** | Gere, rotacione e defina escopo de API keys por provedor |
922
- | 🧙 **Assistente de Configuração** | Setup guiado em 4 etapas para novos usuários |
923
- | 🔧 **Dashboard CLI Tools** | Configuração em um clique para Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
924
- | 🔄 **Backups de DB** | Backup, restauração, exportação e importação automática de todas as configurações |
925
- | 🌐 **Internacionalização** | i18n completo com next-intl — suporte a 30 idiomas com RTL |
926
- | 🌍 **Seletor de Idioma** | Ícone de globo no cabeçalho para troca entre 30 idiomas em tempo real |
927
- | 📂 **Diretório de Dados Custom** | Variável `DATA_DIR` para sobrescrever o caminho padrão `~/.omniroute` |
928
-
929
- <details>
930
- <summary><b>📖 Detalhes das Funcionalidades</b></summary>
931
-
932
- ### 🎯 Fallback Inteligente 4 Tiers
933
-
934
- Crie combos com fallback automático:
935
-
936
- ```
937
- Combo: "my-coding-stack"
938
- 1. cc/claude-opus-4-6 (sua assinatura)
939
- 2. nvidia/llama-3.3-70b (API NVIDIA gratuita)
940
- 3. glm/glm-4.7 (backup barato, $0.6/1M)
941
- 4. if/kimi-k2-thinking (fallback gratuito)
942
-
943
- → Troca automaticamente quando a cota acaba ou erros ocorrem
944
- ```
945
-
946
- ### 📊 Rastreamento de Cota em Tempo Real
947
-
948
- - Consumo de tokens por provedor
949
- - Countdown de reset (5 horas, diário, semanal)
950
- - Estimativa de custo para tiers pagos
951
- - Relatórios de gastos mensais
952
-
953
- ### 🔄 Tradução de Formato
954
-
955
- Tradução transparente entre formatos:
956
-
957
- - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
958
- - Sua ferramenta CLI envia formato OpenAI → OmniRoute traduz → Provedor recebe formato nativo
959
- - Funciona com qualquer ferramenta que suporte endpoints OpenAI customizados
960
-
961
- ### 👥 Suporte Multi-Conta
962
-
963
- - Adicione múltiplas contas por provedor
964
- - Round-robin automático ou roteamento por prioridade
965
- - Fallback para próxima conta quando uma atinge a cota
966
-
967
- ### 🔄 Renovação Automática de Token
968
-
969
- - Tokens OAuth renovam automaticamente antes de expirar
970
- - Sem necessidade de re-autenticação manual
971
- - Experiência transparente em todos os provedores
972
-
973
- ### 🎨 Combos Personalizados
974
-
975
- - Crie combinações ilimitadas de modelos
976
- - 6 estratégias: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
977
- - Compartilhe combos entre dispositivos com Cloud Sync
978
-
979
- ### 🏥 Dashboard de Saúde
980
-
981
- - Status do sistema (uptime, versão, uso de memória)
982
- - Estados de circuit breaker por provedor (Closed/Open/Half-Open)
983
- - Status de rate limit e lockouts ativos
984
- - Estatísticas de cache de assinatura
985
- - Telemetria de latência (p50/p95/p99) + cache de prompt
986
- - Reset de saúde com um clique
987
-
988
- ### 🔧 Playground do Tradutor
989
-
990
- O OmniRoute inclui um poderoso Playground de Tradução integrado com **4 modos** para debug, teste e monitoramento de traduções de API:
991
-
992
- | Modo | Descrição |
993
- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
994
- | **💻 Playground** | Tradução direta entre formatos — cole qualquer corpo de requisição e veja instantaneamente como o OmniRoute traduz entre formatos (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Inclui templates de exemplo e auto-detecção de formato. |
995
- | **💬 Chat Tester** | Envie requisições reais pelo OmniRoute e veja a viagem completa: sua entrada, a requisição traduzida, a resposta do provedor, e a resposta traduzida de volta. Inestimável para validar roteamento de combos. |
996
- | **🧪 Test Bench** | Modo de teste em lote — defina múltiplos casos de teste com diferentes entradas e saídas esperadas, execute todos de uma vez, e compare resultados entre provedores e modelos. |
997
- | **📱 Live Monitor** | Monitoramento de requisições em tempo real — acompanhe requisições entrando conforme fluem pelo OmniRoute, veja traduções de formato acontecendo ao vivo, e identifique problemas instantaneamente. |
998
-
999
- **Acesso:** Dashboard → Translator (barra lateral)
1000
-
1001
- ### 💾 Cloud Sync
1002
-
1003
- - Sincronize provedores, combos e configurações entre dispositivos
1004
- - Sincronização automática em background
1005
- - Armazenamento criptografado seguro
1006
-
1007
- </details>
1008
-
1009
- ---
1010
-
1011
- ## 🧪 Avaliações (Evals)
1012
-
1013
- OmniRoute inclui um framework de avaliação integrado para testar a qualidade de respostas de LLM contra um conjunto golden. Acesse via **Analytics → Evals** no dashboard.
1014
-
1015
- ### Conjunto Golden Integrado
1016
-
1017
- O "OmniRoute Golden Set" pré-carregado contém 10 casos de teste cobrindo:
1018
-
1019
- - Saudações, matemática, geografia, geração de código
1020
- - Conformidade de formato JSON, tradução, markdown
1021
- - Recusa de segurança (conteúdo prejudicial), contagem, lógica booleana
1022
-
1023
- ### Estratégias de Avaliação
1024
-
1025
- | Estratégia | Descrição | Exemplo |
1026
- | ---------- | ---------------------------------------------- | -------------------------------- |
1027
- | `exact` | Saída deve corresponder exatamente | `"4"` |
1028
- | `contains` | Saída deve conter substring (case-insensitive) | `"Paris"` |
1029
- | `regex` | Saída deve corresponder ao padrão regex | `"1.*2.*3"` |
1030
- | `custom` | Função JS customizada retorna true/false | `(output) => output.length > 10` |
1031
-
1032
- ---
1033
-
1034
- ## 📖 Guia de Configuração
1035
-
1036
- <details>
1037
- <summary><b>💳 Provedores por Assinatura</b></summary>
1038
-
1039
- ### Claude Code (Pro/Max)
1040
-
1041
- ```bash
1042
- Dashboard → Provedores → Conectar Claude Code
1043
- → Login OAuth → Renovação automática de token
1044
- → Rastreamento de cota 5h + semanal
1045
-
1046
- Modelos:
1047
- cc/claude-opus-4-6
1048
- cc/claude-sonnet-4-5-20250929
1049
- cc/claude-haiku-4-5-20251001
1050
- ```
1051
-
1052
- **Dica Pro:** Use Opus para tarefas complexas, Sonnet para velocidade. OmniRoute rastreia cota por modelo!
1053
-
1054
- ### OpenAI Codex (Plus/Pro)
1055
-
1056
- ```bash
1057
- Dashboard → Provedores → Conectar Codex
1058
- → Login OAuth (porta 1455)
1059
- → Reset 5h + semanal
1060
-
1061
- Modelos:
1062
- cx/gpt-5.2-codex
1063
- cx/gpt-5.1-codex-max
1064
- ```
1065
-
1066
- ### Gemini CLI (GRATUITO 180K/mês!)
1067
-
1068
- ```bash
1069
- Dashboard → Provedores → Conectar Gemini CLI
1070
- → Google OAuth
1071
- → 180K completions/mês + 1K/dia
1072
-
1073
- Modelos:
1074
- gc/gemini-3-flash-preview
1075
- gc/gemini-2.5-pro
1076
- ```
1077
-
1078
- **Melhor Valor:** Tier gratuito enorme! Use antes dos tiers pagos.
1079
-
1080
- ### GitHub Copilot
1081
-
1082
- ```bash
1083
- Dashboard → Provedores → Conectar GitHub
1084
- → OAuth via GitHub
1085
- → Reset mensal (1º do mês)
1086
-
1087
- Modelos:
1088
- gh/gpt-5
1089
- gh/claude-4.5-sonnet
1090
- gh/gemini-3-pro
1091
- ```
1092
-
1093
- </details>
1094
-
1095
- <details>
1096
- <summary><b>🔑 Provedores por API Key</b></summary>
1097
-
1098
- ### NVIDIA NIM (GRATUITO 1000 créditos!)
1099
-
1100
- 1. Cadastre-se: [build.nvidia.com](https://build.nvidia.com)
1101
- 2. Obtenha API key gratuita (1000 créditos de inferência incluídos)
1102
- 3. Dashboard → Adicionar Provedor → NVIDIA NIM:
1103
- - API Key: `nvapi-your-key`
1104
-
1105
- **Modelos:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, e 50+ mais
1106
-
1107
- **Dica Pro:** API compatível com OpenAI — funciona perfeitamente com a tradução de formato do OmniRoute!
1108
-
1109
- ### DeepSeek
1110
-
1111
- 1. Cadastre-se: [platform.deepseek.com](https://platform.deepseek.com)
1112
- 2. Obtenha API key
1113
- 3. Dashboard → Adicionar Provedor → DeepSeek
1114
-
1115
- **Modelos:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
1116
-
1117
- ### Groq (Tier Gratuito Disponível!)
1118
-
1119
- 1. Cadastre-se: [console.groq.com](https://console.groq.com)
1120
- 2. Obtenha API key (tier gratuito incluído)
1121
- 3. Dashboard → Adicionar Provedor → Groq
1122
-
1123
- **Modelos:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
1124
-
1125
- **Dica Pro:** Inferência ultra-rápida — melhor para programação em tempo real!
1126
-
1127
- ### OpenRouter (100+ Modelos)
1128
-
1129
- 1. Cadastre-se: [openrouter.ai](https://openrouter.ai)
1130
- 2. Obtenha API key
1131
- 3. Dashboard → Adicionar Provedor → OpenRouter
1132
-
1133
- **Modelos:** Acesse 100+ modelos de todos os principais provedores através de uma única API key.
1134
-
1135
- </details>
1136
-
1137
- <details>
1138
- <summary><b>💰 Provedores Baratos (Backup)</b></summary>
1139
-
1140
- ### GLM-4.7 (Reset diário, $0.6/1M)
1141
-
1142
- 1. Cadastre-se: [Zhipu AI](https://open.bigmodel.cn/)
1143
- 2. Obtenha API key do Plano Coding
1144
- 3. Dashboard → Adicionar API Key:
1145
- - Provedor: `glm`
1146
- - API Key: `your-key`
1147
-
1148
- **Use:** `glm/glm-4.7`
1149
-
1150
- **Dica Pro:** Plano Coding oferece 3× cota a 1/7 do custo! Reset diário 10:00 AM.
1151
-
1152
- ### MiniMax M2.1 (Reset 5h, $0.20/1M)
1153
-
1154
- 1. Cadastre-se: [MiniMax](https://www.minimax.io/)
1155
- 2. Obtenha API key
1156
- 3. Dashboard → Adicionar API Key
1157
-
1158
- **Use:** `minimax/MiniMax-M2.1`
1159
-
1160
- **Dica Pro:** Opção mais barata para contexto longo (1M tokens)!
1161
-
1162
- ### Kimi K2 ($9/mês fixo)
1163
-
1164
- 1. Assine: [Moonshot AI](https://platform.moonshot.ai/)
1165
- 2. Obtenha API key
1166
- 3. Dashboard → Adicionar API Key
1167
-
1168
- **Use:** `kimi/kimi-latest`
1169
-
1170
- **Dica Pro:** $9/mês fixo por 10M tokens = $0.90/1M de custo efetivo!
1171
-
1172
- </details>
1173
-
1174
- <details>
1175
- <summary><b>🆓 Provedores GRATUITOS (Backup de Emergência)</b></summary>
1176
-
1177
- ### iFlow (8 modelos GRATUITOS)
1178
-
1179
- ```bash
1180
- Dashboard → Conectar iFlow
1181
- → Login OAuth iFlow
1182
- → Uso ilimitado
1183
-
1184
- Modelos:
1185
- if/kimi-k2-thinking
1186
- if/qwen3-coder-plus
1187
- if/glm-4.7
1188
- if/minimax-m2
1189
- if/deepseek-r1
1190
- ```
1191
-
1192
- ### Qwen (3 modelos GRATUITOS)
1193
-
1194
- ```bash
1195
- Dashboard → Conectar Qwen
1196
- → Autorização por código de dispositivo
1197
- → Uso ilimitado
1198
-
1199
- Modelos:
1200
- qw/qwen3-coder-plus
1201
- qw/qwen3-coder-flash
1202
- ```
1203
-
1204
- ### Kiro (Claude GRATUITO)
1205
-
1206
- ```bash
1207
- Dashboard → Conectar Kiro
1208
- → AWS Builder ID ou Google/GitHub
1209
- → Uso ilimitado
1210
-
1211
- Modelos:
1212
- kr/claude-sonnet-4.5
1213
- kr/claude-haiku-4.5
1214
- ```
1215
-
1216
- </details>
1217
-
1218
- <details>
1219
- <summary><b>🎨 Criar Combos</b></summary>
1220
-
1221
- ### Exemplo 1: Maximizar Assinatura → Backup Barato
1222
-
1223
- ```
1224
- Dashboard → Combos → Criar Novo
1225
-
1226
- Nome: premium-coding
1227
- Modelos:
1228
- 1. cc/claude-opus-4-6 (Assinatura primária)
1229
- 2. glm/glm-4.7 (Backup barato, $0.6/1M)
1230
- 3. minimax/MiniMax-M2.1 (Fallback mais barato, $0.20/1M)
1231
-
1232
- Use na CLI: premium-coding
1233
- ```
1234
-
1235
- ### Exemplo 2: Somente Gratuito (Custo Zero)
1236
-
1237
- ```
1238
- Nome: free-combo
1239
- Modelos:
1240
- 1. gc/gemini-3-flash-preview (180K grátis/mês)
1241
- 2. if/kimi-k2-thinking (ilimitado)
1242
- 3. qw/qwen3-coder-plus (ilimitado)
1243
-
1244
- Custo: $0 para sempre!
1245
- ```
1246
-
1247
- </details>
1248
-
1249
- <details>
1250
- <summary><b>🔧 Integração CLI</b></summary>
1251
-
1252
- ### Cursor IDE
1253
-
1254
- ```
1255
- Configurações → Modelos → Avançado:
1256
- OpenAI API Base URL: http://localhost:20128/v1
1257
- OpenAI API Key: [do dashboard OmniRoute]
1258
- Model: cc/claude-opus-4-6
1259
- ```
1260
-
1261
- ### Claude Code
1262
-
1263
- Use a página **CLI Tools** no dashboard para configuração em um clique, ou edite `~/.claude/settings.json` manualmente.
1264
-
1265
- ### Codex CLI
1266
-
1267
- ```bash
1268
- export OPENAI_BASE_URL="http://localhost:20128"
1269
- export OPENAI_API_KEY="your-omniroute-api-key"
1270
-
1271
- codex "your prompt"
1272
- ```
1273
-
1274
- ### OpenClaw
1275
-
1276
- **Opção 1 — Dashboard (recomendado):**
1277
-
1278
- ```
1279
- Dashboard → CLI Tools → OpenClaw → Selecionar Modelo → Aplicar
1280
- ```
1281
-
1282
- **Opção 2 — Manual:** Edite `~/.openclaw/openclaw.json`:
1283
-
1284
- ```json
1285
- {
1286
- "models": {
1287
- "providers": {
1288
- "omniroute": {
1289
- "baseUrl": "http://127.0.0.1:20128/v1",
1290
- "apiKey": "sk_omniroute",
1291
- "api": "openai-completions"
1292
- }
1293
- }
1294
- }
1295
- }
1296
- ```
1297
-
1298
- > **Nota:** OpenClaw funciona apenas com OmniRoute local. Use `127.0.0.1` em vez de `localhost` para evitar problemas de resolução IPv6.
1299
-
1300
- ### Cline / Continue / RooCode
1301
-
1302
- ```
1303
- Configurações → Configuração de API:
1304
- Provedor: OpenAI Compatible
1305
- Base URL: http://localhost:20128/v1
1306
- API Key: [do dashboard OmniRoute]
1307
- Model: if/kimi-k2-thinking
1308
- ```
1309
-
1310
- </details>
1311
-
1312
- ---
1313
-
1314
- ## 🐛 Solução de Problemas
1315
-
1316
- <details>
1317
- <summary><b>Clique para expandir o guia de solução de problemas</b></summary>
1318
-
1319
- **"Language model did not provide messages"**
1320
-
1321
- - Cota do provedor esgotada → Verifique o rastreador de cota no dashboard
1322
- - Solução: Use combo com fallback ou mude para tier mais barato
1323
-
1324
- **Rate limiting**
1325
-
1326
- - Cota de assinatura esgotada → Fallback para GLM/MiniMax
1327
- - Adicione combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1328
-
1329
- **Token OAuth expirado**
1330
-
1331
- - Renovado automaticamente pelo OmniRoute
1332
- - Se persistir: Dashboard → Provedor → Reconectar
1333
-
1334
- **Custos altos**
1335
-
1336
- - Verifique estatísticas de uso em Dashboard → Custos
1337
- - Mude modelo primário para GLM/MiniMax
1338
- - Use tier gratuito (Gemini CLI, iFlow) para tarefas não-críticas
1339
-
1340
- **Dashboard abre na porta errada**
1341
-
1342
- - Defina `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
1343
-
1344
- **Erros de cloud sync**
1345
-
1346
- - Verifique se `BASE_URL` aponta para sua instância em execução
1347
- - Verifique se `CLOUD_URL` aponta para seu endpoint cloud esperado
1348
- - Mantenha valores `NEXT_PUBLIC_*` alinhados com valores do servidor
1349
-
1350
- **Primeiro login não funciona**
1351
-
1352
- - Verifique `INITIAL_PASSWORD` no `.env`
1353
- - Se não definido, senha padrão é `123456`
1354
-
1355
- **Sem logs de requisição**
1356
-
1357
- - Defina `ENABLE_REQUEST_LOGS=true` no `.env`
1358
-
1359
- **Teste de conexão mostra "Invalid" para provedores compatíveis com OpenAI**
1360
-
1361
- - Muitos provedores não expõem endpoint `/models`
1362
- - OmniRoute v1.0.6+ inclui validação via chat completions como fallback
1363
- - Certifique-se de que a base URL inclui sufixo `/v1`
1364
-
1365
- </details>
1366
-
1367
- ---
1368
-
1369
- ## 🛠️
1370
-
1371
- - **Runtime**: Node.js 20+
1372
- - **Linguagem**: TypeScript 5.9 — **100% TypeScript** em `src/` e `open-sse/` (v1.0.6)
1373
- - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
1374
- - **Banco de Dados**: LowDB (JSON) + SQLite (estado do domínio + logs de proxy)
1375
- - **Streaming**: Server-Sent Events (SSE)
1376
- - **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
1377
- - **Testes**: Node.js test runner (368+ testes unitários)
1378
- - **CI/CD**: GitHub Actions (publicação automática npm + Docker Hub no release)
1379
- - **Website**: [omniroute.online](https://omniroute.online)
1380
- - **Pacote**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1381
- - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1382
- - **Resiliência**: Circuit breaker, backoff exponencial, anti-thundering herd, spoofing TLS
1383
-
1384
- ---
1385
-
1386
- ## 📖 Documentação
1387
-
1388
- | Documento | Descrição |
1389
- | ----------------------------------------------- | ------------------------------------------------- |
1390
- | [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, combos, integração CLI, deploy |
1391
- | [Referência da API](docs/API_REFERENCE.md) | Todos os endpoints com exemplos |
1392
- | [Solução de Problemas](docs/TROUBLESHOOTING.md) | Problemas comuns e soluções |
1393
- | [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura do sistema e internos |
1394
- | [Contribuindo](CONTRIBUTING.md) | Setup de desenvolvimento e diretrizes |
1395
- | [Spec OpenAPI](docs/openapi.yaml) | Especificação OpenAPI 3.0 |
1396
- | [Política de Segurança](SECURITY.md) | Reportar vulnerabilidades e práticas de segurança |
1397
- | [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Guia completo: VM + nginx + Cloudflare |
1398
- | [Galeria de Features](docs/FEATURES.md) | Tour visual do dashboard com screenshots |
1399
-
1400
- ### 📸 Preview do Dashboard
1401
-
1402
- <details>
1403
- <summary><b>Clique para ver screenshots do dashboard</b></summary>
1404
-
1405
- | Página | Screenshot |
1406
- | ----------------- | ------------------------------------------------- |
1407
- | **Provedores** | ![Providers](docs/screenshots/01-providers.png) |
1408
- | **Combos** | ![Combos](docs/screenshots/02-combos.png) |
1409
- | **Analytics** | ![Analytics](docs/screenshots/03-analytics.png) |
1410
- | **Saúde** | ![Health](docs/screenshots/04-health.png) |
1411
- | **Tradutor** | ![Translator](docs/screenshots/05-translator.png) |
1412
- | **Configurações** | ![Settings](docs/screenshots/06-settings.png) |
1413
- | **CLI Tools** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1414
- | **Logs de Uso** | ![Usage](docs/screenshots/08-usage.png) |
1415
- | **Endpoint** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1416
-
1417
- </details>
1418
-
1419
- ---
1420
-
1421
- ## 🗺️
1422
-
1423
- O OmniRoute tem **210+ funcionalidades planejadas** em múltiplas fases de desenvolvimento. Áreas principais:
1424
-
1425
- | Categoria | Features Planejadas | Destaques |
1426
- | -------------------------------- | ------------------- | --------------------------------------------------------------------------- |
1427
- | 🧠 **Roteamento e Inteligência** | 25+ | Roteamento por menor latência, roteamento por tags, pré-verificação de cota |
1428
- | 🔒 **Segurança e Compliance** | 20+ | Hardening SSRF, cloaking de credenciais, rate-limit por endpoint |
1429
- | 📊 **Observabilidade** | 15+ | Integração OpenTelemetry, monitoramento de cota em tempo real |
1430
- | 🔄 **Integrações** | 20+ | Registro dinâmico de modelos, cooldowns de provedor |
1431
- | ⚡ **Performance** | 15+ | Cache dupla camada, prompt cache, response cache, batch API |
1432
- | 🌐 **Ecossistema** | 10+ | WebSocket API, config hot-reload, modo comercial |
1433
-
1434
- ### 🔜 Em Breve
1435
-
1436
- - 🔗 **Integração com OpenCode** — Suporte nativo como provider para a IDE OpenCode
1437
- - 🔗 **Integração com TRAE** — Suporte completo ao framework de desenvolvimento TRAE
1438
- - 📦 **Batch API** — Processamento assíncrono em lote para requisições em massa
1439
- - 🎯 **Roteamento por Tags** — Roteamento de requisições baseado em tags personalizadas
1440
- - 💰 **Estratégia de Menor Custo** — Seleção automática do provedor mais barato
1441
-
1442
- > 📝 Especificações completas de features disponíveis em [`docs/new-features/`](docs/new-features/) (217 specs detalhadas)
1443
-
1444
- ---
1445
-
1446
- ## 👥 Contribuidores
1447
-
1448
- [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1449
-
1450
- ### Como Contribuir
1451
-
1452
- 1. Faça fork do repositório
1453
- 2. Crie sua branch de funcionalidade (`git checkout -b feature/amazing-feature`)
1454
- 3. Faça commit das suas alterações (`git commit -m 'Add amazing feature'`)
1455
- 4. Faça push para a branch (`git push origin feature/amazing-feature`)
1456
- 5. Abra um Pull Request
1457
-
1458
- Veja [CONTRIBUTING.md](CONTRIBUTING.md) para diretrizes detalhadas.
1459
-
1460
- ### Lançando uma Nova Versão
1461
-
1462
- ```bash
1463
- # Crie um release — publicação no npm acontece automaticamente
1464
- gh release create v1.0.6 --title "v1.0.6" --generate-notes
1465
- ```
1466
-
1467
- ---
1468
-
1469
- ## 📊 Histórico de Stars
1470
-
1471
- <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1472
- <picture>
1473
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1474
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1475
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1476
- </picture>
1477
- </a>
1478
-
1479
- ---
1480
-
1481
- ## 🙏 Agradecimentos
1482
-
1483
- Agradecimento especial a **[9router](https://github.com/decolua/9router)** por **[decolua](https://github.com/decolua)** — o projeto original que inspirou este fork. OmniRoute se baseia nessa fundação incrível com funcionalidades adicionais, APIs multi-modal e uma reescrita completa em TypeScript.
1484
-
1485
- Agradecimento especial a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — a implementação original em Go que inspirou esta adaptação em JavaScript.
1486
-
1487
- ---
1488
-
1489
- ## 📄 Licença
1490
-
1491
- Licença MIT - veja [LICENSE](LICENSE) para detalhes.
1492
-
1493
- ---
1494
-
1495
- <div align="center">
1496
- <sub>Feito com ❤️ para desenvolvedores que programam 24/7</sub>
1497
- <br/>
1498
- <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1499
- </div>