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.sv.md DELETED
@@ -1,1587 +0,0 @@
1
- <div align="center">
2
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
3
-
4
- # 🚀 OmniRoute — Den kostnadsfria AI-gatewayen
5
-
6
- ### Sluta aldrig koda. Smart routing till **GRATIS & lågkostnads ​​AI-modeller** med automatisk reserv.
7
-
8
- _Din universella API-proxy — en slutpunkt, 36+ leverantörer, noll driftstopp._
9
-
10
- **Slutförda chatt • Inbäddningar • Bildgenerering • Ljud • Omrankning • 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
- ### 🤖 Gratis AI-leverantör för dina favoritkodningsagenter
27
-
28
- _Anslut alla AI-drivna IDE- eller CLI-verktyg via OmniRoute — gratis API-gateway för obegränsad kodning._
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>📡 Alla agenter ansluter via <code>http://localhost:20128/v1</code> eller <code>http://cloud.omniroute.online/v1</code>, —limited one config_245\_\_ kvot</sub>
108
-
109
- ---
110
-
111
- [![npm version](https://img.shields.io/npm/v/omniroute?color=cb3837&logo=npm)](https://www.npmjs.com/package/omniroute)
112
- [![Docker Hub](https://img.shields.io/docker/v/diegosouzapw/omniroute?label=Docker%20Hub&logo=docker&color=2496ED)](https://hub.docker.com/r/diegosouzapw/omniroute)
113
- [![License](https://img.shields.io/github/license/diegosouzapw/OmniRoute)](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
114
- [![Website](https://img.shields.io/badge/Website-omniroute.online-blue?logo=google-chrome&logoColor=white)](https://omniroute.online)
115
- [![WhatsApp](https://img.shields.io/badge/WhatsApp-Community-25D366?logo=whatsapp&logoColor=white)](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
116
-
117
- [🌐 Website](https://omniroute.online) • [🚀 Quick Start](#-quick-start) • [💡 Features](#-key-features) • [📖 Docs](#-documentation) • [💰 Pricing](#-pricing-at-a-glance) • [💬 WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
118
-
119
- 🌐 **Available in:** 🇺🇸 [English](README.md) | 🇧🇷 [Português (Brasil)](README.pt-BR.md) | 🇪🇸 [Español](README.es.md) | 🇫🇷 [Français](README.fr.md) | 🇮🇹 [Italiano](README.it.md) | 🇷🇺 [Русский](README.ru.md) | 🇨🇳 [中文 (简体)](README.zh-CN.md) | 🇩🇪 [Deutsch](README.de.md) | 🇮🇳 [हिन्दी](README.in.md) | 🇹🇭 [ไทย](README.th.md) | 🇺🇦 [Українська](README.uk-UA.md) | 🇸🇦 [العربية](README.ar.md) | 🇯🇵 [日本語](README.ja.md) | 🇻🇳 [Tiếng Việt](README.vi.md) | 🇧🇬 [Български](README.bg.md) | 🇩🇰 [Dansk](README.da.md) | 🇫🇮 [Suomi](README.fi.md) | 🇮🇱 [עברית](README.he.md) | 🇭🇺 [Magyar](README.hu.md) | 🇮🇩 [Bahasa Indonesia](README.id.md) | 🇰🇷 [한국어](README.ko.md) | 🇲🇾 [Bahasa Melayu](README.ms.md) | 🇳🇱 [Nederlands](README.nl.md) | 🇳🇴 [Norsk](README.no.md) | 🇵🇹 [Português (Portugal)](README.pt.md) | 🇷🇴 [Română](README.ro.md) | 🇵🇱 [Polski](README.pl.md) | 🇸🇰 [Slovenčina](README.sk.md) | 🇸🇪 [Svenska](README.sv.md) | 🇵🇭 [Filipino](README.phi.md)
120
-
121
- </div>
122
-
123
- ---
124
-
125
- ## 🖼️
126
-
127
- <div align="center">
128
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute" width="800"/>
129
- </div>
130
-
131
- ---
132
-
133
- ## 📸
134
-
135
- <details>
136
- <summary><b>...</b></summary>
137
-
138
- | # | # |
139
- | ----- | ---------------------------------------- |
140
- | **1** | ![1](docs/screenshots/01-providers.png) |
141
- | **2** | ![2](docs/screenshots/02-combos.png) |
142
- | **3** | ![3](docs/screenshots/03-analytics.png) |
143
- | **4** | ![4](docs/screenshots/04-health.png) |
144
- | **5** | ![5](docs/screenshots/05-translator.png) |
145
- | **6** | ![6](docs/screenshots/06-settings.png) |
146
- | **7** | ![7](docs/screenshots/07-cli-tools.png) |
147
- | **8** | ![8](docs/screenshots/08-usage.png) |
148
- | **9** | ![9](docs/screenshots/09-endpoint.png) |
149
-
150
- </details>
151
-
152
- ---
153
-
154
- ## 🤔 Varför OmniRoute?
155
-
156
- **Sluta slösa pengar och nå gränser:**
157
-
158
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Prenumerationskvoten löper ut oanvänd varje månad
159
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Hastighetsgränser stoppar dig mellankodning
160
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Dyra API:er ($20-50/månad per leverantör)
161
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Manuellt byte mellan leverantörer
162
-
163
- **OmniRoute löser detta:**
164
-
165
- - ✅ **Maximera prenumerationer** - Spåra kvot, använd varje bit innan återställning
166
- - ✅ **Automatisk reserv** - Prenumeration → API-nyckel → Billigt → Gratis, noll driftstopp
167
- - ✅ **Multi-konto** - Round-robin mellan konton per leverantör
168
- - ✅ **Universal** - Fungerar med Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, vilket CLI-verktyg som helst
169
-
170
- ---
171
-
172
- ## 📧 Support
173
-
174
- > 💬 **Gå med i vår community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Få hjälp, dela tips och håll dig uppdaterad.
175
-
176
- - **Webbplats**: [omniroute.online](https://omniroute.online)
177
- - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
178
- - **Frågor**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
179
- - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
180
- - **Originalprojekt**: [9router by decolua](https://github.com/decolua/9router)
181
-
182
- ---
183
-
184
- ## 🔄 Hur det fungerar
185
-
186
- ```
187
- ┌─────────────┐
188
- │ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
189
- │ Tool │
190
- └──────┬──────┘
191
- │ http://localhost:20128/v1
192
-
193
- ┌─────────────────────────────────────────┐
194
- │ OmniRoute (Smart Router) │
195
- │ • Format translation (OpenAI ↔ Claude) │
196
- │ • Quota tracking + Embeddings + Images │
197
- │ • Auto token refresh │
198
- └──────┬──────────────────────────────────┘
199
-
200
- ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI
201
- │ ↓ quota exhausted
202
- ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
203
- │ ↓ budget limit
204
- ├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)
205
- │ ↓ budget limit
206
- └─→ [Tier 4: FREE] iFlow, Qwen, Kiro (unlimited)
207
-
208
- Result: Never stop coding, minimal cost
209
- ```
210
-
211
- ---
212
-
213
- ## 🎯 Vad OmniRoute löser — 30 verkliga smärtpunkter och användningsfall
214
-
215
- > **Varje utvecklare som använder AI-verktyg möter dessa problem dagligen.** OmniRoute byggdes för att lösa dem alla — från kostnadsöverskridanden till regionala block, från trasiga OAuth-flöden till protokolloperationer och observerbarhet i företag.
216
-
217
- <details>
218
- <summary><b>💸 1. "Jag betalar för ett dyrt abonnemang men blir ändå avbruten av limits" </b></summary>
219
-
220
- Utvecklare betalar $20–200/månad för Claude Pro, Codex Pro eller GitHub Copilot. Även om du betalar har kvoten ett tak - 5 timmars användning, veckogränser eller gränser per minut. Mid-coding session, leverantören slutar svara och utvecklaren tappar flöde och produktivitet.
221
-
222
- **Hur OmniRoute löser det:**
223
-
224
- - **Smart 4-lagers fallback** — Om prenumerationskvoten tar slut, omdirigeras automatiskt till API-nyckel → Billigt → Gratis med noll manuellt ingrepp
225
- - **Kvotspårning i realtid** — Visar tokenförbrukning i realtid med återställningsnedräkning (5 timmar, dagligen, veckovis)
226
- - **Multi-Account Support** — Flera konton per leverantör med automatisk round-robin — när ett tar slut, byter du till nästa
227
- - **Anpassade kombinationer** — Anpassningsbara reservkedjor med 6 balanseringsstrategier (fill-first, round-robin, P2C, slumpmässig, minst använda, kostnadsoptimerad)
228
- - **Codex Business Quotas** — Övervakning av företags-/teamarbetsutrymmeskvoter direkt i instrumentpanelen
229
-
230
- </details>
231
-
232
- <details>
233
- <summary><b>🔌 2. "Jag måste använda flera leverantörer men alla har olika API" </b></summary>
234
-
235
- OpenAI använder ett format, Claude (Anthropic) använder ett annat, Gemini ännu ett annat. Om en utvecklare vill testa modeller från olika leverantörer eller fallback mellan dem måste de konfigurera om SDK:er, ändra slutpunkter, hantera inkompatibla format. Anpassade leverantörer (FriendLI, NIM) har icke-standardiserade modellslutpunkter.
236
-
237
- **Hur OmniRoute löser det:**
238
-
239
- - **Unified Endpoint** — En enda `http://localhost:20128/v1` fungerar som proxy för alla 36+ leverantörer
240
- - **Formatöversättning** — Automatisk och transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
241
- - **Responssanering** — Tar bort icke-standardiserade fält (`x_groq`, `usage_breakdown`, `service_tier`) som bryter OpenAI SDK v1.83+
242
- - **Rollnormalisering** — Konverterar `developer` → `system` för icke-OpenAI-leverantörer; `system` → `user` för GLM/ERNIE
243
- - **Think Tag Extraction** — Extraherar `<think>`-block från modeller som DeepSeek R1 till standardiserade `reasoning_content`
244
- - **Structured Output for Gemini** — `json_schema` → `responseMimeType`/`responseSchema` automatisk konvertering
245
- - **`stream` är standard till `false`** — Justerar med OpenAI-specifikationen, undviker oväntad SSE i Python/Rust/Go SDK:er
246
-
247
- </details>
248
-
249
- <details>
250
- <summary><b>🌐 3. "Min AI-leverantör blockerar min region/land" </b></summary>
251
-
252
- Leverantörer som OpenAI/Codex blockerar åtkomst från vissa geografiska regioner. Användare får fel som `unsupported_country_region_territory` under OAuth- och API-anslutningar. Detta är särskilt frustrerande för utvecklare från utvecklingsländer.
253
-
254
- **Hur OmniRoute löser det:**
255
-
256
- - **3-Level Proxy Config** — Konfigurerbar proxy på 3 nivåer: global (all trafik), per leverantör (endast en leverantör) och per anslutning/nyckel
257
- - **Färgkodade proxymärken** — Visuella indikatorer: 🟢 global proxy, 🟡 leverantörsproxy, 🔵 anslutningsproxy, visar alltid IP:n
258
- - **OAuth Token Exchange Through Proxy** — OAuth-flödet går också genom proxyn, vilket löser `unsupported_country_region_territory`
259
- - **Anslutningstester via proxy** — Anslutningstester använder den konfigurerade proxyn (ingen mer direkt förbikoppling)
260
- - **SOCKS5-stöd** — Fullständigt SOCKS5-proxystöd för utgående routing
261
- - **TLS Fingerprint Spoofing** — Webbläsarliknande TLS-fingeravtryck via `wreq-js` för att kringgå botdetektering
262
-
263
- </details>
264
-
265
- <details>
266
- <summary><b>🆓 4. "Jag vill använda AI för kodning men jag har inga pengar" </b></summary>
267
-
268
- Alla kan inte betala $20–200/månad för AI-prenumerationer. Studenter, utvecklare från tillväxtländer, hobbyister och frilansare behöver tillgång till kvalitetsmodeller utan kostnad.
269
-
270
- **Hur OmniRoute löser det:**
271
-
272
- - **Gratis leverantörer inbyggda** — Inbyggt stöd för 100 % gratis leverantörer: iFlow (8 obegränsade modeller), Qwen (3 obegränsade modeller), Kiro (Claude gratis), Gemini CLI (180K/månad gratis)
273
- - **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/<model>` prefix
274
- - **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/månad utan stilleståndstid
275
- - **NVIDIA NIM gratis krediter** — 1000 gratis krediter integrerade
276
- - **Kostnadsoptimerad strategi** — Routingstrategi som automatiskt väljer den billigaste tillgängliga leverantören
277
-
278
- </details>
279
-
280
- <details>
281
- <summary><b>🔒 5. "Jag behöver skydda min AI-gateway från obehörig åtkomst" </b></summary>
282
-
283
- När du exponerar en AI-gateway för nätverket (LAN, VPS, Docker) kan vem som helst med adressen konsumera utvecklarens tokens/kvot. Utan skydd är API:er sårbara för missbruk, snabb injektion och missbruk.
284
-
285
- **Hur OmniRoute löser det:**
286
-
287
- - **API Key Management** — Generering, rotation och omfattning per leverantör med en dedikerad `/dashboard/api-manager`-sida
288
- - **Behörigheter på modellnivå** — Begränsa API-nycklar till specifika modeller (`openai/*`, jokerteckenmönster), med växlaren Tillåt allt/Begränsa
289
- - **API Endpoint Protection** — Kräv en nyckel för `/v1/models` och blockera specifika leverantörer från listan
290
- - **Auth Guard + CSRF Protection** — Alla instrumentpanelsrutter skyddade med `withAuth` middleware + CSRF-tokens
291
- - **Rate Limiter** — Per-IP-hastighetsbegränsning med konfigurerbara fönster
292
- - **IP-filtrering** — Tillåtelselista/blockeringslista för åtkomstkontroll
293
- - **Prompt Injection Guard** — Sanering mot skadliga promptmönster
294
- - **AES-256-GCM-kryptering** — Autentiseringsuppgifter krypterade i vila
295
-
296
- </details>
297
-
298
- <details>
299
- <summary><b>🛑 6. "Min leverantör gick ner och jag tappade mitt kodningsflöde" </b></summary>
300
-
301
- AI-leverantörer kan bli instabila, returnera 5xx-fel eller nå tillfälliga hastighetsgränser. Om en utvecklare är beroende av en enskild leverantör avbryts de. Utan strömbrytare kan upprepade försök krascha programmet.
302
-
303
- **Hur OmniRoute löser det:**
304
-
305
- - **Circuit Breaker per leverantör** — Autoöppning/stängning med konfigurerbara trösklar och nedkylning (stängd/öppen/halvöppen)
306
- - **Exponentiell backoff** — Progressiva fördröjningar igen
307
- - **Anti-Thundering Herd** — Mutex + semaforskydd mot samtidiga stormar igen
308
- - **Combo reservkedjor** — Om den primära leverantören misslyckas, faller den automatiskt genom kedjan utan ingrepp
309
- - **Combo Circuit Breaker** - Inaktiverar automatiskt felande leverantörer inom en kombinationskedja
310
- - **Health Dashboard** — Drifttidsövervakning, strömbrytartillstånd, låsningar, cachestatistik, p50/p95/p99 latens
311
-
312
- </details>
313
-
314
- <details>
315
- <summary><b>🔧 7. "Att konfigurera varje AI-verktyg är tråkigt och repetitivt" </b></summary>
316
-
317
- Utvecklare använder Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Varje verktyg behöver en annan konfiguration (API-slutpunkt, nyckel, modell). Att konfigurera om när man byter leverantör eller modell är ett slöseri med tid.
318
-
319
- **Hur OmniRoute löser det:**
320
-
321
- - **CLI Tools Dashboard** — Dedikerad sida med ett-klicksinställningar för Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
322
- - **GitHub Copilot Config Generator** — Genererar `chatLanguageModels.json` för VS-kod med bulkmodellval
323
- - **Onboarding Wizard** — Guidad 4-stegs installation för förstagångsanvändare
324
- - **En slutpunkt, alla modeller** — Konfigurera `http://localhost:20128/v1` en gång, få tillgång till 36+ leverantörer
325
-
326
- </details>
327
-
328
- <details>
329
- <summary><b>🔑 8. "Hantera OAuth-tokens från flera leverantörer är ett helvete" </b></summary>
330
-
331
- Claude Code, Codex, Gemini CLI, Copilot — alla använder OAuth 2.0 med utgående tokens. Utvecklare måste autentisera på nytt hela tiden, hantera `client_secret is missing`, `redirect_uri_mismatch` och fel på fjärrservrar. OAuth på LAN/VPS är särskilt problematiskt.
332
-
333
- **Hur OmniRoute löser det:**
334
-
335
- - **Automatisk uppdatering av token** — OAuth-tokens uppdateras i bakgrunden innan de löper ut
336
- - **OAuth 2.0 (PKCE) Inbyggd** — Automatiskt flöde för Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
337
- - **Multi-Account OAuth** — Flera konton per leverantör via JWT/ID-tokenextraktion
338
- - **OAuth LAN/Remote Fix** — Privat IP-detektering för `redirect_uri` + manuellt URL-läge för fjärrservrar
339
- - **OAuth Behind Nginx** — Använder `window.location.origin` för omvänd proxykompatibilitet
340
- - **Remote OAuth Guide** — Steg-för-steg-guide för Google Cloud-uppgifter på VPS/Docker
341
-
342
- </details>
343
-
344
- <details>
345
- <summary><b>📊 9. "Jag vet inte hur mycket jag spenderar eller var" </b></summary>
346
-
347
- Utvecklare använder flera betalleverantörer men har ingen enhetlig syn på utgifter. Varje leverantör har sin egen faktureringspanel, men det finns ingen konsoliderad vy. Oväntade kostnader kan hopa sig.
348
-
349
- **Hur OmniRoute löser det:**
350
-
351
- - **Kostnadsanalysinstrumentpanel** — Kostnadsspårning per token och budgethantering per leverantör
352
- - **Budgetgränser per nivå** — Utgiftstak per nivå som utlöser automatisk reserv
353
- - **Priskonfiguration per modell** — Konfigurerbara priser per modell
354
- - **Användningsstatistik per API-nyckel** — Antal förfrågningar och senast använda tidsstämpel per nyckel
355
- - **Analytics Dashboard** — Statistikkort, modellanvändningsdiagram, leverantörstabell med framgångsfrekvens och latens
356
-
357
- </details>
358
-
359
- <details>
360
- <summary><b>🐛 10. "Jag kan inte diagnostisera fel och problem i AI-samtal" </b></summary>
361
-
362
- När ett samtal misslyckas vet inte utvecklaren om det var en hastighetsgräns, utgången token, fel format eller leverantörsfel. Fragmenterade loggar över olika terminaler. Utan observerbarhet är felsökning att trial-and-error.
363
-
364
- **Hur OmniRoute löser det:**
365
-
366
- - **Unified Logs Dashboard** — 4 flikar: Request Logs, Proxy Logs, Audit Logs, Console
367
- - **Console Log Viewer** — Viewer i realtid i terminalstil med färgkodade nivåer, automatisk rullning, sökning, filtrering
368
- - **SQLite Proxy-loggar** — Beständiga loggar som överlever serverstarter
369
- - **Translator Playground** — 4 felsökningslägen: Playground (formatöversättning), Chat Tester (tur och retur), Testbänk (batch), Live Monitor (realtid)
370
- - **Request Telemetri** — p50/p95/p99 latens + X-Request-Id-spårning
371
- - **Filbaserad loggning med rotation** — Konsolinterceptor fångar allt till JSON-logg med storleksbaserad rotation
372
-
373
- </details>
374
-
375
- <details>
376
- <summary><b>🏗️ 11. "Det är komplext att distribuera och underhålla gatewayen" </b></summary>
377
-
378
- Att installera, konfigurera och underhålla en AI-proxy i olika miljöer (lokalt, VPS, Docker, moln) är arbetskrävande. Problem som hårdkodade sökvägar, `EACCES` på kataloger, portkonflikter och plattformsoberoende konstruktioner ger friktion.
379
-
380
- **Hur OmniRoute löser det:**
381
-
382
- - **npm global installation** — `npm install -g omniroute && omniroute` — klar
383
- - **Docker Multi-Platform** — AMD64 + ARM64 inbyggt (Apple Silicon, AWS Graviton, Raspberry Pi)
384
- - **Docker Compose Profiles** — `base` (inga CLI-verktyg) och `cli` (med Claude Code, Codex, OpenClaw)
385
- - **Electron Desktop App** — Inbyggd app för Windows/macOS/Linux med systemfältet, autostart, offlineläge
386
- - **Split-Port Mode** — API och Dashboard på separata portar för avancerade scenarier (omvänd proxy, containernätverk)
387
- - **Cloud Sync** — Konfigurera synkronisering mellan enheter via Cloudflare Workers
388
- - **DB-säkerhetskopior** — Automatisk säkerhetskopiering, återställning, export och import av alla inställningar
389
-
390
- </details>
391
-
392
- <details>
393
- <summary><b>🌍 12. "Gränssnittet är endast engelska och mitt team talar inte engelska" </b></summary>
394
-
395
- Lag i icke-engelsktalande länder, särskilt i Latinamerika, Asien och Europa, kämpar med enbart engelska gränssnitt. Språkbarriärer minskar användningen och ökar konfigurationsfelen.
396
-
397
- **Hur OmniRoute löser det:**
398
-
399
- - **Dashboard i18n — 30 språk** — Alla 500+ nycklar översatta, inklusive arabiska, bulgariska, danska, tyska, spanska, finska, franska, hebreiska, hindi, ungerska, indonesiska, italienska, japanska, koreanska, malaysiska, holländska, norska, polska, portugisiska (PT/BR), rumänska, ryska, thailändska, ukrainska, ukrainska, kinesiska, engelska, ukrainska, vietnamesiska, ukrainska, svenska, ukrainska
400
- - **RTL-stöd** — Höger-till-vänster-stöd för arabiska och hebreiska
401
- - **Multi-Language READMEs** — 30 fullständiga dokumentationsöversättningar
402
- - **Språkväljare** — Globikon i rubriken för växling i realtid
403
-
404
- </details>
405
-
406
- <details>
407
- <summary><b>🔄 13. "Jag behöver mer än chatt — jag behöver inbäddningar, bilder, ljud"</b></summary>
408
-
409
- AI är inte bara att slutföra chatt. Utvecklare måste generera bilder, transkribera ljud, skapa inbäddningar för RAG, ranka om dokument och moderera innehåll. Varje API har olika slutpunkt och format.
410
-
411
- **Hur OmniRoute löser det:**
412
-
413
- - **Inbäddningar** — `/v1/embeddings` med 6 leverantörer och 9+ modeller
414
- - **Bildgenerering** — `/v1/images/generations` med 10 leverantörer och 20+ modeller (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
415
- - **Text-till-video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) och SD WebUI
416
- - **Text-to-Music** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
417
- - **Ljudtranskription** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
418
- - **Text-till-tal** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + befintliga leverantörer
419
- - **Moderationer** — `/v1/moderations` — Innehållssäkerhetskontroller
420
- - **Omrankning** — `/v1/rerank` — Omrankning av dokumentrelevans
421
- - **Responses API** — Fullständigt `/v1/responses`-stöd för Codex
422
-
423
- </details>
424
-
425
- <details>
426
- <summary><b>🧪 14. "Jag har inget sätt att testa och jämföra kvalitet mellan olika modeller" </b></summary>
427
-
428
- Utvecklare vill veta vilken modell som är bäst för deras användningsfall - kod, översättning, resonemang - men det går långsamt att jämföra manuellt. Det finns inga integrerade utvärderingsverktyg.
429
-
430
- **Hur OmniRoute löser det:**
431
-
432
- - **LLM-utvärderingar** — Golden set-testning med 10 förinstallerade fall som täcker hälsningar, matematik, geografi, kodgenerering, JSON-efterlevnad, översättning, markdown, säkerhetsvägran
433
- - **4 matchningsstrategier** — `exact`, `contains`, `regex`, `custom` (JS-funktion)
434
- - **Translator Playground Test Bench** — Batchtestning med flera ingångar och förväntade utgångar, jämförelse mellan olika leverantörer
435
- - **Chatttestare** — Fullständig tur och retur med visuell responsåtergivning
436
- - **Live Monitor** — Realtidsström av alla förfrågningar som flödar genom proxyn
437
-
438
- </details>
439
-
440
- <details>
441
- <summary><b>📈 15. "Jag behöver skala utan att förlora prestanda" </b></summary>
442
-
443
- När förfrågningsvolymen ökar, utan att cachelagra genererar samma frågor dubbla kostnader. Utan idempotens, dubbletter begär avfallshantering. Prisgränser per leverantör måste respekteras.
444
-
445
- **Hur OmniRoute löser det:**
446
-
447
- - **Semantisk cache** — Tvåskiktscache (signatur + semantisk) minskar kostnaden och fördröjningen
448
- - **Request Idempotency** — 5s dedupliceringsfönster för identiska förfrågningar
449
- - **Rate Limit Detection** — RPM per leverantör, min gap och max samtidig spårning
450
- - **Redigerbara hastighetsgränser** — Konfigurerbara standardinställningar i Inställningar → Motståndskraft med uthållighet
451
- - **API Key Validation Cache** — 3-lagers cache för produktionsprestanda
452
- - **Hälsoinstrumentpanel med telemetri** — p50/p95/p99 latens, cachestatistik, drifttid
453
-
454
- </details>
455
-
456
- <details>
457
- <summary><b>🤖 16. "Jag vill kontrollera modellens beteende globalt" </b></summary>
458
-
459
- Utvecklare som vill ha alla svar på ett specifikt språk, med en specifik ton, eller som vill begränsa resonemangstokens. Att konfigurera detta i varje verktyg/förfrågan är opraktiskt.
460
-
461
- **Hur OmniRoute löser det:**
462
-
463
- - **System Prompt Injection** — Global prompt tillämpas på alla förfrågningar
464
- - **Thinking Budget Validation** — Reasoning token allocation control per request (passthrough, auto, custom, adaptive)
465
- - **6 routingstrategier** — Globala strategier som avgör hur förfrågningar distribueras
466
- - **Wildcard Router** — `provider/*`-mönster dirigerar dynamiskt till vilken leverantör som helst
467
- - **Kombo Aktivera/Inaktivera Växla** — Växla kombinationer direkt från instrumentpanelen
468
- - **Visa leverantör** — Aktivera/inaktivera alla anslutningar för en leverantör med ett klick
469
- - **Blockerade leverantörer** — Uteslut specifika leverantörer från `/v1/models`-listan
470
-
471
- </details>
472
-
473
- <details>
474
- <summary><b>🧰 17. "Jag behöver MCP-verktyg som förstklassiga produktegenskaper" </b></summary>
475
-
476
- Många AI-gateways exponerar MCP endast som en dold implementeringsdetalj. Team behöver ett synligt, hanterbart driftlager.
477
-
478
- **Hur OmniRoute löser det:**
479
-
480
- - MCP visas på navigeringspanelen och fliken för slutpunktsprotokoll
481
- - Dedikerad MCP-hanteringssida med process, verktyg, omfattningar och revision
482
- - Inbyggd snabbstart för `omniroute --mcp` och klientintroduktion
483
-
484
- </details>
485
-
486
- <details>
487
- <summary><b>🧠 18. "Jag behöver A2A-orkestrering med synkronisering + strömningsuppgiftsvägar" </b></summary>
488
-
489
- Agentarbetsflöden kräver både direkta svar och långvarig streamad exekvering med livscykelkontroll.
490
-
491
- **Hur OmniRoute löser det:**
492
-
493
- - A2A JSON-RPC-ändpunkt (`POST /a2a`) med `message/send` och `message/stream`
494
- - SSE-strömning med terminaltillståndspridning
495
- - Task lifecycle API:er för `tasks/get` och `tasks/cancel`
496
-
497
- </details>
498
-
499
- <details>
500
- <summary><b>🛰️ 19. "Jag behöver riktig MCP-processhälsa, inte gissad status" </b></summary>
501
-
502
- Operativa team måste veta om MCP faktiskt lever, inte bara om ett API är tillgängligt.
503
-
504
- **Hur OmniRoute löser det:**
505
-
506
- - Runtime heartbeat-fil med PID, tidsstämplar, transport, verktygsräkning och scope-läge
507
- - MCP status API som kombinerar hjärtslag + senaste aktivitet
508
- - UI-statuskort för process/upptid/hjärtslagsnyhet
509
-
510
- </details>
511
-
512
- <details>
513
- <summary><b>📋 20. "Jag behöver revisionsbart MCP-verktygsexekvering" </b></summary>
514
-
515
- När verktyg muterar konfiguration eller utlöser operationsåtgärder behöver team rättsmedicinsk spårbarhet.
516
-
517
- **Hur OmniRoute löser det:**
518
-
519
- - SQLite-stödd revisionsloggning för MCP-verktygsanrop
520
- - Filtrerar efter verktyg, framgång/misslyckande, API-nyckel och paginering
521
- - Dashboard revisionstabell + statistikslutpunkter för automatisering
522
-
523
- </details>
524
-
525
- <details>
526
- <summary><b>🔐 21. "Jag behöver scoped MCP-behörigheter per integration" </b></summary>
527
-
528
- Olika klienter bör ha minst privilegierad åtkomst till verktygskategorier.
529
-
530
- **Hur OmniRoute löser det:**
531
-
532
- - 9 granulära MCP-scopes för kontrollerad verktygsåtkomst
533
- - Tillämpning av omfattning och synlighet i MCP-hanteringsgränssnitt
534
- - Säker standardställning för operativa verktyg
535
-
536
- </details>
537
-
538
- <details>
539
- <summary><b>⚙️ 22. "Jag behöver driftskontroller utan att omdistribuera" </b></summary>
540
-
541
- Team behöver snabba körtidsförändringar under incidenter eller kostnadshändelser.
542
-
543
- **Hur OmniRoute löser det:**
544
-
545
- - Växla kombinationsaktivering direkt från MCP-instrumentpanelen
546
- - Tillämpa motståndskraftsprofiler från fördefinierade policypaket
547
- - Återställ strömbrytarens tillstånd från samma manöverpanel
548
-
549
- </details>
550
-
551
- <details>
552
- <summary><b>🔄 23. "I need live A2A task lifecycle synibility and cancellation"</b></summary>
553
-
554
- Utan livscykelsynlighet blir uppgiftsincidenter svåra att triage.
555
-
556
- **Hur OmniRoute löser det:**
557
-
558
- - Uppgiftslista/filtrering efter stat/färdighet med sidnumrering
559
- - Drill down på uppgiftens metadata, händelser och artefakter
560
- - Slutpunkt för annullering av uppgifter och gränssnittsåtgärd med bekräftelse
561
-
562
- </details>
563
-
564
- <details>
565
- <summary><b>🌊 24. "Jag behöver mätvärden för aktiv strömning för A2A-laddning" </b></summary>
566
-
567
- Strömmande arbetsflöden kräver operativ insikt i samtidighet och direktanslutningar.
568
-
569
- **Hur OmniRoute löser det:**
570
-
571
- - Aktiva strömräknare integrerade i A2A-status
572
- - Tidsstämpel för senaste uppgift och antal per stat
573
- - A2A instrumentpanelskort för operationsövervakning i realtid
574
-
575
- </details>
576
-
577
- <details>
578
- <summary><b>🪪 25. "Jag behöver standardagentupptäckt för klienter" </b></summary>
579
-
580
- Externa klienter och orkestratorer behöver maskinläsbar metadata för onboarding.
581
-
582
- **Hur OmniRoute löser det:**
583
-
584
- - Agentkort exponerat på `/.well-known/agent.json`
585
- - Förmåga och färdigheter som visas i ledningsgränssnittet
586
- - A2A status API inkluderar upptäcktsmetadata för automatisering
587
-
588
- </details>
589
-
590
- <details>
591
- <summary><b>🧭 26. "Jag behöver protokollupptäckbarhet i produktens UX" </b></summary>
592
-
593
- Om användare inte kan upptäcka protokollytor, sjunker kvaliteten på adoption och support.
594
-
595
- **Hur OmniRoute löser det:**
596
-
597
- - Sidofältsposter för MCP och A2A
598
- - Slutpunktssida Protokoll-fliken med snabbstart och status
599
- - Länkar från översikt till dedikerade hanteringspaneler
600
-
601
- </details>
602
-
603
- <details>
604
- <summary><b>🧪 27. "Jag behöver end-to-end protokollvalidering med riktiga klienter" </b></summary>
605
-
606
- Mock-tester räcker inte för att validera protokollkompatibilitet före release.
607
-
608
- **Hur OmniRoute löser det:**
609
-
610
- - E2E-svit som startar appen och använder riktig MCP SDK-klienttransport
611
- - A2A-klient testar för upptäckt, skicka, streama, hämta och avbryta flöden
612
- - Korskontrollera påståenden mot MCP-revision och A2A-uppgifter API:er
613
-
614
- </details>
615
-
616
- <details>
617
- <summary><b>📡 28. "Jag behöver enhetlig observerbarhet över alla gränssnitt" </b></summary>
618
-
619
- Att dela upp observerbarheten enligt protokoll skapar blinda fläckar och längre MTTR.
620
-
621
- **Hur OmniRoute löser det:**
622
-
623
- - Enhetliga instrumentpaneler/loggar/analyser i en produkt
624
- - Hälsa + revision + begäran om telemetri över OpenAI-, MCP- och A2A-lager
625
- - Operativa API:er för status och automatisering
626
-
627
- </details>
628
-
629
- <details>
630
- <summary><b>💼 29. "Jag behöver en körtid för proxy + verktyg + agentorkestrering" </b></summary>
631
-
632
- Att köra många separata tjänster ökar driftskostnaderna och fellägen.
633
-
634
- **Hur OmniRoute löser det:**
635
-
636
- - OpenAI-kompatibel proxy, MCP-server och A2A-server i en stack
637
- - Delad autentisering, resiliens, datalagring och observerbarhet
638
- - Konsekvent policymodell över alla interaktionsytor
639
-
640
- </details>
641
-
642
- <details>
643
- <summary><b>🚀 30. "Jag behöver skicka agentiska arbetsflöden utan limkodsprawl" </b></summary>
644
-
645
- Lag tappar hastighet när de sammanfogar flera ad-hoc-tjänster och skript.
646
-
647
- **Hur OmniRoute löser det:**
648
-
649
- - Enhetlig slutpunktsstrategi för kunder och agenter
650
- - Inbyggda gränssnitt för protokollhantering och rökvalideringsvägar
651
- - Produktionsfärdiga grunder (säkerhet, loggning, resiliens, backup)
652
-
653
- </details>
654
-
655
- ### Exempel på Playbooks (integrerade användningsfall)
656
-
657
- **Playbook A: Maximera betald prenumeration + billig backup**
658
-
659
- ```txt
660
- Combo: "maximize-claude"
661
- 1. cc/claude-opus-4-6
662
- 2. glm/glm-4.7
663
- 3. if/kimi-k2-thinking
664
-
665
- Monthly cost: $20 + small backup spend
666
- Outcome: higher quality, near-zero interruption
667
- ```
668
-
669
- **Playbook B: Noll-kostnad kodningsstack**
670
-
671
- ```txt
672
- Combo: "free-forever"
673
- 1. gc/gemini-3-flash
674
- 2. if/kimi-k2-thinking
675
- 3. qw/qwen3-coder-plus
676
-
677
- Monthly cost: $0
678
- Outcome: stable free coding workflow
679
- ```
680
-
681
- **Playbook C: 24/7 alltid-på reservkedja**
682
-
683
- ```txt
684
- Combo: "always-on"
685
- 1. cc/claude-opus-4-6
686
- 2. cx/gpt-5.2-codex
687
- 3. glm/glm-4.7
688
- 4. minimax/MiniMax-M2.1
689
- 5. if/kimi-k2-thinking
690
-
691
- Outcome: deep fallback depth for deadline-critical workloads
692
- ```
693
-
694
- **Playbook D: Agent ops med MCP + A2A**
695
-
696
- ```txt
697
- 1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
698
- 2) Run A2A tasks via `message/send` and `message/stream`
699
- 3) Observe via /dashboard/mcp and /dashboard/a2a
700
- 4) Control incidents with resilience profile + task cancellation
701
- ```
702
-
703
- ---
704
-
705
- ## ⚡ Snabbstart
706
-
707
- **1. Installera globalt:**
708
-
709
- ```bash
710
- npm install -g omniroute
711
- omniroute
712
- ```
713
-
714
- 🎉 Instrumentpanelen öppnar kl. `http://localhost:20128`
715
-
716
- | Kommando | Beskrivning |
717
- | ----------------------- | ---------------------------------- |
718
- | `omniroute` | Startserver (standardport 20128) |
719
- | `omniroute --port 3000` | Använd anpassad port |
720
- | `omniroute --no-open` | Öppna inte webbläsaren automatiskt |
721
- | `omniroute --help` | Visa hjälp |
722
-
723
- **2. Anslut en GRATIS leverantör:**
724
-
725
- Dashboard → Leverantörer → Anslut **Claude Code** eller **Antigravity** → OAuth-inloggning → Klar!
726
-
727
- **3. Använd i ditt CLI-verktyg:**
728
-
729
- ```
730
- Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
731
- Endpoint: http://localhost:20128/v1
732
- API Key: [copy from dashboard]
733
- Model: if/kimi-k2-thinking
734
- ```
735
-
736
- **Det var allt!** Börja koda med GRATIS AI-modeller.
737
-
738
- **Alternativ – kör från källan:**
739
-
740
- ```bash
741
- cp .env.example .env
742
- npm install
743
- PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
744
- ```
745
-
746
- ---
747
-
748
- ## 🐳 Hamnarbetare
749
-
750
- OmniRoute är tillgänglig som en offentlig Docker-bild på [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
751
-
752
- **Snabbkörning:**
753
-
754
- ```bash
755
- docker run -d \
756
- --name omniroute \
757
- --restart unless-stopped \
758
- -p 20128:20128 \
759
- -v omniroute-data:/app/data \
760
- diegosouzapw/omniroute:latest
761
- ```
762
-
763
- **Med miljöfil:**
764
-
765
- ```bash
766
- # Copy and edit .env first
767
- cp .env.example .env
768
-
769
- docker run -d \
770
- --name omniroute \
771
- --restart unless-stopped \
772
- --env-file .env \
773
- -p 20128:20128 \
774
- -v omniroute-data:/app/data \
775
- diegosouzapw/omniroute:latest
776
- ```
777
-
778
- **Använda Docker Compose:**
779
-
780
- ```bash
781
- # Base profile (no CLI tools)
782
- docker compose --profile base up -d
783
-
784
- # CLI profile (Claude Code, Codex, OpenClaw built-in)
785
- docker compose --profile cli up -d
786
- ```
787
-
788
- | Bild | Tagga | Storlek | Beskrivning |
789
- | ------------------------ | -------- | ------- | ----------------------- |
790
- | `diegosouzapw/omniroute` | `latest` | ~250MB | Senaste stabila utgåvan |
791
- | `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Aktuell version |
792
-
793
- ---
794
-
795
- ---
796
-
797
- ## 🖥️
798
-
799
- > 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
800
-
801
- - 🖥️ **Native Window** — Dedicated app window with system tray integration
802
- - 🔄 **Auto-Start** — Launch OmniRoute on system login
803
- - 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
804
- - ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
805
- - 🌐 **Offline Mode** — Works fully offline with bundled server
806
-
807
- ```bash
808
- npm run electron:dev # Development mode
809
- npm run electron:build # Current platform
810
- npm run electron:build:win # Windows (.exe)
811
- npm run electron:build:mac # macOS (.dmg)
812
- npm run electron:build:linux # Linux (.AppImage)
813
- ```
814
-
815
- 📖 Full documentation: [`electron/README.md`](electron/README.md)
816
-
817
- ---
818
-
819
- ## 💰 Prissättning i en överblick
820
-
821
- | Nivå | Leverantör | Kostnad | Kvotåterställning | Bäst för |
822
- | -------------------- | ----------------- | ----------------------- | ------------------------ | ----------------------- |
823
- | **💳 PRENUMERATION** | Claude Code (Pro) | 20 USD/månad | 5h + veckovis | Har redan prenumererat |
824
- | | Codex (Plus/Pro) | 20-200 USD/månad | 5h + veckovis | OpenAI-användare |
825
- | | Gemini CLI | **GRATIS** | 180K/månad + 1K/dag | Alla! |
826
- | | GitHub Copilot | 10-19 USD/månad | Månatlig | GitHub-användare |
827
- | **🔑 API-NYCKEL** | NVIDIA NIM | **GRATIS** (1000 poäng) | Engång | Gratis nivåtestning |
828
- | | DeepSeek | Betala per användning | Inga | Bästa pris/kvalitet |
829
- | | Groq | Gratis nivå + betald | Begränsat pris | Ultrasnabb slutledning |
830
- | | xAI (Grok) | Betala per användning | Inga | Grok modeller |
831
- | | Mistral | Gratis nivå + betald | Begränsat pris | Europeisk AI |
832
- | | OpenRouter | Betala per användning | Inga | 100+ modeller |
833
- | **💰 BILLIGT** | GLM-4.7 | $0,6/1M | Dagligen 10:00 | Budget backup |
834
- | | MiniMax M2.1 | $0,2/1M | 5-timmars rullande | Billigaste alternativet |
835
- | | Kimi K2 | 9 USD/mån lägenhet | 10 miljoner tokens/månad | Förutsägbar kostnad |
836
- | **🆓 GRATIS** | iFlow | $0 | Obegränsad | 8 modeller gratis |
837
- | | Qwen | $0 | Obegränsad | 3 modeller gratis |
838
- | | Kiro | $0 | Obegränsad | Claude gratis |
839
-
840
- **💡 Proffstips:** Börja med Gemini CLI (180K gratis/månad) + iFlow (obegränsat gratis) combo = $0 kostnad!
841
-
842
- ---
843
-
844
- ## 💡 Nyckelfunktioner
845
-
846
- ### 🧠 Core Routing & Intelligence
847
-
848
- | Funktion | Vad det gör |
849
- | ------------------------------ | ----------------------------------------------------------------------------------------- |
850
- | 🎯 **Smart 4-lagers reserv** | Automatisk rutt: Prenumeration → API-nyckel → Billigt → Gratis |
851
- | 📊 **Kvotspårning i realtid** | Live token count + återställ nedräkning per leverantör |
852
- | 🔄 **Formatöversättning** | OpenAI ↔ Claude ↔ Gemini ↔ Markör ↔ Kiro sömlös + sanering av svar |
853
- | 👥 **Multi-Account Support** | Flera konton per leverantör med intelligent urval |
854
- | 🔄 **Auto Token Refresh** | OAuth-tokens uppdateras automatiskt med försök igen |
855
- | 🎨 **Anpassade kombinationer** | 6 strategier: fill-first, round-robin, p2c, slumpmässig, minst använda, kostnadsoptimerad |
856
- | 🧩 **Anpassade modeller** | Lägg till valfritt modell-ID till valfri leverantör |
857
- | 🌐 **Wildcard-router** | Dirigera `provider/*`-mönster till valfri leverantör dynamiskt |
858
- | 🧠 **Tänkande budget** | Genomgång, auto, anpassade och adaptiva lägen för resonerande modeller |
859
- | 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
860
- | ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
861
- | 💬 **System Prompt Injection** | Global systemprompt tillämpas på alla förfrågningar |
862
- | 📄 **Responses API** | Fullständigt stöd för OpenAI Responses API (`/v1/responses`) för Codex |
863
-
864
- ### 🎵 Multimodala API:er
865
-
866
- | Funktion | Vad det gör |
867
- | ------------------------ | ------------------------------------------------------ |
868
- | 🖼️ **Bildgenerering** | `/v1/images/generations` — 4 leverantörer, 9+ modeller |
869
- | 📐 **Inbäddningar** | `/v1/embeddings` — 6 leverantörer, 9+ modeller |
870
- | 🎤 **Ljudtranskription** | `/v1/audio/transcriptions` — Whisper-kompatibel |
871
- | 🔊 **Text-till-tal** | `/v1/audio/speech` — Ljudsyntes med flera leverantörer |
872
- | 🛡️ **Moderationer** | `/v1/moderations` — Innehållssäkerhetskontroller |
873
- | 🔀 **Omrankning** | `/v1/rerank` — Omrankning av dokumentrelevans |
874
-
875
- ### 🛡️ Motståndskraft och säkerhet
876
-
877
- | Funktion | Vad det gör |
878
- | -------------------------------------- | -------------------------------------------------------------------------------------- |
879
- | 🔌 **Circuit Breaker** | Autoöppna/stäng per leverantör med konfigurerbara trösklar |
880
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
881
- | 🛡️ **Anti-ånflock** | Mutex + semaforhastighetsgräns för API-nyckelleverantörer |
882
- | 🧠 **Semantisk cache** | Tvåskiktscache (signatur + semantisk) minskar kostnaden och fördröjningen |
883
- | ⚡ **Begär idempotens** | 5s dedup-fönster för dubblettförfrågningar |
884
- | 🔒 **TLS Fingerprint Spoofing** | Förbi TLS-baserad botdetektering via wreq-js |
885
- | 🔏 **CLI Fingerprint Matching** | Matches native CLI request signatures — **reduces ban risk while preserving proxy IP** |
886
- | 🌐 **IP-filtrering** | Tillåtelselista/blockeringslista för API-åtkomstkontroll |
887
- | 📊 **Redigerbara hastighetsgränser** | Konfigurerbart RPM, min gap och max samtidiga på systemnivå |
888
- | 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
889
- | 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
890
- | 🛡 **API Endpoint Protection** | Auth gating + leverantörsblockering för `/models` slutpunkt |
891
- | 🔒 **Proxysynlighet** | Färgkodade märken: 🟢 global, 🟡 leverantör, 🔵 per anslutning med IP-display |
892
- | 🌐 **Proxykonfiguration med 3 nivåer** | Konfigurera proxyservrar på global nivå, per leverantör eller per anslutningsnivå |
893
-
894
- ### 📊 Observerbarhet och analys
895
-
896
- | Funktion | Vad det gör |
897
- | --------------------------- | ----------------------------------------------------------------------------- |
898
- | 📝 **Begär loggning** | Felsökningsläge med fullständiga förfrågnings-/svarsloggar |
899
- | 💾 **SQLite proxyloggar** | Beständiga proxyloggar överlever serverstarter |
900
- | 📊 **Analytics Dashboard** | Recharts-driven: statistikkort, modellanvändningsdiagram, leverantörstabell |
901
- | 📈 **Förloppsspårning** | Opt-in SSE-förloppshändelser för streaming |
902
- | 🧪 **LLM-utvärderingar** | Golden set testning med 4 matchstrategier |
903
- | 🔍 **Begär telemetri** | p50/p95/p99 latensaggregation + X-Request-Id-spårning |
904
- | 📋 **Dashboard för loggar** | Enad sida med 4 flikar: Begäranloggar, Proxyloggar, Granskningsloggar, Konsol |
905
- | 🖥️ **Konsolloggvisare** | Realtidsvisare i terminalstil med nivåfilter, sökning, automatisk rullning |
906
- | 📑 **Filbaserad loggning** | Console Interceptor fångar all utdata till JSON-loggfilen med rotation |
907
- | 🏥 **Hälsoinstrumentpanel** | Systemupptid, strömbrytartillstånd, låsningar, cachestatistik |
908
- | 💰 **Kostnadsspårning** | Budgethantering + prissättning per modell |
909
-
910
- ### ☁️ Implementering och synkronisering
911
-
912
- | Funktion | Vad det gör |
913
- | -------------------------------- | -------------------------------------------------------------------------------------- |
914
- | 💾 **Cloud Sync** | Synkronisera konfiguration mellan enheter via Cloudflare Workers |
915
- | 🌐 **Distribuera var som helst** | Localhost, VPS, Docker, Cloudflare Workers |
916
- | 🔑 **API-nyckelhantering** | Generera, rotera och omfång API-nycklar per leverantör |
917
- | 🧙 **Onboarding Wizard** | 4-stegs guidad installation för förstagångsanvändare |
918
- | 🔧 **CLI Tools Dashboard** | Konfigurera med ett klick Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
919
- | 🔄 **DB-säkerhetskopior** | Automatisk säkerhetskopiering, återställning, export och import för alla inställningar |
920
- | 🌐 **Internationalisering** | Fullständig i18n med nästa-intl — stöd för engelska + portugisiska (Brasilien) |
921
- | 🌍 **Språkväljare** | Globikon i rubriken för språkväxling i realtid (🇺🇸/🇧🇷) |
922
- | 📂 **Anpassad datakatalog** | `DATA_DIR` env var för att åsidosätta standard `~/.omniroute` lagringssökväg |
923
-
924
- <details>
925
- <summary><b>📖 Funktionsdetaljer</b></summary>
926
-
927
- ### 🎯 Smart 4-lagers reserv
928
-
929
- Skapa kombinationer med automatisk reserv:
930
-
931
- ```
932
- Combo: "my-coding-stack"
933
- 1. cc/claude-opus-4-6 (your subscription)
934
- 2. nvidia/llama-3.3-70b (free NVIDIA API)
935
- 3. glm/glm-4.7 (cheap backup, $0.6/1M)
936
- 4. if/kimi-k2-thinking (free fallback)
937
-
938
- → Auto switches when quota runs out or errors occur
939
- ```
940
-
941
- ### 📊 Kvotspårning i realtid
942
-
943
- - Tokenförbrukning per leverantör
944
- - Återställ nedräkningen (5 timmar, dagligen, veckovis)
945
- - Kostnadsuppskattning för betalda nivåer
946
- - Månatliga utgiftsrapporter
947
-
948
- ### 🔄 Formatöversättning
949
-
950
- Sömlös översättning mellan format:
951
-
952
- - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI-svar**
953
- - Ditt CLI-verktyg skickar OpenAI-format → OmniRoute översätter → Leverantör tar emot inbyggt format
954
- - Fungerar med alla verktyg som stöder anpassade OpenAI-slutpunkter
955
- - **Responssanering** — Tar bort icke-standardiserade fält för strikt OpenAI SDK-kompatibilitet
956
- - **Rollnormalisering** — `developer` → `system` för icke-OpenAI; `system` → `user` för GLM/ERNIE-modeller
957
- - **Think tag extrahering** — `<think>` block → `reasoning_content` för tänkande modeller
958
- - **Structured output** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
959
-
960
- ### 👥 Support för flera konton
961
-
962
- - Lägg till flera konton per leverantör
963
- - Auto round-robin eller prioritetsbaserad routing
964
- - Fallback till nästa konto när man når kvoten
965
-
966
- ### 🔄 Auto Token Refresh
967
-
968
- - OAuth-tokens uppdateras automatiskt innan utgången
969
- - Ingen manuell återautentisering behövs
970
- - Sömlös upplevelse hos alla leverantörer
971
-
972
- ### 🎨 Anpassade kombinationer
973
-
974
- - Skapa obegränsade modellkombinationer
975
- - 6 strategier: fyll-först, round-robin, kraft-av-två-val, slumpmässig, minst använda, kostnadsoptimerad
976
- - Dela kombinationer mellan enheter med Cloud Sync
977
-
978
- ### 🏥 Health Dashboard
979
-
980
- - Systemstatus (upptid, version, minnesanvändning)
981
- - Strömbrytarstatus per leverantör (stängd/öppen/halvöppen)
982
- - Prisgränsstatus och aktiva låsningar
983
- - Signaturcachestatistik
984
- - Latens-telemetri (p50/p95/p99) + promptcache
985
- - Återställ hälsostatus med ett klick
986
-
987
- ### 🔧 Översättarlekplats
988
-
989
- OmniRoute inkluderar en kraftfull inbyggd översättarlekplats med **4 lägen** för felsökning, testning och övervakning av API-översättningar:
990
-
991
- | Läge | Beskrivning |
992
- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
993
- | **💻 Lekplats** | Direkt formatöversättning — klistra in valfri API-begäran och se direkt hur OmniRoute översätter den mellan leverantörsformat (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Inkluderar exempelmallar och automatisk identifiering av format. |
994
- | **💬 Chattestare** | Skicka riktiga chattförfrågningar genom OmniRoute och se hela tur och retur: din input, den översatta begäran, leverantörens svar och det översatta svaret tillbaka. Ovärderligt för att validera combo routing. |
995
- | **🧪 Testbänk** | Batchtestläge — definiera flera testfall med olika ingångar och förväntade utgångar, kör dem alla på en gång och jämför resultat mellan leverantörer och modeller. |
996
- | **📱 Live Monitor** | Bevakning av förfrågningar i realtid — titta på inkommande förfrågningar när de flödar genom OmniRoute, se formatöversättningar som sker live och identifiera problem direkt. |
997
-
998
- **Åtkomst:** Instrumentpanel → Översättare (sidofält)
999
-
1000
- ### 💾 Cloud Sync
1001
-
1002
- - Synkronisera leverantörer, kombinationer och inställningar mellan enheter
1003
- - Automatisk bakgrundssynkronisering
1004
- - Säker krypterad lagring
1005
-
1006
- </details>
1007
-
1008
- ## 🧪 Utvärderingar (Evals)
1009
-
1010
- OmniRoute inkluderar ett inbyggt utvärderingsramverk för att testa LLM-svarskvalitet mot en gyllene uppsättning. Få åtkomst till det via **Analytics → Evals** i instrumentpanelen.
1011
-
1012
- ### Inbyggt gyllene set
1013
-
1014
- Det förinstallerade "OmniRoute Golden Set" innehåller 10 testfall som täcker:
1015
-
1016
- - Hälsningar, matematik, geografi, kodgenerering
1017
- - JSON-formatöverensstämmelse, översättning, markdown
1018
- - Säkerhetsvägran (skadligt innehåll), räkning, boolesk logik
1019
-
1020
- ### Utvärderingsstrategier
1021
-
1022
- | Strategi | Beskrivning | Exempel |
1023
- | ---------- | ---------------------------------------------------- | -------------------------------- |
1024
- | `exact` | Utdata måste matcha exakt | `"4"` |
1025
- | `contains` | Utdata måste innehålla delsträng (skiftlägeskänslig) | `"Paris"` |
1026
- | `regex` | Utdata måste matcha regexmönster | `"1.*2.*3"` |
1027
- | `custom` | Anpassad JS-funktion returnerar true/false | `(output) => output.length > 10` |
1028
-
1029
- ---
1030
-
1031
- ## 📖 Installationsguide
1032
-
1033
- <details>
1034
- <summary><b>💳 Prenumerationsleverantörer</b></summary>
1035
-
1036
- ### Claude Code (Pro/Max)
1037
-
1038
- ```bash
1039
- Dashboard → Providers → Connect Claude Code
1040
- → OAuth login → Auto token refresh
1041
- → 5-hour + weekly quota tracking
1042
-
1043
- Models:
1044
- cc/claude-opus-4-6
1045
- cc/claude-sonnet-4-5-20250929
1046
- cc/claude-haiku-4-5-20251001
1047
- ```
1048
-
1049
- **Proffstips:** Använd Opus för komplexa uppgifter, Sonnet för snabbhet. OmniRoute spårar kvot per modell!
1050
-
1051
- ### OpenAI Codex (Plus/Pro)
1052
-
1053
- ```bash
1054
- Dashboard → Providers → Connect Codex
1055
- → OAuth login (port 1455)
1056
- → 5-hour + weekly reset
1057
-
1058
- Models:
1059
- cx/gpt-5.2-codex
1060
- cx/gpt-5.1-codex-max
1061
- ```
1062
-
1063
- ### Gemini CLI (GRATIS 180K/månad!)
1064
-
1065
- ```bash
1066
- Dashboard → Providers → Connect Gemini CLI
1067
- → Google OAuth
1068
- → 180K completions/month + 1K/day
1069
-
1070
- Models:
1071
- gc/gemini-3-flash-preview
1072
- gc/gemini-2.5-pro
1073
- ```
1074
-
1075
- **Bäst värde:** Enorma gratis nivå! Använd detta före betalda nivåer.
1076
-
1077
- ### GitHub Copilot
1078
-
1079
- ```bash
1080
- Dashboard → Providers → Connect GitHub
1081
- → OAuth via GitHub
1082
- → Monthly reset (1st of month)
1083
-
1084
- Models:
1085
- gh/gpt-5
1086
- gh/claude-4.5-sonnet
1087
- gh/gemini-3-pro
1088
- ```
1089
-
1090
- </details>
1091
-
1092
- <details>
1093
- <summary><b>🔑 API-nyckelleverantörer</b></summary>
1094
-
1095
- ### NVIDIA NIM (GRATIS 1000 krediter!)
1096
-
1097
- 1. Registrera dig: [build.nvidia.com](https://build.nvidia.com)
1098
- 2. Få gratis API-nyckel (1000 slutsatspoäng ingår)
1099
- 3. Dashboard → Lägg till leverantör → NVIDIA NIM:
1100
- - API-nyckel: `nvapi-your-key`
1101
-
1102
- **Modeller:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` och 50+ till
1103
-
1104
- **Proffstips:** OpenAI-kompatibelt API — fungerar sömlöst med OmniRoutes formatöversättning!
1105
-
1106
- ### DeepSeek
1107
-
1108
- 1. Registrera dig: [platform.deepseek.com](https://platform.deepseek.com)
1109
- 2. Hämta API-nyckel
1110
- 3. Dashboard → Lägg till leverantör → DeepSeek
1111
-
1112
- **Modeller:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
1113
-
1114
- ### Groq (gratis nivå tillgänglig!)
1115
-
1116
- 1. Registrera dig: [console.groq.com](https://console.groq.com)
1117
- 2. Skaffa API-nyckel (gratis nivå ingår)
1118
- 3. Dashboard → Lägg till leverantör → Groq
1119
-
1120
- **Modeller:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
1121
-
1122
- **Proffstips:** Ultrasnabb slutledning — bäst för realtidskodning!
1123
-
1124
- ### OpenRouter (100+ modeller)
1125
-
1126
- 1. Registrera dig: [openrouter.ai](https://openrouter.ai)
1127
- 2. Hämta API-nyckel
1128
- 3. Dashboard → Lägg till leverantör → OpenRouter
1129
-
1130
- **Modeller:** Få tillgång till 100+ modeller från alla större leverantörer genom en enda API-nyckel.
1131
-
1132
- </details>
1133
-
1134
- <details>
1135
- <summary><b>💰 Billiga leverantörer (backup)</b></summary>
1136
-
1137
- ### GLM-4.7 (Daglig återställning, $0,6/1M)
1138
-
1139
- 1. Registrera dig: [Zhipu AI](https://open.bigmodel.cn/)
1140
- 2. Hämta API-nyckel från Coding Plan
1141
- 3. Instrumentpanel → Lägg till API-nyckel:
1142
- - Leverantör: `glm`
1143
- - API-nyckel: `your-key`
1144
-
1145
- **Använd:** `glm/glm-4.7`
1146
-
1147
- **Proffstips:** Coding Plan erbjuder 3× kvot till 1/7 kostnad! Återställ dagligen 10:00.
1148
-
1149
- ### MiniMax M2.1 (5 timmars återställning, $0,20/1M)
1150
-
1151
- 1. Registrera dig: [MiniMax](https://www.minimax.io/)
1152
- 2. Hämta API-nyckel
1153
- 3. Instrumentpanel → Lägg till API-nyckel
1154
-
1155
- **Använd:** `minimax/MiniMax-M2.1`
1156
-
1157
- **Proffstips:** Billigaste alternativet för långa sammanhang (1M tokens)!
1158
-
1159
- ### Kimi K2 ($9/månad platt)
1160
-
1161
- 1. Prenumerera: [Moonshot AI](https://platform.moonshot.ai/)
1162
- 2. Hämta API-nyckel
1163
- 3. Instrumentpanel → Lägg till API-nyckel
1164
-
1165
- **Använd:** `kimi/kimi-latest`
1166
-
1167
- **Proffstips:** Fast $9/månad för 10 miljoner tokens = $0,90/1 miljon effektiv kostnad!
1168
-
1169
- </details>
1170
-
1171
- <details>
1172
- <summary><b>🆓 GRATIS leverantörer (nödbackup)</b></summary>
1173
-
1174
- ### iFlow (8 GRATIS modeller)
1175
-
1176
- ```bash
1177
- Dashboard → Connect iFlow
1178
- → iFlow OAuth login
1179
- → Unlimited usage
1180
-
1181
- Models:
1182
- if/kimi-k2-thinking
1183
- if/qwen3-coder-plus
1184
- if/glm-4.7
1185
- if/minimax-m2
1186
- if/deepseek-r1
1187
- ```
1188
-
1189
- ### Qwen (3 GRATIS modeller)
1190
-
1191
- ```bash
1192
- Dashboard → Connect Qwen
1193
- → Device code authorization
1194
- → Unlimited usage
1195
-
1196
- Models:
1197
- qw/qwen3-coder-plus
1198
- qw/qwen3-coder-flash
1199
- ```
1200
-
1201
- ### Kiro (Claude FREE)
1202
-
1203
- ```bash
1204
- Dashboard → Connect Kiro
1205
- → AWS Builder ID or Google/GitHub
1206
- → Unlimited usage
1207
-
1208
- Models:
1209
- kr/claude-sonnet-4.5
1210
- kr/claude-haiku-4.5
1211
- ```
1212
-
1213
- </details>
1214
-
1215
- <details>
1216
- <summary><b>🎨 Skapa kombinationer</b></summary>
1217
-
1218
- ### Exempel 1: Maximera prenumeration → Billig backup
1219
-
1220
- ```
1221
- Dashboard → Combos → Create New
1222
-
1223
- Name: premium-coding
1224
- Models:
1225
- 1. cc/claude-opus-4-6 (Subscription primary)
1226
- 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
1227
- 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
1228
-
1229
- Use in CLI: premium-coding
1230
- ```
1231
-
1232
- ### Exempel 2: Endast gratis (noll kostnad)
1233
-
1234
- ```
1235
- Name: free-combo
1236
- Models:
1237
- 1. gc/gemini-3-flash-preview (180K free/month)
1238
- 2. if/kimi-k2-thinking (unlimited)
1239
- 3. qw/qwen3-coder-plus (unlimited)
1240
-
1241
- Cost: $0 forever!
1242
- ```
1243
-
1244
- </details>
1245
-
1246
- <details>
1247
- <summary><b>🔧 CLI-integration</b></summary>
1248
-
1249
- ### Markör IDE
1250
-
1251
- ```
1252
- Settings → Models → Advanced:
1253
- OpenAI API Base URL: http://localhost:20128/v1
1254
- OpenAI API Key: [from OmniRoute dashboard]
1255
- Model: cc/claude-opus-4-6
1256
- ```
1257
-
1258
- ### Claude Code
1259
-
1260
- Använd sidan **CLI Tools** i instrumentpanelen för konfiguration med ett klick, eller redigera `~/.claude/settings.json` manuellt.
1261
-
1262
- ### Codex CLI
1263
-
1264
- ```bash
1265
- export OPENAI_BASE_URL="http://localhost:20128"
1266
- export OPENAI_API_KEY="your-omniroute-api-key"
1267
-
1268
- codex "your prompt"
1269
- ```
1270
-
1271
- ### OpenClaw
1272
-
1273
- **Alternativ 1 — Instrumentpanel (rekommenderas):**
1274
-
1275
- ```
1276
- Dashboard → CLI Tools → OpenClaw → Select Model → Apply
1277
- ```
1278
-
1279
- **Alternativ 2 — Manuell:** Redigera `~/.openclaw/openclaw.json`:
1280
-
1281
- ```json
1282
- {
1283
- "models": {
1284
- "providers": {
1285
- "omniroute": {
1286
- "baseUrl": "http://127.0.0.1:20128/v1",
1287
- "apiKey": "sk_omniroute",
1288
- "api": "openai-completions"
1289
- }
1290
- }
1291
- }
1292
- }
1293
- ```
1294
-
1295
- > **Obs!** OpenClaw fungerar endast med lokal OmniRoute. Använd `127.0.0.1` istället för `localhost` för att undvika problem med IPv6-upplösning.
1296
-
1297
- ### Cline / Fortsätt / RooCode
1298
-
1299
- ```
1300
- Settings → API Configuration:
1301
- Provider: OpenAI Compatible
1302
- Base URL: http://localhost:20128/v1
1303
- API Key: [from OmniRoute dashboard]
1304
- Model: if/kimi-k2-thinking
1305
- ```
1306
-
1307
- </details>
1308
-
1309
- ---
1310
-
1311
- ## 🐛 Felsökning
1312
-
1313
- <details>
1314
- <summary><b>Klicka för att expandera felsökningsguide</b></summary>
1315
-
1316
- **"Språkmodellen gav inga meddelanden"**
1317
-
1318
- - Leverantörskvoten är slut → Kontrollera instrumentpanelens kvotföljare
1319
- - Lösning: Använd kombinationsalternativ eller byt till billigare nivå
1320
-
1321
- **Taxebegränsning**
1322
-
1323
- - Prenumerationskvot ute → Fallback till GLM/MiniMax
1324
- - Lägg till kombination: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1325
-
1326
- **OAuth-token har löpt ut**
1327
-
1328
- - Automatisk uppdatering av OmniRoute
1329
- - Om problemen kvarstår: Dashboard → Leverantör → Återanslut
1330
-
1331
- **Höga kostnader**
1332
-
1333
- - Kontrollera användningsstatistik i Dashboard → Kostnader
1334
- - Byt primär modell till GLM/MiniMax
1335
- - Använd gratis nivå (Gemini CLI, iFlow) för icke-kritiska uppgifter
1336
-
1337
- **Dashboard öppnas på fel port**
1338
-
1339
- - Set `PORT=20128` och `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
1340
-
1341
- **Molnsynkroniseringsfel**
1342
-
1343
- - Verifiera att `BASE_URL` pekar på din löpinstans
1344
- - Verifiera `CLOUD_URL` poäng till din förväntade molnslutpunkt
1345
- - Håll `NEXT_PUBLIC_*` värden i linje med värden på serversidan
1346
-
1347
- **Första inloggningen fungerar inte**
1348
-
1349
- - Kontrollera `INITIAL_PASSWORD` i `.env`
1350
- - Om det inte är inställt är reservlösenordet `123456`
1351
-
1352
- **Inga förfrågningsloggar**
1353
-
1354
- - Ställ in `ENABLE_REQUEST_LOGS=true` i `.env`
1355
-
1356
- **Anslutningstest visar "Invalid" för OpenAI-kompatibla leverantörer**
1357
-
1358
- - Många leverantörer exponerar inte en `/models` slutpunkt
1359
- - OmniRoute v1.0.6+ inkluderar reservvalidering via chattslutföranden
1360
- - Se till att baswebbadressen innehåller suffixet `/v1`
1361
-
1362
- ### 🔐 OAuth
1363
-
1364
- <a name="oauth-em-servidor-remoto"></a>
1365
-
1366
- > **⚠️ VIKTIGT för användning av OmniRoute med VPS/Docker/serverfjärrkontroll**
1367
-
1368
- ### Hur kan du göra Antigravity / Tvilling CLI på fjärrkontroller?
1369
-
1370
- Os provedores **Antigravity** och **Gemini CLI** usam **Google OAuth 2.0** för autenticação. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pré-cadastradas no Google Cloud Console do aplicativo.
1371
-
1372
- Som credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
1373
-
1374
- ```
1375
- Error 400: redirect_uri_mismatch
1376
- ```
1377
-
1378
- ### Lösning: Konfigurera självständigt OAuth
1379
-
1380
- Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu service.
1381
-
1382
- #### Passo a passo
1383
-
1384
- **1. Åtkomst till Google Cloud Console**
1385
-
1386
- Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
1387
-
1388
- **2. Crie um novo OAuth 2.0 Client ID**
1389
-
1390
- - Klicka på dem **"+ Skapa inloggningsuppgifter"** → **"OAuth-klient-ID"**
1391
- - Typo de aplicativo: **"Webbapplikation"**
1392
- - Namn: escolha qualquer nome (ex: `OmniRoute Remote`)
1393
-
1394
- **3. Adicione som auktoriserade omdirigerings-URI**
1395
-
1396
- Ingen campo **"Auktoriserade omdirigerings-URIs"**, adicione:
1397
-
1398
- ```
1399
- https://seu-servidor.com/callback
1400
- ```
1401
-
1402
- > Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
1403
-
1404
- **4. Spara e kopia som credenciais**
1405
-
1406
- Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
1407
-
1408
- **5. Konfigurera som variáveis de ambiente**
1409
-
1410
- No seu `.env` (ou nas variáveis de ambiente do Docker):
1411
-
1412
- ```bash
1413
- # Para Antigravity:
1414
- ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1415
- ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1416
-
1417
- # Para Gemini CLI:
1418
- GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1419
- GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1420
- GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1421
- ```
1422
-
1423
- **6. Reinicie o OmniRoute**
1424
-
1425
- ```bash
1426
- # Se usando npm:
1427
- npm run dev
1428
-
1429
- # Se usando Docker:
1430
- docker restart omniroute
1431
- ```
1432
-
1433
- **7. Tente conectar novamente**
1434
-
1435
- Dashboard → Leverantörer → Antigravity (ou Gemini CLI) → OAuth
1436
-
1437
- Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
1438
-
1439
- ---
1440
-
1441
- ### Lösning temporário (som configurar credenciais próprias)
1442
-
1443
- Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
1444
-
1445
- 1. O OmniRoute abrirá en URL de autorização till Google
1446
- 2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
1447
- 3. **Kopiera en webbadress komplett** da barra de endereço do seu webbläsare (mesmo que a página não carregue)
1448
- 4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
1449
- 5. Klicka på **"Anslut"**
1450
-
1451
- > Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
1452
-
1453
- </details>
1454
-
1455
- ---
1456
-
1457
- ## 🛠️
1458
-
1459
- - **Körtid**: Node.js 18–22 LTS (⚠️ Node.js 24+ stöds **inte** — `better-sqlite3` inbyggda binärer är inkompatibla)
1460
- - **Språk**: TypeScript 5.9 — **100 % TypeScript** över `src/` och `open-sse/` (v1.0.6)
1461
- - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
1462
- - **Databas**: LowDB (JSON) + SQLite (domäntillstånd + proxyloggar)
1463
- - **Streaming**: Serversända händelser (SSE)
1464
- - **Auth**: OAuth 2.0 (PKCE) + JWT + API-nycklar
1465
- - **Test**: Node.js testlöpare (368+ enhetstester)
1466
- - **CI/CD**: GitHub-åtgärder (automatisk npm-publicering + Docker Hub vid release)
1467
- - **Webbplats**: [omniroute.online](https://omniroute.online)
1468
- - **Paket**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1469
- - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1470
- - **Resiliens**: Strömbrytare, exponentiell backoff, anti-dundrande flock, TLS-spoofing
1471
-
1472
- ---
1473
-
1474
- ## 📖 Dokumentation
1475
-
1476
- | Dokument | Beskrivning |
1477
- | -------------------------------------------- | ---------------------------------------------------------- |
1478
- | [User Guide](docs/USER_GUIDE.md) | Leverantörer, kombinationer, CLI-integration, distribution |
1479
- | [API Reference](docs/API_REFERENCE.md) | Alla slutpunkter med exempel |
1480
- | [Troubleshooting](docs/TROUBLESHOOTING.md) | Vanliga problem och lösningar |
1481
- | [Architecture](docs/ARCHITECTURE.md) | Systemarkitektur och interna delar |
1482
- | [Contributing](CONTRIBUTING.md) | Utvecklingsupplägg och riktlinjer |
1483
- | [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0-specifikation |
1484
- | [Security Policy](SECURITY.md) | Sårbarhetsrapportering och säkerhetsrutiner |
1485
- | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Komplett guide: VM + nginx + Cloudflare-installation |
1486
- | [Features Gallery](docs/FEATURES.md) | Visuell visning av instrumentpanelen med skärmdumpar |
1487
-
1488
- ### 📸 Förhandsgranskning av instrumentpanelen
1489
-
1490
- <details>
1491
- <summary><b>Klicka för att se skärmdumpar på instrumentpanelen</b></summary>
1492
-
1493
- | Sida | Skärmdump |
1494
- | --------------------- | ------------------------------------------------- |
1495
- | **Leverantörer** | ![Providers](docs/screenshots/01-providers.png) |
1496
- | **Kombos** | ![Combos](docs/screenshots/02-combos.png) |
1497
- | **Analytics** | ![Analytics](docs/screenshots/03-analytics.png) |
1498
- | **Hälsa** | ![Health](docs/screenshots/04-health.png) |
1499
- | **Översättare** | ![Translator](docs/screenshots/05-translator.png) |
1500
- | **Inställningar** | ![Settings](docs/screenshots/06-settings.png) |
1501
- | **CLI-verktyg** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1502
- | **Användningsloggar** | ![Usage](docs/screenshots/08-usage.png) |
1503
- | **Slutpunkt** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1504
-
1505
- </details>
1506
-
1507
- ---
1508
-
1509
- ## 🗺️
1510
-
1511
- OmniRoute har **210+ funktioner planerade** över flera utvecklingsfaser. Här är nyckelområdena:
1512
-
1513
- | Kategori | Planerade funktioner | Höjdpunkter |
1514
- | ------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------ |
1515
- | 🧠 **Routing & intelligens** | 25+ | Routning med lägsta latens, taggbaserad routing, kvotförhandskontroll, val av P2C-konto |
1516
- | 🔒 **Säkerhet och efterlevnad** | 20+ | SSRF-härdning, cloaking av autentiseringsuppgifter, hastighetsgräns per endpoint, hanteringsnyckelomfattning |
1517
- | 📊 **Observerbarhet** | 15+ | OpenTelemetry-integration, kvotövervakning i realtid, kostnadsspårning per modell |
1518
- | 🔄 **Providerintegrationer** | 20+ | Dynamiskt modellregister, nedkylning av leverantörer, Codex för flera konton, Copilot-kvotanalys |
1519
- | ⚡ **Prestanda** | 15+ | Dubbla cachelager, promptcache, svarscache, streaming keepalive, batch API |
1520
- | 🌐 **Ekosystem** | 10+ | WebSocket API, config hot-reload, distribuerad config store, kommersiellt läge |
1521
-
1522
- ### 🔜 Kommer snart
1523
-
1524
- - 🔗 **OpenCode Integration** — Inbyggt leverantörsstöd för OpenCode AI-kodnings-IDE
1525
- - 🔗 **TRAE Integration** — Fullständigt stöd för TRAE AI-utvecklingsramverket
1526
- - 📦 **Batch API** — Asynkron batchbearbetning för bulkförfrågningar
1527
- - 🎯 **Taggbaserad routing** — Ruttbegäranden baserade på anpassade taggar och metadata
1528
- - 💰 **Lägsta kostnadsstrategi** — Välj automatiskt den billigaste tillgängliga leverantören
1529
-
1530
- > 📝 Fullständiga funktionsspecifikationer tillgängliga i [link](docs/new-features/) (217 detaljerade specifikationer)
1531
-
1532
- ---
1533
-
1534
- ## 👥 Bidragsgivare
1535
-
1536
- [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1537
-
1538
- ### Hur man bidrar
1539
-
1540
- 1. Dela förvaret
1541
- 2. Skapa din funktionsgren (`git checkout -b feature/amazing-feature`)
1542
- 3. Bekräfta dina ändringar (`git commit -m 'Add amazing feature'`)
1543
- 4. Tryck till grenen (`git push origin feature/amazing-feature`)
1544
- 5. Öppna en Pull Request
1545
-
1546
- Se [CONTRIBUTING.md](CONTRIBUTING.md) för detaljerade riktlinjer.
1547
-
1548
- ### Släpper en ny version
1549
-
1550
- ```bash
1551
- # Create a release — npm publish happens automatically
1552
- gh release create v1.0.6 --title "v1.0.6" --generate-notes
1553
- ```
1554
-
1555
- ---
1556
-
1557
- ## 📊 Stjärnhistorik
1558
-
1559
- <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1560
- <picture>
1561
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1562
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1563
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1564
- </picture>
1565
- </a>
1566
-
1567
- ---
1568
-
1569
- ## 🙏 Tack
1570
-
1571
- Speciellt tack till **[9router](https://github.com/decolua/9router)** av **[decolua](https://github.com/decolua)** — originalprojektet som inspirerade denna gaffel. OmniRoute bygger på den otroliga grunden med ytterligare funktioner, multimodala API:er och en fullständig TypeScript-omskrivning.
1572
-
1573
- Särskilt tack till **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — den ursprungliga Go-implementeringen som inspirerade denna JavaScript-port.
1574
-
1575
- ---
1576
-
1577
- ## 📄 Licens
1578
-
1579
- MIT-licens - se [LICENSE](LICENSE) för detaljer.
1580
-
1581
- ---
1582
-
1583
- <div align="center">
1584
- <sub>Byggd med ❤️ för utvecklare som kodar 24/7</sub>
1585
- <br/>
1586
- <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1587
- </div>