omniroute 0.8.8 → 0.9.0

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 (431) hide show
  1. package/README.de.md +995 -0
  2. package/README.es.md +995 -0
  3. package/README.fr.md +995 -0
  4. package/README.it.md +995 -0
  5. package/README.md +694 -72
  6. package/README.pt-BR.md +995 -0
  7. package/README.ru.md +995 -0
  8. package/README.zh-CN.md +995 -0
  9. package/app/.next/BUILD_ID +1 -1
  10. package/app/.next/app-path-routes-manifest.json +21 -21
  11. package/app/.next/build-manifest.json +2 -2
  12. package/app/.next/prerender-manifest.json +3 -3
  13. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/limits/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/profile/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  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/_global-error/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/_global-error.html +2 -2
  33. package/app/.next/server/app/_global-error.rsc +1 -1
  34. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  35. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  36. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  37. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  38. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  39. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  40. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/_not-found.html +1 -1
  42. package/app/.next/server/app/_not-found.rsc +2 -2
  43. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  44. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  45. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  46. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  47. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  48. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  49. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  54. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  56. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
  58. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  60. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
  62. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  64. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  66. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/api/cli-tools/droid-settings/route.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.js +2 -2
  71. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  73. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  75. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
  77. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/models/route.js +1 -1
  98. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  100. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  105. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/providers/route.js +1 -1
  122. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  134. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/callback.html +1 -1
  181. package/app/.next/server/app/callback.rsc +2 -2
  182. package/app/.next/server/app/callback.segments/_full.segment.rsc +2 -2
  183. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  184. package/app/.next/server/app/callback.segments/_index.segment.rsc +2 -2
  185. package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
  186. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  187. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  188. package/app/.next/server/app/dashboard/analytics.html +1 -1
  189. package/app/.next/server/app/dashboard/analytics.rsc +4 -4
  190. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +2 -2
  191. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  192. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  193. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  194. package/app/.next/server/app/dashboard/analytics.segments/_full.segment.rsc +4 -4
  195. package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  196. package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +2 -2
  197. package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
  198. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  199. package/app/.next/server/app/dashboard/cli-tools.rsc +4 -4
  200. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  201. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  202. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  203. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  204. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +4 -4
  205. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  206. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +2 -2
  207. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  208. package/app/.next/server/app/dashboard/combos.html +1 -1
  209. package/app/.next/server/app/dashboard/combos.rsc +4 -4
  210. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  211. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  212. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  213. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  214. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +4 -4
  215. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  216. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +2 -2
  217. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  218. package/app/.next/server/app/dashboard/costs.html +1 -1
  219. package/app/.next/server/app/dashboard/costs.rsc +4 -4
  220. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +2 -2
  221. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs.segment.rsc +1 -1
  222. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  223. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  224. package/app/.next/server/app/dashboard/costs.segments/_full.segment.rsc +4 -4
  225. package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
  226. package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +2 -2
  227. package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +1 -1
  228. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  229. package/app/.next/server/app/dashboard/endpoint.rsc +4 -4
  230. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  231. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  232. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  233. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  234. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +4 -4
  235. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  236. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +2 -2
  237. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  238. package/app/.next/server/app/dashboard/health.html +1 -1
  239. package/app/.next/server/app/dashboard/health.rsc +4 -4
  240. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +2 -2
  241. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +1 -1
  242. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  243. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  244. package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +4 -4
  245. package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
  246. package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +2 -2
  247. package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +1 -1
  248. package/app/.next/server/app/dashboard/limits.html +2 -2
  249. package/app/.next/server/app/dashboard/limits.rsc +4 -4
  250. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +2 -2
  251. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +1 -1
  252. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  253. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  254. package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +4 -4
  255. package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +1 -1
  256. package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +2 -2
  257. package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +1 -1
  258. package/app/.next/server/app/dashboard/onboarding.html +1 -1
  259. package/app/.next/server/app/dashboard/onboarding.rsc +3 -3
  260. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +1 -1
  261. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
  262. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  263. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  264. package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +3 -3
  265. package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
  266. package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +2 -2
  267. package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +1 -1
  268. package/app/.next/server/app/dashboard/profile.html +1 -1
  269. package/app/.next/server/app/dashboard/profile.rsc +3 -3
  270. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  271. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  272. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  273. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  274. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +3 -3
  275. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  276. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +2 -2
  277. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  278. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  279. package/app/.next/server/app/dashboard/providers/new.rsc +4 -4
  280. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  281. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  282. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  283. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  284. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  285. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +4 -4
  286. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  287. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +2 -2
  288. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  289. package/app/.next/server/app/dashboard/providers.html +1 -1
  290. package/app/.next/server/app/dashboard/providers.rsc +4 -4
  291. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  292. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  293. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  294. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  295. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +4 -4
  296. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  297. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +2 -2
  298. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  299. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  300. package/app/.next/server/app/dashboard/settings/pricing.rsc +3 -3
  301. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  302. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  303. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  304. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  305. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  306. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  307. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  308. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +2 -2
  309. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  310. package/app/.next/server/app/dashboard/settings.html +1 -1
  311. package/app/.next/server/app/dashboard/settings.rsc +4 -4
  312. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
  313. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  314. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  315. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  316. package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +4 -4
  317. package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
  318. package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +2 -2
  319. package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +1 -1
  320. package/app/.next/server/app/dashboard/translator.html +2 -2
  321. package/app/.next/server/app/dashboard/translator.rsc +4 -4
  322. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  323. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  324. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  325. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  326. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +4 -4
  327. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  328. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +2 -2
  329. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  330. package/app/.next/server/app/dashboard/usage.html +1 -1
  331. package/app/.next/server/app/dashboard/usage.rsc +4 -4
  332. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  333. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  334. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  335. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  336. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +4 -4
  337. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  338. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +2 -2
  339. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  340. package/app/.next/server/app/docs/page.js +1 -1
  341. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  342. package/app/.next/server/app/docs.html +1 -1
  343. package/app/.next/server/app/docs.rsc +2 -2
  344. package/app/.next/server/app/docs.segments/_full.segment.rsc +2 -2
  345. package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  346. package/app/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  347. package/app/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
  348. package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  349. package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  350. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  351. package/app/.next/server/app/forbidden.html +1 -1
  352. package/app/.next/server/app/forbidden.rsc +2 -2
  353. package/app/.next/server/app/forbidden.segments/_full.segment.rsc +2 -2
  354. package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
  355. package/app/.next/server/app/forbidden.segments/_index.segment.rsc +2 -2
  356. package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +1 -1
  357. package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +1 -1
  358. package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +1 -1
  359. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  360. package/app/.next/server/app/forgot-password.html +1 -1
  361. package/app/.next/server/app/forgot-password.rsc +3 -3
  362. package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +3 -3
  363. package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
  364. package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +2 -2
  365. package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +1 -1
  366. package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +2 -2
  367. package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +1 -1
  368. package/app/.next/server/app/index.html +1 -1
  369. package/app/.next/server/app/index.rsc +2 -2
  370. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  371. package/app/.next/server/app/index.segments/_full.segment.rsc +2 -2
  372. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  373. package/app/.next/server/app/index.segments/_index.segment.rsc +2 -2
  374. package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  375. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  376. package/app/.next/server/app/landing.html +1 -1
  377. package/app/.next/server/app/landing.rsc +2 -2
  378. package/app/.next/server/app/landing.segments/_full.segment.rsc +2 -2
  379. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  380. package/app/.next/server/app/landing.segments/_index.segment.rsc +2 -2
  381. package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
  382. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  383. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  384. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  385. package/app/.next/server/app/login.html +1 -1
  386. package/app/.next/server/app/login.rsc +3 -3
  387. package/app/.next/server/app/login.segments/_full.segment.rsc +3 -3
  388. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  389. package/app/.next/server/app/login.segments/_index.segment.rsc +2 -2
  390. package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  391. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  392. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  393. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  394. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  395. package/app/.next/server/app/privacy.html +1 -1
  396. package/app/.next/server/app/privacy.rsc +2 -2
  397. package/app/.next/server/app/privacy.segments/_full.segment.rsc +2 -2
  398. package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
  399. package/app/.next/server/app/privacy.segments/_index.segment.rsc +2 -2
  400. package/app/.next/server/app/privacy.segments/_tree.segment.rsc +1 -1
  401. package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +1 -1
  402. package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
  403. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  404. package/app/.next/server/app/terms.html +1 -1
  405. package/app/.next/server/app/terms.rsc +2 -2
  406. package/app/.next/server/app/terms.segments/_full.segment.rsc +2 -2
  407. package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
  408. package/app/.next/server/app/terms.segments/_index.segment.rsc +2 -2
  409. package/app/.next/server/app/terms.segments/_tree.segment.rsc +1 -1
  410. package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
  411. package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
  412. package/app/.next/server/app-paths-manifest.json +21 -21
  413. package/app/.next/server/chunks/5583.js +1 -1
  414. package/app/.next/server/chunks/8369.js +1 -1
  415. package/app/.next/server/chunks/9824.js +1 -1
  416. package/app/.next/server/pages/404.html +1 -1
  417. package/app/.next/server/pages/500.html +2 -2
  418. package/app/.next/server/server-reference-manifest.js +1 -1
  419. package/app/.next/server/server-reference-manifest.json +1 -1
  420. package/app/.next/static/chunks/{5846-b70d10291438712b.js → 5846-0541241939d8c7e3.js} +1 -1
  421. package/app/.next/static/chunks/{993-d43d3ceef35b3300.js → 993-b74bac8c882e8d1a.js} +1 -1
  422. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{page-3ac21c16bcfde2e4.js → page-038687bc5d2c3bb5.js} +1 -1
  423. package/app/package.json +1 -1
  424. package/app/public/providers/ironclaw.png +0 -0
  425. package/app/public/providers/nanobot.png +0 -0
  426. package/app/public/providers/opencode.svg +18 -0
  427. package/app/public/providers/picoclaw.jpg +0 -0
  428. package/app/public/providers/zeroclaw.png +0 -0
  429. package/package.json +1 -1
  430. /package/app/.next/static/{xW2ax6VohvDsTIIwd1zWK → 8ACUE6hz9uxBNe_Q_ZH6y}/_buildManifest.js +0 -0
  431. /package/app/.next/static/{xW2ax6VohvDsTIIwd1zWK → 8ACUE6hz9uxBNe_Q_ZH6y}/_ssgManifest.js +0 -0
package/README.es.md ADDED
@@ -0,0 +1,995 @@
1
+ <div align="center">
2
+ <img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
3
+
4
+ # 🚀 OmniRoute — El Gateway de IA Gratuito
5
+
6
+ ### Nunca dejes de programar. Enrutamiento inteligente hacia **modelos de IA GRATUITOS y económicos** con fallback automático.
7
+
8
+ _Tu proxy de API universal — un endpoint, 36+ proveedores, cero tiempo de inactividad._
9
+
10
+ **Chat Completions • Embeddings • Generación de Imágenes • Audio • Reranking • 100% TypeScript**
11
+
12
+ ---
13
+
14
+ ### 🤖 Proveedor de IA Gratuito para tus agentes de programación favoritos
15
+
16
+ _Conecta cualquier IDE o herramienta CLI con IA a través de OmniRoute — gateway de API gratuito para programación ilimitada._
17
+
18
+ <table>
19
+ <tr>
20
+ <td align="center" width="110">
21
+ <a href="https://github.com/cline/cline">
22
+ <img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
23
+ <b>OpenClaw</b>
24
+ </a><br/>
25
+ <sub>⭐ 205K</sub>
26
+ </td>
27
+ <td align="center" width="110">
28
+ <a href="https://github.com/HKUDS/nanobot">
29
+ <img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
30
+ <b>NanoBot</b>
31
+ </a><br/>
32
+ <sub>⭐ 20.9K</sub>
33
+ </td>
34
+ <td align="center" width="110">
35
+ <a href="https://github.com/sipeed/picoclaw">
36
+ <img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
37
+ <b>PicoClaw</b>
38
+ </a><br/>
39
+ <sub>⭐ 14.6K</sub>
40
+ </td>
41
+ <td align="center" width="110">
42
+ <a href="https://github.com/zeroclaw-labs/zeroclaw">
43
+ <img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
44
+ <b>ZeroClaw</b>
45
+ </a><br/>
46
+ <sub>⭐ 9.9K</sub>
47
+ </td>
48
+ <td align="center" width="110">
49
+ <a href="https://github.com/nearai/ironclaw">
50
+ <img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
51
+ <b>IronClaw</b>
52
+ </a><br/>
53
+ <sub>⭐ 2.1K</sub>
54
+ </td>
55
+ </tr>
56
+ <tr>
57
+ <td align="center" width="110">
58
+ <a href="https://github.com/anomalyco/opencode">
59
+ <img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
60
+ <b>OpenCode</b>
61
+ </a><br/>
62
+ <sub>⭐ 106K</sub>
63
+ </td>
64
+ <td align="center" width="110">
65
+ <a href="https://github.com/openai/codex">
66
+ <img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
67
+ <b>Codex CLI</b>
68
+ </a><br/>
69
+ <sub>⭐ 60.8K</sub>
70
+ </td>
71
+ <td align="center" width="110">
72
+ <a href="https://github.com/anthropics/claude-code">
73
+ <img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
74
+ <b>Claude Code</b>
75
+ </a><br/>
76
+ <sub>⭐ 67.3K</sub>
77
+ </td>
78
+ <td align="center" width="110">
79
+ <a href="https://github.com/google-gemini/gemini-cli">
80
+ <img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
81
+ <b>Gemini CLI</b>
82
+ </a><br/>
83
+ <sub>⭐ 94.7K</sub>
84
+ </td>
85
+ <td align="center" width="110">
86
+ <a href="https://github.com/Kilo-Org/kilocode">
87
+ <img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
88
+ <b>Kilo Code</b>
89
+ </a><br/>
90
+ <sub>⭐ 15.5K</sub>
91
+ </td>
92
+ </tr>
93
+ </table>
94
+
95
+ <sub>📡 Todos los agentes se conectan vía <code>http://localhost:20128/v1</code> o <code>http://cloud.omniroute.online/v1</code> — una configuración, modelos y cuota ilimitados</sub>
96
+
97
+ ---
98
+
99
+ [![npm version](https://img.shields.io/npm/v/omniroute?color=cb3837&logo=npm)](https://www.npmjs.com/package/omniroute)
100
+ [![Docker Hub](https://img.shields.io/docker/v/diegosouzapw/omniroute?label=Docker%20Hub&logo=docker&color=2496ED)](https://hub.docker.com/r/diegosouzapw/omniroute)
101
+ [![License](https://img.shields.io/github/license/diegosouzapw/OmniRoute)](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
102
+ [![Website](https://img.shields.io/badge/Website-omniroute.online-blue?logo=google-chrome&logoColor=white)](https://omniroute.online)
103
+
104
+ [🌐 Website](https://omniroute.online) • [🚀 Inicio Rápido](#-inicio-rápido) • [💡 Características](#-características-principales) • [📖 Docs](#-documentación) • [💰 Precios](#-precios-resumidos)
105
+
106
+ 🌐 **Disponible en:** [English](README.md) | [Português](README.pt-BR.md) | [Español](README.es.md) | [Русский](README.ru.md) | [中文](README.zh-CN.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Italiano](README.it.md)
107
+
108
+ </div>
109
+
110
+ ---
111
+
112
+ ## 🤔 ¿Por qué OmniRoute?
113
+
114
+ **Deja de desperdiciar dinero y chocar con límites:**
115
+
116
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> La cuota de suscripción expira sin usar cada mes
117
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Los límites de tasa te detienen en medio de la programación
118
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> APIs caras ($20-50/mes por proveedor)
119
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Cambiar manualmente entre proveedores
120
+
121
+ **OmniRoute resuelve esto:**
122
+
123
+ - ✅ **Maximiza suscripciones** - Rastrea cuotas, usa cada bit antes del reset
124
+ - ✅ **Fallback automático** - Suscripción → API Key → Barato → Gratuito, cero tiempo de inactividad
125
+ - ✅ **Multi-cuenta** - Round-robin entre cuentas por proveedor
126
+ - ✅ **Universal** - Funciona con Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, cualquier herramienta CLI
127
+
128
+ ---
129
+
130
+ ## 🔄 Cómo Funciona
131
+
132
+ ```
133
+ ┌─────────────┐
134
+ │ Tu CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
135
+ │ Tool │
136
+ └──────┬──────┘
137
+ │ http://localhost:20128/v1
138
+
139
+ ┌─────────────────────────────────────────┐
140
+ │ OmniRoute (Enrutador Inteligente) │
141
+ │ • Traducción de formato (OpenAI ↔ Claude) │
142
+ │ • Rastreo de cuota + Embeddings + Imágenes │
143
+ │ • Renovación automática de tokens │
144
+ └──────┬──────────────────────────────────┘
145
+
146
+ ├─→ [Tier 1: SUSCRIPCIÓN] Claude Code, Codex, Gemini CLI
147
+ │ ↓ cuota agotada
148
+ ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
149
+ │ ↓ límite de presupuesto
150
+ ├─→ [Tier 3: BARATO] GLM ($0.6/1M), MiniMax ($0.2/1M)
151
+ │ ↓ límite de presupuesto
152
+ └─→ [Tier 4: GRATUITO] iFlow, Qwen, Kiro (ilimitado)
153
+
154
+ Resultado: Nunca dejes de programar, costo mínimo
155
+ ```
156
+
157
+ ---
158
+
159
+ ## ⚡ Inicio Rápido
160
+
161
+ **1. Instala globalmente:**
162
+
163
+ ```bash
164
+ npm install -g omniroute
165
+ omniroute
166
+ ```
167
+
168
+ 🎉 El Dashboard se abre en `http://localhost:20128`
169
+
170
+ | Comando | Descripción |
171
+ | ----------------------- | ---------------------------------------------- |
172
+ | `omniroute` | Iniciar servidor (puerto predeterminado 20128) |
173
+ | `omniroute --port 3000` | Usar puerto personalizado |
174
+ | `omniroute --no-open` | No abrir navegador automáticamente |
175
+ | `omniroute --help` | Mostrar ayuda |
176
+
177
+ **2. Conecta un proveedor GRATUITO:**
178
+
179
+ Dashboard → Proveedores → Conectar **Claude Code** o **Antigravity** → Login OAuth → ¡Listo!
180
+
181
+ **3. Usa en tu herramienta CLI:**
182
+
183
+ ```
184
+ Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Configuración:
185
+ Endpoint: http://localhost:20128/v1
186
+ API Key: [copiar del dashboard]
187
+ Model: if/kimi-k2-thinking
188
+ ```
189
+
190
+ **¡Eso es todo!** Comienza a programar con modelos de IA GRATUITOS.
191
+
192
+ **Alternativa — ejecutar desde código fuente:**
193
+
194
+ ```bash
195
+ cp .env.example .env
196
+ npm install
197
+ PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
198
+ ```
199
+
200
+ ---
201
+
202
+ ## 🐳 Docker
203
+
204
+ OmniRoute está disponible como imagen Docker pública en [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
205
+
206
+ **Ejecución rápida:**
207
+
208
+ ```bash
209
+ docker run -d \
210
+ --name omniroute \
211
+ --restart unless-stopped \
212
+ -p 20128:20128 \
213
+ -v omniroute-data:/app/data \
214
+ diegosouzapw/omniroute:latest
215
+ ```
216
+
217
+ **Con archivo de entorno:**
218
+
219
+ ```bash
220
+ # Copia y edita el .env primero
221
+ cp .env.example .env
222
+
223
+ docker run -d \
224
+ --name omniroute \
225
+ --restart unless-stopped \
226
+ --env-file .env \
227
+ -p 20128:20128 \
228
+ -v omniroute-data:/app/data \
229
+ diegosouzapw/omniroute:latest
230
+ ```
231
+
232
+ **Usando Docker Compose:**
233
+
234
+ ```bash
235
+ # Perfil base (sin herramientas CLI)
236
+ docker compose --profile base up -d
237
+
238
+ # Perfil CLI (Claude Code, Codex, OpenClaw integrados)
239
+ docker compose --profile cli up -d
240
+ ```
241
+
242
+ | Imagen | Tag | Tamaño | Descripción |
243
+ | ------------------------ | -------- | ------ | ---------------------- |
244
+ | `diegosouzapw/omniroute` | `latest` | ~250MB | Última versión estable |
245
+ | `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Versión actual |
246
+
247
+ ---
248
+
249
+ ## 💰 Precios Resumidos
250
+
251
+ | Tier | Proveedor | Costo | Reset de Cuota | Mejor Para |
252
+ | ------------------ | ----------------- | ---------------------------- | ----------------- | ----------------------- |
253
+ | **💳 SUSCRIPCIÓN** | Claude Code (Pro) | $20/mes | 5h + semanal | Ya suscrito |
254
+ | | Codex (Plus/Pro) | $20-200/mes | 5h + semanal | Usuarios OpenAI |
255
+ | | Gemini CLI | **GRATUITO** | 180K/mes + 1K/día | ¡Todos! |
256
+ | | GitHub Copilot | $10-19/mes | Mensual | Usuarios GitHub |
257
+ | **🔑 API KEY** | NVIDIA NIM | **GRATUITO** (1000 créditos) | Único | Pruebas gratuitas |
258
+ | | DeepSeek | Por uso | Ninguno | Mejor precio/calidad |
259
+ | | Groq | Tier gratuito + pago | Limitado | Inferencia ultra-rápida |
260
+ | | xAI (Grok) | Por uso | Ninguno | Modelos Grok |
261
+ | | Mistral | Tier gratuito + pago | Limitado | IA Europea |
262
+ | | OpenRouter | Por uso | Ninguno | 100+ modelos |
263
+ | **💰 BARATO** | GLM-4.7 | $0.6/1M | Diario 10h | Respaldo económico |
264
+ | | MiniMax M2.1 | $0.2/1M | Rotativo 5h | Opción más barata |
265
+ | | Kimi K2 | $9/mes fijo | 10M tokens/mes | Costo predecible |
266
+ | **🆓 GRATUITO** | iFlow | $0 | Ilimitado | 8 modelos gratuitos |
267
+ | | Qwen | $0 | Ilimitado | 3 modelos gratuitos |
268
+ | | Kiro | $0 | Ilimitado | Claude gratuito |
269
+
270
+ **💡 Consejo Pro:** ¡Comienza con Gemini CLI (180K gratis/mes) + iFlow (ilimitado gratis) = $0 de costo!
271
+
272
+ ---
273
+
274
+ ## 🎯 Casos de Uso
275
+
276
+ ### Caso 1: "Tengo suscripción Claude Pro"
277
+
278
+ **Problema:** La cuota expira sin usar, límites de tasa durante programación intensa
279
+
280
+ ```
281
+ Combo: "maximize-claude"
282
+ 1. cc/claude-opus-4-6 (usar suscripción al máximo)
283
+ 2. glm/glm-4.7 (respaldo barato cuando la cuota se agota)
284
+ 3. if/kimi-k2-thinking (fallback de emergencia gratuito)
285
+
286
+ Costo mensual: $20 (suscripción) + ~$5 (respaldo) = $25 total
287
+ vs. $20 + chocar con límites = frustración
288
+ ```
289
+
290
+ ### Caso 2: "Quiero costo cero"
291
+
292
+ **Problema:** No puede pagar suscripciones, necesita IA confiable para programar
293
+
294
+ ```
295
+ Combo: "free-forever"
296
+ 1. gc/gemini-3-flash (180K gratis/mes)
297
+ 2. if/kimi-k2-thinking (ilimitado gratis)
298
+ 3. qw/qwen3-coder-plus (ilimitado gratis)
299
+
300
+ Costo mensual: $0
301
+ Calidad: Modelos listos para producción
302
+ ```
303
+
304
+ ### Caso 3: "Necesito programar 24/7, sin interrupciones"
305
+
306
+ **Problema:** Plazos ajustados, no puede permitirse tiempo de inactividad
307
+
308
+ ```
309
+ Combo: "always-on"
310
+ 1. cc/claude-opus-4-6 (mejor calidad)
311
+ 2. cx/gpt-5.2-codex (segunda suscripción)
312
+ 3. glm/glm-4.7 (barato, reset diario)
313
+ 4. minimax/MiniMax-M2.1 (más barato, reset 5h)
314
+ 5. if/kimi-k2-thinking (gratuito ilimitado)
315
+
316
+ Resultado: 5 capas de fallback = cero tiempo de inactividad
317
+ ```
318
+
319
+ ### Caso 4: "Quiero IA GRATUITA en OpenClaw"
320
+
321
+ **Problema:** Necesita asistente de IA en apps de mensajería, completamente gratuito
322
+
323
+ ```
324
+ Combo: "openclaw-free"
325
+ 1. if/glm-4.7 (ilimitado gratis)
326
+ 2. if/minimax-m2.1 (ilimitado gratis)
327
+ 3. if/kimi-k2-thinking (ilimitado gratis)
328
+
329
+ Costo mensual: $0
330
+ Acceso vía: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
331
+ ```
332
+
333
+ ---
334
+
335
+ ## 💡 Características Principales
336
+
337
+ ### 🧠 Enrutamiento e Inteligencia
338
+
339
+ | Característica | Qué Hace |
340
+ | -------------------------------------- | ------------------------------------------------------------------------------- |
341
+ | 🎯 **Fallback Inteligente 4 Tiers** | Auto-enrutamiento: Suscripción → API Key → Barato → Gratuito |
342
+ | 📊 **Rastreo de Cuota en Tiempo Real** | Conteo de tokens en vivo + countdown de reset por proveedor |
343
+ | 🔄 **Traducción de Formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro transparente |
344
+ | 👥 **Soporte Multi-Cuenta** | Múltiples cuentas por proveedor con selección inteligente |
345
+ | 🔄 **Renovación Automática de Token** | Tokens OAuth se renuevan automáticamente con reintentos |
346
+ | 🎨 **Combos Personalizados** | 6 estrategias: fill-first, round-robin, p2c, random, least-used, cost-optimized |
347
+ | 🧩 **Modelos Personalizados** | Agrega cualquier ID de modelo a cualquier proveedor |
348
+ | 🌐 **Enrutador Wildcard** | Enruta patrones `provider/*` a cualquier proveedor dinámicamente |
349
+ | 🧠 **Presupuesto de Razonamiento** | Modos passthrough, auto, custom y adaptativo para modelos de razonamiento |
350
+ | 💬 **Inyección de System Prompt** | System prompt global aplicado en todas las solicitudes |
351
+ | 📄 **API Responses** | Soporte completo de la API Responses de OpenAI (`/v1/responses`) para Codex |
352
+
353
+ ### 🎵 APIs Multi-Modal
354
+
355
+ | Característica | Qué Hace |
356
+ | ----------------------------- | ------------------------------------------------------ |
357
+ | 🖼️ **Generación de Imágenes** | `/v1/images/generations` — 4 proveedores, 9+ modelos |
358
+ | 📐 **Embeddings** | `/v1/embeddings` — 6 proveedores, 9+ modelos |
359
+ | 🎤 **Transcripción de Audio** | `/v1/audio/transcriptions` — Compatible con Whisper |
360
+ | 🔊 **Texto a Voz** | `/v1/audio/speech` — Síntesis de audio multi-proveedor |
361
+ | 🛡️ **Moderaciones** | `/v1/moderations` — Verificaciones de seguridad |
362
+ | 🔀 **Reranking** | `/v1/rerank` — Reranking de relevancia de documentos |
363
+
364
+ ### 🛡️ Resiliencia y Seguridad
365
+
366
+ | Característica | Qué Hace |
367
+ | ---------------------------------- | ---------------------------------------------------------------- |
368
+ | 🔌 **Circuit Breaker** | Auto-apertura/cierre por proveedor con umbrales configurables |
369
+ | 🛡️ **Anti-Thundering Herd** | Mutex + semáforo rate-limit para proveedores con API key |
370
+ | 🧠 **Caché Semántico** | Caché de dos niveles (firma + semántico) reduce costo y latencia |
371
+ | ⚡ **Idempotencia de Solicitud** | Ventana de dedup de 5s para solicitudes duplicadas |
372
+ | 🔒 **Spoofing de Fingerprint TLS** | Bypass de detección de bot vía TLS con wreq-js |
373
+ | 🌐 **Filtrado de IP** | Allowlist/blocklist para control de acceso a la API |
374
+ | 📊 **Rate Limits Editables** | RPM, gap mínimo y concurrencia máxima configurables |
375
+
376
+ ### 📊 Observabilidad y Analytics
377
+
378
+ | Característica | Qué Hace |
379
+ | ------------------------------ | --------------------------------------------------------------------- |
380
+ | 📝 **Logs de Solicitud** | Modo debug con logs completos de request/response |
381
+ | 💾 **Logs SQLite** | Logs de proxy persistentes sobreviven a reinicios |
382
+ | 📊 **Dashboard de Analytics** | Recharts: cards de estadísticas, gráfico de uso, tabla de proveedores |
383
+ | 📈 **Rastreo de Progreso** | Eventos de progreso SSE opt-in para streaming |
384
+ | 🧪 **Evaluaciones de LLM** | Pruebas con conjunto golden y 4 estrategias de match |
385
+ | 🔍 **Telemetría de Solicitud** | Agregación de latencia p50/p95/p99 + rastreo X-Request-Id |
386
+ | 📋 **Logs + Cuotas** | Páginas dedicadas para navegación de logs y rastreo de cuotas |
387
+ | 🏥 **Dashboard de Salud** | Uptime, estados de circuit breaker, lockouts, stats de caché |
388
+ | 💰 **Rastreo de Costos** | Gestión de presupuesto + configuración de precios por modelo |
389
+
390
+ ### ☁️ Deploy y Sincronización
391
+
392
+ | Característica | Qué Hace |
393
+ | --------------------------------- | ------------------------------------------------------------------------------- |
394
+ | 💾 **Cloud Sync** | Sincroniza configuraciones entre dispositivos vía Cloudflare Workers |
395
+ | 🌐 **Deploy en Cualquier Lugar** | Localhost, VPS, Docker, Cloudflare Workers |
396
+ | 🔑 **Gestión de API Keys** | Genera, rota y define alcance de API keys por proveedor |
397
+ | 🧙 **Asistente de Configuración** | Setup guiado en 4 pasos para nuevos usuarios |
398
+ | 🔧 **Dashboard CLI Tools** | Configuración en un clic para Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
399
+ | 🔄 **Backups de DB** | Backup y restauración automáticos de todas las configuraciones |
400
+
401
+ <details>
402
+ <summary><b>📖 Detalles de Características</b></summary>
403
+
404
+ ### 🎯 Fallback Inteligente 4 Tiers
405
+
406
+ Crea combos con fallback automático:
407
+
408
+ ```
409
+ Combo: "my-coding-stack"
410
+ 1. cc/claude-opus-4-6 (tu suscripción)
411
+ 2. nvidia/llama-3.3-70b (API NVIDIA gratuita)
412
+ 3. glm/glm-4.7 (respaldo barato, $0.6/1M)
413
+ 4. if/kimi-k2-thinking (fallback gratuito)
414
+
415
+ → Cambia automáticamente cuando la cuota se agota o ocurren errores
416
+ ```
417
+
418
+ ### 📊 Rastreo de Cuota en Tiempo Real
419
+
420
+ - Consumo de tokens por proveedor
421
+ - Countdown de reset (5 horas, diario, semanal)
422
+ - Estimación de costo para tiers pagos
423
+ - Reportes de gastos mensuales
424
+
425
+ ### 🔄 Traducción de Formato
426
+
427
+ Traducción transparente entre formatos:
428
+
429
+ - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
430
+ - Tu herramienta CLI envía formato OpenAI → OmniRoute traduce → El proveedor recibe formato nativo
431
+ - Funciona con cualquier herramienta que soporte endpoints OpenAI personalizados
432
+
433
+ ### 👥 Soporte Multi-Cuenta
434
+
435
+ - Agrega múltiples cuentas por proveedor
436
+ - Round-robin automático o enrutamiento por prioridad
437
+ - Fallback a la siguiente cuenta cuando una alcanza la cuota
438
+
439
+ ### 🔄 Renovación Automática de Token
440
+
441
+ - Los tokens OAuth se renuevan automáticamente antes de expirar
442
+ - Sin necesidad de re-autenticación manual
443
+ - Experiencia transparente en todos los proveedores
444
+
445
+ ### 🎨 Combos Personalizados
446
+
447
+ - Crea combinaciones ilimitadas de modelos
448
+ - 6 estrategias: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
449
+ - Comparte combos entre dispositivos con Cloud Sync
450
+
451
+ ### 🏥 Dashboard de Salud
452
+
453
+ - Estado del sistema (uptime, versión, uso de memoria)
454
+ - Estados de circuit breaker por proveedor (Closed/Open/Half-Open)
455
+ - Estado de rate limit y lockouts activos
456
+ - Estadísticas de caché de firma
457
+ - Telemetría de latencia (p50/p95/p99) + caché de prompt
458
+ - Reset de salud con un clic
459
+
460
+ ### 🔧 Playground del Traductor
461
+
462
+ - Debug, prueba y visualiza traducciones de formato de API
463
+ - Envía solicitudes y ve cómo OmniRoute traduce entre formatos de proveedores
464
+ - Invaluable para troubleshooting de problemas de integración
465
+
466
+ ### 💾 Cloud Sync
467
+
468
+ - Sincroniza proveedores, combos y configuraciones entre dispositivos
469
+ - Sincronización automática en segundo plano
470
+ - Almacenamiento cifrado seguro
471
+
472
+ </details>
473
+
474
+ ---
475
+
476
+ ## 📖 Guía de Configuración
477
+
478
+ <details>
479
+ <summary><b>💳 Proveedores por Suscripción</b></summary>
480
+
481
+ ### Claude Code (Pro/Max)
482
+
483
+ ```bash
484
+ Dashboard → Proveedores → Conectar Claude Code
485
+ → Login OAuth → Renovación automática de token
486
+ → Rastreo de cuota 5h + semanal
487
+
488
+ Modelos:
489
+ cc/claude-opus-4-6
490
+ cc/claude-sonnet-4-5-20250929
491
+ cc/claude-haiku-4-5-20251001
492
+ ```
493
+
494
+ **Consejo Pro:** Usa Opus para tareas complejas, Sonnet para velocidad. ¡OmniRoute rastrea cuota por modelo!
495
+
496
+ ### OpenAI Codex (Plus/Pro)
497
+
498
+ ```bash
499
+ Dashboard → Proveedores → Conectar Codex
500
+ → Login OAuth (puerto 1455)
501
+ → Reset 5h + semanal
502
+
503
+ Modelos:
504
+ cx/gpt-5.2-codex
505
+ cx/gpt-5.1-codex-max
506
+ ```
507
+
508
+ ### Gemini CLI (¡GRATUITO 180K/mes!)
509
+
510
+ ```bash
511
+ Dashboard → Proveedores → Conectar Gemini CLI
512
+ → Google OAuth
513
+ → 180K completions/mes + 1K/día
514
+
515
+ Modelos:
516
+ gc/gemini-3-flash-preview
517
+ gc/gemini-2.5-pro
518
+ ```
519
+
520
+ **Mejor Valor:** ¡Tier gratuito enorme! Úsalo antes de los tiers pagos.
521
+
522
+ ### GitHub Copilot
523
+
524
+ ```bash
525
+ Dashboard → Proveedores → Conectar GitHub
526
+ → OAuth vía GitHub
527
+ → Reset mensual (1ro del mes)
528
+
529
+ Modelos:
530
+ gh/gpt-5
531
+ gh/claude-4.5-sonnet
532
+ gh/gemini-3-pro
533
+ ```
534
+
535
+ </details>
536
+
537
+ <details>
538
+ <summary><b>🔑 Proveedores por API Key</b></summary>
539
+
540
+ ### NVIDIA NIM (¡GRATUITO 1000 créditos!)
541
+
542
+ 1. Regístrate: [build.nvidia.com](https://build.nvidia.com)
543
+ 2. Obtén API key gratuita (1000 créditos de inferencia incluidos)
544
+ 3. Dashboard → Agregar Proveedor → NVIDIA NIM:
545
+ - API Key: `nvapi-your-key`
546
+
547
+ **Modelos:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, y 50+ más
548
+
549
+ **Consejo Pro:** ¡API compatible con OpenAI — funciona perfectamente con la traducción de formato de OmniRoute!
550
+
551
+ ### DeepSeek
552
+
553
+ 1. Regístrate: [platform.deepseek.com](https://platform.deepseek.com)
554
+ 2. Obtén API key
555
+ 3. Dashboard → Agregar Proveedor → DeepSeek
556
+
557
+ **Modelos:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
558
+
559
+ ### Groq (¡Tier Gratuito Disponible!)
560
+
561
+ 1. Regístrate: [console.groq.com](https://console.groq.com)
562
+ 2. Obtén API key (tier gratuito incluido)
563
+ 3. Dashboard → Agregar Proveedor → Groq
564
+
565
+ **Modelos:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
566
+
567
+ **Consejo Pro:** ¡Inferencia ultra-rápida — mejor para programación en tiempo real!
568
+
569
+ ### OpenRouter (100+ Modelos)
570
+
571
+ 1. Regístrate: [openrouter.ai](https://openrouter.ai)
572
+ 2. Obtén API key
573
+ 3. Dashboard → Agregar Proveedor → OpenRouter
574
+
575
+ **Modelos:** Accede a 100+ modelos de todos los principales proveedores a través de una única API key.
576
+
577
+ </details>
578
+
579
+ <details>
580
+ <summary><b>💰 Proveedores Baratos (Respaldo)</b></summary>
581
+
582
+ ### GLM-4.7 (Reset diario, $0.6/1M)
583
+
584
+ 1. Regístrate: [Zhipu AI](https://open.bigmodel.cn/)
585
+ 2. Obtén API key del Plan Coding
586
+ 3. Dashboard → Agregar API Key:
587
+ - Proveedor: `glm`
588
+ - API Key: `your-key`
589
+
590
+ **Usa:** `glm/glm-4.7`
591
+
592
+ **Consejo Pro:** ¡El Plan Coding ofrece 3× cuota a 1/7 del costo! Reset diario 10:00 AM.
593
+
594
+ ### MiniMax M2.1 (Reset 5h, $0.20/1M)
595
+
596
+ 1. Regístrate: [MiniMax](https://www.minimax.io/)
597
+ 2. Obtén API key
598
+ 3. Dashboard → Agregar API Key
599
+
600
+ **Usa:** `minimax/MiniMax-M2.1`
601
+
602
+ **Consejo Pro:** ¡Opción más barata para contexto largo (1M tokens)!
603
+
604
+ ### Kimi K2 ($9/mes fijo)
605
+
606
+ 1. Suscríbete: [Moonshot AI](https://platform.moonshot.ai/)
607
+ 2. Obtén API key
608
+ 3. Dashboard → Agregar API Key
609
+
610
+ **Usa:** `kimi/kimi-latest`
611
+
612
+ **Consejo Pro:** ¡$9/mes fijo por 10M tokens = $0.90/1M de costo efectivo!
613
+
614
+ </details>
615
+
616
+ <details>
617
+ <summary><b>🆓 Proveedores GRATUITOS (Respaldo de Emergencia)</b></summary>
618
+
619
+ ### iFlow (8 modelos GRATUITOS)
620
+
621
+ ```bash
622
+ Dashboard → Conectar iFlow
623
+ → Login OAuth iFlow
624
+ → Uso ilimitado
625
+
626
+ Modelos:
627
+ if/kimi-k2-thinking
628
+ if/qwen3-coder-plus
629
+ if/glm-4.7
630
+ if/minimax-m2
631
+ if/deepseek-r1
632
+ ```
633
+
634
+ ### Qwen (3 modelos GRATUITOS)
635
+
636
+ ```bash
637
+ Dashboard → Conectar Qwen
638
+ → Autorización por código de dispositivo
639
+ → Uso ilimitado
640
+
641
+ Modelos:
642
+ qw/qwen3-coder-plus
643
+ qw/qwen3-coder-flash
644
+ ```
645
+
646
+ ### Kiro (Claude GRATUITO)
647
+
648
+ ```bash
649
+ Dashboard → Conectar Kiro
650
+ → AWS Builder ID o Google/GitHub
651
+ → Uso ilimitado
652
+
653
+ Modelos:
654
+ kr/claude-sonnet-4.5
655
+ kr/claude-haiku-4.5
656
+ ```
657
+
658
+ </details>
659
+
660
+ <details>
661
+ <summary><b>🎨 Crear Combos</b></summary>
662
+
663
+ ### Ejemplo 1: Maximizar Suscripción → Respaldo Barato
664
+
665
+ ```
666
+ Dashboard → Combos → Crear Nuevo
667
+
668
+ Nombre: premium-coding
669
+ Modelos:
670
+ 1. cc/claude-opus-4-6 (Suscripción primaria)
671
+ 2. glm/glm-4.7 (Respaldo barato, $0.6/1M)
672
+ 3. minimax/MiniMax-M2.1 (Fallback más barato, $0.20/1M)
673
+
674
+ Usa en CLI: premium-coding
675
+ ```
676
+
677
+ ### Ejemplo 2: Solo Gratuito (Costo Cero)
678
+
679
+ ```
680
+ Nombre: free-combo
681
+ Modelos:
682
+ 1. gc/gemini-3-flash-preview (180K gratis/mes)
683
+ 2. if/kimi-k2-thinking (ilimitado)
684
+ 3. qw/qwen3-coder-plus (ilimitado)
685
+
686
+ Costo: ¡$0 para siempre!
687
+ ```
688
+
689
+ </details>
690
+
691
+ <details>
692
+ <summary><b>🔧 Integración CLI</b></summary>
693
+
694
+ ### Cursor IDE
695
+
696
+ ```
697
+ Configuración → Modelos → Avanzado:
698
+ OpenAI API Base URL: http://localhost:20128/v1
699
+ OpenAI API Key: [del dashboard OmniRoute]
700
+ Model: cc/claude-opus-4-6
701
+ ```
702
+
703
+ ### Claude Code
704
+
705
+ Usa la página **CLI Tools** en el dashboard para configuración en un clic, o edita `~/.claude/settings.json` manualmente.
706
+
707
+ ### Codex CLI
708
+
709
+ ```bash
710
+ export OPENAI_BASE_URL="http://localhost:20128"
711
+ export OPENAI_API_KEY="your-omniroute-api-key"
712
+
713
+ codex "your prompt"
714
+ ```
715
+
716
+ ### OpenClaw
717
+
718
+ **Opción 1 — Dashboard (recomendado):**
719
+
720
+ ```
721
+ Dashboard → CLI Tools → OpenClaw → Seleccionar Modelo → Aplicar
722
+ ```
723
+
724
+ **Opción 2 — Manual:** Edita `~/.openclaw/openclaw.json`:
725
+
726
+ ```json
727
+ {
728
+ "models": {
729
+ "providers": {
730
+ "omniroute": {
731
+ "baseUrl": "http://127.0.0.1:20128/v1",
732
+ "apiKey": "sk_omniroute",
733
+ "api": "openai-completions"
734
+ }
735
+ }
736
+ }
737
+ }
738
+ ```
739
+
740
+ > **Nota:** OpenClaw solo funciona con OmniRoute local. Usa `127.0.0.1` en lugar de `localhost` para evitar problemas de resolución IPv6.
741
+
742
+ ### Cline / Continue / RooCode
743
+
744
+ ```
745
+ Configuración → Configuración de API:
746
+ Proveedor: OpenAI Compatible
747
+ Base URL: http://localhost:20128/v1
748
+ API Key: [del dashboard OmniRoute]
749
+ Model: if/kimi-k2-thinking
750
+ ```
751
+
752
+ </details>
753
+
754
+ ---
755
+
756
+ ## 📊 Modelos Disponibles
757
+
758
+ <details>
759
+ <summary><b>Ver todos los modelos disponibles</b></summary>
760
+
761
+ **Claude Code (`cc/`)** - Pro/Max:
762
+
763
+ - `cc/claude-opus-4-6`
764
+ - `cc/claude-sonnet-4-5-20250929`
765
+ - `cc/claude-haiku-4-5-20251001`
766
+
767
+ **Codex (`cx/`)** - Plus/Pro:
768
+
769
+ - `cx/gpt-5.2-codex`
770
+ - `cx/gpt-5.1-codex-max`
771
+
772
+ **Gemini CLI (`gc/`)** - GRATUITO:
773
+
774
+ - `gc/gemini-3-flash-preview`
775
+ - `gc/gemini-2.5-pro`
776
+
777
+ **GitHub Copilot (`gh/`)**:
778
+
779
+ - `gh/gpt-5`
780
+ - `gh/claude-4.5-sonnet`
781
+
782
+ **NVIDIA NIM (`nvidia/`)** - Créditos GRATUITOS:
783
+
784
+ - `nvidia/llama-3.3-70b-instruct`
785
+ - `nvidia/mistral-7b-instruct`
786
+ - 50+ más modelos en [build.nvidia.com](https://build.nvidia.com)
787
+
788
+ **GLM (`glm/`)** - $0.6/1M:
789
+
790
+ - `glm/glm-4.7`
791
+
792
+ **MiniMax (`minimax/`)** - $0.2/1M:
793
+
794
+ - `minimax/MiniMax-M2.1`
795
+
796
+ **iFlow (`if/`)** - GRATUITO:
797
+
798
+ - `if/kimi-k2-thinking`
799
+ - `if/qwen3-coder-plus`
800
+ - `if/deepseek-r1`
801
+ - `if/glm-4.7`
802
+ - `if/minimax-m2`
803
+
804
+ **Qwen (`qw/`)** - GRATUITO:
805
+
806
+ - `qw/qwen3-coder-plus`
807
+ - `qw/qwen3-coder-flash`
808
+
809
+ **Kiro (`kr/`)** - GRATUITO:
810
+
811
+ - `kr/claude-sonnet-4.5`
812
+ - `kr/claude-haiku-4.5`
813
+
814
+ **OpenRouter (`or/`)** - 100+ modelos:
815
+
816
+ - `or/anthropic/claude-4-sonnet`
817
+ - `or/google/gemini-2.5-pro`
818
+ - Cualquier modelo de [openrouter.ai/models](https://openrouter.ai/models)
819
+
820
+ </details>
821
+
822
+ ---
823
+
824
+ ## 🧪 Evaluaciones (Evals)
825
+
826
+ OmniRoute incluye un framework de evaluación integrado para probar la calidad de respuestas de LLM contra un conjunto golden. Accede vía **Analytics → Evals** en el dashboard.
827
+
828
+ ### Conjunto Golden Integrado
829
+
830
+ El "OmniRoute Golden Set" precargado contiene 10 casos de prueba que cubren:
831
+
832
+ - Saludos, matemáticas, geografía, generación de código
833
+ - Conformidad de formato JSON, traducción, markdown
834
+ - Rechazo de seguridad (contenido dañino), conteo, lógica booleana
835
+
836
+ ### Estrategias de Evaluación
837
+
838
+ | Estrategia | Descripción | Ejemplo |
839
+ | ---------- | ---------------------------------------------------- | -------------------------------- |
840
+ | `exact` | La salida debe coincidir exactamente | `"4"` |
841
+ | `contains` | La salida debe contener subcadena (case-insensitive) | `"Paris"` |
842
+ | `regex` | La salida debe coincidir con el patrón regex | `"1.*2.*3"` |
843
+ | `custom` | Función JS personalizada retorna true/false | `(output) => output.length > 10` |
844
+
845
+ ---
846
+
847
+ ## 🐛 Solución de Problemas
848
+
849
+ <details>
850
+ <summary><b>Haz clic para expandir la guía de solución de problemas</b></summary>
851
+
852
+ **"Language model did not provide messages"**
853
+
854
+ - Cuota del proveedor agotada → Verifica el rastreador de cuota en el dashboard
855
+ - Solución: Usa combo con fallback o cambia a tier más barato
856
+
857
+ **Rate limiting**
858
+
859
+ - Cuota de suscripción agotada → Fallback a GLM/MiniMax
860
+ - Agrega combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
861
+
862
+ **Token OAuth expirado**
863
+
864
+ - Renovado automáticamente por OmniRoute
865
+ - Si persiste: Dashboard → Proveedor → Reconectar
866
+
867
+ **Costos altos**
868
+
869
+ - Verifica estadísticas de uso en Dashboard → Costos
870
+ - Cambia modelo primario a GLM/MiniMax
871
+ - Usa tier gratuito (Gemini CLI, iFlow) para tareas no críticas
872
+
873
+ **Dashboard se abre en el puerto equivocado**
874
+
875
+ - Establece `PORT=20128` y `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
876
+
877
+ **Errores de cloud sync**
878
+
879
+ - Verifica que `BASE_URL` apunte a tu instancia en ejecución
880
+ - Verifica que `CLOUD_URL` apunte a tu endpoint cloud esperado
881
+ - Mantén los valores `NEXT_PUBLIC_*` alineados con los valores del servidor
882
+
883
+ **Primer login no funciona**
884
+
885
+ - Verifica `INITIAL_PASSWORD` en `.env`
886
+ - Si no está definido, la contraseña predeterminada es `123456`
887
+
888
+ **Sin logs de solicitud**
889
+
890
+ - Establece `ENABLE_REQUEST_LOGS=true` en `.env`
891
+
892
+ **Prueba de conexión muestra "Invalid" para proveedores compatibles con OpenAI**
893
+
894
+ - Muchos proveedores no exponen el endpoint `/models`
895
+ - OmniRoute v0.9.0+ incluye validación vía chat completions como fallback
896
+ - Asegúrate de que la URL base incluya el sufijo `/v1`
897
+
898
+ </details>
899
+
900
+ ---
901
+
902
+ ## 🛠️ Stack Tecnológico
903
+
904
+ - **Runtime**: Node.js 20+
905
+ - **Lenguaje**: TypeScript 5.9 — **100% TypeScript** en `src/` y `open-sse/` (v0.9.0)
906
+ - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
907
+ - **Base de Datos**: LowDB (JSON) + SQLite (estado del dominio + logs de proxy)
908
+ - **Streaming**: Server-Sent Events (SSE)
909
+ - **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
910
+ - **Testing**: Node.js test runner (368+ tests unitarios)
911
+ - **CI/CD**: GitHub Actions (publicación automática npm + Docker Hub en release)
912
+ - **Website**: [omniroute.online](https://omniroute.online)
913
+ - **Paquete**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
914
+ - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
915
+ - **Resiliencia**: Circuit breaker, backoff exponencial, anti-thundering herd, spoofing TLS
916
+
917
+ ---
918
+
919
+ ## 📖 Documentación
920
+
921
+ | Documento | Descripción |
922
+ | ------------------------------------------------ | -------------------------------------------------- |
923
+ | [Guía del Usuario](docs/USER_GUIDE.md) | Proveedores, combos, integración CLI, deploy |
924
+ | [Referencia de API](docs/API_REFERENCE.md) | Todos los endpoints con ejemplos |
925
+ | [Solución de Problemas](docs/TROUBLESHOOTING.md) | Problemas comunes y soluciones |
926
+ | [Arquitectura](docs/ARCHITECTURE.md) | Arquitectura del sistema e internos |
927
+ | [Contribuir](CONTRIBUTING.md) | Setup de desarrollo y directrices |
928
+ | [Spec OpenAPI](docs/openapi.yaml) | Especificación OpenAPI 3.0 |
929
+ | [Política de Seguridad](SECURITY.md) | Reportar vulnerabilidades y prácticas de seguridad |
930
+
931
+ ---
932
+
933
+ ## 📧 Soporte
934
+
935
+ - **Website**: [omniroute.online](https://omniroute.online)
936
+ - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
937
+ - **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
938
+ - **Proyecto Original**: [9router por decolua](https://github.com/decolua/9router)
939
+
940
+ ---
941
+
942
+ ## 👥 Contribuidores
943
+
944
+ [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
945
+
946
+ ### Cómo Contribuir
947
+
948
+ 1. Haz fork del repositorio
949
+ 2. Crea tu rama de funcionalidad (`git checkout -b feature/amazing-feature`)
950
+ 3. Haz commit de tus cambios (`git commit -m 'Add amazing feature'`)
951
+ 4. Haz push a la rama (`git push origin feature/amazing-feature`)
952
+ 5. Abre un Pull Request
953
+
954
+ Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para directrices detalladas.
955
+
956
+ ### Lanzar una Nueva Versión
957
+
958
+ ```bash
959
+ # Crea un release — la publicación en npm ocurre automáticamente
960
+ gh release create v0.9.0 --title "v0.9.0" --generate-notes
961
+ ```
962
+
963
+ ---
964
+
965
+ ## 📊 Historial de Stars
966
+
967
+ <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
968
+ <picture>
969
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
970
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
971
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
972
+ </picture>
973
+ </a>
974
+
975
+ ---
976
+
977
+ ## 🙏 Agradecimientos
978
+
979
+ Agradecimiento especial a **[9router](https://github.com/decolua/9router)** por **[decolua](https://github.com/decolua)** — el proyecto original que inspiró este fork. OmniRoute se construye sobre esa increíble base con características adicionales, APIs multi-modal y una reescritura completa en TypeScript.
980
+
981
+ Agradecimiento especial a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — la implementación original en Go que inspiró esta adaptación a JavaScript.
982
+
983
+ ---
984
+
985
+ ## 📄 Licencia
986
+
987
+ Licencia MIT - consulta [LICENSE](LICENSE) para detalles.
988
+
989
+ ---
990
+
991
+ <div align="center">
992
+ <sub>Hecho con ❤️ para desarrolladores que programan 24/7</sub>
993
+ <br/>
994
+ <sub><a href="https://omniroute.online">omniroute.online</a></sub>
995
+ </div>