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.fi.md DELETED
@@ -1,1586 +0,0 @@
1
- <div align="center">
2
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
3
-
4
- # 🚀 OmniRoute — ilmainen tekoälyyhdyskäytävä
5
-
6
- ### Älä koskaan lopeta koodaamista. Älykäs reititys **ILMAisiin ja edullisiin tekoälymalleihin** automaattisella varalla.
7
-
8
- _Universaali API-välityspalvelin – yksi päätepiste, yli 36 palveluntarjoajaa, nolla seisokkia._
9
-
10
- **Pikaviestien loppuun saattaminen • upotukset • kuvien luominen • ääni • uudelleensijoitus • 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
- ### 🤖 Ilmainen AI Provider suosikkikoodaajillesi
27
-
28
- _Yhdistä mikä tahansa tekoälyllä toimiva IDE- tai CLI-työkalu OmniRouten kautta – ilmainen API-yhdyskäytävä rajoittamattomaan koodaukseen._
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>📡 Kaikki agentit muodostavat yhteyden kautta <code>http://localhost:20128/v1</code> tai <code>http://cloud.omniroute_EN_2NI4/v_1_TO_OM. konfiguraatio, rajattomat mallit ja kiintiö</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
- ## 🤔 Miksi OmniRoute?
155
-
156
- **Lopeta rahan tuhlaaminen ja rajojen ylittäminen:**
157
-
158
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Tilauskiintiö vanhenee käyttämättä joka kuukausi
159
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Korjausrajoitukset estävät sinua kesken koodaamisen
160
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> kalliita sovellusliittymiä (20-50 $/kk per tarjoaja)
161
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Manuaalinen vaihtaminen palveluntarjoajien välillä
162
-
163
- **OmniRoute ratkaisee tämän:**
164
-
165
- - ✅ **Maksimoi tilaukset** - Seuraa kiintiötä, käytä jokainen bitti ennen nollausta
166
- - ✅ **Automaattinen palautus** - Tilaus → API-avain → Halpa → Ilmainen, nolla seisonta-aikaa
167
- - ✅ **Moni tili** - Pyöreä haku tilien välillä per palveluntarjoaja
168
- - ✅ **Universaali** - Toimii Claude Coden, Codexin, Gemini CLI:n, Cursorin, Clinen, OpenClawin ja minkä tahansa CLI-työkalun kanssa
169
-
170
- ---
171
-
172
- ## 📧 Tuki
173
-
174
- > 💬 **Liity yhteisöömme!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Hanki apua, jaa vinkkejä ja pysy ajan tasalla.
175
-
176
- - **Verkkosivusto**: [omniroute.online](https://omniroute.online)
177
- - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
178
- - **Ongelmia**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
179
- - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
180
- - **Alkuperäinen projekti**: [9router by decolua](https://github.com/decolua/9router)
181
-
182
- ---
183
-
184
- ## 🔄 Näin se toimii
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
- ## 🎯 Mitä OmniRoute ratkaisee – 30 todellista kipukohtaa ja käyttötapausta
214
-
215
- > **Jokainen tekoälytyökaluja käyttävä kehittäjä kohtaa nämä ongelmat päivittäin.** OmniRoute luotiin ratkaisemaan ne kaikki – kustannusten ylityksistä alueellisiin lohkoihin, rikkinäisistä OAuth-virroista protokollatoimintoihin ja yrityksen havainnointikykyyn.
216
-
217
- <details>
218
- <summary><b>💸 1. "Maksan kalliista tilauksesta, mutta silti rajoitukset häiritsevät minua"</b></summary>
219
-
220
- Kehittäjät maksavat 20–200 dollaria kuukaudessa Claude Prosta, Codex Prosta tai GitHub Copilotista. Maksamallakin kiintiöllä on katto – 5 tuntia käyttöä, viikkorajat tai minuuttirajoitukset. Koodausistunnon puolivälissä palveluntarjoaja lakkaa vastaamasta ja kehittäjä menettää virtauksen ja tuottavuuden.
221
-
222
- **Kuinka OmniRoute ratkaisee sen:**
223
-
224
- - **Smart 4-Tier Fallback** — Jos tilauskiintiö loppuu, ohjataan automaattisesti kohtaan API-avain → Halpa → Ilmainen ilman manuaalista toimenpiteitä
225
- - **Reaaliaikainen kiintiöseuranta** - Näyttää tunnuksen kulutuksen reaaliajassa ja nollaa lähtölaskenta (5 tuntia, päivittäin, viikoittain)
226
- - **Useiden tilien tuki** — Useita tilejä palveluntarjoajaa kohden automaattisella kierrätyksellä — kun yksi loppuu, vaihtuu seuraavaan
227
- - **Muokatut yhdistelmät** — Muokattavat varaketjut, joissa on 6 tasapainotusstrategiaa (täytä ensin, round-robin, P2C, satunnainen, vähiten käytetty, kustannusoptimoitu)
228
- - **Codex Business Quotat** — Yritysten/Tiimien työtilan kiintiöiden valvonta suoraan kojelaudassa
229
-
230
- </details>
231
-
232
- <details>
233
- <summary><b>🔌 2. "Minun täytyy käyttää useita palveluntarjoajia, mutta jokaisella on erilainen API"</b></summary>
234
-
235
- OpenAI käyttää yhtä muotoa, Claude (Anthropic) käyttää toista, Gemini vielä toista. Jos kehittäjä haluaa testata eri palveluntarjoajien malleja tai vaihtoehtoja niiden välillä, hänen on määritettävä SDK:t uudelleen, muutettava päätepisteitä ja käsiteltävä yhteensopimattomia muotoja. Mukautetuilla palveluntarjoajilla (FriendLI, NIM) on mallista poikkeavat päätepisteet.
236
-
237
- **Kuinka OmniRoute ratkaisee sen:**
238
-
239
- - **Yhdistetty päätepiste** — Yksi `http://localhost:20128/v1` toimii välityspalvelimena kaikille yli 36 palveluntarjoajalle
240
- - **Format Translation** - Automaattinen ja läpinäkyvä: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
241
- - **Response Sanitization** – Poistaa standardista poikkeavat kentät (`x_groq`, `usage_breakdown`, `service_tier`), jotka rikkovat OpenAI SDK v1.83+:n
242
- - **Roolin normalisointi** — Muuntaa `developer` → `system` muille kuin OpenAI-palveluntarjoajille; `system` → `user` GLM/ERNIE:lle
243
- - **Think Tag Extraction** - Purkaa `<think>`-lohkot malleista, kuten DeepSeek R1, standardoituun `reasoning_content`:hen
244
- - **Strukturoitu lähtö Geminille** — `json_schema` → `responseMimeType`/`responseSchema` automaattinen muunnos
245
- - **`stream`:n oletusarvo on `false`** — yhdenmukaistuu OpenAI-spesifikaation kanssa välttäen odottamattoman SSE:n Python/Rust/Go SDK:issa
246
-
247
- </details>
248
-
249
- <details>
250
- <summary><b>🌐 3. "Tekoälypalveluntarjoajani estää alueeni/maani"</b></summary>
251
-
252
- Palveluntarjoajat, kuten OpenAI/Codex, estävät pääsyn tietyiltä maantieteellisiltä alueilta. Käyttäjät saavat virheitä, kuten `unsupported_country_region_territory`, OAuth- ja API-yhteyksien aikana. Tämä on erityisen turhauttavaa kehitysmaiden kehittäjille.
253
-
254
- **Kuinka OmniRoute ratkaisee sen:**
255
-
256
- - **3-tason välityspalvelimen määritys** – Muokattava välityspalvelin kolmella tasolla: yleinen (kaikki liikenne), palveluntarjoajakohtainen (vain yksi palveluntarjoaja) ja yhteys/avain
257
- - **Värikoodatut välityspalvelinmerkit** — Visuaaliset ilmaisimet: 🟢 maailmanlaajuinen välityspalvelin, 🟡 tarjoajan välityspalvelin, 🔵 yhteysvälityspalvelin, joka näyttää aina IP-osoitteen
258
- - **OAuth-tunnusten vaihto välityspalvelimen kautta** — OAuth-kulku kulkee myös välityspalvelimen kautta, mikä ratkaisee `unsupported_country_region_territory`
259
- - **Yhteystestit välityspalvelimen kautta** - Yhteystestit käyttävät määritettyä välityspalvelinta (ei enää suoraa ohitusta)
260
- - **SOCKS5-tuki** — Täysi SOCKS5-välityspalvelintuki lähtevään reititykseen
261
- - **TLS-sormenjälkien huijaus** — Selaimen kaltainen TLS-sormenjälki `wreq-js`:n kautta ohittaakseen bot-tunnistuksen
262
-
263
- </details>
264
-
265
- <details>
266
- <summary><b>🆓 4. "Haluan käyttää tekoälyä koodaukseen, mutta minulla ei ole rahaa"</b></summary>
267
-
268
- Kaikki eivät voi maksaa 20–200 dollaria kuukaudessa tekoälytilauksista. Opiskelijat, kehittäjät nousevista maista, harrastajat ja freelancerit tarvitsevat pääsyn laadukkaisiin malleihin ilman kustannuksia.
269
-
270
- **Kuinka OmniRoute ratkaisee sen:**
271
-
272
- - **Free Tier Providers -sisäänrakennettu** - Natiivituki 100 % ilmaisille palveluntarjoajille: iFlow (8 rajatonta mallia), Qwen (3 rajoittamatonta mallia), Kiro (Claude ilmaiseksi), Gemini CLI (180 000/kk ilmaiseksi)
273
- - **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/<model>` prefix
274
- - **Vain ilmaiset yhdistelmät** — Ketju `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 0 $/kk ilman seisonta-aikaa
275
- - **NVIDIA NIM Free Credits** - 1000 ilmaista saldoa integroituna
276
- - **Kustannusoptimoitu strategia** — Reititysstrategia, joka valitsee automaattisesti halvimman saatavilla olevan palveluntarjoajan
277
-
278
- </details>
279
-
280
- <details>
281
- <summary><b>🔒 5. "Minun täytyy suojata tekoälyyhdyskäytävääni luvattomalta käytöltä"</b></summary>
282
-
283
- Kun paljastat tekoälyyhdyskäytävän verkkoon (LAN, VPS, Docker), kuka tahansa osoitteen tietävä voi kuluttaa kehittäjän tunnukset/kiintiöt. Ilman suojaa API:t ovat alttiita väärinkäytölle, nopealle injektiolle ja väärinkäytöksille.
284
-
285
- **Kuinka OmniRoute ratkaisee sen:**
286
-
287
- - **API-avainten hallinta** — Luominen, kierto ja laajuus palveluntarjoajakohtaisesti erillisellä `/dashboard/api-manager`-sivulla
288
- - **Mallitason käyttöoikeudet** - Rajoita API-avaimet tiettyihin malleihin (`openai/*`, jokerimerkkimallit) Salli kaikki/Rajoita-kytkimellä
289
- - **API Endpoint Protection** — Vaadi avainta `/v1/models`:lle ja estä tietyt palveluntarjoajat luettelosta
290
- - **Auth Guard + CSRF-suojaus** — Kaikki kojelaudan reitit on suojattu `withAuth`-väliohjelmistolla + CSRF-tunnuksilla
291
- - **Rate Limiter** — IP-nopeuden rajoitus konfiguroitavilla ikkunoilla
292
- - **IP-suodatus** — Pääsynhallinnan sallittu-/estolista
293
- - **Prompt Injection Guard** — Desinfiointi haitallisia kehotusmalleja vastaan
294
- - **AES-256-GCM Encryption** — Tunnistetiedot on salattu lepotilassa
295
-
296
- </details>
297
-
298
- <details>
299
- <summary><b>🛑 6. "palveluntarjoajani kaatui ja menetin koodauskulkuni"</b></summary>
300
-
301
- Tekoälypalveluntarjoajat voivat muuttua epävakaiksi, palauttaa 5xx-virheitä tai saavuttaa väliaikaiset nopeusrajoitukset. Jos kehittäjä on riippuvainen yhdestä palveluntarjoajasta, se keskeytyy. Ilman katkaisijoita toistuvat uudelleenyritykset voivat kaataa sovelluksen.
302
-
303
- **Kuinka OmniRoute ratkaisee sen:**
304
-
305
- - **Katkaisija palveluntarjoajakohtaisesti** - Automaattinen avautuminen/sulkeminen konfiguroitavilla kynnyksillä ja jäähdytys (suljettu/auki/puoliauki)
306
- - **Eksponentiaalinen peruutus** — Progressiiviset uudelleenyritysviiveet
307
- - **Anti-Thundering Herd** — Mutex + semaforisuoja samanaikaisia myrskyjä vastaan
308
- - **Yhdistelmävaraketjut** – Jos ensisijainen toimittaja epäonnistuu, putoaa automaattisesti ketjun läpi ilman väliintuloa
309
- - **Combo Circuit Breaker** — Poistaa automaattisesti käytöstä vialliset palveluntarjoajat yhdistelmäketjussa
310
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
311
- - **Health Dashboard** — käytettävyyden valvonta, katkaisijoiden tilat, lukitukset, välimuistitilastot, p50/p95/p99-viive
312
-
313
- </details>
314
-
315
- <details>
316
- <summary><b>🔧 7. "Jokaisen tekoälytyökalun määrittäminen on työlästä ja toistuvaa"</b></summary>
317
-
318
- Kehittäjät käyttävät kursoria, Claude Codea, Codex CLI:tä, OpenClaw:ta, Gemini CLI:tä, Kilo Codea... Jokainen työkalu tarvitsee eri konfiguraation (API-päätepiste, avain, malli). Uudelleenmääritys toimittajaa tai mallia vaihdettaessa on ajanhukkaa.
319
-
320
- **Kuinka OmniRoute ratkaisee sen:**
321
-
322
- - **CLI Tools Dashboard** - Erillinen sivu yhdellä napsautuksella Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
323
- - **GitHub Copilot Config Generator** — Luo `chatLanguageModels.json` VS-koodille joukkomallin valinnalla
324
- - **Ohjattu käyttöönottotoiminto** — Ohjattu 4-vaiheinen asennus ensikertalaisille
325
- - **Yksi päätepiste, kaikki mallit** — Määritä `http://localhost:20128/v1` kerran, käytä 36+ palveluntarjoajaa
326
-
327
- </details>
328
-
329
- <details>
330
- <summary><b>🔑 8. "Useiden palveluntarjoajien OAuth-tunnusten hallinta on helvettiä"</b></summary>
331
-
332
- Claude Code, Codex, Gemini CLI, Copilot – kaikki käyttävät OAuth 2.0:aa vanhentuvilla tunnuksilla. Kehittäjien on todennettava jatkuvasti uudelleen, käsiteltävä `client_secret is missing`-, `redirect_uri_mismatch`- ja etäpalvelimien vikoja. OAuth LAN/VPS:ssä on erityisen ongelmallinen.
333
-
334
- **Kuinka OmniRoute ratkaisee sen:**
335
-
336
- - **Automaattinen tunnuksen päivitys** - OAuth-tunnukset päivittyvät taustalla ennen vanhenemista
337
- - **Sisäänrakennettu OAuth 2.0 (PKCE)** - Automaattinen kulku Claude Codelle, Codexille, Gemini CLI:lle, Copilotille, Kirolle, Qwenille, iFlowille
338
- - **Multi-Account OAuth** - Useita tilejä palveluntarjoajaa kohden JWT/ID-tunnuksen purkamisen kautta
339
- - **OAuth LAN/Remote Fix** — Yksityinen IP-tunnistus `redirect_uri`:lle + manuaalinen URL-tila etäpalvelimille
340
- - **OAuth Nginxin takana** - Käyttää `window.location.origin`-protokollaa käänteisen välityspalvelimen yhteensopivuuteen
341
- - **OAuth-etäopas** — Vaiheittainen opas Google Cloud -kirjautumistiedoille VPS/Dockerissa
342
-
343
- </details>
344
-
345
- <details>
346
- <summary><b>📊 9. "En tiedä kuinka paljon kulutan tai minne"</b></summary>
347
-
348
- Kehittäjät käyttävät useita maksullisia palveluntarjoajia, mutta heillä ei ole yhtenäistä näkemystä kuluttamisesta. Jokaisella palveluntarjoajalla on oma laskutuksen hallintapaneeli, mutta yhdistettyä näkymää ei ole. Odottamattomat kustannukset voivat kasaantua.
349
-
350
- **Kuinka OmniRoute ratkaisee sen:**
351
-
352
- - **Cost Analytics Dashboard** – Token-kohtainen kustannusseuranta ja budjetin hallinta palveluntarjoajakohtaisesti
353
- - **Tasokohtaiset budjettirajat** – Tasokohtainen kulutuskatto, joka laukaisee automaattisen varauksen
354
- - **Malleittainen hinnoittelu** — Muokattavat hinnat mallikohtaisesti
355
- - **Käyttötilastot API-avainta kohti** — Pyyntömäärä ja viimeksi käytetty aikaleima avainta kohti
356
- - **Analytics Dashboard** - Tilastokortit, mallin käyttökaavio, toimittajataulukko onnistumisprosenteilla ja viiveellä
357
-
358
- </details>
359
-
360
- <details>
361
- <summary><b>🐛 10. "En pysty diagnosoimaan tekoälypuhelujen virheitä ja ongelmia"</b></summary>
362
-
363
- Kun puhelu epäonnistuu, kehittäjä ei tiedä, oliko kyseessä nopeusrajoitus, vanhentunut tunnus, väärä muoto vai palveluntarjoajan virhe. Sirpaloituneet lokit eri terminaaleissa. Ilman havaittavuutta virheenkorjaus on yrityksen ja erehdysten menetelmää.
364
-
365
- **Kuinka OmniRoute ratkaisee sen:**
366
-
367
- - **Yhdistettyjen lokien hallintapaneeli** - 4 välilehteä: pyyntölokit, välityspalvelimen lokit, tarkastuslokit, konsoli
368
- - **Console Log Viewer** - Reaaliaikainen päätetyylinen katseluohjelma värikoodatuilla tasoilla, automaattinen vieritys, haku, suodatin
369
- - **SQLite-välityspalvelimen lokit** — Pysyvät lokit, jotka kestävät palvelimen uudelleenkäynnistyksen
370
- - **Kääntäjän leikkikenttä** — 4 virheenkorjaustilaa: Playground (muodon käännös), Chat Tester (meno-paluu), testipenkki (erä), Live Monitor (reaaliaikainen)
371
- - **Pyyntötelemetria** — p50/p95/p99-latenssi + X-Request-Id-seuranta
372
- - **Tiedostopohjainen kirjaaminen rotaatiolla** – Konsolin sieppaaja tallentaa kaiken JSON-lokiin kokoperusteisella kierrolla
373
-
374
- </details>
375
-
376
- <details>
377
- <summary><b>🏗️ 11. "Yhdyskäytävän käyttöönotto ja ylläpito on monimutkaista"</b></summary>
378
-
379
- AI-välityspalvelimen asentaminen, määrittäminen ja ylläpito eri ympäristöissä (paikallinen, VPS, Docker, pilvi) on työvoimavaltaista. Ongelmat, kuten kovakoodatut polut, `EACCES` hakemistoissa, porttiristiriidat ja monikäyttöjärjestelmät lisäävät kitkaa.
380
-
381
- **Kuinka OmniRoute ratkaisee sen:**
382
-
383
- - **npm yleinen asennus** — `npm install -g omniroute && omniroute` — valmis
384
- - **Docker Multi-Platform** - AMD64 + ARM64 natiivi (Apple Silicon, AWS Graviton, Raspberry Pi)
385
- - **Docker Compose -profiilit** — `base` (ei CLI-työkaluja) ja `cli` (Claude Code, Codex, OpenClaw)
386
- - **Electron Desktop App** - Natiivisovellus Windowsille/macOS:lle/Linuxille, jossa ilmaisinalue, automaattinen käynnistys, offline-tila
387
- - **Split-Port Mode** — API ja Dashboard erillisissä porteissa edistyneille skenaarioille (käänteinen välityspalvelin, konttiverkko)
388
- - **Cloud Sync** - Määritä synkronointi laitteiden välillä Cloudflare Workersin kautta
389
- - **DB-varmuuskopiot** — Kaikkien asetusten automaattinen varmuuskopiointi, palautus, vienti ja tuonti
390
-
391
- </details>
392
-
393
- <details>
394
- <summary><b>🌍 12. "Käyttöliittymä on vain englanninkielinen ja tiimini ei puhu englantia"</b></summary>
395
-
396
- Ryhmät muissa kuin englanninkielisissä maissa, erityisesti Latinalaisessa Amerikassa, Aasiassa ja Euroopassa, kamppailevat vain englanninkielisten käyttöliittymien kanssa. Kielimuurit vähentävät käyttöönottoa ja lisäävät konfigurointivirheitä.
397
-
398
- **Kuinka OmniRoute ratkaisee sen:**
399
-
400
- - **Dashboard i18n — 30 kieltä** — Kaikki yli 500 näppäintä käännetty mukaan lukien arabia, bulgaria, tanska, saksa, espanja, suomi, ranska, heprea, hindi, unkari, indonesia, italia, japani, korea, malaiji, hollanti, norja, puola, portugali (PT/BR), romania, thai, venäjä, ukraina, slovakki, ruotsi, englanti
401
- - **RTL-tuki** — Tuki oikealta vasemmalle arabian ja heprean kielelle
402
- - **Multi-Language READMEs** - 30 täydellistä dokumentaation käännöstä
403
- - **Kielen valitsin** — Maapallokuvake otsikossa reaaliaikaista vaihtoa varten
404
-
405
- </details>
406
-
407
- <details>
408
- <summary><b>🔄 13. "Tarvitsen muutakin kuin chatin – tarvitsen upotuksia, kuvia, ääntä"</b></summary>
409
-
410
- Tekoäly ei ole vain chatin loppuun saattamista. Kehittäjien on luotava kuvia, litteroitava ääni, luotava upotuksia RAG:lle, järjestettävä asiakirjat uudelleen ja valvottava sisältöä. Jokaisella API:lla on eri päätepiste ja muoto.
411
-
412
- **Kuinka OmniRoute ratkaisee sen:**
413
-
414
- - **Upotukset** — `/v1/embeddings`, 6 toimittajaa ja 9+ mallia
415
- - **Image Generation** — `/v1/images/generations` 10 palveluntarjoajan ja 20+ mallin kanssa (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
416
- - **Tekstistä videoksi** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) ja SD WebUI
417
- - **Tekstistä musiikiksi** — `/v1/music/generations` — ComfyUI (Stable Audio Open, MusicGen)
418
- - **Äänitranskriptio** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
419
- - **Tekstistä puheeksi** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT ja olemassa olevat palveluntarjoajat
420
- - **Moderaatiot** — `/v1/moderations` — Sisällön turvallisuustarkastukset
421
- - **Uudelleensijoitus** — `/v1/rerank` — Asiakirjan relevanssin uudelleensijoitus
422
- - **Responses API** — Täysi `/v1/responses`-tuki Codexille
423
-
424
- </details>
425
-
426
- <details>
427
- <summary><b>🧪 14. "Minulla ei ole mahdollisuutta testata ja vertailla laatua eri mallien välillä"</b></summary>
428
-
429
- Kehittäjät haluavat tietää, mikä malli sopii parhaiten heidän käyttötapaukseensa – koodi, käännös, päättely – mutta manuaalinen vertailu on hidasta. Integroituja arviointityökaluja ei ole olemassa.
430
-
431
- **Kuinka OmniRoute ratkaisee sen:**
432
-
433
- - **LLM-arvioinnit** — Golden set -testaus 10 esiladatulla kotelolla, jotka kattavat tervehdyksen, matematiikan, maantieteen, koodin luomisen, JSON-yhteensopivuuden, käännöksen, merkinnän, turvallisuuden kieltämisen
434
- - **4 sovitusstrategiaa** — `exact`, `contains`, `regex`, `custom` (JS-toiminto)
435
- - **Translator Playground Test Bench** - Erätestaus useilla tuloilla ja odotetulla lähdöllä, tarjoajien välinen vertailu
436
- - **Chat Tester** - Täysi edestakainen matka visuaalisen vasteen renderöinnillä
437
- - **Live Monitor** — Reaaliaikainen tietovirta kaikista välityspalvelimen kautta kulkevista pyynnöistä
438
-
439
- </details>
440
-
441
- <details>
442
- <summary><b>📈 15. "Minun täytyy skaalata suorituskykyä menettämättä"</b></summary>
443
-
444
- Pyynnön määrän kasvaessa samat kysymykset aiheuttavat päällekkäisiä kustannuksia välimuistiin tallentamatta. Ilman idempotenssia kaksoiskappaleet pyytävät jätteenkäsittelyä. Palveluntarjoajakohtaisia ​​hintarajoja on noudatettava.
445
-
446
- **Kuinka OmniRoute ratkaisee sen:**
447
-
448
- - **Semanttinen välimuisti** – Kaksitasoinen välimuisti (allekirjoitus + semanttinen) vähentää kustannuksia ja viivettä
449
- - **Request Idempotency** — 5 sekunnin deduplikaatioikkuna identtisille pyynnöille
450
- - **nopeusrajoituksen tunnistus** – palveluntarjoajakohtainen RPM, pienin väli ja suurin samanaikainen seuranta
451
- - **Muokattavat nopeusrajoitukset** - Määritettävissä olevat oletusasetukset kohdassa Asetukset → Resilience with persistence
452
- - **API Key Validation Cache** – 3-tasoinen välimuisti tuotannon suorituskykyä varten
453
- - **Health Dashboard telemetrialla** - p50/p95/p99 latenssi, välimuistitilastot, käyttöaika
454
-
455
- </details>
456
-
457
- <details>
458
- <summary><b>🤖 16. "Haluan hallita mallin käyttäytymistä maailmanlaajuisesti"</b></summary>
459
-
460
- Kehittäjät, jotka haluavat kaikki vastaukset tietyllä kielellä, tietyllä sävyllä tai haluavat rajoittaa perusteluita. Tämän määrittäminen jokaiseen työkaluun/pyyntöön on epäkäytännöllistä.
461
-
462
- **Kuinka OmniRoute ratkaisee sen:**
463
-
464
- - **Järjestelmäkehotteen lisäys** — Yleinen kehote koskee kaikkia pyyntöjä
465
- - **Thinking Budget Validation** – perustelutunnisteen allokoinnin ohjaus pyyntöä kohti (läpivienti, automaattinen, mukautettu, mukautuva)
466
- - **6 reititysstrategiaa** — Globaalit strategiat, jotka määrittävät pyyntöjen jakautumisen
467
- - **Wildcard Router** — `provider/*`-mallit reitittävät dynaamisesti mille tahansa palveluntarjoajalle
468
- - **Yhdistelmä käyttöön/pois käytöstä** - Vaihda yhdistelmät suoraan kojelaudalta
469
- - **Provider Toggle** — Ota käyttöön tai poista käytöstä kaikki palveluntarjoajan yhteydet yhdellä napsautuksella
470
- - **Estetyt palveluntarjoajat** - Sulje tietyt palveluntarjoajat pois `/v1/models`-luettelosta
471
-
472
- </details>
473
-
474
- <details>
475
- <summary><b>🧰 17. "Tarvitsen MCP-työkaluja ensiluokkaisina tuoteominaisuuksina"</b></summary>
476
-
477
- Monet tekoälyyhdyskäytävät paljastavat MCP:n vain piilotettuna toteutustietona. Tiimit tarvitsevat näkyvän, hallittavan toimintakerroksen.
478
-
479
- **Kuinka OmniRoute ratkaisee sen:**
480
-
481
- - MCP näkyy kojelaudan navigointi- ja päätepisteprotokolla-välilehdessä
482
- - Erillinen MCP-hallintasivu, jossa on prosessit, työkalut, laajuudet ja tarkastus
483
- - Sisäänrakennettu pikakäynnistys `omniroute --mcp`:lle ja asiakkaan käyttöönottoon
484
-
485
- </details>
486
-
487
- <details>
488
- <summary><b>🧠 18. "Tarvitsen A2A-orkesterin synkronointia ja suoratoiston tehtäväpolkuja"</b></summary>
489
-
490
- Agenttityönkulut tarvitsevat sekä suoria vastauksia että pitkäkestoista suoratoistoa elinkaariohjauksella.
491
-
492
- **Kuinka OmniRoute ratkaisee sen:**
493
-
494
- - A2A JSON-RPC -päätepiste (`POST /a2a`) `message/send`:n ja `message/stream`:n kanssa
495
- - SSE-suoratoisto päätetilan etenemisellä
496
- - Tehtävän elinkaaren sovellusliittymät `tasks/get`:lle ja `tasks/cancel`:lle
497
-
498
- </details>
499
-
500
- <details>
501
- <summary><b>🛰️ 19. "Tarvitsen todellisen MCP-prosessin kunnon, en arvatun tilan"</b></summary>
502
-
503
- Operatiivisten tiimien on tiedettävä, onko MCP todella elossa, ei vain sitä, onko API tavoitettavissa.
504
-
505
- **Kuinka OmniRoute ratkaisee sen:**
506
-
507
- - Ajonaikainen syketiedosto, jossa on PID, aikaleimat, kuljetus, työkalujen määrä ja laajuustila
508
- - MCP-tilan API, joka yhdistää sykkeen + viimeaikaisen toiminnan
509
- - Käyttöliittymän tilakortit prosessin / käytettävyyden / sydämenlyöntien tuoreudelle
510
-
511
- </details>
512
-
513
- <details>
514
- <summary><b>📋 20. "Tarvitsen tarkastettavan MCP-työkalun suorituksen"</b></summary>
515
-
516
- Kun työkalut muuttavat määrityksiä tai käynnistävät operaatioita, tiimit tarvitsevat rikosteknistä jäljitettävyyttä.
517
-
518
- **Kuinka OmniRoute ratkaisee sen:**
519
-
520
- - SQLite-tuettu tarkastusloki MCP-työkalukutsuille
521
- - Suodattimet työkalun, onnistumisen/epäonnistumisen, API-avaimen ja sivutuksen mukaan
522
- - Kojelaudan tarkastustaulukko + tilastopäätepisteet automatisointia varten
523
-
524
- </details>
525
-
526
- <details>
527
- <summary><b>🔐 21. "Tarvitsen laajennettuja MCP-oikeuksia integraatiota kohti"</b></summary>
528
-
529
- Eri asiakkailla tulisi olla vähiten käyttöoikeus työkaluluokkiin.
530
-
531
- **Kuinka OmniRoute ratkaisee sen:**
532
-
533
- - 9 rakeista MCP-skooppia ohjattua työkalujen käyttöä varten
534
- - Laajuuden valvonta ja näkyvyys MCP-hallintaliittymässä
535
- - Turvallinen oletusasento käyttötyökaluille
536
-
537
- </details>
538
-
539
- <details>
540
- <summary><b>⚙️ 22. "Tarvitsen toiminnan ohjaimia ilman uudelleenjärjestelyä"</b></summary>
541
-
542
- Tiimit tarvitsevat nopeita ajonaikaisia muutoksia tapausten tai kustannustapahtumien aikana.
543
-
544
- **Kuinka OmniRoute ratkaisee sen:**
545
-
546
- - Vaihda yhdistelmäaktivointia suoraan MCP-kojelaudalta
547
- - Käytä joustavuusprofiileja ennalta määritetyistä käytäntöpaketeista
548
- - Nollaa katkaisijan tila samasta käyttöpaneelista
549
-
550
- </details>
551
-
552
- <details>
553
- <summary><b>🔄 23. "Tarvitsen live-A2A-tehtävän elinkaaren näkyvyyden ja peruutuksen"</b></summary>
554
-
555
- Ilman elinkaaren näkyvyyttä tehtäväkohtauksista tulee vaikeasti luokiteltuja.
556
-
557
- **Kuinka OmniRoute ratkaisee sen:**
558
-
559
- - Tehtäväluettelo / suodatus tilan / taitojen mukaan ja sivutus
560
- - Tehtävän metatietojen, tapahtumien ja artefaktien yksityiskohdat
561
- - Tehtävän peruutuksen päätepiste ja käyttöliittymätoiminto vahvistuksen kanssa
562
-
563
- </details>
564
-
565
- <details>
566
- <summary><b>🌊 24. "Tarvitsen aktiivisia suoratoistotietoja A2A-kuormalle"</b></summary>
567
-
568
- Streaming-työnkulut edellyttävät toiminnallista tietoa samanaikaisuudesta ja reaaliaikaisista yhteyksistä.
569
-
570
- **Kuinka OmniRoute ratkaisee sen:**
571
-
572
- - Aktiiviset virtalaskurit integroitu A2A-tilaan
573
- - Viimeisen tehtävän aikaleima ja tilakohtaiset määrät
574
- - A2A kojelautakortit reaaliaikaiseen toimintojen seurantaan
575
-
576
- </details>
577
-
578
- <details>
579
- <summary><b>🪪 25. "Tarvitsen asiakkaille vakioagentin haun"</b></summary>
580
-
581
- Ulkoiset asiakkaat ja orkesterit tarvitsevat koneellisesti luettavaa metadataa käyttöönottoa varten.
582
-
583
- **Kuinka OmniRoute ratkaisee sen:**
584
-
585
- - Agenttikortti esillä osoitteessa `/.well-known/agent.json`
586
- - Johdon käyttöliittymässä näkyvät valmiudet ja taidot
587
- - A2A status API sisältää etsintämetatiedot automatisointia varten
588
-
589
- </details>
590
-
591
- <details>
592
- <summary><b>🧭 26. "Tarvitsen protokollan löydettävyyden tuotteessa UX"</b></summary>
593
-
594
- Jos käyttäjät eivät löydä protokollapintoja, käyttöönoton ja tuen laatu heikkenee.
595
-
596
- **Kuinka OmniRoute ratkaisee sen:**
597
-
598
- - Sivupalkkimerkinnät MCP:lle ja A2A:lle
599
- - Päätepistesivu Protokollat-välilehti, jossa on pika-aloitus ja tila
600
- - Linkit yleiskatsauksesta erityisiin hallintapaneeliin
601
-
602
- </details>
603
-
604
- <details>
605
- <summary><b>🧪 27. "Tarvitsen päästä päähän -protokollan validoinnin oikeiden asiakkaiden kanssa"</b></summary>
606
-
607
- Valetestit eivät riitä vahvistamaan protokollan yhteensopivuutta ennen julkaisua.
608
-
609
- **Kuinka OmniRoute ratkaisee sen:**
610
-
611
- - E2E-paketti, joka käynnistää sovelluksen ja käyttää todellista MCP SDK -asiakassiirtoa
612
- - A2A-asiakas testaa virtojen löytämistä, lähettämistä, suoratoistoa, vastaanottamista ja peruuttamista
613
- - Tarkista väitteet MCP-tarkastuksen ja A2A-tehtävien sovellusliittymien kanssa
614
-
615
- </details>
616
-
617
- <details>
618
- <summary><b>📡 28. "Tarvitsen yhtenäisen havainnoinnin kaikissa liitännöissä"</b></summary>
619
-
620
- Havainnon jakaminen protokollan mukaan luo kuolleita kulmia ja pidemmän MTTR:n.
621
-
622
- **Kuinka OmniRoute ratkaisee sen:**
623
-
624
- - Yhdistetyt kojelaudat/lokit/analytiikka yhdessä tuotteessa
625
- - Terveys + auditointi + pyyntö telemetria OpenAI-, MCP- ja A2A-tasoilla
626
- - Toiminnalliset sovellusliittymät tilaa ja automaatiota varten
627
-
628
- </details>
629
-
630
- <details>
631
- <summary><b>💼 29. "Tarvitsen yhden suoritusajan välityspalvelimelle + työkaluille + agentin orkestraatiolle"</b></summary>
632
-
633
- Useiden erillisten palvelujen suorittaminen lisää käyttökustannuksia ja vikatiloja.
634
-
635
- **Kuinka OmniRoute ratkaisee sen:**
636
-
637
- - OpenAI-yhteensopiva välityspalvelin, MCP-palvelin ja A2A-palvelin yhdessä pinossa
638
- - Jaettu todennus, joustavuus, tietovarasto ja havaittavuus
639
- - Yhdenmukainen toimintamalli kaikilla vuorovaikutuspinnoilla
640
-
641
- </details>
642
-
643
- <details>
644
- <summary><b>🚀 30. "Minun on lähetettävä agenttityönkulkuja ilman liimakoodin leviämistä"</b></summary>
645
-
646
- Tiimit menettävät nopeutta yhdistäessään useita ad-hoc-palveluita ja skriptejä.
647
-
648
- **Kuinka OmniRoute ratkaisee sen:**
649
-
650
- - Yhtenäinen päätepistestrategia asiakkaille ja edustajille
651
- - Sisäänrakennetut protokollien hallinnan käyttöliittymät ja savun vahvistuspolut
652
- - Tuotantovalmis perusta (turvallisuus, puunkorjuu, joustavuus, varmuuskopiointi)
653
-
654
- </details>
655
-
656
- ### Esimerkkiohjekirjat (integroidut käyttötapaukset)
657
-
658
- **Ohjekirja A: maksimoi maksullinen tilaus + halpa varmuuskopio**
659
-
660
- ```txt
661
- Combo: "maximize-claude"
662
- 1. cc/claude-opus-4-6
663
- 2. glm/glm-4.7
664
- 3. if/kimi-k2-thinking
665
-
666
- Monthly cost: $20 + small backup spend
667
- Outcome: higher quality, near-zero interruption
668
- ```
669
-
670
- **Ohjekirja B: Nollahintainen koodauspino**
671
-
672
- ```txt
673
- Combo: "free-forever"
674
- 1. gc/gemini-3-flash
675
- 2. if/kimi-k2-thinking
676
- 3. qw/qwen3-coder-plus
677
-
678
- Monthly cost: $0
679
- Outcome: stable free coding workflow
680
- ```
681
-
682
- **Playbook C: 24/7 aina päällä oleva varaketju**
683
-
684
- ```txt
685
- Combo: "always-on"
686
- 1. cc/claude-opus-4-6
687
- 2. cx/gpt-5.2-codex
688
- 3. glm/glm-4.7
689
- 4. minimax/MiniMax-M2.1
690
- 5. if/kimi-k2-thinking
691
-
692
- Outcome: deep fallback depth for deadline-critical workloads
693
- ```
694
-
695
- **Pelikirja D: Agentti toimii MCP:llä + A2A**
696
-
697
- ```txt
698
- 1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
699
- 2) Run A2A tasks via `message/send` and `message/stream`
700
- 3) Observe via /dashboard/mcp and /dashboard/a2a
701
- 4) Control incidents with resilience profile + task cancellation
702
- ```
703
-
704
- ---
705
-
706
- ## ⚡ Pika-aloitus
707
-
708
- **1. Asenna maailmanlaajuisesti:**
709
-
710
- ```bash
711
- npm install -g omniroute
712
- omniroute
713
- ```
714
-
715
- 🎉 Hallintapaneeli avautuu klo `http://localhost:20128`
716
-
717
- | Komento | Kuvaus |
718
- | ----------------------- | --------------------------------------- |
719
- | `omniroute` | Käynnistä palvelin (oletusportti 20128) |
720
- | `omniroute --port 3000` | Käytä mukautettua porttia |
721
- | `omniroute --no-open` | Älä avaa selainta automaattisesti |
722
- | `omniroute --help` | Näytä ohje |
723
-
724
- **2. Yhdistä ILMAINEN palveluntarjoaja:**
725
-
726
- Kojelauta → Palveluntarjoajat → Yhdistä **Claude Code** tai **Antigravity** → OAuth-kirjautuminen → Valmis!
727
-
728
- **3. Käytä CLI-työkalussasi:**
729
-
730
- ```
731
- Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
732
- Endpoint: http://localhost:20128/v1
733
- API Key: [copy from dashboard]
734
- Model: if/kimi-k2-thinking
735
- ```
736
-
737
- **Siinä se!** Aloita koodaus ILMAISTEN AI-malleilla.
738
-
739
- **Vaihtoehto – suorita lähteestä:**
740
-
741
- ```bash
742
- cp .env.example .env
743
- npm install
744
- PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
745
- ```
746
-
747
- ---
748
-
749
- ## 🐳 Docker
750
-
751
- OmniRoute on saatavilla julkisena Docker-kuvana osoitteessa [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
752
-
753
- **Pikaajo:**
754
-
755
- ```bash
756
- docker run -d \
757
- --name omniroute \
758
- --restart unless-stopped \
759
- -p 20128:20128 \
760
- -v omniroute-data:/app/data \
761
- diegosouzapw/omniroute:latest
762
- ```
763
-
764
- **Ympäristötiedostolla:**
765
-
766
- ```bash
767
- # Copy and edit .env first
768
- cp .env.example .env
769
-
770
- docker run -d \
771
- --name omniroute \
772
- --restart unless-stopped \
773
- --env-file .env \
774
- -p 20128:20128 \
775
- -v omniroute-data:/app/data \
776
- diegosouzapw/omniroute:latest
777
- ```
778
-
779
- **Docker Composen käyttäminen:**
780
-
781
- ```bash
782
- # Base profile (no CLI tools)
783
- docker compose --profile base up -d
784
-
785
- # CLI profile (Claude Code, Codex, OpenClaw built-in)
786
- docker compose --profile cli up -d
787
- ```
788
-
789
- | Kuva | Tag | Koko | Kuvaus |
790
- | ------------------------ | -------- | ------- | -------------------- |
791
- | `diegosouzapw/omniroute` | `latest` | ~250 Mt | Uusin vakaa julkaisu |
792
- | `diegosouzapw/omniroute` | `1.0.3` | ~250 Mt | Nykyinen versio |
793
-
794
- ---
795
-
796
- ---
797
-
798
- ## 🖥️
799
-
800
- > 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
801
-
802
- - 🖥️ **Native Window** — Dedicated app window with system tray integration
803
- - 🔄 **Auto-Start** — Launch OmniRoute on system login
804
- - 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
805
- - ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
806
- - 🌐 **Offline Mode** — Works fully offline with bundled server
807
-
808
- ```bash
809
- npm run electron:dev # Development mode
810
- npm run electron:build # Current platform
811
- npm run electron:build:win # Windows (.exe)
812
- npm run electron:build:mac # macOS (.dmg)
813
- npm run electron:build:linux # Linux (.AppImage)
814
- ```
815
-
816
- 📖 Full documentation: [`electron/README.md`](electron/README.md)
817
-
818
- ---
819
-
820
- ## 💰 Hinnoittelu yhdellä silmäyksellä
821
-
822
- | Taso | Palveluntarjoaja | Kustannukset | Kiintiön nollaus | Paras |
823
- | ---------------- | ----------------- | ------------------------------ | ---------------------- | -------------------------- |
824
- | **💳 TILAUS** | Claude Code (Pro) | 20 dollaria/kk | 5h + viikoittain | jo tilattu |
825
- | | Codex (Plus/Pro) | 20-200 $/kk | 5h + viikoittain | OpenAI-käyttäjät |
826
- | | Gemini CLI | **ILMAINEN** | 180 tk/kk + 1 tk/päivä | Kaikki! |
827
- | | GitHub Copilot | 10-19 $/kk | Kuukausittain | GitHub-käyttäjät |
828
- | **🔑 API-AVAIN** | NVIDIA NIM | **ILMAINEN** (1000 krediittiä) | Kertaluonteinen | Ilmainen tasotestaus |
829
- | | DeepSeek | Maksu per käyttö | Ei yhtään | Paras hinta/laatu |
830
- | | Groq | Ilmainen taso + maksettu | Hinta rajoitettu | Erittäin nopea johtopäätös |
831
- | | xAI (Grok) | Maksu per käyttö | Ei yhtään | Grok mallit |
832
- | | Mistral | Ilmainen taso + maksettu | Hinta rajoitettu | Eurooppalainen tekoäly |
833
- | | OpenRouter | Maksu per käyttö | Ei yhtään | 100+ mallia |
834
- | **💰 EDULLISET** | GLM-4.7 | 0,6 $/1 milj. | Päivittäin klo 10 | Budjetin varmuuskopio |
835
- | | MiniMax M2.1 | 0,2 $/1 milj. | 5 tunnin rullaus | Halvin vaihtoehto |
836
- | | Kimi K2 | 9 dollaria/kk asunto | 10 milj. rahakkeita/kk | Ennustettavat kustannukset |
837
- | **🆓 ILMAINEN** | iFlow | 0 dollaria | Rajoittamaton | 8 mallia ilmaiseksi |
838
- | | Qwen | 0 dollaria | Rajoittamaton | 3 mallia ilmaiseksi |
839
- | | Kiro | 0 dollaria | Rajoittamaton | Claude ilmaiseksi |
840
-
841
- **💡 Pro-vinkki:** Aloita Gemini CLI:llä (180 000 ilmaista kuukaudessa) + iFlow (rajoittamaton ilmainen) -yhdistelmä = 0 dollarin hinta!
842
-
843
- ---
844
-
845
- ## 💡 Tärkeimmät ominaisuudet
846
-
847
- ### 🧠 Ydinreititys ja älykkyys
848
-
849
- | Ominaisuus | Mitä se tekee |
850
- | ------------------------------------- | --------------------------------------------------------------------------------------------- |
851
- | 🎯 **Smart 4-Tier Fallback** | Automaattinen reitti: Tilaus → API-avain → Halpa → Ilmainen |
852
- | 📊 **Reaaliaikainen kiintiöseuranta** | Live-tunnusten määrä + nollaa lähtölaskenta palveluntarjoajaa kohti |
853
- | 🔄 **Käännösmuoto** | OpenAI ↔ Claude ↔ Kaksoset ↔ Kursori ↔ Kiro saumaton + vastaus desinfiointi |
854
- | 👥 **Useiden tilien tuki** | Useita tilejä per palveluntarjoaja älykkäällä valinnalla |
855
- | 🔄 **Automaattinen Token Refresh** | OAuth-tunnukset päivittyvät automaattisesti yrittämällä uudelleen |
856
- | 🎨 **Muokatut yhdistelmät** | 6 strategiaa: fill-first, round-robin, p2c, satunnainen, vähiten käytetty, kustannusoptimoitu |
857
- | 🧩 **Räätälöidyt mallit** | Lisää mikä tahansa mallitunnus mille tahansa toimittajalle |
858
- | 🌐 **Wildcard-reititin** | Reititä `provider/*` mallit mille tahansa palveluntarjoajalle dynaamisesti |
859
- | 🧠 **Ajatteleva budjetti** | Läpivienti-, automaatti-, mukautetut ja mukautuvat tilat päättelymalleille |
860
- | 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
861
- | ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
862
- | 💬 **Järjestelmän pikaruiskutus** | Maailmanlaajuinen järjestelmäkehote käytössä kaikissa pyynnöissä |
863
- | 📄 **Responses API** | Täysi OpenAI Responses API (`/v1/responses`) tuki Codexille |
864
-
865
- ### 🎵 Multimodaaliset sovellusliittymät
866
-
867
- | Ominaisuus | Mitä se tekee |
868
- | ------------------------- | --------------------------------------------------------- |
869
- | 🖼️ **Kuvan luominen** | `/v1/images/generations` — 4 toimittajaa, 9+ mallia |
870
- | 📐 **Upotukset** | `/v1/embeddings` — 6 toimittajaa, 9+ mallia |
871
- | 🎤 **Äänitranskriptio** | `/v1/audio/transcriptions` — Kuiskausyhteensopiva |
872
- | 🔊 **Tekstistä puheeksi** | `/v1/audio/speech` — Usean palveluntarjoajan äänisynteesi |
873
- | 🛡️ **Moderaatiot** | `/v1/moderations` — Sisällön turvallisuustarkistukset |
874
- | 🔀 **Uudelleenjärjestys** | `/v1/rerank` — Asiakirjan osuvuuden uudelleensijoitus |
875
-
876
- ### 🛡️ Joustavuus ja turvallisuus
877
-
878
- | Ominaisuus | Mitä se tekee |
879
- | ----------------------------------------- | ------------------------------------------------------------------------------------------------ |
880
- | 🔌 **Katkaisija** | Automaattinen avaaminen/sulkeminen palveluntarjoajakohtaisesti konfiguroitavilla kynnysarvoilla |
881
- | 🛡️ **Ukkosen vastainen lauma** | Mutex + semaforin nopeusrajoitus API-avainten tarjoajille |
882
- | 🧠 **Semanttinen välimuisti** | Kaksitasoinen välimuisti (allekirjoitus + semanttinen) vähentää kustannuksia ja viivettä |
883
- | ⚡ **Pyydä idempotenssia** | 5s dedup-ikkuna päällekkäisille pyynnöille |
884
- | 🔒 **TLS-sormenjälkien huijaus** | Ohita TLS-pohjainen bot-tunnistus wreq-js:n avulla |
885
- | 🌐 **IP-suodatus** | API-käyttöoikeuksien hallinnan sallittu-/estoluettelo |
886
- | 📊 **Muokattavat hintarajat** | Konfiguroitava kierrosluku, minimiväli ja suurin samanaikainen järjestelmätasolla |
887
- | 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
888
- | 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
889
- | 🛡 **API Endpoint Protection** | Todennusportin + tarjoajan esto `/models`-päätepisteelle |
890
- | 🔒 **Välityspalvelimen näkyvyys** | Värikoodatut merkit: 🟢 maailmanlaajuinen, 🟡 tarjoaja, 🔵 yhteyskohtainen IP-näytöllä |
891
- | 🌐 **3-tason välityspalvelimen määritys** | Määritä välityspalvelimet maailmanlaajuisesti, palveluntarjoajakohtaisesti tai yhteyskohtaisesti |
892
-
893
- ### 📊 Havaittavuus ja analytiikka
894
-
895
- | Ominaisuus | Mitä se tekee |
896
- | ------------------------------------- | ----------------------------------------------------------------------------------------------------- |
897
- | 📝 **Pyydä kirjaamista** | Vianetsintätila täydellisillä pyyntö-/vastauslokeilla |
898
- | 💾 **SQLite-välityspalvelimen lokit** | Pysyvät välityspalvelimen lokit selviävät palvelimen uudelleenkäynnistyksistä |
899
- | 📊 **Analytics Dashboard** | Recharts-powered: tilastokortit, mallin käyttökaavio, toimittajataulukko |
900
- | 📈 **Edistyksen seuranta** | Ota SSE:n edistymistapahtumat käyttöön suoratoistoa varten |
901
- | 🧪 **LLM-arvioinnit** | Kultaisen setin testaus 4 ottelustrategialla |
902
- | 🔍 **Pyydä telemetriaa** | p50/p95/p99 latenssiaggregointi + X-Request-Id-jäljitys |
903
- | 📋 **Lokien hallintapaneeli** | Yhdistetty 4-välilehden sivu: pyyntölokit, välityspalvelimen lokit, tarkastuslokit, konsoli |
904
- | 🖥️ **Console Log Viewer** | Reaaliaikainen pääte-tyylinen katseluohjelma tasosuodattimella, haulla, automaattisella vierityksellä |
905
- | 📑 **Tiedostopohjainen kirjaus** | Konsolin sieppaaja kaappaa kaiken lähdön JSON-lokitiedostoon pyörittämällä |
906
- | 🏥 **Terveyden hallintapaneeli** | Järjestelmän käytettävyys, katkaisijoiden tilat, lukitukset, välimuistitilastot |
907
- | 💰 **Kustannusseuranta** | Budjetin hallinta + mallikohtainen hinnoittelu |
908
-
909
- ### ☁️ Käyttöönotto ja synkronointi
910
-
911
- | Ominaisuus | Mitä se tekee |
912
- | ----------------------------------- | -------------------------------------------------------------------------------- |
913
- | 💾 **Cloud Sync** | Synkronoi asetukset laitteiden välillä Cloudflare Workersin kautta |
914
- | 🌐 **Ota käyttöön missä tahansa** | Localhost, VPS, Docker, Cloudflare Workers |
915
- | 🔑 **API-avainten hallinta** | Luo, kierrä ja laajenna API-avaimia tarjoajakohtaisesti |
916
- | 🧙 **Ohjattu käyttöönottotoiminto** | 4-vaiheinen ohjattu asennus ensikertalaisille |
917
- | 🔧 **CLI Tools Dashboard** | Määritä yhdellä napsautuksella Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
918
- | 🔄 **DB-varmuuskopiot** | Automaattinen varmuuskopiointi, palautus, vienti ja tuonti kaikille asetuksille |
919
- | 🌐 **Kansainvälistyminen** | Täysi i18n next-intl:llä — Englanti + portugali (Brasilia) tuki |
920
- | 🌍 **Kielenvalitsin** | Maapallokuvake otsikossa reaaliaikaista kielenvaihtoa varten (🇺🇸/🇧🇷) |
921
- | 📂 **Muokattu tietohakemisto** | `DATA_DIR` env var ohittaa oletusarvoisen `~/.omniroute`-tallennuspolun |
922
-
923
- <details>
924
- <summary><b>📖 Ominaisuuden tiedot</b></summary>
925
-
926
- ### 🎯 Älykäs 4-tasoinen varavaihtoehto
927
-
928
- Luo komboja automaattisella varalla:
929
-
930
- ```
931
- Combo: "my-coding-stack"
932
- 1. cc/claude-opus-4-6 (your subscription)
933
- 2. nvidia/llama-3.3-70b (free NVIDIA API)
934
- 3. glm/glm-4.7 (cheap backup, $0.6/1M)
935
- 4. if/kimi-k2-thinking (free fallback)
936
-
937
- → Auto switches when quota runs out or errors occur
938
- ```
939
-
940
- ### 📊 Reaaliaikainen kiintiöseuranta
941
-
942
- - Token-kulutus palveluntarjoajaa kohti
943
- - Nollaa lähtölaskenta (5 tuntia, päivittäin, viikoittain)
944
- - Kustannusarvio maksetuille tasoille
945
- - Kuukausittaiset kuluraportit
946
-
947
- ### 🔄 Muotoile käännös
948
-
949
- Saumaton käännös muotojen välillä:
950
-
951
- - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI-vastaukset**
952
- - CLI-työkalusi lähettää OpenAI-muodon → OmniRoute kääntää → Palveluntarjoaja vastaanottaa alkuperäisen muodon
953
- - Toimii minkä tahansa työkalun kanssa, joka tukee mukautettuja OpenAI-päätepisteitä
954
- - **Vastauksen desinfiointi** - Poistaa standardista poikkeavat kentät tiukan OpenAI SDK -yhteensopivuuden varmistamiseksi
955
- - **Roolin normalisointi** — `developer` → `system` ei-OpenAI:lle; `system` → `user` GLM/ERNIE-malleille
956
- - **Ajattele tunnisteen purkaminen** — `<think>` lohkot → `reasoning_content` ajattelumalleille
957
- - **Strukturoitu tulos** — `json_schema` → Geminin `responseMimeType`/`responseSchema`
958
-
959
- ### 👥 Usean tilin tuki
960
-
961
- - Lisää useita tilejä palveluntarjoajaa kohti
962
- - Automaattinen round-robin tai prioriteettipohjainen reititys
963
- - Takaisin seuraavalle tilille, kun kiintiö saavutetaan
964
-
965
- ### 🔄 Tokenin automaattinen päivitys
966
-
967
- - OAuth-tunnukset päivittyvät automaattisesti ennen vanhenemista
968
- - Manuaalista uudelleentodennusta ei tarvita
969
- - Saumaton kokemus kaikilta palveluntarjoajilta
970
-
971
- ### 🎨 Mukautetut yhdistelmät
972
-
973
- - Luo rajattomasti malliyhdistelmiä
974
- - 6 strategiaa: täytä ensin, round-robin, kahden valinnan teho, satunnainen, vähiten käytetty, kustannusoptimoitu
975
- - Jaa komboja laitteiden välillä Cloud Sync -sovelluksella
976
-
977
- ### 🏥 Health Dashboard
978
-
979
- - Järjestelmän tila (käyttöaika, versio, muistin käyttö)
980
- - Katkaisijoiden tilat palveluntarjoajan mukaan (suljettu/auki/puoliauki)
981
- - Hintarajoituksen tila ja aktiiviset lukitukset
982
- - Allekirjoitusvälimuistin tilastot
983
- - Latenssi-telemetria (p50/p95/p99) + välimuisti
984
- - Palauta terveydentila yhdellä napsautuksella
985
-
986
- ### 🔧 Kääntäjän leikkikenttä
987
-
988
- OmniRoute sisältää tehokkaan sisäänrakennetun Translator Playgroundin, jossa on **4 tilaa** virheenkorjausta, testausta ja API-käännösten seurantaa varten:
989
-
990
- | Tila | Kuvaus |
991
- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
992
- | **💻 Leikkikenttä** | Suoramuotoinen käännös — liitä mikä tahansa API-pyynnön runko ja katso heti, kuinka OmniRoute kääntää sen toimittajamuotojen välillä (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Sisältää esimerkkimalleja ja muotojen automaattisen tunnistuksen. |
993
- | **💬 Chat Tester** | Lähetä todellisia chat-pyyntöjä OmniRouten kautta ja katso koko meno-paluu: syötteesi, käännetty pyyntö, palveluntarjoajan vastaus ja käännetty vastaus takaisin. Korvaamaton yhdistelmäreitityksen vahvistamisessa. |
994
- | **🧪 Testipenkki** | Erätestaustila — määritä useita testitapauksia eri tuloilla ja odotettavissa olevilla lähdöillä, suorita ne kaikki kerralla ja vertaile tuloksia eri toimittajien ja mallien välillä. |
995
- | **📱 Live Monitor** | Reaaliaikainen pyyntöjen seuranta – seuraa saapuvia pyyntöjä niiden kulkeessa OmniRouten kautta, katso muotokäännökset reaaliajassa ja tunnista ongelmat välittömästi. |
996
-
997
- **Käyttö:** Kojelauta → Kääntäjä (sivupalkki)
998
-
999
- ### 💾 Cloud Sync
1000
-
1001
- - Synkronoi palveluntarjoajat, yhdistelmät ja asetukset eri laitteiden välillä
1002
- - Automaattinen taustasynkronointi
1003
- - Suojattu salattu tallennustila
1004
-
1005
- </details>
1006
-
1007
- ## 🧪 Arvioinnit (Evals)
1008
-
1009
- OmniRoute sisältää sisäänrakennetun arviointikehyksen, jolla testataan LLM-vastauksen laatua kultaiseen joukkoon verrattuna. Käytä sitä kojelaudan **Analytics → Evals** kautta.
1010
-
1011
- ### Sisäänrakennettu kultainen setti
1012
-
1013
- Esiladattu "OmniRoute Golden Set" sisältää 10 testitapausta, jotka kattavat:
1014
-
1015
- - Tervehdys, matematiikka, maantiede, koodin luominen
1016
- - JSON-muodon noudattaminen, käännös, merkintä
1017
- - Turvallisuuskielto (haitallinen sisältö), laskenta, boolen logiikka
1018
-
1019
- ### Arviointistrategiat
1020
-
1021
- | Strategia | Kuvaus | Esimerkki |
1022
- | ---------- | ------------------------------------------------------------------------ | -------------------------------- |
1023
- | `exact` | Tulosten on vastattava tarkasti | `"4"` |
1024
- | `contains` | Tulosteen tulee sisältää alimerkkijono (kirjainkoolla ei ole merkitystä) | `"Paris"` |
1025
- | `regex` | Tulostuksen on vastattava regex-mallia | `"1.*2.*3"` |
1026
- | `custom` | Mukautettu JS-funktio palauttaa true/false | `(output) => output.length > 10` |
1027
-
1028
- ---
1029
-
1030
- ## 📖 Asennusopas
1031
-
1032
- <details>
1033
- <summary><b>💳 Tilauksen tarjoajat</b></summary>
1034
-
1035
- ### Claude Code (Pro/Max)
1036
-
1037
- ```bash
1038
- Dashboard → Providers → Connect Claude Code
1039
- → OAuth login → Auto token refresh
1040
- → 5-hour + weekly quota tracking
1041
-
1042
- Models:
1043
- cc/claude-opus-4-6
1044
- cc/claude-sonnet-4-5-20250929
1045
- cc/claude-haiku-4-5-20251001
1046
- ```
1047
-
1048
- **Provinkki:** Käytä Opusta monimutkaisiin tehtäviin ja Sonnetia nopeutta varten. OmniRoute jäljityskiintiö mallia kohden!
1049
-
1050
- ### OpenAI Codex (Plus/Pro)
1051
-
1052
- ```bash
1053
- Dashboard → Providers → Connect Codex
1054
- → OAuth login (port 1455)
1055
- → 5-hour + weekly reset
1056
-
1057
- Models:
1058
- cx/gpt-5.2-codex
1059
- cx/gpt-5.1-codex-max
1060
- ```
1061
-
1062
- ### Gemini CLI (ILMAINEN 180 000/kk!)
1063
-
1064
- ```bash
1065
- Dashboard → Providers → Connect Gemini CLI
1066
- → Google OAuth
1067
- → 180K completions/month + 1K/day
1068
-
1069
- Models:
1070
- gc/gemini-3-flash-preview
1071
- gc/gemini-2.5-pro
1072
- ```
1073
-
1074
- **Paras hinta-laatusuhde:** Valtava ilmainen taso! Käytä tätä ennen maksettuja tasoja.
1075
-
1076
- ### GitHub Copilot
1077
-
1078
- ```bash
1079
- Dashboard → Providers → Connect GitHub
1080
- → OAuth via GitHub
1081
- → Monthly reset (1st of month)
1082
-
1083
- Models:
1084
- gh/gpt-5
1085
- gh/claude-4.5-sonnet
1086
- gh/gemini-3-pro
1087
- ```
1088
-
1089
- </details>
1090
-
1091
- <details>
1092
- <summary><b>🔑 API-avaintoimittajat</b></summary>
1093
-
1094
- ### NVIDIA NIM (ILMAINEN 1000 krediittiä!)
1095
-
1096
- 1. Rekisteröidy: [build.nvidia.com](https://build.nvidia.com)
1097
- 2. Hanki ilmainen API-avain (sisältää 1000 johtopäätöskrediittiä)
1098
- 3. Kojelauta → Lisää toimittaja → NVIDIA NIM:
1099
- - API-avain: `nvapi-your-key`
1100
-
1101
- **Mallit:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` ja yli 50 muuta
1102
-
1103
- **Provinkki:** OpenAI-yhteensopiva API – toimii saumattomasti OmniRouten muotokäännöksen kanssa!
1104
-
1105
- ### DeepSeek
1106
-
1107
- 1. Rekisteröidy: [platform.deepseek.com](https://platform.deepseek.com)
1108
- 2. Hanki API-avain
1109
- 3. Dashboard → Add Provider → DeepSeek
1110
-
1111
- **Mallit:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
1112
-
1113
- ### Groq (ilmainen taso saatavilla!)
1114
-
1115
- 1. Rekisteröidy: [console.groq.com](https://console.groq.com)
1116
- 2. Hanki API-avain (ilmainen taso mukana)
1117
- 3. Dashboard → Add Provider → Groq
1118
-
1119
- **Mallit:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
1120
-
1121
- **Provinkki:** Erittäin nopea päättely – paras reaaliaikaiseen koodaukseen!
1122
-
1123
- ### OpenRouter (100+ mallia)
1124
-
1125
- 1. Rekisteröidy: [openrouter.ai](https://openrouter.ai)
1126
- 2. Hanki API-avain
1127
- 3. Dashboard → Add Provider → OpenRouter
1128
-
1129
- **Mallit:** Käytä yli 100 mallia kaikilta tärkeimmiltä palveluntarjoajilta yhdellä API-avaimella.
1130
-
1131
- </details>
1132
-
1133
- <details>
1134
- <summary><b>💰 Halvat palveluntarjoajat (Varmuuskopio)</b></summary>
1135
-
1136
- ### GLM-4.7 (Päivittäinen nollaus, 0,6 $/1 milj.)
1137
-
1138
- 1. Rekisteröidy: [Zhipu AI](https://open.bigmodel.cn/)
1139
- 2. Hanki API-avain Coding Planista
1140
- 3. Hallintapaneeli → Lisää API-avain:
1141
- - Palveluntarjoaja: `glm`
1142
- - API-avain: `your-key`
1143
-
1144
- **Käytä:** `glm/glm-4.7`
1145
-
1146
- **Provinkki:** Koodaussuunnitelma tarjoaa 3-kertaisen kiintiön 1/7 hinnalla! Nollaa päivittäin klo 10.00.
1147
-
1148
- ### MiniMax M2.1 (5 h nollaus, 0,20 $/1 milj.)
1149
-
1150
- 1. Rekisteröidy: [MiniMax](https://www.minimax.io/)
1151
- 2. Hanki API-avain
1152
- 3. Kojelauta → Lisää API-avain
1153
-
1154
- **Käytä:** `minimax/MiniMax-M2.1`
1155
-
1156
- **Ammattilaisen vinkki:** Halvin vaihtoehto pitkälle kontekstille (1 milj. merkkiä)!
1157
-
1158
- ### Kimi K2 (9 dollaria/kk asunto)
1159
-
1160
- 1. Tilaa: [Moonshot AI](https://platform.moonshot.ai/)
1161
- 2. Hanki API-avain
1162
- 3. Kojelauta → Lisää API-avain
1163
-
1164
- **Käytä:** `kimi/kimi-latest`
1165
-
1166
- **Ammattilaisen vinkki:** Kiinteä 9 dollaria kuukaudessa 10 miljoonalle tokenille = 0,90 dollaria / 1 miljoona todellista hintaa!
1167
-
1168
- </details>
1169
-
1170
- <details>
1171
- <summary><b>🆓 ILMAISIA palveluntarjoajia (hätävarmuuskopio)</b></summary>
1172
-
1173
- ### iFlow (8 ILMAISTA mallia)
1174
-
1175
- ```bash
1176
- Dashboard → Connect iFlow
1177
- → iFlow OAuth login
1178
- → Unlimited usage
1179
-
1180
- Models:
1181
- if/kimi-k2-thinking
1182
- if/qwen3-coder-plus
1183
- if/glm-4.7
1184
- if/minimax-m2
1185
- if/deepseek-r1
1186
- ```
1187
-
1188
- ### Qwen (3 ILMAISTA mallia)
1189
-
1190
- ```bash
1191
- Dashboard → Connect Qwen
1192
- → Device code authorization
1193
- → Unlimited usage
1194
-
1195
- Models:
1196
- qw/qwen3-coder-plus
1197
- qw/qwen3-coder-flash
1198
- ```
1199
-
1200
- ### Kiro (Claude ILMAINEN)
1201
-
1202
- ```bash
1203
- Dashboard → Connect Kiro
1204
- → AWS Builder ID or Google/GitHub
1205
- → Unlimited usage
1206
-
1207
- Models:
1208
- kr/claude-sonnet-4.5
1209
- kr/claude-haiku-4.5
1210
- ```
1211
-
1212
- </details>
1213
-
1214
- <details>
1215
- <summary><b>🎨 Luo komboja</b></summary>
1216
-
1217
- ### Esimerkki 1: Maksimoi tilaus → Halpa varmuuskopio
1218
-
1219
- ```
1220
- Dashboard → Combos → Create New
1221
-
1222
- Name: premium-coding
1223
- Models:
1224
- 1. cc/claude-opus-4-6 (Subscription primary)
1225
- 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
1226
- 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
1227
-
1228
- Use in CLI: premium-coding
1229
- ```
1230
-
1231
- ### Esimerkki 2: Vain ilmainen (nollahinta)
1232
-
1233
- ```
1234
- Name: free-combo
1235
- Models:
1236
- 1. gc/gemini-3-flash-preview (180K free/month)
1237
- 2. if/kimi-k2-thinking (unlimited)
1238
- 3. qw/qwen3-coder-plus (unlimited)
1239
-
1240
- Cost: $0 forever!
1241
- ```
1242
-
1243
- </details>
1244
-
1245
- <details>
1246
- <summary><b>🔧 CLI-integrointi</b></summary>
1247
-
1248
- ### Kohdistimen IDE
1249
-
1250
- ```
1251
- Settings → Models → Advanced:
1252
- OpenAI API Base URL: http://localhost:20128/v1
1253
- OpenAI API Key: [from OmniRoute dashboard]
1254
- Model: cc/claude-opus-4-6
1255
- ```
1256
-
1257
- ### Claude Code
1258
-
1259
- Käytä kojelaudan **CLI Tools** -sivua määrittääksesi yhdellä napsautuksella tai muokkaa `~/.claude/settings.json` manuaalisesti.
1260
-
1261
- ### Codex CLI
1262
-
1263
- ```bash
1264
- export OPENAI_BASE_URL="http://localhost:20128"
1265
- export OPENAI_API_KEY="your-omniroute-api-key"
1266
-
1267
- codex "your prompt"
1268
- ```
1269
-
1270
- ### OpenClaw
1271
-
1272
- **Vaihtoehto 1 – hallintapaneeli (suositus):**
1273
-
1274
- ```
1275
- Dashboard → CLI Tools → OpenClaw → Select Model → Apply
1276
- ```
1277
-
1278
- **Vaihtoehto 2 – Manuaalinen:** Muokkaa `~/.openclaw/openclaw.json`:
1279
-
1280
- ```json
1281
- {
1282
- "models": {
1283
- "providers": {
1284
- "omniroute": {
1285
- "baseUrl": "http://127.0.0.1:20128/v1",
1286
- "apiKey": "sk_omniroute",
1287
- "api": "openai-completions"
1288
- }
1289
- }
1290
- }
1291
- }
1292
- ```
1293
-
1294
- > **Huomaa:** OpenClaw toimii vain paikallisen OmniRouten kanssa. Käytä `127.0.0.1` `localhost` sijaan IPv6-resoluutioongelmien välttämiseksi.
1295
-
1296
- ### Cline / Continue / RooCode
1297
-
1298
- ```
1299
- Settings → API Configuration:
1300
- Provider: OpenAI Compatible
1301
- Base URL: http://localhost:20128/v1
1302
- API Key: [from OmniRoute dashboard]
1303
- Model: if/kimi-k2-thinking
1304
- ```
1305
-
1306
- </details>
1307
-
1308
- ---
1309
-
1310
- ## 🐛 Vianetsintä
1311
-
1312
- <details>
1313
- <summary><b>Laajenna vianetsintäopas napsauttamalla</b></summary>
1314
-
1315
- **"Kielimalli ei antanut viestejä"**
1316
-
1317
- - Palveluntarjoajan kiintiö käytetty loppuun → Tarkista kojelaudan kiintiön seuranta
1318
- - Ratkaisu: Käytä yhdistelmävaraa tai vaihda halvempaan tasoon
1319
-
1320
- **hintarajoitus**
1321
-
1322
- - Tilauskiintiö loppu → Varaa GLM/MiniMaxiin
1323
- - Lisää yhdistelmä: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1324
-
1325
- **OAuth-tunnus vanhentunut**
1326
-
1327
- - OmniRoute päivittää automaattisesti
1328
- - Jos ongelmat jatkuvat: Kojelauta → Palveluntarjoaja → Yhdistä uudelleen
1329
-
1330
- **Korkeat kustannukset**
1331
-
1332
- - Tarkista käyttötilastot kohdassa Dashboard → Costs
1333
- - Vaihda ensisijaiseksi malliksi GLM/MiniMax
1334
- - Käytä ilmaista tasoa (Gemini CLI, iFlow) ei-kriittisiin tehtäviin
1335
-
1336
- **Kojelauta avautuu väärään porttiin**
1337
-
1338
- - Aseta `PORT=20128` ja `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
1339
-
1340
- **Pilvisynkronointivirheet**
1341
-
1342
- - Vahvista `BASE_URL` pistettä käynnissä olevaan esiintymääsi
1343
- - Vahvista `CLOUD_URL` pistettä odotettuun pilvipäätepisteeseen
1344
- - Pidä `NEXT_PUBLIC_*`-arvot kohdakkain palvelinpuolen arvojen kanssa
1345
-
1346
- **Ensimmäinen kirjautuminen ei toimi**
1347
-
1348
- - Tarkista `INITIAL_PASSWORD` kohteessa `.env`
1349
- - Jos ei ole asetettu, varasalasana on `123456`
1350
-
1351
- **Ei pyyntölokeja**
1352
-
1353
- - Aseta `ENABLE_REQUEST_LOGS=true` kohteeseen `.env`
1354
-
1355
- **Yhteystesti näyttää "Virheellinen" OpenAI-yhteensopiville palveluntarjoajille**
1356
-
1357
- - Monet palveluntarjoajat eivät paljasta `/models`-päätepistettä
1358
- - OmniRoute v1.0.6+ sisältää varatarkistuksen chatin loppuunsaattamisen kautta
1359
- - Varmista, että perus-URL sisältää `/v1`-liitteen
1360
-
1361
- ### 🔐 OAuth
1362
-
1363
- <a name="oauth-em-servidor-remoto"></a>
1364
-
1365
- > **⚠️ TÄRKEÄÄ käyttäjille com OmniRoute em VPS/Docker/servidor Remoto**
1366
-
1367
- ### OAuth
1368
-
1369
- Os provedores **Antigravity** ja **Gemini CLI** usam **Google OAuth 2.0** para autenticação. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pre-cadastradas no Google Cloud Console do aplicativo.
1370
-
1371
- As credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor Remoto (esim. `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
1372
-
1373
- ```
1374
- Error 400: redirect_uri_mismatch
1375
- ```
1376
-
1377
- ### Ratkaisu: Määritä suas próprias credenciais OAuth
1378
-
1379
- Você precisa criar um **OAuth 2.0 Client ID** ei Google Cloud Console com URI do seu servidor.
1380
-
1381
- #### Passo a passo
1382
-
1383
- **1. Acesse tai Google Cloud Console**
1384
-
1385
- Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
1386
-
1387
- **2. Crie um novo OAuth 2.0 -asiakastunnus**
1388
-
1389
- - Klikkaa em **"+ Luo kirjautumistiedot"** → **"OAuth-asiakastunnus"**
1390
- - Tipo de aplicativo: **"Web-sovellus"**
1391
- - Nimi: escolha qualquer nome (esim.: `OmniRoute Remote`)
1392
-
1393
- **3. Adicione valtuutettuina uudelleenohjaus-URI:ina**
1394
-
1395
- No campo **"Authorized redirect URIs"**, lisäys:
1396
-
1397
- ```
1398
- https://seu-servidor.com/callback
1399
- ```
1400
-
1401
- > Korvaa `seu-servidor.com` pelo dominio tai IP do seu servidor (mukaan lukien porta se necessário, esim. `http://45.33.32.156:20128/callback`).
1402
-
1403
- **4. Tallenna kopio valtuutuksena**
1404
-
1405
- Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
1406
-
1407
- **5. Määritä variáveis de ambiente**
1408
-
1409
- Ei seu `.env` (ou nas variáveis de ambiente do Docker):
1410
-
1411
- ```bash
1412
- # Para Antigravity:
1413
- ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1414
- ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1415
-
1416
- # Para Gemini CLI:
1417
- GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1418
- GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1419
- GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1420
- ```
1421
-
1422
- **6. Reinicie o OmniRoute**
1423
-
1424
- ```bash
1425
- # Se usando npm:
1426
- npm run dev
1427
-
1428
- # Se usando Docker:
1429
- docker restart omniroute
1430
- ```
1431
-
1432
- **7. Tente conectar novamente**
1433
-
1434
- Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
1435
-
1436
- Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
1437
-
1438
- ---
1439
-
1440
- #### Workaround temporário (sem configurar credenciais próprias)
1441
-
1442
- Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
1443
-
1444
- 1. OmniRoute lähettää Googlen lupa-osoitteen
1445
- 2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor Remoto)
1446
- 3. **Kopioi URL-osoite täydellinen** da barra de endereço do seu selaimessa (mesmo que a página não carregue)
1447
- 4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
1448
- 5. Klikkaa em **"Yhdistä"**
1449
-
1450
- > Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
1451
-
1452
- </details>
1453
-
1454
- ---
1455
-
1456
- ## 🛠️
1457
-
1458
- - **Suoritusaika**: Node.js 18–22 LTS (⚠️ Node.js 24+ -versiota **ei tueta** — `better-sqlite3` alkuperäiset binaarit eivät ole yhteensopivia)
1459
- - **Kieli**: TypeScript 5.9 — **100 % TypeScript** `src/` ja `open-sse/` (v1.0.6) välillä
1460
- - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
1461
- - **Tietokanta**: LowDB (JSON) + SQLite (verkkotunnuksen tila + välityspalvelimen lokit)
1462
- - **Striimaus**: Palvelimen lähettämät tapahtumat (SSE)
1463
- - **Auth**: OAuth 2.0 (PKCE) + JWT + API-avaimet
1464
- - **Testaus**: Node.js-testausohjelma (368+ yksikkötestiä)
1465
- - **CI/CD**: GitHub Actions (automaattinen npm-julkaisu + Docker Hub julkaisussa)
1466
- - **Verkkosivusto**: [omniroute.online](https://omniroute.online)
1467
- - **Paketti**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1468
- - **Dokkeri**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1469
- - **Kestävyys**: Katkaisija, eksponentiaalinen backoff, ukkosen esto, TLS-huijaus
1470
-
1471
- ---
1472
-
1473
- ## 📖 Dokumentaatio
1474
-
1475
- | Asiakirja | Kuvaus |
1476
- | -------------------------------------------- | ------------------------------------------------------------- |
1477
- | [User Guide](docs/USER_GUIDE.md) | Palveluntarjoajat, yhdistelmät, CLI-integrointi, käyttöönotto |
1478
- | [API Reference](docs/API_REFERENCE.md) | Kaikki päätepisteet esimerkeineen |
1479
- | [Troubleshooting](docs/TROUBLESHOOTING.md) | Yleisiä ongelmia ja ratkaisuja |
1480
- | [Architecture](docs/ARCHITECTURE.md) | Järjestelmäarkkitehtuuri ja sisäosat |
1481
- | [Contributing](CONTRIBUTING.md) | Kehittämisjärjestelyt ja -ohjeet |
1482
- | [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 -spesifikaatio |
1483
- | [Security Policy](SECURITY.md) | Haavoittuvuusraportointi ja tietoturvakäytännöt |
1484
- | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Täydellinen opas: VM + nginx + Cloudflare-asennus |
1485
- | [Features Gallery](docs/FEATURES.md) | Visuaalinen kojelautakierros kuvakaappauksilla |
1486
-
1487
- ### 📸 Kojelaudan esikatselu
1488
-
1489
- <details>
1490
- <summary><b>Klikkaa nähdäksesi hallintapaneelin kuvakaappaukset</b></summary>
1491
-
1492
- | Sivu | Kuvakaappaus |
1493
- | ---------------- | ------------------------------------------------- |
1494
- | **Palvelut** | ![Providers](docs/screenshots/01-providers.png) |
1495
- | **Yhdistelmät** | ![Combos](docs/screenshots/02-combos.png) |
1496
- | **Analytics** | ![Analytics](docs/screenshots/03-analytics.png) |
1497
- | **Terveys** | ![Health](docs/screenshots/04-health.png) |
1498
- | **Kääntäjä** | ![Translator](docs/screenshots/05-translator.png) |
1499
- | **Asetukset** | ![Settings](docs/screenshots/06-settings.png) |
1500
- | **CLI-työkalut** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1501
- | **Käyttölokit** | ![Usage](docs/screenshots/08-usage.png) |
1502
- | **Päätepiste** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1503
-
1504
- </details>
1505
-
1506
- ---
1507
-
1508
- ## 🗺️
1509
-
1510
- OmniRoutella on **210+ suunniteltua ominaisuutta** useissa kehitysvaiheissa. Tässä ovat tärkeimmät alueet:
1511
-
1512
- | Luokka | Suunnitellut ominaisuudet | Kohokohdat |
1513
- | ------------------------------------------- | ------------------------- | ---------------------------------------------------------------------------------------------------------- |
1514
- | 🧠 **Routing & Intelligence** | 25+ | Pienimmän viiveen reititys, tunnistepohjainen reititys, kiintiön esitarkastus, P2C-tilin valinta |
1515
- | 🔒 **Turvallisuus ja vaatimustenmukaisuus** | 20+ | SSRF-karkaisu, valtuustietojen peittäminen, päätepistekohtainen nopeusraja, hallintaavaimen laajuus |
1516
- | 📊 **Havaittavuus** | 15+ | OpenTelemetry-integraatio, reaaliaikainen kiintiöiden seuranta, kustannusseuranta mallikohtaisesti |
1517
- | 🔄 **Tarjoajien integraatiot** | 20+ | Dynaaminen mallirekisteri, palveluntarjoajan jäähtyminen, usean tilin Codex, Copilot-kiintiön jäsentäminen |
1518
- | ⚡ **Suorituskyky** | 15+ | Kaksoisvälimuistikerros, kehotevälimuisti, vastausvälimuisti, suoratoiston ylläpitäminen, erä-API |
1519
- | 🌐 **Ekosysteemi** | 10+ | WebSocket API, konfiguroinnin hot-reload, hajautettu konfiguraatiosäilö, kaupallinen tila |
1520
-
1521
- ### 🔜 Tulossa pian
1522
-
1523
- - 🔗 **OpenCode Integration** - Natiivitoimittajan tuki OpenCode AI -koodaus-IDE:lle
1524
- - 🔗 **TRAE-integraatio** — Täysi tuki TRAE AI -kehityskehykselle
1525
- - 📦 **Eräsovellusliittymä** — Asynkroninen eräkäsittely joukkopyyntöille
1526
- - 🎯 **Tagipohjainen reititys** - Reittipyynnöt mukautettujen tunnisteiden ja metatietojen perusteella
1527
- - 💰 **Alhaisimman kustannustason strategia** - Valitse automaattisesti halvin saatavilla oleva palveluntarjoaja
1528
-
1529
- > 📝 Täydelliset ominaisuudet saatavilla osoitteessa [link](docs/new-features/) (217 yksityiskohtaista spesifikaatiota)
1530
-
1531
- ---
1532
-
1533
- ## 👥 Avustajat
1534
-
1535
- [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1536
-
1537
- ### Kuinka osallistua
1538
-
1539
- 1. Haarukka arkisto
1540
- 2. Luo ominaisuushaara (`git checkout -b feature/amazing-feature`)
1541
- 3. Vahvista muutokset (`git commit -m 'Add amazing feature'`)
1542
- 4. Työnnä haaraan (`git push origin feature/amazing-feature`)
1543
- 5. Avaa vetopyyntö
1544
-
1545
- Katso tarkemmat ohjeet kohdasta [CONTRIBUTING.md](CONTRIBUTING.md).
1546
-
1547
- ### Uuden version julkaisu
1548
-
1549
- ```bash
1550
- # Create a release — npm publish happens automatically
1551
- gh release create v1.0.6 --title "v1.0.6" --generate-notes
1552
- ```
1553
-
1554
- ---
1555
-
1556
- ## 📊 Tähtihistoria
1557
-
1558
- <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1559
- <picture>
1560
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1561
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1562
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1563
- </picture>
1564
- </a>
1565
-
1566
- ---
1567
-
1568
- ## 🙏 Kiitokset
1569
-
1570
- Erityinen kiitos **[9router](https://github.com/decolua/9router)**, **[decolua](https://github.com/decolua)** - alkuperäinen projekti, joka inspiroi tätä haarukkaa. OmniRoute rakentaa tälle uskomattomalle perustalle lisäominaisuuksia, multimodaalisia API-liittymiä ja täydellistä TypeScript-uudelleenkirjoitusta.
1571
-
1572
- Erityinen kiitos **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** - alkuperäiselle Go-toteutukselle, joka inspiroi tätä JavaScript-porttia.
1573
-
1574
- ---
1575
-
1576
- ## 📄 Lisenssi
1577
-
1578
- MIT-lisenssi – katso lisätietoja osoitteesta [LICENSE](LICENSE).
1579
-
1580
- ---
1581
-
1582
- <div align="center">
1583
- <sub>Rakennettu ❤️-kehittäjille, jotka koodaavat 24/7</sub>
1584
- <br/>
1585
- <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1586
- </div>