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.it.md DELETED
@@ -1,1434 +0,0 @@
1
- <div align="center">
2
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
3
-
4
- # 🚀 OmniRoute — Il Gateway IA Gratuito
5
-
6
- ### Non smettere mai di programmare. Routing intelligente verso **modelli IA GRATUITI e economici** con fallback automatico.
7
-
8
- _Il tuo proxy API universale — un endpoint, 36+ provider, zero downtime._
9
-
10
- **Chat Completions • Embeddings • Generazione Immagini • Audio • 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
- ### 🤖 Provider IA gratuito per i tuoi agenti di programmazione preferiti
27
-
28
- _Connetti qualsiasi IDE o strumento CLI con IA tramite OmniRoute — gateway API gratuito per programmazione illimitata._
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>📡 Tutti gli agenti si connettono via <code>http://localhost:20128/v1</code> o <code>http://cloud.omniroute.online/v1</code> — una configurazione, modelli e quota illimitati</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
- [🌐 Sito Web](https://omniroute.online) • [🚀 Avvio Rapido](#-avvio-rapido) • [💡 Funzionalità](#-funzionalità-principali) • [📖 Docs](#-documentazione) • [💰 Prezzi](#-panoramica-prezzi)
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
- ## 🤔 Perché OmniRoute?
155
-
156
- **Smetti di sprecare soldi e di sbattere contro i limiti:**
157
-
158
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> La quota dell'abbonamento scade inutilizzata ogni mese
159
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> I limiti di rate ti fermano nel mezzo della programmazione
160
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> API costose ($20-50/mese per provider)
161
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Cambio manuale tra provider
162
-
163
- **OmniRoute risolve tutto questo:**
164
-
165
- - ✅ **Massimizza gli abbonamenti** — Traccia le quote, usa tutto prima del reset
166
- - ✅ **Fallback automatico** — Abbonamento → API Key → Economico → Gratuito, zero downtime
167
- - ✅ **Multi-account** — Round-robin tra account per provider
168
- - ✅ **Universale** — Funziona con Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, qualsiasi strumento CLI
169
-
170
- ---
171
-
172
- ## 📧 Supporto
173
-
174
- > 💬 **Unisciti alla nostra community!** [Gruppo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Ottieni aiuto, condividi consigli e rimani aggiornato.
175
-
176
- - **Sito Web**: [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**: [Gruppo della comunità](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
180
- - **WhatsApp**: [Gruppo della comunità](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
181
- - **Progetto Originale**: [9router di decolua](https://github.com/decolua/9router)
182
-
183
- ---
184
-
185
- ## 🔄 Come Funziona
186
-
187
- ```
188
- ┌─────────────┐
189
- │ Il tuo CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
190
- │ Tool │
191
- └──────┬──────┘
192
- │ http://localhost:20128/v1
193
-
194
- ┌─────────────────────────────────────────┐
195
- │ OmniRoute (Router Intelligente) │
196
- │ • Traduzione formato (OpenAI ↔ Claude) │
197
- │ • Tracciamento quote + Embeddings + Immagini │
198
- │ • Rinnovo automatico dei token │
199
- └──────┬──────────────────────────────────┘
200
-
201
- ├─→ [Tier 1: ABBONAMENTO] Claude Code, Codex, Gemini CLI
202
- │ ↓ quota esaurita
203
- ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, ecc.
204
- │ ↓ limite budget
205
- ├─→ [Tier 3: ECONOMICO] GLM ($0.6/1M), MiniMax ($0.2/1M)
206
- │ ↓ limite budget
207
- └─→ [Tier 4: GRATUITO] iFlow, Qwen, Kiro (illimitato)
208
-
209
- Risultato: Non smettere mai di programmare, costo minimo
210
- ```
211
-
212
- ---
213
-
214
- ## 🎯 Cosa risolve OmniRoute: 30 punti critici reali e casi d'uso
215
-
216
- > **Ogni sviluppatore che utilizza strumenti di intelligenza artificiale affronta questi problemi quotidianamente.** OmniRoute è stato creato per risolverli tutti: dai superamenti dei costi ai blocchi regionali, dai flussi OAuth interrotti alle operazioni di protocollo e all'osservabilità aziendale.
217
-
218
- <details>
219
- <summary><b>💸 1. "Pago un abbonamento costoso ma vengo comunque interrotto dai limiti"</b></summary>
220
-
221
- Gli sviluppatori pagano $ 20-200 al mese per Claude Pro, Codex Pro o GitHub Copilot. Anche pagando, la quota ha un tetto: 5 ore di utilizzo, limiti settimanali o limiti di tariffa al minuto. A metà sessione di codifica, il provider smette di rispondere e lo sviluppatore perde flusso e produttività.
222
-
223
- **Come OmniRoute risolve il problema:**
224
-
225
- - **Fallback intelligente a 4 livelli**: se la quota dell'abbonamento si esaurisce, reindirizza automaticamente alla chiave API → Economico → Gratuito senza alcun intervento manuale
226
- - **Monitoraggio delle quote in tempo reale**: mostra il consumo di token in tempo reale con il conto alla rovescia ripristinato (5 ore, giornaliero, settimanale)
227
- - **Supporto multi-account**: più account per fornitore con round robin automatico: quando uno si esaurisce, passa a quello successivo
228
- - **Combo personalizzate** — Catene di fallback personalizzabili con 6 strategie di bilanciamento (fill-first, round-robin, P2C, casuale, meno utilizzato, ottimizzato in termini di costi)
229
- - **Quote aziendali Codex**: monitoraggio delle quote dello spazio di lavoro aziendale/team direttamente nella dashboard
230
-
231
- </details>
232
-
233
- <details>
234
- <summary><b>🔌 2. "Devo utilizzare più provider ma ognuno ha un'API diversa"</b></summary>
235
-
236
- OpenAI utilizza un formato, Claude (Anthropic) ne utilizza un altro, Gemini ancora un altro. Se uno sviluppatore desidera testare modelli di fornitori diversi o eseguire il fallback tra di loro, deve riconfigurare gli SDK, modificare gli endpoint e gestire formati incompatibili. I provider personalizzati (FriendLI, NIM) hanno endpoint del modello non standard.
237
-
238
- **Come OmniRoute risolve il problema:**
239
-
240
- - **Endpoint unificato**: un singolo `http://localhost:20128/v1` funge da proxy per tutti gli oltre 36 provider
241
- - **Traduzione del formato** — Automatica e trasparente: OpenAI ↔ Claude ↔ Gemini ↔ API di risposta
242
- - **Sanitizzazione della risposta**: rimuove i campi non standard (`x_groq`, `usage_breakdown`, `service_tier`) che interrompono OpenAI SDK v1.83+
243
- - **Normalizzazione del ruolo**: converte `developer` → `system` per provider non OpenAI; `system` → `user` per GLM/ERNIE
244
- - **Think Tag Extraction** — Estrae i blocchi `<think>` da modelli come DeepSeek R1 in `reasoning_content` standardizzati
245
- - **Uscita strutturata per Gemini** — `json_schema` → `responseMimeType`/`responseSchema` conversione automatica
246
- - **`stream` per impostazione predefinita è `false`** — Si allinea con le specifiche OpenAI, evitando SSE imprevisti negli SDK Python/Rust/Go
247
-
248
- </details>
249
-
250
- <details>
251
- <summary><b>🌐 3. "Il mio fornitore di intelligenza artificiale blocca la mia regione/paese"</b></summary>
252
-
253
- Provider come OpenAI/Codex bloccano l'accesso da determinate regioni geografiche. Gli utenti ricevono errori come `unsupported_country_region_territory` durante le connessioni OAuth e API. Ciò è particolarmente frustrante per gli sviluppatori dei paesi in via di sviluppo.
254
-
255
- **Come OmniRoute risolve il problema:**
256
-
257
- - **Configurazione proxy a 3 livelli**: proxy configurabile a 3 livelli: globale (tutto il traffico), per provider (un solo provider) e per connessione/chiave
258
- - **Badge proxy con codice colore** — Indicatori visivi: 🟢 proxy globale, 🟡 proxy provider, 🔵 proxy di connessione, che mostra sempre l'IP
259
- - **Scambio di token OAuth tramite proxy**: anche il flusso OAuth passa attraverso il proxy, risolvendo `unsupported_country_region_territory`
260
- - **Test di connessione tramite proxy**: i test di connessione utilizzano il proxy configurato (non più bypass diretto)
261
- - **Supporto SOCKS5**: supporto completo del proxy SOCKS5 per il routing in uscita
262
- - **Spoofing dell'impronta digitale TLS**: impronta digitale TLS simile a un browser tramite `wreq-js` per bypassare il rilevamento dei bot
263
-
264
- </details>
265
-
266
- <details>
267
- <summary><b>🆓 4. "Voglio usare l'intelligenza artificiale per programmare ma non ho soldi"</b></summary>
268
-
269
- Non tutti possono pagare $ 20-200 al mese per gli abbonamenti AI. Studenti, sviluppatori provenienti da paesi emergenti, hobbisti e liberi professionisti hanno bisogno di accedere a modelli di qualità a costo zero.
270
-
271
- **Come OmniRoute risolve il problema:**
272
-
273
- - **Fornitori del livello gratuito integrati**: supporto nativo per fornitori gratuiti al 100%: iFlow (8 modelli illimitati), Qwen (3 modelli illimitati), Kiro (Claude gratis), Gemini CLI (180.000/mese gratuiti)
274
- - **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/<model>` prefix
275
- - **Combo solo gratuiti** — Catena `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $ 0/mese senza tempi di inattività
276
- - **Crediti gratuiti NVIDIA NIM**: 1000 crediti gratuiti integrati
277
- - **Strategia di ottimizzazione dei costi**: strategia di routing che sceglie automaticamente il fornitore più economico disponibile
278
-
279
- </details>
280
-
281
- <details>
282
- <summary><b>🔒 5. "Devo proteggere il mio gateway AI da accessi non autorizzati"</b></summary>
283
-
284
- Quando si espone un gateway AI alla rete (LAN, VPS, Docker), chiunque abbia l'indirizzo può consumare i token/la quota dello sviluppatore. Senza protezione, le API sono vulnerabili ad usi impropri, tempestive iniezioni e abusi.
285
-
286
- **Come OmniRoute risolve il problema:**
287
-
288
- - **Gestione delle chiavi API**: generazione, rotazione e ambito per provider con una pagina `/dashboard/api-manager` dedicata
289
- - **Autorizzazioni a livello di modello**: limita le chiavi API a modelli specifici (`openai/*`, modelli con caratteri jolly), con l'interruttore Consenti tutto/Limita
290
- - **API Endpoint Protection**: richiede una chiave per `/v1/models` e blocca provider specifici dall'elenco
291
- - **Auth Guard + Protezione CSRF**: tutti i percorsi del dashboard protetti con middleware `withAuth` + token CSRF
292
- - **Rate Limiter**: limitazione della velocità per IP con finestre configurabili
293
- - **Filtro IP**: lista consentita/lista bloccata per il controllo degli accessi
294
- - **Prompt Injection Guard**: sanificazione contro modelli di prompt dannosi
295
- - **Crittografia AES-256-GCM**: credenziali crittografate a riposo
296
-
297
- </details>
298
-
299
- <details>
300
- <summary><b>🛑 6. "Il mio provider è andato in tilt e ho perso il flusso di codifica"</b></summary>
301
-
302
- I fornitori di intelligenza artificiale possono diventare instabili, restituire errori 5xx o raggiungere limiti di velocità temporanei. Se uno sviluppatore dipende da un singolo fornitore, viene interrotto. Senza interruttori automatici, tentativi ripetuti possono bloccare l'applicazione.
303
-
304
- **Come OmniRoute risolve il problema:**
305
-
306
- - **Interruttore automatico per provider**: apertura/chiusura automatica con soglie e raffreddamento configurabili (chiuso/aperto/semiaperto)
307
- - **Backoff esponenziale**: ritardi progressivi tra i tentativi
308
- - **Anti-Thundering Herd** — Mutex + protezione semaforo contro tempeste di tentativi simultanei
309
- - **Catene di fallback combinate**: se il fornitore primario fallisce, cade automaticamente nella catena senza alcun intervento
310
- - **Combo Circuit Breaker**: disabilita automaticamente i provider in errore all'interno di una catena combinata
311
- - **Dashboard integrità**: monitoraggio del tempo di attività, stati degli interruttori automatici, blocchi, statistiche della cache, latenza p50/p95/p99
312
-
313
- </details>
314
-
315
- <details>
316
- <summary><b>🔧 7. "Configurare ogni strumento AI è noioso e ripetitivo"</b></summary>
317
-
318
- Gli sviluppatori utilizzano Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Ogni strumento necessita di una configurazione diversa (endpoint API, chiave, modello). La riconfigurazione quando si cambia fornitore o modello è una perdita di tempo.
319
-
320
- **Come OmniRoute risolve il problema:**
321
-
322
- - **Dashboard degli strumenti CLI**: pagina dedicata con configurazione con un clic per Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
323
- - **GitHub Copilot Config Generator**: genera `chatLanguageModels.json` per VS Code con selezione di modelli in blocco
324
- - **Procedura guidata di onboarding**: configurazione guidata in 4 passaggi per gli utenti alle prime armi
325
- - **Un endpoint, tutti i modelli**: configura `http://localhost:20128/v1` una volta, accedi a oltre 36 provider
326
-
327
- </details>
328
-
329
- <details>
330
- <summary><b>🔑 8. "Gestire token OAuth da più provider è un inferno"</b></summary>
331
-
332
- Claude Code, Codex, Gemini CLI, Copilot: utilizzano tutti OAuth 2.0 con token in scadenza. Gli sviluppatori devono autenticarsi nuovamente costantemente, gestire `client_secret is missing`, `redirect_uri_mismatch` e errori sui server remoti. OAuth su LAN/VPS è particolarmente problematico.
333
-
334
- **Come OmniRoute risolve il problema:**
335
-
336
- - **Aggiornamento automatico dei token**: i token OAuth si aggiornano in background prima della scadenza
337
- - **OAuth 2.0 (PKCE) integrato**: flusso automatico per Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
338
- - **OAuth multi-account**: account multipli per provider tramite estrazione di token JWT/ID
339
- - **OAuth LAN/Correzione remota**: rilevamento IP privato per `redirect_uri` + modalità URL manuale per server remoti
340
- - **OAuth Behind Nginx**: utilizza `window.location.origin` per la compatibilità con proxy inverso
341
- - **Guida OAuth remota**: guida passo passo per le credenziali Google Cloud su VPS/Docker
342
-
343
- </details>
344
-
345
- <details>
346
- <summary><b>📊 9. "Non so quanto sto spendendo né dove"</b></summary>
347
-
348
- Gli sviluppatori utilizzano più fornitori a pagamento ma non hanno una visione unificata della spesa. Ogni fornitore ha il proprio dashboard di fatturazione, ma non esiste una visualizzazione consolidata. I costi imprevisti possono accumularsi.
349
-
350
- **Come OmniRoute risolve il problema:**
351
-
352
- - **Dashboard di analisi dei costi**: monitoraggio dei costi per token e gestione del budget per fornitore
353
- - **Limiti di budget per livello**: massimale di spesa per livello che attiva il fallback automatico
354
- - **Configurazione dei prezzi per modello**: prezzi configurabili per modello
355
- - **Statistiche di utilizzo per chiave API**: conteggio delle richieste e timestamp dell'ultimo utilizzo per chiave
356
- - **Dashboard di analisi**: schede statistiche, grafico di utilizzo del modello, tabella dei fornitori con percentuali di successo e latenza
357
-
358
- </details>
359
-
360
- <details>
361
- <summary><b>🐛 10. "Non riesco a diagnosticare errori e problemi nelle chiamate AI"</b></summary>
362
-
363
- Quando una chiamata fallisce, lo sviluppatore non sa se si trattava di un limite di velocità, di un token scaduto, di un formato errato o di un errore del provider. Registri frammentati su diversi terminali. Senza osservabilità, il debug è un processo per tentativi ed errori.
364
-
365
- **Come OmniRoute risolve il problema:**
366
-
367
- - **Dashboard dei registri unificati**: 4 schede: registri delle richieste, registri del proxy, registri di controllo, console
368
- - **Visualizzatore log della console**: visualizzatore in stile terminale in tempo reale con livelli codificati a colori, scorrimento automatico, ricerca, filtro
369
- - **Registri proxy SQLite**: registri persistenti che sopravvivono ai riavvii del server
370
- - **Translator Playground** — 4 modalità di debug: Playground (traduzione del formato), Chat Tester (andata e ritorno), Test Bench (batch), Live Monitor (in tempo reale)
371
- - **Telemetria richiesta**: latenza p50/p95/p99 + traccia X-Request-Id
372
- - **Registrazione basata su file con rotazione**: l'interceptor della console acquisisce tutto nel registro JSON con rotazione basata sulle dimensioni
373
-
374
- </details>
375
-
376
- <details>
377
- <summary><b>🏗️ 11. "L'implementazione e la manutenzione del gateway sono complesse"</b></summary>
378
-
379
- L'installazione, la configurazione e la manutenzione di un proxy AI in diversi ambienti (locale, VPS, Docker, cloud) richiedono molto lavoro. Problemi come percorsi codificati, `EACCES` nelle directory, conflitti di porte e build multipiattaforma aggiungono attrito.
380
-
381
- **Come OmniRoute risolve il problema:**
382
-
383
- - **Installazione globale npm** — `npm install -g omniroute && omniroute` — completata
384
- - **Docker multipiattaforma** — AMD64 + ARM64 nativo (Apple Silicon, AWS Graviton, Raspberry Pi)
385
- - **Docker Compose Profiles** — `base` (senza strumenti CLI) e `cli` (con Claude Code, Codex, OpenClaw)
386
- - **App desktop Electron**: app nativa per Windows/macOS/Linux con barra delle applicazioni, avvio automatico, modalità offline
387
- - **Modalità porta divisa**: API e dashboard su porte separate per scenari avanzati (proxy inverso, rete di contenitori)
388
- - **Cloud Sync**: configura la sincronizzazione tra dispositivi tramite Cloudflare Workers
389
- - **Backup DB**: backup, ripristino, esportazione e importazione automatici di tutte le impostazioni
390
-
391
- </details>
392
-
393
- <details>
394
- <summary><b>🌍 12. "L'interfaccia è solo inglese e il mio team non parla inglese"</b></summary>
395
-
396
- I team nei paesi non anglofoni, soprattutto in America Latina, Asia ed Europa, hanno difficoltà con le interfacce solo in inglese. Le barriere linguistiche riducono l'adozione e aumentano gli errori di configurazione.
397
-
398
- **Come OmniRoute risolve il problema:**
399
-
400
- - **Dashboard i18n — 30 lingue** — Tutti gli oltre 500 tasti tradotti tra cui arabo, bulgaro, danese, tedesco, spagnolo, finlandese, francese, ebraico, hindi, ungherese, indonesiano, italiano, giapponese, coreano, malese, olandese, norvegese, polacco, portoghese (PT/BR), rumeno, russo, slovacco, svedese, tailandese, ucraino, vietnamita, cinese, filippino, inglese
401
- - **Supporto RTL**: supporto da destra a sinistra per arabo ed ebraico
402
- - **README multilingue**: 30 traduzioni complete di documentazione
403
- - **Selettore lingua**: icona del globo nell'intestazione per la commutazione in tempo reale
404
-
405
- </details>
406
-
407
- <details>
408
- <summary><b>🔄 13. "Ho bisogno di qualcosa di più della semplice chat: ho bisogno di incorporamenti, immagini, audio"</b></summary>
409
-
410
- L'intelligenza artificiale non è solo il completamento della chat. Gli sviluppatori devono generare immagini, trascrivere audio, creare incorporamenti per RAG, riclassificare i documenti e moderare i contenuti. Ogni API ha un endpoint e un formato diversi.
411
-
412
- **Come OmniRoute risolve il problema:**
413
-
414
- - **Incorporamenti** — `/v1/embeddings` con 6 fornitori e oltre 9 modelli
415
- - **Generazione di immagini** — `/v1/images/generations` con 10 provider e oltre 20 modelli (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
416
- - **Da testo a video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) e SD WebUI
417
- - **Trasformazione testo in musica** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
418
- - **Trascrizione audio** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
419
- - **Sintesi vocale** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + fornitori esistenti
420
- - **Moderazioni** — `/v1/moderations` — Controlli di sicurezza dei contenuti
421
- - **Riclassificazione** — `/v1/rerank`: riclassificazione della pertinenza del documento
422
- - **API di risposta**: supporto `/v1/responses` completo per Codex
423
-
424
- </details>
425
-
426
- <details>
427
- <summary><b>🧪 14. "Non ho modo di testare e confrontare la qualità tra i modelli"</b></summary>
428
-
429
- Gli sviluppatori vogliono sapere quale modello è il migliore per il loro caso d'uso (codice, traduzione, ragionamento), ma il confronto manuale è lento. Non esistono strumenti di valutazione integrati.
430
-
431
- **Come OmniRoute risolve il problema:**
432
-
433
- - **Valutazioni LLM**: test Golden Set con 10 casi precaricati che coprono saluti, matematica, geografia, generazione di codice, conformità JSON, traduzione, ribasso, rifiuto di sicurezza
434
- - **4 strategie di corrispondenza** — `exact`, `contains`, `regex`, `custom` (funzione JS)
435
- - **Translator Playground Test Bench**: test in batch con input multipli e output previsti, confronto tra provider
436
- - **Chat Tester**: andata e ritorno completo con rendering della risposta visiva
437
- - **Live Monitor**: flusso in tempo reale di tutte le richieste che passano attraverso il proxy
438
-
439
- </details>
440
-
441
- <details>
442
- <summary><b>📈 15. "Ho bisogno di scalare senza perdere prestazioni"</b></summary>
443
-
444
- Man mano che il volume delle richieste cresce, senza la memorizzazione nella cache le stesse domande generano costi duplicati. Senza idempotenza, le richieste duplicate sprecano elaborazione. I limiti tariffari per fornitore devono essere rispettati.
445
-
446
- **Come OmniRoute risolve il problema:**
447
-
448
- - **Cache semantica**: la cache a due livelli (firma + semantica) riduce costi e latenza
449
- - **Idempotenza richiesta**: finestra di deduplicazione di 5 secondi per richieste identiche
450
- - **Rilevamento del limite di velocità**: RPM per provider, gap minimo e monitoraggio simultaneo massimo
451
- - **Limiti di velocità modificabili**: impostazioni predefinite configurabili in Impostazioni → Resilienza con persistenza
452
- - **Cache di convalida della chiave API**: cache a 3 livelli per prestazioni di produzione
453
- - **Dashboard integrità con telemetria**: latenza p50/p95/p99, statistiche cache, tempo di attività
454
-
455
- </details>
456
-
457
- <details>
458
- <summary><b>🤖 16. "Voglio controllare il comportamento del modello a livello globale"</b></summary>
459
-
460
- Sviluppatori che desiderano tutte le risposte in una lingua specifica, con un tono specifico o che desiderano limitare i token di ragionamento. Configurarlo in ogni strumento/richiesta non è pratico.
461
-
462
- **Come OmniRoute risolve il problema:**
463
-
464
- - **Inserimento prompt di sistema**: prompt globale applicato a tutte le richieste
465
- - **Thinking Budget Validation**: controllo dell'allocazione dei token tramite ragionamento per richiesta (passthrough, automatico, personalizzato, adattivo)
466
- - **6 Strategie di routing**: strategie globali che determinano la modalità di distribuzione delle richieste
467
- - **Wildcard Router**: i modelli `provider/*` instradano dinamicamente a qualsiasi provider
468
- - **Abilita/Disabilita combo**: attiva/disattiva le combo direttamente dalla dashboard
469
- - **Attiva/disattiva provider**: attiva/disattiva tutte le connessioni per un provider con un clic
470
- - **Fornitori bloccati**: esclude fornitori specifici dall'elenco `/v1/models`
471
-
472
- </details>
473
-
474
- <details>
475
- <summary><b>🧰 17. "Ho bisogno degli strumenti MCP come funzionalità di prodotto di prima classe"</b></summary>
476
-
477
- Molti gateway AI espongono MCP solo come dettaglio di implementazione nascosto. I team hanno bisogno di un livello operativo visibile e gestibile.
478
-
479
- **Come OmniRoute risolve il problema:**
480
-
481
- - MCP viene visualizzato nella navigazione del dashboard e nella scheda del protocollo dell'endpoint
482
- - Pagina di gestione MCP dedicata con processo, strumenti, ambiti e audit
483
- - Avvio rapido integrato per `omniroute --mcp` e onboarding del client
484
-
485
- </details>
486
-
487
- <details>
488
- <summary><b>🧠 18. "Ho bisogno dell'orchestrazione A2A con percorsi di attività di sincronizzazione + streaming"</b></summary>
489
-
490
- I flussi di lavoro degli agenti necessitano sia di risposte dirette che di esecuzione in streaming di lunga durata con controllo del ciclo di vita.
491
-
492
- **Come OmniRoute risolve il problema:**
493
-
494
- - Endpoint A2A JSON-RPC (`POST /a2a`) con `message/send` e `message/stream`
495
- - Streaming SSE con propagazione dello stato terminale
496
- - API del ciclo di vita delle attività per `tasks/get` e `tasks/cancel`
497
-
498
- </details>
499
-
500
- <details>
501
- <summary><b>🛰️ 19. "Ho bisogno dello stato reale del processo MCP, non di uno stato indovinato"</b></summary>
502
-
503
- I team operativi devono sapere se MCP è effettivamente attivo, non solo se un'API è raggiungibile.
504
-
505
- **Come OmniRoute risolve il problema:**
506
-
507
- - File heartbeat di runtime con PID, timestamp, trasporto, conteggio strumenti e modalità ambito
508
- - API di stato MCP che combina battito cardiaco + attività recente
509
- - Schede di stato dell'interfaccia utente per l'aggiornamento di processo/tempo di attività/battito cardiaco
510
-
511
- </details>
512
-
513
- <details>
514
- <summary><b>📋 20. "Ho bisogno dell'esecuzione verificabile dello strumento MCP"</b></summary>
515
-
516
- Quando gli strumenti modificano la configurazione o attivano azioni operative, i team necessitano di tracciabilità forense.
517
-
518
- **Come OmniRoute risolve il problema:**
519
-
520
- - Registrazione di controllo supportata da SQLite per le chiamate allo strumento MCP
521
- - Filtri per strumento, successo/fallimento, chiave API e impaginazione
522
- - Tabella di controllo della dashboard + endpoint statistici per l'automazione
523
-
524
- </details>
525
-
526
- <details>
527
- <summary><b>🔐 21. "Ho bisogno di autorizzazioni MCP con ambito per integrazione"</b></summary>
528
-
529
- Client diversi dovrebbero avere accesso con privilegi minimi alle categorie di strumenti.
530
-
531
- **Come OmniRoute risolve il problema:**
532
-
533
- - 9 ambiti MCP granulari per l'accesso controllato agli strumenti
534
- - Applicazione dell'ambito e visibilità nell'interfaccia utente di gestione MCP
535
- - Postura predefinita sicura per gli strumenti operativi
536
-
537
- </details>
538
-
539
- <details>
540
- <summary><b>⚙️ 22. "Ho bisogno di controlli operativi senza ridistribuirmi"</b></summary>
541
-
542
- I team necessitano di rapidi cambiamenti di runtime durante incidenti o eventi di costo.
543
-
544
- **Come OmniRoute risolve il problema:**
545
-
546
- - Cambia l'attivazione combinata direttamente dalla dashboard MCP
547
- - Applicare profili di resilienza da pacchetti di policy predefiniti
548
- - Ripristinare lo stato dell'interruttore dallo stesso pannello operativo
549
-
550
- </details>
551
-
552
- <details>
553
- <summary><b>🔄 23. "Ho bisogno di visibilità e cancellazione del ciclo di vita delle attività A2A in tempo reale"</b></summary>
554
-
555
- Senza visibilità del ciclo di vita, gli incidenti relativi alle attività diventano difficili da valutare.
556
-
557
- **Come OmniRoute risolve il problema:**
558
-
559
- - Elenco/filtro delle attività per stato/competenza con impaginazione
560
- - Esamina i metadati, gli eventi e gli artefatti delle attività
561
- - Endpoint di annullamento dell'attività e azione dell'interfaccia utente con conferma
562
-
563
- </details>
564
-
565
- <details>
566
- <summary><b>🌊 24. "Ho bisogno di metriche di flusso attive per il carico A2A"</b></summary>
567
-
568
- I flussi di lavoro in streaming richiedono informazioni operative sulla concorrenza e sulle connessioni live.
569
-
570
- **Come OmniRoute risolve il problema:**
571
-
572
- - Contatori di flussi attivi integrati nello stato A2A
573
- - Timestamp dell'ultima attività e conteggi per stato
574
- - Schede dashboard A2A per il monitoraggio delle operazioni in tempo reale
575
-
576
- </details>
577
-
578
- <details>
579
- <summary><b>🪪 25. "Ho bisogno del rilevamento degli agenti standard per i clienti"</b></summary>
580
-
581
- I client e gli agenti di orchestrazione esterni necessitano di metadati leggibili dal computer per l'onboarding.
582
-
583
- **Come OmniRoute risolve il problema:**
584
-
585
- - Carta Agente esposta a `/.well-known/agent.json`
586
- - Capacità e competenze mostrate nell'interfaccia utente di gestione
587
- - L'API di stato A2A include metadati di rilevamento per l'automazione
588
-
589
- </details>
590
-
591
- <details>
592
- <summary><b>🧭 26. "Ho bisogno della rilevabilità del protocollo nella UX del prodotto"</b></summary>
593
-
594
- Se gli utenti non riescono a scoprire le superfici del protocollo, l'adozione e la qualità del supporto diminuiscono.
595
-
596
- **Come OmniRoute risolve il problema:**
597
-
598
- - Voci della barra laterale per MCP e A2A
599
- - Scheda Protocolli della pagina Endpoint con avvio rapido e stato
600
- - Collegamenti dalla panoramica alle dashboard di gestione dedicate
601
-
602
- </details>
603
-
604
- <details>
605
- <summary><b>🧪 27. "Ho bisogno della convalida del protocollo end-to-end con clienti reali"</b></summary>
606
-
607
- I test simulati non sono sufficienti per verificare la compatibilità del protocollo prima del rilascio.
608
-
609
- **Come OmniRoute risolve il problema:**
610
-
611
- - Suite E2E che avvia l'app e utilizza il trasporto client SDK MCP reale
612
- - Test client A2A per i flussi di rilevamento, invio, streaming, acquisizione e annullamento
613
- - Effettuare un controllo incrociato delle asserzioni con l'audit MCP e le API delle attività A2A
614
-
615
- </details>
616
-
617
- <details>
618
- <summary><b>📡 28. "Ho bisogno di osservabilità unificata su tutte le interfacce"</b></summary>
619
-
620
- Suddividere l'osservabilità per protocollo crea punti ciechi e un MTTR più lungo.
621
-
622
- **Come OmniRoute risolve il problema:**
623
-
624
- - Dashboard/registri/analisi unificati in un unico prodotto
625
- - Salute + audit + richiesta di telemetria su livelli OpenAI, MCP e A2A
626
- - API operative per stato e automazione
627
-
628
- </details>
629
-
630
- <details>
631
- <summary><b>💼 29. "Ho bisogno di un runtime per proxy + strumenti + orchestrazione agente"</b></summary>
632
-
633
- L'esecuzione di numerosi servizi separati aumenta i costi operativi e le modalità di guasto.
634
-
635
- **Come OmniRoute risolve il problema:**
636
-
637
- - Proxy compatibile con OpenAI, server MCP e server A2A in uno stack
638
- - Autenticazione condivisa, resilienza, archivio dati e osservabilità
639
- - Modello politico coerente su tutte le superfici di interazione
640
-
641
- </details>
642
-
643
- <details>
644
- <summary><b>🚀 30. "Ho bisogno di spedire flussi di lavoro di agenti senza la proliferazione del codice adesivo"</b></summary>
645
-
646
- I team perdono velocità quando uniscono più servizi e script ad hoc.
647
-
648
- **Come OmniRoute risolve il problema:**
649
-
650
- - Strategia endpoint unificata per clienti e agenti
651
- - Interfacce utente di gestione del protocollo integrate e percorsi di convalida del fumo
652
- - Fondamenti pronti per la produzione (sicurezza, registrazione, resilienza, backup)
653
-
654
- </details>
655
-
656
- ### Playbook di esempio (casi d'uso integrati)
657
-
658
- **Playbook A: massimizza l'abbonamento a pagamento + backup economico**
659
-
660
- ```txt
661
- Combo: "maximize-claude"
662
- 1. cc/claude-opus-4-6
663
- 2. glm/glm-4.7
664
- 3. if/kimi-k2-thinking
665
-
666
- Monthly cost: $20 + small backup spend
667
- Outcome: higher quality, near-zero interruption
668
- ```
669
-
670
- **Playbook B: stack di codifica a costo zero**
671
-
672
- ```txt
673
- Combo: "free-forever"
674
- 1. gc/gemini-3-flash
675
- 2. if/kimi-k2-thinking
676
- 3. qw/qwen3-coder-plus
677
-
678
- Monthly cost: $0
679
- Outcome: stable free coding workflow
680
- ```
681
-
682
- **Playbook C: catena di fallback sempre attiva 24 ore su 24, 7 giorni su 7**
683
-
684
- ```txt
685
- Combo: "always-on"
686
- 1. cc/claude-opus-4-6
687
- 2. cx/gpt-5.2-codex
688
- 3. glm/glm-4.7
689
- 4. minimax/MiniMax-M2.1
690
- 5. if/kimi-k2-thinking
691
-
692
- Outcome: deep fallback depth for deadline-critical workloads
693
- ```
694
-
695
- **Playbook D: operazioni dell'agente con MCP + A2A**
696
-
697
- ```txt
698
- 1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
699
- 2) Run A2A tasks via `message/send` and `message/stream`
700
- 3) Observe via /dashboard/mcp and /dashboard/a2a
701
- 4) Control incidents with resilience profile + task cancellation
702
- ```
703
-
704
- ---
705
-
706
- ## ⚡ Avvio Rapido
707
-
708
- **1. Installa globalmente:**
709
-
710
- ```bash
711
- npm install -g omniroute
712
- omniroute
713
- ```
714
-
715
- 🎉 La Dashboard si apre su `http://localhost:20128`
716
-
717
- | Comando | Descrizione |
718
- | ----------------------- | ------------------------------------------- |
719
- | `omniroute` | Avviare il server (porta predefinita 20128) |
720
- | `omniroute --port 3000` | Usare una porta personalizzata |
721
- | `omniroute --no-open` | Non aprire il browser automaticamente |
722
- | `omniroute --help` | Mostrare l'aiuto |
723
-
724
- **2. Connetti un provider GRATUITO:**
725
-
726
- Dashboard → Provider → Connetti **Claude Code** o **Antigravity** → Login OAuth → Fatto!
727
-
728
- **3. Usa nel tuo strumento CLI:**
729
-
730
- ```
731
- Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Impostazioni:
732
- Endpoint: http://localhost:20128/v1
733
- API Key: [copia dalla dashboard]
734
- Model: if/kimi-k2-thinking
735
- ```
736
-
737
- **Tutto qui!** Inizia a programmare con modelli IA GRATUITI.
738
-
739
- **Alternativa — eseguire dal codice sorgente:**
740
-
741
- ```bash
742
- cp .env.example .env
743
- npm install
744
- PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
745
- ```
746
-
747
- ---
748
-
749
- ## 🐳 Docker
750
-
751
- OmniRoute è disponibile come immagine Docker pubblica su [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
752
-
753
- **Avvio rapido:**
754
-
755
- ```bash
756
- docker run -d \
757
- --name omniroute \
758
- --restart unless-stopped \
759
- -p 20128:20128 \
760
- -v omniroute-data:/app/data \
761
- diegosouzapw/omniroute:latest
762
- ```
763
-
764
- **Con file di ambiente:**
765
-
766
- ```bash
767
- # Copia e modifica il .env prima
768
- cp .env.example .env
769
-
770
- docker run -d \
771
- --name omniroute \
772
- --restart unless-stopped \
773
- --env-file .env \
774
- -p 20128:20128 \
775
- -v omniroute-data:/app/data \
776
- diegosouzapw/omniroute:latest
777
- ```
778
-
779
- **Con Docker Compose:**
780
-
781
- ```bash
782
- # Profilo base (senza strumenti CLI)
783
- docker compose --profile base up -d
784
-
785
- # Profilo CLI (Claude Code, Codex, OpenClaw integrati)
786
- docker compose --profile cli up -d
787
- ```
788
-
789
- | Immagine | Tag | Dimensione | Descrizione |
790
- | ------------------------ | -------- | ---------- | ----------------------- |
791
- | `diegosouzapw/omniroute` | `latest` | ~250MB | Ultima versione stabile |
792
- | `diegosouzapw/omniroute` | `1.0.6` | ~250MB | Versione attuale |
793
-
794
- ---
795
-
796
- ---
797
-
798
- ## 🖥️
799
-
800
- > 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
801
-
802
- - 🖥️ **Native Window** — Dedicated app window with system tray integration
803
- - 🔄 **Auto-Start** — Launch OmniRoute on system login
804
- - 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
805
- - ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
806
- - 🌐 **Offline Mode** — Works fully offline with bundled server
807
-
808
- ```bash
809
- npm run electron:dev # Development mode
810
- npm run electron:build # Current platform
811
- npm run electron:build:win # Windows (.exe)
812
- npm run electron:build:mac # macOS (.dmg)
813
- npm run electron:build:linux # Linux (.AppImage)
814
- ```
815
-
816
- 📖 Full documentation: [`electron/README.md`](electron/README.md)
817
-
818
- ---
819
-
820
- ## 💰 Panoramica Prezzi
821
-
822
- | Tier | Provider | Costo | Reset Quota | Ideale Per |
823
- | ------------------ | ----------------- | ---------------------------- | --------------------- | ------------------------------- |
824
- | **💳 ABBONAMENTO** | Claude Code (Pro) | $20/mese | 5h + settimanale | Già abbonato |
825
- | | Codex (Plus/Pro) | $20-200/mese | 5h + settimanale | Utenti OpenAI |
826
- | | Gemini CLI | **GRATUITO** | 180K/mese + 1K/giorno | Tutti! |
827
- | | GitHub Copilot | $10-19/mese | Mensile | Utenti GitHub |
828
- | **🔑 API KEY** | NVIDIA NIM | **GRATUITO** (1000 crediti) | Una tantum | Test gratuiti |
829
- | | DeepSeek | A consumo | Nessuno | Miglior rapporto qualità-prezzo |
830
- | | Groq | Livello gratis + a pagamento | Limitato | Inferenza ultra-veloce |
831
- | | xAI (Grok) | A consumo | Nessuno | Modelli Grok |
832
- | | Mistral | Livello gratis + a pagamento | Limitato | IA Europea |
833
- | | OpenRouter | A consumo | Nessuno | 100+ modelli |
834
- | **💰 ECONOMICO** | GLM-4.7 | $0.6/1M | Giornaliero 10h | Backup economico |
835
- | | MiniMax M2.1 | $0.2/1M | Rotativo 5h | Opzione più economica |
836
- | | Kimi K2 | $9/mese fisso | 10M token/mese | Costo prevedibile |
837
- | **🆓 GRATUITO** | iFlow | $0 | Illimitato | 8 modelli gratuiti |
838
- | | Qwen | $0 | Illimitato | 3 modelli gratuiti |
839
- | | Kiro | $0 | Illimitato | Claude gratuito |
840
-
841
- **💡 Consiglio Pro:** Inizia con Gemini CLI (180K gratis/mese) + iFlow (illimitato gratis) = $0 di costo!
842
-
843
- ---
844
-
845
- ## 💡 Funzionalità Principali
846
-
847
- ### 🧠 Routing & Intelligenza
848
-
849
- | Funzionalità | Cosa Fa |
850
- | ---------------------------------------- | ----------------------------------------------------------------------------- |
851
- | 🎯 **Fallback intelligente 4 livelli** | Auto-routing: Abbonamento → API Key → Economico → Gratuito |
852
- | 📊 **Tracciamento quote in tempo reale** | Conteggio token live + countdown reset per provider |
853
- | 🔄 **Traduzione di formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro trasparente |
854
- | 👥 **Supporto multi-account** | Account multipli per provider con selezione intelligente |
855
- | 🔄 **Rinnovo automatico dei token** | I token OAuth si rinnovano automaticamente con retry |
856
- | 🎨 **Combo personalizzati** | 6 strategie: fill-first, round-robin, p2c, random, least-used, cost-optimized |
857
- | 🧩 **Modelli personalizzati** | Aggiungi qualsiasi ID modello a qualsiasi provider |
858
- | 🌐 **Router wildcard** | Instrada pattern `provider/*` verso qualsiasi provider dinamicamente |
859
- | 🧠 **Budget di ragionamento** | Modalità passthrough, auto, custom e adaptive per modelli di ragionamento |
860
- | 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
861
- | ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
862
- | 💬 **Iniezione System Prompt** | System prompt globale applicato a tutte le richieste |
863
- | 📄 **API Responses** | Supporto completo per OpenAI Responses API (`/v1/responses`) per Codex |
864
-
865
- ### 🎵 API Multi-modali
866
-
867
- | Funzionalità | Cosa Fa |
868
- | --------------------------- | ---------------------------------------------------- |
869
- | 🖼️ **Generazione immagini** | `/v1/images/generations` — 4 provider, 9+ modelli |
870
- | 📐 **Embeddings** | `/v1/embeddings` — 6 provider, 9+ modelli |
871
- | 🎤 **Trascrizione audio** | `/v1/audio/transcriptions` — Compatibile Whisper |
872
- | 🔊 **Testo a voce** | `/v1/audio/speech` — Sintesi audio multi-provider |
873
- | 🛡️ **Moderazioni** | `/v1/moderations` — Controlli di sicurezza |
874
- | 🔀 **Reranking** | `/v1/rerank` — Riclassificazione rilevanza documenti |
875
-
876
- ### 🛡️ Resilienza & Sicurezza
877
-
878
- | Funzionalità | Cosa Fa |
879
- | ------------------------------- | -------------------------------------------------------------------------------------- |
880
- | 🔌 **Circuit Breaker** | Apertura/chiusura auto per provider con soglie configurabili |
881
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
882
- | 🛡️ **Anti-Thundering Herd** | Mutex + semaforo rate-limit per provider con API key |
883
- | 🧠 **Cache semantica** | Cache a due livelli (firma + semantica) riduce costi e latenza |
884
- | ⚡ **Idempotenza richieste** | Finestra dedup 5s per richieste duplicate |
885
- | 🔒 **Spoofing TLS Fingerprint** | Bypass rilevamento bot tramite wreq-js |
886
- | 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
887
- | 🌐 **Filtro IP** | Allowlist/blocklist per controllo accesso API |
888
- | 📊 **Rate limit modificabili** | RPM, gap minimo e concorrenza massima configurabili |
889
- | 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
890
- | 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
891
-
892
- ### 📊 Osservabilità & Analytics
893
-
894
- | Funzionalità | Cosa Fa |
895
- | ----------------------------- | ------------------------------------------------------------ |
896
- | 📝 **Log richieste** | Modalità debug con log completi richiesta/risposta |
897
- | 💾 **Log SQLite** | Log proxy persistenti che sopravvivono ai riavvii |
898
- | 📊 **Dashboard analytics** | Recharts: card statistiche, grafico uso, tabella provider |
899
- | 📈 **Tracciamento progresso** | Eventi SSE di progresso opt-in per lo streaming |
900
- | 🧪 **Valutazioni LLM** | Test con golden set e 4 strategie di corrispondenza |
901
- | 🔍 **Telemetria richieste** | Aggregazione latenza p50/p95/p99 + tracciamento X-Request-Id |
902
- | 📋 **Log + Quote** | Pagine dedicate per navigazione log e tracciamento quote |
903
- | 🏥 **Dashboard salute** | Uptime, stati circuit breaker, lockout, statistiche cache |
904
- | 💰 **Tracciamento costi** | Gestione budget + configurazione prezzi per modello |
905
-
906
- ### ☁️ Deploy & Sincronizzazione
907
-
908
- | Funzionalità | Cosa Fa |
909
- | -------------------------------- | -------------------------------------------------------------------------------- |
910
- | 💾 **Cloud Sync** | Sincronizza impostazioni tra dispositivi via Cloudflare Workers |
911
- | 🌐 **Deploy ovunque** | Localhost, VPS, Docker, Cloudflare Workers |
912
- | 🔑 **Gestione API Key** | Genera, ruota e limita API key per provider |
913
- | 🧙 **Assistente configurazione** | Setup guidato in 4 passaggi per nuovi utenti |
914
- | 🔧 **Dashboard CLI Tools** | Configurazione con un clic per Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
915
- | 🔄 **Backup DB** | Backup e ripristino automatici di tutte le impostazioni |
916
-
917
- <details>
918
- <summary><b>📖 Dettagli funzionalità</b></summary>
919
-
920
- ### 🎯 Fallback intelligente 4 livelli
921
-
922
- Crea combo con fallback automatico:
923
-
924
- ```
925
- Combo: "my-coding-stack"
926
- 1. cc/claude-opus-4-6 (il tuo abbonamento)
927
- 2. nvidia/llama-3.3-70b (API NVIDIA gratuita)
928
- 3. glm/glm-4.7 (backup economico, $0.6/1M)
929
- 4. if/kimi-k2-thinking (fallback gratuito)
930
-
931
- → Cambia automaticamente quando la quota si esaurisce o si verificano errori
932
- ```
933
-
934
- ### 📊 Tracciamento quote in tempo reale
935
-
936
- - Consumo token per provider
937
- - Countdown reset (5 ore, giornaliero, settimanale)
938
- - Stima dei costi per livelli a pagamento
939
- - Report spese mensili
940
-
941
- ### 🔄 Traduzione di formato
942
-
943
- Traduzione trasparente tra formati:
944
-
945
- - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
946
- - Il tuo CLI invia in formato OpenAI → OmniRoute traduce → Il provider riceve il formato nativo
947
- - Funziona con qualsiasi strumento che supporti endpoint OpenAI personalizzati
948
-
949
- ### 👥 Supporto multi-account
950
-
951
- - Aggiungi account multipli per provider
952
- - Round-robin automatico o routing per priorità
953
- - Fallback all'account successivo quando la quota viene raggiunta
954
-
955
- ### 🔄 Rinnovo automatico dei token
956
-
957
- - I token OAuth si rinnovano automaticamente prima della scadenza
958
- - Nessuna necessità di ri-autenticazione manuale
959
- - Esperienza trasparente su tutti i provider
960
-
961
- ### 🎨 Combo personalizzati
962
-
963
- - Crea combinazioni di modelli illimitate
964
- - 6 strategie: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
965
- - Condividi combo tra dispositivi con Cloud Sync
966
-
967
- ### 🏥 Dashboard salute
968
-
969
- - Stato del sistema (uptime, versione, utilizzo memoria)
970
- - Stati circuit breaker per provider (Closed/Open/Half-Open)
971
- - Stato rate limit e lockout attivi
972
- - Statistiche cache firme
973
- - Telemetria latenza (p50/p95/p99) + cache prompt
974
- - Reset salute con un clic
975
-
976
- ### 🔧 Playground del traduttore
977
-
978
- - Debug, test e visualizzazione delle traduzioni di formato API
979
- - Invia richieste e vedi come OmniRoute traduce tra formati dei provider
980
- - Inestimabile per risolvere problemi di integrazione
981
-
982
- ### 💾 Cloud Sync
983
-
984
- - Sincronizza provider, combo e impostazioni tra dispositivi
985
- - Sincronizzazione in background automatica
986
- - Archiviazione criptata sicura
987
-
988
- </details>
989
-
990
- ## 🧪 Valutazioni (Evals)
991
-
992
- OmniRoute include un framework di valutazione integrato per testare la qualità delle risposte LLM contro un golden set. Accesso via **Analytics → Evals** nella dashboard.
993
-
994
- ### Set integrato
995
-
996
- Il "OmniRoute Golden Set" precaricato contiene 10 casi di test:
997
-
998
- - Saluti, matematica, geografia, generazione codice
999
- - Conformità formato JSON, traduzione, markdown
1000
- - Rifiuto sicurezza (contenuto nocivo), conteggio, logica booleana
1001
-
1002
- ### Strategie di valutazione
1003
-
1004
- | Strategia | Descrizione | Esempio |
1005
- | ---------- | ---------------------------------------------------------- | -------------------------------- |
1006
- | `exact` | L'output deve corrispondere esattamente | `"4"` |
1007
- | `contains` | L'output deve contenere la sottostringa (case-insensitive) | `"Paris"` |
1008
- | `regex` | L'output deve corrispondere al pattern regex | `"1.*2.*3"` |
1009
- | `custom` | Funzione JS personalizzata restituisce true/false | `(output) => output.length > 10` |
1010
-
1011
- ---
1012
-
1013
- ## 📖 Guida alla Configurazione
1014
-
1015
- <details>
1016
- <summary><b>💳 Provider per abbonamento</b></summary>
1017
-
1018
- ### Claude Code (Pro/Max)
1019
-
1020
- ```bash
1021
- Dashboard → Provider → Connetti Claude Code
1022
- → Login OAuth → Rinnovo automatico token
1023
- → Tracciamento quota 5h + settimanale
1024
-
1025
- Modelli:
1026
- cc/claude-opus-4-6
1027
- cc/claude-sonnet-4-5-20250929
1028
- cc/claude-haiku-4-5-20251001
1029
- ```
1030
-
1031
- **Consiglio Pro:** Usa Opus per compiti complessi, Sonnet per velocità. OmniRoute traccia la quota per modello!
1032
-
1033
- ### OpenAI Codex (Plus/Pro)
1034
-
1035
- ```bash
1036
- Dashboard → Provider → Connetti Codex
1037
- → Login OAuth (porta 1455)
1038
- → Reset 5h + settimanale
1039
-
1040
- Modelli:
1041
- cx/gpt-5.2-codex
1042
- cx/gpt-5.1-codex-max
1043
- ```
1044
-
1045
- ### Gemini CLI (GRATUITO 180K/mese!)
1046
-
1047
- ```bash
1048
- Dashboard → Provider → Connetti Gemini CLI
1049
- → Google OAuth
1050
- → 180K completions/mese + 1K/giorno
1051
-
1052
- Modelli:
1053
- gc/gemini-3-flash-preview
1054
- gc/gemini-2.5-pro
1055
- ```
1056
-
1057
- **Miglior valore:** Livello gratuito enorme! Usa prima dei livelli a pagamento.
1058
-
1059
- ### GitHub Copilot
1060
-
1061
- ```bash
1062
- Dashboard → Provider → Connetti GitHub
1063
- → OAuth via GitHub
1064
- → Reset mensile (1° del mese)
1065
-
1066
- Modelli:
1067
- gh/gpt-5
1068
- gh/claude-4.5-sonnet
1069
- gh/gemini-3-pro
1070
- ```
1071
-
1072
- </details>
1073
-
1074
- <details>
1075
- <summary><b>🔑 Provider per API Key</b></summary>
1076
-
1077
- ### NVIDIA NIM (GRATUITO 1000 crediti!)
1078
-
1079
- 1. Registrati: [build.nvidia.com](https://build.nvidia.com)
1080
- 2. Ottieni una API key gratuita (1000 crediti di inferenza inclusi)
1081
- 3. Dashboard → Aggiungi Provider → NVIDIA NIM:
1082
- - API Key: `nvapi-your-key`
1083
-
1084
- **Modelli:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` e 50+ altri
1085
-
1086
- **Consiglio Pro:** API compatibile OpenAI — funziona perfettamente con la traduzione di formato di OmniRoute!
1087
-
1088
- ### DeepSeek
1089
-
1090
- 1. Registrati: [platform.deepseek.com](https://platform.deepseek.com)
1091
- 2. Ottieni una API key
1092
- 3. Dashboard → Aggiungi Provider → DeepSeek
1093
-
1094
- **Modelli:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
1095
-
1096
- ### Groq (Livello gratuito disponibile!)
1097
-
1098
- 1. Registrati: [console.groq.com](https://console.groq.com)
1099
- 2. Ottieni una API key (livello gratuito incluso)
1100
- 3. Dashboard → Aggiungi Provider → Groq
1101
-
1102
- **Modelli:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
1103
-
1104
- **Consiglio Pro:** Inferenza ultra-veloce — ideale per programmazione in tempo reale!
1105
-
1106
- ### OpenRouter (100+ modelli)
1107
-
1108
- 1. Registrati: [openrouter.ai](https://openrouter.ai)
1109
- 2. Ottieni una API key
1110
- 3. Dashboard → Aggiungi Provider → OpenRouter
1111
-
1112
- **Modelli:** Accesso a 100+ modelli da tutti i principali provider tramite una singola API key.
1113
-
1114
- </details>
1115
-
1116
- <details>
1117
- <summary><b>💰 Provider economici (Backup)</b></summary>
1118
-
1119
- ### GLM-4.7 (Reset giornaliero, $0.6/1M)
1120
-
1121
- 1. Registrati: [Zhipu AI](https://open.bigmodel.cn/)
1122
- 2. Ottieni la API key dal Coding Plan
1123
- 3. Dashboard → Aggiungi API Key:
1124
- - Provider: `glm`
1125
- - API Key: `your-key`
1126
-
1127
- **Usa:** `glm/glm-4.7`
1128
-
1129
- **Consiglio Pro:** Il Coding Plan offre 3× quota a 1/7 del costo! Reset giornaliero alle 10:00.
1130
-
1131
- ### MiniMax M2.1 (Reset 5h, $0.20/1M)
1132
-
1133
- 1. Registrati: [MiniMax](https://www.minimax.io/)
1134
- 2. Ottieni una API key
1135
- 3. Dashboard → Aggiungi API Key
1136
-
1137
- **Usa:** `minimax/MiniMax-M2.1`
1138
-
1139
- **Consiglio Pro:** L'opzione più economica per contesto lungo (1M token)!
1140
-
1141
- ### Kimi K2 ($9/mese fisso)
1142
-
1143
- 1. Abbonati: [Moonshot AI](https://platform.moonshot.ai/)
1144
- 2. Ottieni una API key
1145
- 3. Dashboard → Aggiungi API Key
1146
-
1147
- **Usa:** `kimi/kimi-latest`
1148
-
1149
- **Consiglio Pro:** $9/mese fisso per 10M token = $0.90/1M di costo effettivo!
1150
-
1151
- </details>
1152
-
1153
- <details>
1154
- <summary><b>🆓 Provider GRATUITI (Backup d'emergenza)</b></summary>
1155
-
1156
- ### iFlow (8 modelli GRATUITI)
1157
-
1158
- ```bash
1159
- Dashboard → Connetti iFlow
1160
- → Login OAuth iFlow
1161
- → Utilizzo illimitato
1162
-
1163
- Modelli:
1164
- if/kimi-k2-thinking
1165
- if/qwen3-coder-plus
1166
- if/glm-4.7
1167
- if/minimax-m2
1168
- if/deepseek-r1
1169
- ```
1170
-
1171
- ### Qwen (3 modelli GRATUITI)
1172
-
1173
- ```bash
1174
- Dashboard → Connetti Qwen
1175
- → Autorizzazione con codice dispositivo
1176
- → Utilizzo illimitato
1177
-
1178
- Modelli:
1179
- qw/qwen3-coder-plus
1180
- qw/qwen3-coder-flash
1181
- ```
1182
-
1183
- ### Kiro (Claude GRATUITO)
1184
-
1185
- ```bash
1186
- Dashboard → Connetti Kiro
1187
- → AWS Builder ID o Google/GitHub
1188
- → Utilizzo illimitato
1189
-
1190
- Modelli:
1191
- kr/claude-sonnet-4.5
1192
- kr/claude-haiku-4.5
1193
- ```
1194
-
1195
- </details>
1196
-
1197
- <details>
1198
- <summary><b>🎨 Creare combo</b></summary>
1199
-
1200
- ### Esempio 1: Massimizzare abbonamento → Backup economico
1201
-
1202
- ```
1203
- Dashboard → Combo → Crea nuovo
1204
-
1205
- Nome: premium-coding
1206
- Modelli:
1207
- 1. cc/claude-opus-4-6 (Abbonamento principale)
1208
- 2. glm/glm-4.7 (Backup economico, $0.6/1M)
1209
- 3. minimax/MiniMax-M2.1 (Fallback più economico, $0.20/1M)
1210
-
1211
- Usa nel CLI: premium-coding
1212
- ```
1213
-
1214
- ### Esempio 2: Solo gratuiti (Costo zero)
1215
-
1216
- ```
1217
- Nome: free-combo
1218
- Modelli:
1219
- 1. gc/gemini-3-flash-preview (180K gratis/mese)
1220
- 2. if/kimi-k2-thinking (illimitato)
1221
- 3. qw/qwen3-coder-plus (illimitato)
1222
-
1223
- Costo: $0 per sempre!
1224
- ```
1225
-
1226
- </details>
1227
-
1228
- <details>
1229
- <summary><b>🔧 Integrazione CLI</b></summary>
1230
-
1231
- ### Cursor IDE
1232
-
1233
- ```
1234
- Impostazioni → Modelli → Avanzato:
1235
- OpenAI API Base URL: http://localhost:20128/v1
1236
- OpenAI API Key: [dalla dashboard OmniRoute]
1237
- Model: cc/claude-opus-4-6
1238
- ```
1239
-
1240
- ### Claude Code
1241
-
1242
- Usa la pagina **CLI Tools** nella dashboard per la configurazione con un clic, o modifica `~/.claude/settings.json` manualmente.
1243
-
1244
- ### Codex CLI
1245
-
1246
- ```bash
1247
- export OPENAI_BASE_URL="http://localhost:20128"
1248
- export OPENAI_API_KEY="your-omniroute-api-key"
1249
-
1250
- codex "your prompt"
1251
- ```
1252
-
1253
- ### OpenClaw
1254
-
1255
- **Opzione 1 — Dashboard (consigliato):**
1256
-
1257
- ```
1258
- Dashboard → CLI Tools → OpenClaw → Seleziona Modello → Applica
1259
- ```
1260
-
1261
- **Opzione 2 — Manuale:** Modifica `~/.openclaw/openclaw.json`:
1262
-
1263
- ```json
1264
- {
1265
- "models": {
1266
- "providers": {
1267
- "omniroute": {
1268
- "baseUrl": "http://127.0.0.1:20128/v1",
1269
- "apiKey": "sk_omniroute",
1270
- "api": "openai-completions"
1271
- }
1272
- }
1273
- }
1274
- }
1275
- ```
1276
-
1277
- > **Nota:** OpenClaw funziona solo con OmniRoute locale. Usa `127.0.0.1` invece di `localhost` per evitare problemi di risoluzione IPv6.
1278
-
1279
- ### Cline / Continue / RooCode
1280
-
1281
- ```
1282
- Impostazioni → Configurazione API:
1283
- Provider: OpenAI Compatible
1284
- Base URL: http://localhost:20128/v1
1285
- API Key: [dalla dashboard OmniRoute]
1286
- Model: if/kimi-k2-thinking
1287
- ```
1288
-
1289
- </details>
1290
-
1291
- ---
1292
-
1293
- ## 🐛 Risoluzione Problemi
1294
-
1295
- <details>
1296
- <summary><b>Clicca per espandere la guida alla risoluzione problemi</b></summary>
1297
-
1298
- **"Language model did not provide messages"**
1299
-
1300
- - Quota del provider esaurita → Controlla il tracker quote nella dashboard
1301
- - Soluzione: Usa un combo con fallback o passa a un livello più economico
1302
-
1303
- **Rate limiting**
1304
-
1305
- - Quota abbonamento esaurita → Fallback a GLM/MiniMax
1306
- - Aggiungi combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1307
-
1308
- **Token OAuth scaduto**
1309
-
1310
- - Rinnovato automaticamente da OmniRoute
1311
- - Se il problema persiste: Dashboard → Provider → Riconnetti
1312
-
1313
- **Costi elevati**
1314
-
1315
- - Controlla le statistiche di utilizzo in Dashboard → Costi
1316
- - Cambia il modello principale a GLM/MiniMax
1317
- - Usa il livello gratuito (Gemini CLI, iFlow) per compiti non critici
1318
-
1319
- **La dashboard si apre sulla porta sbagliata**
1320
-
1321
- - Imposta `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
1322
-
1323
- **Errori cloud sync**
1324
-
1325
- - Verifica che `BASE_URL` punti alla tua istanza in esecuzione
1326
- - Verifica che `CLOUD_URL` punti all'endpoint cloud previsto
1327
- - Mantieni i valori `NEXT_PUBLIC_*` allineati con i valori del server
1328
-
1329
- **Il primo login non funziona**
1330
-
1331
- - Controlla `INITIAL_PASSWORD` nel `.env`
1332
- - Se non impostata, la password predefinita è `123456`
1333
-
1334
- **Nessun log delle richieste**
1335
-
1336
- - Imposta `ENABLE_REQUEST_LOGS=true` nel `.env`
1337
-
1338
- **Il test di connessione mostra "Invalid" per provider compatibili OpenAI**
1339
-
1340
- - Molti provider non espongono l'endpoint `/models`
1341
- - OmniRoute v1.0.6+ include validazione fallback tramite chat completions
1342
- - Assicurati che la URL base includa il suffisso `/v1`
1343
-
1344
- </details>
1345
-
1346
- ---
1347
-
1348
- ## 🛠️
1349
-
1350
- - **Runtime**: Node.js 20+
1351
- - **Linguaggio**: TypeScript 5.9 — **100% TypeScript** in `src/` e `open-sse/` (v1.0.6)
1352
- - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
1353
- - **Database**: LowDB (JSON) + SQLite (stato dominio + log proxy)
1354
- - **Streaming**: Server-Sent Events (SSE)
1355
- - **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
1356
- - **Testing**: Node.js test runner (368+ test unitari)
1357
- - **CI/CD**: GitHub Actions (pubblicazione automatica npm + Docker Hub al rilascio)
1358
- - **Sito Web**: [omniroute.online](https://omniroute.online)
1359
- - **Pacchetto**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1360
- - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1361
- - **Resilienza**: Circuit breaker, backoff esponenziale, anti-thundering herd, TLS spoofing
1362
-
1363
- ---
1364
-
1365
- ## 📖 Documentazione
1366
-
1367
- | Documento | Descrizione |
1368
- | ----------------------------------------------- | -------------------------------------------------- |
1369
- | [Guida Utente](docs/USER_GUIDE.md) | Provider, combo, integrazione CLI, deploy |
1370
- | [Riferimento API](docs/API_REFERENCE.md) | Tutti gli endpoint con esempi |
1371
- | [Risoluzione Problemi](docs/TROUBLESHOOTING.md) | Problemi comuni e soluzioni |
1372
- | [Architettura](docs/ARCHITECTURE.md) | Architettura del sistema e dettagli interni |
1373
- | [Come Contribuire](CONTRIBUTING.md) | Setup di sviluppo e linee guida |
1374
- | [Spec OpenAPI](docs/openapi.yaml) | Specifica OpenAPI 3.0 |
1375
- | [Politica di Sicurezza](SECURITY.md) | Segnalazione vulnerabilità e pratiche di sicurezza |
1376
-
1377
- ---
1378
-
1379
- ## 🗺️
1380
-
1381
- ## 👥 Contributori
1382
-
1383
- [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1384
-
1385
- ### Come Contribuire
1386
-
1387
- 1. Fai il fork del repository
1388
- 2. Crea il tuo branch di funzionalità (`git checkout -b feature/amazing-feature`)
1389
- 3. Fai il commit delle modifiche (`git commit -m 'Add amazing feature'`)
1390
- 4. Fai il push al branch (`git push origin feature/amazing-feature`)
1391
- 5. Apri una Pull Request
1392
-
1393
- Consulta [CONTRIBUTING.md](CONTRIBUTING.md) per le linee guida dettagliate.
1394
-
1395
- ### Rilasciare una nuova versione
1396
-
1397
- ```bash
1398
- # Crea un rilascio — la pubblicazione npm avviene automaticamente
1399
- gh release create v1.0.6 --title "v1.0.6" --generate-notes
1400
- ```
1401
-
1402
- ---
1403
-
1404
- ## 📊 Cronologia Stelle
1405
-
1406
- <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1407
- <picture>
1408
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1409
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1410
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1411
- </picture>
1412
- </a>
1413
-
1414
- ---
1415
-
1416
- ## 🙏 Ringraziamenti
1417
-
1418
- Un ringraziamento speciale a **[9router](https://github.com/decolua/9router)** di **[decolua](https://github.com/decolua)** — il progetto originale che ha ispirato questo fork. OmniRoute si costruisce su quell'incredibile base con funzionalità aggiuntive, API multi-modali e una riscrittura completa in TypeScript.
1419
-
1420
- Un ringraziamento speciale a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — l'implementazione originale in Go che ha ispirato questo porting in JavaScript.
1421
-
1422
- ---
1423
-
1424
- ## 📄 Licenza
1425
-
1426
- Licenza MIT — vedi [LICENSE](LICENSE) per i dettagli.
1427
-
1428
- ---
1429
-
1430
- <div align="center">
1431
- <sub>Fatto con ❤️ per gli sviluppatori che programmano 24/7</sub>
1432
- <br/>
1433
- <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1434
- </div>