omniroute 1.4.11 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/README.ar.md +1153 -0
  2. package/README.bg.md +1238 -0
  3. package/README.da.md +1238 -0
  4. package/README.de.md +1 -1
  5. package/README.es.md +1 -1
  6. package/README.fi.md +1238 -0
  7. package/README.fr.md +1 -1
  8. package/README.he.md +1238 -0
  9. package/README.hu.md +1238 -0
  10. package/README.id.md +1238 -0
  11. package/README.in.md +952 -0
  12. package/README.it.md +1 -1
  13. package/README.ja.md +1152 -0
  14. package/README.ko.md +1238 -0
  15. package/README.md +25 -20
  16. package/README.ms.md +1238 -0
  17. package/README.nl.md +1238 -0
  18. package/README.no.md +1238 -0
  19. package/README.phi.md +1238 -0
  20. package/README.pl.md +1238 -0
  21. package/README.pt-BR.md +16 -12
  22. package/README.pt.md +1238 -0
  23. package/README.ro.md +1238 -0
  24. package/README.ru.md +1 -1
  25. package/README.sk.md +1239 -0
  26. package/README.sv.md +1238 -0
  27. package/README.th.md +1229 -0
  28. package/README.uk-UA.md +1240 -0
  29. package/README.vi.md +1238 -0
  30. package/README.zh-CN.md +1 -1
  31. package/app/.next/BUILD_ID +1 -1
  32. package/app/.next/app-path-routes-manifest.json +28 -28
  33. package/app/.next/build-manifest.json +2 -2
  34. package/app/.next/prerender-manifest.json +3 -3
  35. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  36. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
  42. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +6 -6
  45. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  51. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  54. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  57. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  60. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  66. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  69. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  75. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  76. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  78. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  79. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  81. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  82. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  84. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  85. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  87. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  88. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
  90. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  91. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  93. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  94. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/_global-error.html +2 -2
  97. package/app/.next/server/app/_global-error.rsc +1 -1
  98. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  99. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  100. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  101. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  102. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  103. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  104. package/app/.next/server/app/_not-found/page.js +1 -1
  105. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  106. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  113. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  115. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
  117. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  119. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
  121. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  123. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
  125. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  127. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  130. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  132. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  134. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
  136. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/models/route.js +1 -1
  161. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  163. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/providers/route.js +1 -1
  185. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  203. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  207. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  208. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  209. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  212. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  213. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  214. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  215. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  216. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  218. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  219. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  220. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  221. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  222. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  223. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  224. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  226. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  227. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  228. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  229. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  230. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  231. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  232. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  233. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  234. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  235. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  236. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  237. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  238. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  239. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  240. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  241. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  242. package/app/.next/server/app/callback/page.js +2 -2
  243. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  244. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  245. package/app/.next/server/app/docs/page.js +2 -2
  246. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  247. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  248. package/app/.next/server/app/forbidden/page.js +2 -2
  249. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  250. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  251. package/app/.next/server/app/forgot-password/page.js +2 -2
  252. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  253. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  254. package/app/.next/server/app/landing/page.js +2 -2
  255. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  256. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  257. package/app/.next/server/app/login/page.js +2 -2
  258. package/app/.next/server/app/login/page.js.nft.json +1 -1
  259. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  260. package/app/.next/server/app/page.js +1 -1
  261. package/app/.next/server/app/page.js.nft.json +1 -1
  262. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  263. package/app/.next/server/app/privacy/page.js +2 -2
  264. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  265. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  266. package/app/.next/server/app/terms/page.js +2 -2
  267. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  268. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  269. package/app/.next/server/app-paths-manifest.json +28 -28
  270. package/app/.next/server/chunks/1248.js +1 -0
  271. package/app/.next/server/chunks/{3994.js → 1465.js} +2 -2
  272. package/app/.next/server/chunks/1526.js +1 -0
  273. package/app/.next/server/chunks/1584.js +1 -0
  274. package/app/.next/server/chunks/1623.js +1 -0
  275. package/app/.next/server/chunks/1880.js +1 -0
  276. package/app/.next/server/chunks/1960.js +1 -1
  277. package/app/.next/server/chunks/1990.js +1 -1
  278. package/app/.next/server/chunks/2214.js +1 -0
  279. package/app/.next/server/chunks/2372.js +1 -0
  280. package/app/.next/server/chunks/2594.js +1 -0
  281. package/app/.next/server/chunks/3371.js +1 -0
  282. package/app/.next/server/chunks/3498.js +1 -1
  283. package/app/.next/server/chunks/3911.js +1 -0
  284. package/app/.next/server/chunks/438.js +1 -0
  285. package/app/.next/server/chunks/496.js +1 -0
  286. package/app/.next/server/chunks/5047.js +1 -0
  287. package/app/.next/server/chunks/5094.js +1 -0
  288. package/app/.next/server/chunks/5097.js +1 -0
  289. package/app/.next/server/chunks/5393.js +2 -0
  290. package/app/.next/server/chunks/5521.js +1 -0
  291. package/app/.next/server/chunks/5945.js +1 -0
  292. package/app/.next/server/chunks/6118.js +1 -0
  293. package/app/.next/server/chunks/6930.js +1 -0
  294. package/app/.next/server/chunks/7011.js +1 -0
  295. package/app/.next/server/chunks/708.js +1 -0
  296. package/app/.next/server/chunks/7650.js +1 -0
  297. package/app/.next/server/chunks/8220.js +1 -0
  298. package/app/.next/server/chunks/8464.js +1 -0
  299. package/app/.next/server/chunks/8706.js +1 -0
  300. package/app/.next/server/chunks/8976.js +1 -0
  301. package/app/.next/server/chunks/9119.js +1 -0
  302. package/app/.next/server/chunks/944.js +1 -0
  303. package/app/.next/server/chunks/9824.js +1 -1
  304. package/app/.next/server/chunks/9837.js +1 -0
  305. package/app/.next/server/pages/500.html +2 -2
  306. package/app/.next/server/server-reference-manifest.js +1 -1
  307. package/app/.next/server/server-reference-manifest.json +1 -1
  308. package/app/.next/static/chunks/{6458-085536744d592424.js → 1149-fefe7f95f0e9842f.js} +1 -1
  309. package/app/.next/static/chunks/{5846-19c878280decbd16.js → 5846-c6bffec2bf9757fa.js} +1 -1
  310. package/app/.next/static/chunks/{782-5e138760b7f7bf48.js → 8055-5844ff783b2e8a99.js} +3 -3
  311. package/app/.next/static/chunks/{993-e3050ebfd4f5032f.js → 993-cf9fe6c017bc7e67.js} +3 -3
  312. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-52f76c7c91444ec2.js +1 -0
  313. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-1dd4d0c348a7b0a6.js +1 -0
  314. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-e5bf8955e7b9a4f5.js +1 -0
  315. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-ce332ffdb491a4d8.js +15 -0
  316. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-ede2315b6918315e.js → page-6abed29d64c46388.js} +1 -1
  317. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/page-3ed2a7685adf9b91.js +1 -0
  318. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-1420c3ca376f1585.js +1 -0
  319. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-9a6519bf1468f16e.js +1 -0
  320. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-f4a2d6d07df5ddc4.js +1 -0
  321. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/{page-6ee69634597daee0.js → page-833d24f322a20f5a.js} +1 -1
  322. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-ec914ae79f085e6f.js +1 -0
  323. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-388840686801f3f5.js +1 -0
  324. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-9c8ffb212f855704.js +1 -0
  325. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-31cdb6e15134d8c2.js +1 -0
  326. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-1f022385b812b987.js +1 -0
  327. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-1393d4935fc087cf.js +1 -0
  328. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/{page-77158451270c1852.js → page-f10a8d4bb8236913.js} +1 -1
  329. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-83b07523f81d6282.js +4 -0
  330. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-9cc99ab874fc36e7.js +1 -0
  331. package/app/.next/static/chunks/app/(dashboard)/{layout-b23c2c5427e04dcf.js → layout-00d5d56af65098a9.js} +1 -1
  332. package/app/.next/static/chunks/app/callback/page-585a53f7dc6a30f1.js +1 -0
  333. package/app/.next/static/chunks/app/docs/page-2fe9dcbeb3f738c0.js +1 -0
  334. package/app/.next/static/chunks/app/forbidden/{page-4a39fedc08aaaf55.js → page-df886dfa2d5bd9fa.js} +1 -1
  335. package/app/.next/static/chunks/app/forgot-password/page-2a495f0b0c653ab4.js +1 -0
  336. package/app/.next/static/chunks/app/landing/page-9d540ab1716f8e3e.js +1 -0
  337. package/app/.next/static/chunks/app/login/page-121c612ee459e7c2.js +1 -0
  338. package/app/.next/static/chunks/app/privacy/page-2fe9dcbeb3f738c0.js +1 -0
  339. package/app/.next/static/chunks/app/terms/page-2fe9dcbeb3f738c0.js +1 -0
  340. package/app/.next/static/css/6f101b114a4a7286.css +1 -0
  341. package/app/package.json +1 -1
  342. package/package.json +1 -1
  343. package/app/.next/server/chunks/1259.js +0 -2
  344. package/app/.next/server/chunks/4509.js +0 -1
  345. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-a50474b6ebdf468a.js +0 -1
  346. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-d806e4f28c15636a.js +0 -1
  347. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-27bc511cf3930e1e.js +0 -1
  348. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-ad885fdf9806e9a6.js +0 -15
  349. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/page-08f3ed204d01b6a0.js +0 -1
  350. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-6e4f3ca7ac9778be.js +0 -1
  351. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-8725f1a181e558a3.js +0 -1
  352. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-fbe1442b61df950a.js +0 -1
  353. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-931fa0c45dca76c9.js +0 -1
  354. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-04bc41f9e9de17ef.js +0 -1
  355. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-6b6d62c5872aee46.js +0 -1
  356. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-2dc2a865e90681dd.js +0 -1
  357. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-ac85ce5066cd9044.js +0 -1
  358. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-88cac9e6f2fbe335.js +0 -1
  359. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-b351778975cb8622.js +0 -4
  360. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-f0809c7842e4f5b4.js +0 -1
  361. package/app/.next/static/chunks/app/callback/page-e439cd5a287000d8.js +0 -1
  362. package/app/.next/static/chunks/app/docs/page-8f74097544a61b9d.js +0 -1
  363. package/app/.next/static/chunks/app/forgot-password/page-a440e0c1675842bf.js +0 -1
  364. package/app/.next/static/chunks/app/landing/page-09741814aaca7548.js +0 -1
  365. package/app/.next/static/chunks/app/login/page-164f6b6b41167c5a.js +0 -1
  366. package/app/.next/static/chunks/app/privacy/page-8f74097544a61b9d.js +0 -1
  367. package/app/.next/static/chunks/app/terms/page-8f74097544a61b9d.js +0 -1
  368. package/app/.next/static/css/e90887a86e63903f.css +0 -1
  369. /package/app/.next/static/{g7Mie-iq39oZ7ts610YtL → XOdkUGO-Pm15MwsN4s6B3}/_buildManifest.js +0 -0
  370. /package/app/.next/static/{g7Mie-iq39oZ7ts610YtL → XOdkUGO-Pm15MwsN4s6B3}/_ssgManifest.js +0 -0
package/README.fi.md ADDED
@@ -0,0 +1,1238 @@
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
+ 🌐 **[English](#-omniroute--the-free-ai-gateway)** | **[Português (BR)](#-omniroute--gateway-de-ia-gratuito)**
7
+
8
+ ### Älä koskaan lopeta koodaamista. Älykäs reititys **ILMAisiin ja edullisiin tekoälymalleihin** automaattisella varalla.
9
+
10
+ _Universaali API-välityspalvelin – yksi päätepiste, yli 36 palveluntarjoajaa, nolla seisokkia._
11
+
12
+ **Pikaviestien loppuun saattaminen • upotukset • kuvien luominen • ääni • uudelleensijoitus • 100 % TypeScript**
13
+
14
+ ---
15
+
16
+ ### 🤖 Ilmainen AI Provider suosikkikoodaajillesi
17
+
18
+ _Yhdistä mikä tahansa tekoälyllä toimiva IDE- tai CLI-työkalu OmniRouten kautta – ilmainen API-yhdyskäytävä rajoittamattomaan koodaukseen._
19
+
20
+ <table>
21
+ <tr>
22
+ <td align="center" width="110">
23
+ <a href="https://github.com/cline/cline">
24
+ <img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
25
+ <b>OpenClaw</b>
26
+ </a><br/>
27
+ <sub>⭐ 205K</sub>
28
+ </td>
29
+ <td align="center" width="110">
30
+ <a href="https://github.com/HKUDS/nanobot">
31
+ <img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
32
+ <b>NanoBot</b>
33
+ </a><br/>
34
+ <sub>⭐ 20.9K</sub>
35
+ </td>
36
+ <td align="center" width="110">
37
+ <a href="https://github.com/sipeed/picoclaw">
38
+ <img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
39
+ <b>PicoClaw</b>
40
+ </a><br/>
41
+ <sub>⭐ 14.6K</sub>
42
+ </td>
43
+ <td align="center" width="110">
44
+ <a href="https://github.com/zeroclaw-labs/zeroclaw">
45
+ <img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
46
+ <b>ZeroClaw</b>
47
+ </a><br/>
48
+ <sub>⭐ 9.9K</sub>
49
+ </td>
50
+ <td align="center" width="110">
51
+ <a href="https://github.com/nearai/ironclaw">
52
+ <img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
53
+ <b>IronClaw</b>
54
+ </a><br/>
55
+ <sub>⭐ 2.1K</sub>
56
+ </td>
57
+ </tr>
58
+ <tr>
59
+ <td align="center" width="110">
60
+ <a href="https://github.com/anomalyco/opencode">
61
+ <img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
62
+ <b>OpenCode</b>
63
+ </a><br/>
64
+ <sub>⭐ 106K</sub>
65
+ </td>
66
+ <td align="center" width="110">
67
+ <a href="https://github.com/openai/codex">
68
+ <img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
69
+ <b>Codex CLI</b>
70
+ </a><br/>
71
+ <sub>⭐ 60.8K</sub>
72
+ </td>
73
+ <td align="center" width="110">
74
+ <a href="https://github.com/anthropics/claude-code">
75
+ <img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
76
+ <b>Claude Code</b>
77
+ </a><br/>
78
+ <sub>⭐ 67.3K</sub>
79
+ </td>
80
+ <td align="center" width="110">
81
+ <a href="https://github.com/google-gemini/gemini-cli">
82
+ <img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
83
+ <b>Gemini CLI</b>
84
+ </a><br/>
85
+ <sub>⭐ 94.7K</sub>
86
+ </td>
87
+ <td align="center" width="110">
88
+ <a href="https://github.com/Kilo-Org/kilocode">
89
+ <img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
90
+ <b>Kilo Code</b>
91
+ </a><br/>
92
+ <sub>⭐ 15.5K</sub>
93
+ </td>
94
+ </tr>
95
+ </table>
96
+
97
+ <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>
98
+
99
+ ---
100
+
101
+ [![npm version](https://img.shields.io/npm/v/omniroute?color=cb3837&logo=npm)](https://www.npmjs.com/package/omniroute)
102
+ [![Docker Hub](https://img.shields.io/docker/v/diegosouzapw/omniroute?label=Docker%20Hub&logo=docker&color=2496ED)](https://hub.docker.com/r/diegosouzapw/omniroute)
103
+ [![License](https://img.shields.io/github/license/diegosouzapw/OmniRoute)](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
104
+ [![Website](https://img.shields.io/badge/Website-omniroute.online-blue?logo=google-chrome&logoColor=white)](https://omniroute.online)
105
+ [![WhatsApp](https://img.shields.io/badge/WhatsApp-Community-25D366?logo=whatsapp&logoColor=white)](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
106
+
107
+ [🌐 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)
108
+
109
+ 🌐 **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)
110
+
111
+ </div>
112
+
113
+ ---
114
+
115
+ ## 🤔 Miksi OmniRoute?
116
+
117
+ **Lopeta rahan tuhlaaminen ja rajojen ylittäminen:**
118
+
119
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Tilauskiintiö vanhenee käyttämättä joka kuukausi
120
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Korjausrajoitukset estävät sinua kesken koodaamisen
121
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> kalliita sovellusliittymiä (20-50 $/kk per tarjoaja)
122
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Manuaalinen vaihtaminen palveluntarjoajien välillä
123
+
124
+ **OmniRoute ratkaisee tämän:**
125
+
126
+ - ✅ **Maksimoi tilaukset** - Seuraa kiintiötä, käytä jokainen bitti ennen nollausta
127
+ - ✅ **Automaattinen palautus** - Tilaus → API-avain → Halpa → Ilmainen, nolla seisonta-aikaa
128
+ - ✅ **Moni tili** - Pyöreä haku tilien välillä per palveluntarjoaja
129
+ - ✅ **Universaali** - Toimii Claude Coden, Codexin, Gemini CLI:n, Cursorin, Clinen, OpenClawin ja minkä tahansa CLI-työkalun kanssa
130
+
131
+ ---
132
+
133
+ ## 🔄 Näin se toimii
134
+
135
+ ```
136
+ ┌─────────────┐
137
+ │ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
138
+ │ Tool │
139
+ └──────┬──────┘
140
+ │ http://localhost:20128/v1
141
+
142
+ ┌─────────────────────────────────────────┐
143
+ │ OmniRoute (Smart Router) │
144
+ │ • Format translation (OpenAI ↔ Claude) │
145
+ │ • Quota tracking + Embeddings + Images │
146
+ │ • Auto token refresh │
147
+ └──────┬──────────────────────────────────┘
148
+
149
+ ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI
150
+ │ ↓ quota exhausted
151
+ ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
152
+ │ ↓ budget limit
153
+ ├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)
154
+ │ ↓ budget limit
155
+ └─→ [Tier 4: FREE] iFlow, Qwen, Kiro (unlimited)
156
+
157
+ Result: Never stop coding, minimal cost
158
+ ```
159
+
160
+ ---
161
+
162
+ ## ⚡ Pika-aloitus
163
+
164
+ **1. Asenna maailmanlaajuisesti:**
165
+
166
+ ```bash
167
+ npm install -g omniroute
168
+ omniroute
169
+ ```
170
+
171
+ 🎉 Hallintapaneeli avautuu klo `http://localhost:20128`
172
+
173
+ | Komento | Kuvaus |
174
+ | ----------------------- | --------------------------------------- |
175
+ | `omniroute` | Käynnistä palvelin (oletusportti 20128) |
176
+ | `omniroute --port 3000` | Käytä mukautettua porttia |
177
+ | `omniroute --no-open` | Älä avaa selainta automaattisesti |
178
+ | `omniroute --help` | Näytä ohje |
179
+
180
+ **2. Yhdistä ILMAINEN palveluntarjoaja:**
181
+
182
+ Kojelauta → Palveluntarjoajat → Yhdistä **Claude Code** tai **Antigravity** → OAuth-kirjautuminen → Valmis!
183
+
184
+ **3. Käytä CLI-työkalussasi:**
185
+
186
+ ```
187
+ Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
188
+ Endpoint: http://localhost:20128/v1
189
+ API Key: [copy from dashboard]
190
+ Model: if/kimi-k2-thinking
191
+ ```
192
+
193
+ **Siinä se!** Aloita koodaus ILMAISTEN AI-malleilla.
194
+
195
+ **Vaihtoehto – suorita lähteestä:**
196
+
197
+ ```bash
198
+ cp .env.example .env
199
+ npm install
200
+ PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
201
+ ```
202
+
203
+ ---
204
+
205
+ ## 🐳 Docker
206
+
207
+ OmniRoute on saatavilla julkisena Docker-kuvana osoitteessa [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
208
+
209
+ **Pikaajo:**
210
+
211
+ ```bash
212
+ docker run -d \
213
+ --name omniroute \
214
+ --restart unless-stopped \
215
+ -p 20128:20128 \
216
+ -v omniroute-data:/app/data \
217
+ diegosouzapw/omniroute:latest
218
+ ```
219
+
220
+ **Ympäristötiedostolla:**
221
+
222
+ ```bash
223
+ # Copy and edit .env first
224
+ cp .env.example .env
225
+
226
+ docker run -d \
227
+ --name omniroute \
228
+ --restart unless-stopped \
229
+ --env-file .env \
230
+ -p 20128:20128 \
231
+ -v omniroute-data:/app/data \
232
+ diegosouzapw/omniroute:latest
233
+ ```
234
+
235
+ **Docker Composen käyttäminen:**
236
+
237
+ ```bash
238
+ # Base profile (no CLI tools)
239
+ docker compose --profile base up -d
240
+
241
+ # CLI profile (Claude Code, Codex, OpenClaw built-in)
242
+ docker compose --profile cli up -d
243
+ ```
244
+
245
+ | Kuva | Tag | Koko | Kuvaus |
246
+ | ------------------------ | -------- | ------- | -------------------- |
247
+ | `diegosouzapw/omniroute` | `latest` | ~250 Mt | Uusin vakaa julkaisu |
248
+ | `diegosouzapw/omniroute` | `1.0.3` | ~250 Mt | Nykyinen versio |
249
+
250
+ ---
251
+
252
+ ## 💰 Hinnoittelu yhdellä silmäyksellä
253
+
254
+ | Taso | Palveluntarjoaja | Kustannukset | Kiintiön nollaus | Paras |
255
+ | ---------------- | ----------------- | ------------------------------ | ---------------------- | -------------------------- |
256
+ | **💳 TILAUS** | Claude Code (Pro) | 20 dollaria/kk | 5h + viikoittain | jo tilattu |
257
+ | | Codex (Plus/Pro) | 20-200 $/kk | 5h + viikoittain | OpenAI-käyttäjät |
258
+ | | Gemini CLI | **ILMAINEN** | 180 tk/kk + 1 tk/päivä | Kaikki! |
259
+ | | GitHub Copilot | 10-19 $/kk | Kuukausittain | GitHub-käyttäjät |
260
+ | **🔑 API-AVAIN** | NVIDIA NIM | **ILMAINEN** (1000 krediittiä) | Kertaluonteinen | Ilmainen tasotestaus |
261
+ | | DeepSeek | Maksu per käyttö | Ei yhtään | Paras hinta/laatu |
262
+ | | Groq | Ilmainen taso + maksettu | Hinta rajoitettu | Erittäin nopea johtopäätös |
263
+ | | xAI (Grok) | Maksu per käyttö | Ei yhtään | Grok mallit |
264
+ | | Mistral | Ilmainen taso + maksettu | Hinta rajoitettu | Eurooppalainen tekoäly |
265
+ | | OpenRouter | Maksu per käyttö | Ei yhtään | 100+ mallia |
266
+ | **💰 EDULLISET** | GLM-4.7 | 0,6 $/1 milj. | Päivittäin klo 10 | Budjetin varmuuskopio |
267
+ | | MiniMax M2.1 | 0,2 $/1 milj. | 5 tunnin rullaus | Halvin vaihtoehto |
268
+ | | Kimi K2 | 9 dollaria/kk asunto | 10 milj. rahakkeita/kk | Ennustettavat kustannukset |
269
+ | **🆓 ILMAINEN** | iFlow | 0 dollaria | Rajoittamaton | 8 mallia ilmaiseksi |
270
+ | | Qwen | 0 dollaria | Rajoittamaton | 3 mallia ilmaiseksi |
271
+ | | Kiro | 0 dollaria | Rajoittamaton | Claude ilmaiseksi |
272
+
273
+ **💡 Pro-vinkki:** Aloita Gemini CLI:llä (180 000 ilmaista kuukaudessa) + iFlow (rajoittamaton ilmainen) -yhdistelmä = 0 dollarin hinta!
274
+
275
+ ---
276
+
277
+ ## 🎯 Käyttökotelot
278
+
279
+ ### Tapaus 1: "Minulla on Claude Pro -tilaus"
280
+
281
+ **Ongelma:** Kiintiö vanhenee käyttämättä, nopeusrajoitukset raskaan koodauksen aikana
282
+
283
+ ```
284
+ Combo: "maximize-claude"
285
+ 1. cc/claude-opus-4-6 (use subscription fully)
286
+ 2. glm/glm-4.7 (cheap backup when quota out)
287
+ 3. if/kimi-k2-thinking (free emergency fallback)
288
+
289
+ Monthly cost: $20 (subscription) + ~$5 (backup) = $25 total
290
+ vs. $20 + hitting limits = frustration
291
+ ```
292
+
293
+ ### Tapaus 2: "Haluan ilman kustannuksia"
294
+
295
+ **Ongelma:** Ei ole varaa tilauksiin, tarvitaan luotettavaa tekoälykoodausta
296
+
297
+ ```
298
+ Combo: "free-forever"
299
+ 1. gc/gemini-3-flash (180K free/month)
300
+ 2. if/kimi-k2-thinking (unlimited free)
301
+ 3. qw/qwen3-coder-plus (unlimited free)
302
+
303
+ Monthly cost: $0
304
+ Quality: Production-ready models
305
+ ```
306
+
307
+ ### Tapaus 3: "Tarvitsen 24/7-koodausta, ei keskeytyksiä"
308
+
309
+ **Ongelma:** Määräajat, seisokkeihin ei ole varaa
310
+
311
+ ```
312
+ Combo: "always-on"
313
+ 1. cc/claude-opus-4-6 (best quality)
314
+ 2. cx/gpt-5.2-codex (second subscription)
315
+ 3. glm/glm-4.7 (cheap, resets daily)
316
+ 4. minimax/MiniMax-M2.1 (cheapest, 5h reset)
317
+ 5. if/kimi-k2-thinking (free unlimited)
318
+
319
+ Result: 5 layers of fallback = zero downtime
320
+ ```
321
+
322
+ ### Tapaus 4: "Haluan ILMAISTA tekoälyä OpenClawissa"
323
+
324
+ **Ongelma:** Tarvitset AI-avustajan viestisovelluksissa, täysin ilmainen
325
+
326
+ ```
327
+ Combo: "openclaw-free"
328
+ 1. if/glm-4.7 (unlimited free)
329
+ 2. if/minimax-m2.1 (unlimited free)
330
+ 3. if/kimi-k2-thinking (unlimited free)
331
+
332
+ Monthly cost: $0
333
+ Access via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
334
+ ```
335
+
336
+ ---
337
+
338
+ ## 💡 Tärkeimmät ominaisuudet
339
+
340
+ ### 🧠 Ydinreititys ja älykkyys
341
+
342
+ | Ominaisuus | Mitä se tekee |
343
+ | ------------------------------------- | --------------------------------------------------------------------------------------------- |
344
+ | 🎯 **Smart 4-Tier Fallback** | Automaattinen reitti: Tilaus → API-avain → Halpa → Ilmainen |
345
+ | 📊 **Reaaliaikainen kiintiöseuranta** | Live-tunnusten määrä + nollaa lähtölaskenta palveluntarjoajaa kohti |
346
+ | 🔄 **Käännösmuoto** | OpenAI ↔ Claude ↔ Kaksoset ↔ Kursori ↔ Kiro saumaton + vastaus desinfiointi |
347
+ | 👥 **Useiden tilien tuki** | Useita tilejä per palveluntarjoaja älykkäällä valinnalla |
348
+ | 🔄 **Automaattinen Token Refresh** | OAuth-tunnukset päivittyvät automaattisesti yrittämällä uudelleen |
349
+ | 🎨 **Muokatut yhdistelmät** | 6 strategiaa: fill-first, round-robin, p2c, satunnainen, vähiten käytetty, kustannusoptimoitu |
350
+ | 🧩 **Räätälöidyt mallit** | Lisää mikä tahansa mallitunnus mille tahansa toimittajalle |
351
+ | 🌐 **Wildcard-reititin** | Reititä `provider/*` mallit mille tahansa palveluntarjoajalle dynaamisesti |
352
+ | 🧠 **Ajatteleva budjetti** | Läpivienti-, automaatti-, mukautetut ja mukautuvat tilat päättelymalleille |
353
+ | 💬 **Järjestelmän pikaruiskutus** | Maailmanlaajuinen järjestelmäkehote käytössä kaikissa pyynnöissä |
354
+ | 📄 **Responses API** | Täysi OpenAI Responses API (`/v1/responses`) tuki Codexille |
355
+
356
+ ### 🎵 Multimodaaliset sovellusliittymät
357
+
358
+ | Ominaisuus | Mitä se tekee |
359
+ | ------------------------- | --------------------------------------------------------- |
360
+ | 🖼️ **Kuvan luominen** | `/v1/images/generations` — 4 toimittajaa, 9+ mallia |
361
+ | 📐 **Upotukset** | `/v1/embeddings` — 6 toimittajaa, 9+ mallia |
362
+ | 🎤 **Äänitranskriptio** | `/v1/audio/transcriptions` — Kuiskausyhteensopiva |
363
+ | 🔊 **Tekstistä puheeksi** | `/v1/audio/speech` — Usean palveluntarjoajan äänisynteesi |
364
+ | 🛡️ **Moderaatiot** | `/v1/moderations` — Sisällön turvallisuustarkistukset |
365
+ | 🔀 **Uudelleenjärjestys** | `/v1/rerank` — Asiakirjan osuvuuden uudelleensijoitus |
366
+
367
+ ### 🛡️ Joustavuus ja turvallisuus
368
+
369
+ | Ominaisuus | Mitä se tekee |
370
+ | ----------------------------------------- | ------------------------------------------------------------------------------------------------ |
371
+ | 🔌 **Katkaisija** | Automaattinen avaaminen/sulkeminen palveluntarjoajakohtaisesti konfiguroitavilla kynnysarvoilla |
372
+ | 🛡️ **Ukkosen vastainen lauma** | Mutex + semaforin nopeusrajoitus API-avainten tarjoajille |
373
+ | 🧠 **Semanttinen välimuisti** | Kaksitasoinen välimuisti (allekirjoitus + semanttinen) vähentää kustannuksia ja viivettä |
374
+ | ⚡ **Pyydä idempotenssia** | 5s dedup-ikkuna päällekkäisille pyynnöille |
375
+ | 🔒 **TLS-sormenjälkien huijaus** | Ohita TLS-pohjainen bot-tunnistus wreq-js:n avulla |
376
+ | 🌐 **IP-suodatus** | API-käyttöoikeuksien hallinnan sallittu-/estoluettelo |
377
+ | 📊 **Muokattavat hintarajat** | Konfiguroitava kierrosluku, minimiväli ja suurin samanaikainen järjestelmätasolla |
378
+ | 🛡 **API Endpoint Protection** | Todennusportin + tarjoajan esto `/models`-päätepisteelle |
379
+ | 🔒 **Välityspalvelimen näkyvyys** | Värikoodatut merkit: 🟢 maailmanlaajuinen, 🟡 tarjoaja, 🔵 yhteyskohtainen IP-näytöllä |
380
+ | 🌐 **3-tason välityspalvelimen määritys** | Määritä välityspalvelimet maailmanlaajuisesti, palveluntarjoajakohtaisesti tai yhteyskohtaisesti |
381
+
382
+ ### 📊 Havaittavuus ja analytiikka
383
+
384
+ | Ominaisuus | Mitä se tekee |
385
+ | ------------------------------------- | ----------------------------------------------------------------------------------------------------- |
386
+ | 📝 **Pyydä kirjaamista** | Vianetsintätila täydellisillä pyyntö-/vastauslokeilla |
387
+ | 💾 **SQLite-välityspalvelimen lokit** | Pysyvät välityspalvelimen lokit selviävät palvelimen uudelleenkäynnistyksistä |
388
+ | 📊 **Analytics Dashboard** | Recharts-powered: tilastokortit, mallin käyttökaavio, toimittajataulukko |
389
+ | 📈 **Edistyksen seuranta** | Ota SSE:n edistymistapahtumat käyttöön suoratoistoa varten |
390
+ | 🧪 **LLM-arvioinnit** | Kultaisen setin testaus 4 ottelustrategialla |
391
+ | 🔍 **Pyydä telemetriaa** | p50/p95/p99 latenssiaggregointi + X-Request-Id-jäljitys |
392
+ | 📋 **Lokien hallintapaneeli** | Yhdistetty 4-välilehden sivu: pyyntölokit, välityspalvelimen lokit, tarkastuslokit, konsoli |
393
+ | 🖥️ **Console Log Viewer** | Reaaliaikainen pääte-tyylinen katseluohjelma tasosuodattimella, haulla, automaattisella vierityksellä |
394
+ | 📑 **Tiedostopohjainen kirjaus** | Konsolin sieppaaja kaappaa kaiken lähdön JSON-lokitiedostoon pyörittämällä |
395
+ | 🏥 **Terveyden hallintapaneeli** | Järjestelmän käytettävyys, katkaisijoiden tilat, lukitukset, välimuistitilastot |
396
+ | 💰 **Kustannusseuranta** | Budjetin hallinta + mallikohtainen hinnoittelu |
397
+
398
+ ### ☁️ Käyttöönotto ja synkronointi
399
+
400
+ | Ominaisuus | Mitä se tekee |
401
+ | ----------------------------------- | -------------------------------------------------------------------------------- |
402
+ | 💾 **Cloud Sync** | Synkronoi asetukset laitteiden välillä Cloudflare Workersin kautta |
403
+ | 🌐 **Ota käyttöön missä tahansa** | Localhost, VPS, Docker, Cloudflare Workers |
404
+ | 🔑 **API-avainten hallinta** | Luo, kierrä ja laajenna API-avaimia tarjoajakohtaisesti |
405
+ | 🧙 **Ohjattu käyttöönottotoiminto** | 4-vaiheinen ohjattu asennus ensikertalaisille |
406
+ | 🔧 **CLI Tools Dashboard** | Määritä yhdellä napsautuksella Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
407
+ | 🔄 **DB-varmuuskopiot** | Automaattinen varmuuskopiointi, palautus, vienti ja tuonti kaikille asetuksille |
408
+ | 🌐 **Kansainvälistyminen** | Täysi i18n next-intl:llä — Englanti + portugali (Brasilia) tuki |
409
+ | 🌍 **Kielenvalitsin** | Maapallokuvake otsikossa reaaliaikaista kielenvaihtoa varten (🇺🇸/🇧🇷) |
410
+ | 📂 **Muokattu tietohakemisto** | `DATA_DIR` env var ohittaa oletusarvoisen `~/.omniroute`-tallennuspolun |
411
+
412
+ <details>
413
+ <summary><b>📖 Ominaisuuden tiedot</b></summary>
414
+
415
+ ### 🎯 Älykäs 4-tasoinen varavaihtoehto
416
+
417
+ Luo komboja automaattisella varalla:
418
+
419
+ ```
420
+ Combo: "my-coding-stack"
421
+ 1. cc/claude-opus-4-6 (your subscription)
422
+ 2. nvidia/llama-3.3-70b (free NVIDIA API)
423
+ 3. glm/glm-4.7 (cheap backup, $0.6/1M)
424
+ 4. if/kimi-k2-thinking (free fallback)
425
+
426
+ → Auto switches when quota runs out or errors occur
427
+ ```
428
+
429
+ ### 📊 Reaaliaikainen kiintiöseuranta
430
+
431
+ - Token-kulutus palveluntarjoajaa kohti
432
+ - Nollaa lähtölaskenta (5 tuntia, päivittäin, viikoittain)
433
+ - Kustannusarvio maksetuille tasoille
434
+ - Kuukausittaiset kuluraportit
435
+
436
+ ### 🔄 Muotoile käännös
437
+
438
+ Saumaton käännös muotojen välillä:
439
+
440
+ - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI-vastaukset**
441
+ - CLI-työkalusi lähettää OpenAI-muodon → OmniRoute kääntää → Palveluntarjoaja vastaanottaa alkuperäisen muodon
442
+ - Toimii minkä tahansa työkalun kanssa, joka tukee mukautettuja OpenAI-päätepisteitä
443
+ - **Vastauksen desinfiointi** - Poistaa standardista poikkeavat kentät tiukan OpenAI SDK -yhteensopivuuden varmistamiseksi
444
+ - **Roolin normalisointi** — `developer` → `system` ei-OpenAI:lle; `system` → `user` GLM/ERNIE-malleille
445
+ - **Ajattele tunnisteen purkaminen** — `<think>` lohkot → `reasoning_content` ajattelumalleille
446
+ - **Strukturoitu tulos** — `json_schema` → Geminin `responseMimeType`/`responseSchema`
447
+
448
+ ### 👥 Usean tilin tuki
449
+
450
+ - Lisää useita tilejä palveluntarjoajaa kohti
451
+ - Automaattinen round-robin tai prioriteettipohjainen reititys
452
+ - Takaisin seuraavalle tilille, kun kiintiö saavutetaan
453
+
454
+ ### 🔄 Tokenin automaattinen päivitys
455
+
456
+ - OAuth-tunnukset päivittyvät automaattisesti ennen vanhenemista
457
+ - Manuaalista uudelleentodennusta ei tarvita
458
+ - Saumaton kokemus kaikilta palveluntarjoajilta
459
+
460
+ ### 🎨 Mukautetut yhdistelmät
461
+
462
+ - Luo rajattomasti malliyhdistelmiä
463
+ - 6 strategiaa: täytä ensin, round-robin, kahden valinnan teho, satunnainen, vähiten käytetty, kustannusoptimoitu
464
+ - Jaa komboja laitteiden välillä Cloud Sync -sovelluksella
465
+
466
+ ### 🏥 Health Dashboard
467
+
468
+ - Järjestelmän tila (käyttöaika, versio, muistin käyttö)
469
+ - Katkaisijoiden tilat palveluntarjoajan mukaan (suljettu/auki/puoliauki)
470
+ - Hintarajoituksen tila ja aktiiviset lukitukset
471
+ - Allekirjoitusvälimuistin tilastot
472
+ - Latenssi-telemetria (p50/p95/p99) + välimuisti
473
+ - Palauta terveydentila yhdellä napsautuksella
474
+
475
+ ### 🔧 Kääntäjän leikkikenttä
476
+
477
+ OmniRoute sisältää tehokkaan sisäänrakennetun Translator Playgroundin, jossa on **4 tilaa** virheenkorjausta, testausta ja API-käännösten seurantaa varten:
478
+
479
+ | Tila | Kuvaus |
480
+ | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
481
+ | **💻 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. |
482
+ | **💬 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. |
483
+ | **🧪 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ä. |
484
+ | **📱 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. |
485
+
486
+ **Käyttö:** Kojelauta → Kääntäjä (sivupalkki)
487
+
488
+ ### 💾 Cloud Sync
489
+
490
+ - Synkronoi palveluntarjoajat, yhdistelmät ja asetukset eri laitteiden välillä
491
+ - Automaattinen taustasynkronointi
492
+ - Suojattu salattu tallennustila
493
+
494
+ </details>
495
+
496
+ ---
497
+
498
+ ## 📖 Asennusopas
499
+
500
+ <details>
501
+ <summary><b>💳 Tilauksen tarjoajat</b></summary>
502
+
503
+ ### Claude Code (Pro/Max)
504
+
505
+ ```bash
506
+ Dashboard → Providers → Connect Claude Code
507
+ → OAuth login → Auto token refresh
508
+ → 5-hour + weekly quota tracking
509
+
510
+ Models:
511
+ cc/claude-opus-4-6
512
+ cc/claude-sonnet-4-5-20250929
513
+ cc/claude-haiku-4-5-20251001
514
+ ```
515
+
516
+ **Provinkki:** Käytä Opusta monimutkaisiin tehtäviin ja Sonnetia nopeutta varten. OmniRoute jäljityskiintiö mallia kohden!
517
+
518
+ ### OpenAI Codex (Plus/Pro)
519
+
520
+ ```bash
521
+ Dashboard → Providers → Connect Codex
522
+ → OAuth login (port 1455)
523
+ → 5-hour + weekly reset
524
+
525
+ Models:
526
+ cx/gpt-5.2-codex
527
+ cx/gpt-5.1-codex-max
528
+ ```
529
+
530
+ ### Gemini CLI (ILMAINEN 180 000/kk!)
531
+
532
+ ```bash
533
+ Dashboard → Providers → Connect Gemini CLI
534
+ → Google OAuth
535
+ → 180K completions/month + 1K/day
536
+
537
+ Models:
538
+ gc/gemini-3-flash-preview
539
+ gc/gemini-2.5-pro
540
+ ```
541
+
542
+ **Paras hinta-laatusuhde:** Valtava ilmainen taso! Käytä tätä ennen maksettuja tasoja.
543
+
544
+ ### GitHub Copilot
545
+
546
+ ```bash
547
+ Dashboard → Providers → Connect GitHub
548
+ → OAuth via GitHub
549
+ → Monthly reset (1st of month)
550
+
551
+ Models:
552
+ gh/gpt-5
553
+ gh/claude-4.5-sonnet
554
+ gh/gemini-3-pro
555
+ ```
556
+
557
+ </details>
558
+
559
+ <details>
560
+ <summary><b>🔑 API-avaintoimittajat</b></summary>
561
+
562
+ ### NVIDIA NIM (ILMAINEN 1000 krediittiä!)
563
+
564
+ 1. Rekisteröidy: [build.nvidia.com](https://build.nvidia.com)
565
+ 2. Hanki ilmainen API-avain (sisältää 1000 johtopäätöskrediittiä)
566
+ 3. Kojelauta → Lisää toimittaja → NVIDIA NIM:
567
+ - API-avain: `nvapi-your-key`
568
+
569
+ **Mallit:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` ja yli 50 muuta
570
+
571
+ **Provinkki:** OpenAI-yhteensopiva API – toimii saumattomasti OmniRouten muotokäännöksen kanssa!
572
+
573
+ ### DeepSeek
574
+
575
+ 1. Rekisteröidy: [platform.deepseek.com](https://platform.deepseek.com)
576
+ 2. Hanki API-avain
577
+ 3. Dashboard → Add Provider → DeepSeek
578
+
579
+ **Mallit:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
580
+
581
+ ### Groq (ilmainen taso saatavilla!)
582
+
583
+ 1. Rekisteröidy: [console.groq.com](https://console.groq.com)
584
+ 2. Hanki API-avain (ilmainen taso mukana)
585
+ 3. Dashboard → Add Provider → Groq
586
+
587
+ **Mallit:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
588
+
589
+ **Provinkki:** Erittäin nopea päättely – paras reaaliaikaiseen koodaukseen!
590
+
591
+ ### OpenRouter (100+ mallia)
592
+
593
+ 1. Rekisteröidy: [openrouter.ai](https://openrouter.ai)
594
+ 2. Hanki API-avain
595
+ 3. Dashboard → Add Provider → OpenRouter
596
+
597
+ **Mallit:** Käytä yli 100 mallia kaikilta tärkeimmiltä palveluntarjoajilta yhdellä API-avaimella.
598
+
599
+ </details>
600
+
601
+ <details>
602
+ <summary><b>💰 Halvat palveluntarjoajat (Varmuuskopio)</b></summary>
603
+
604
+ ### GLM-4.7 (Päivittäinen nollaus, 0,6 $/1 milj.)
605
+
606
+ 1. Rekisteröidy: [Zhipu AI](https://open.bigmodel.cn/)
607
+ 2. Hanki API-avain Coding Planista
608
+ 3. Hallintapaneeli → Lisää API-avain:
609
+ - Palveluntarjoaja: `glm`
610
+ - API-avain: `your-key`
611
+
612
+ **Käytä:** `glm/glm-4.7`
613
+
614
+ **Provinkki:** Koodaussuunnitelma tarjoaa 3-kertaisen kiintiön 1/7 hinnalla! Nollaa päivittäin klo 10.00.
615
+
616
+ ### MiniMax M2.1 (5 h nollaus, 0,20 $/1 milj.)
617
+
618
+ 1. Rekisteröidy: [MiniMax](https://www.minimax.io/)
619
+ 2. Hanki API-avain
620
+ 3. Kojelauta → Lisää API-avain
621
+
622
+ **Käytä:** `minimax/MiniMax-M2.1`
623
+
624
+ **Ammattilaisen vinkki:** Halvin vaihtoehto pitkälle kontekstille (1 milj. merkkiä)!
625
+
626
+ ### Kimi K2 (9 dollaria/kk asunto)
627
+
628
+ 1. Tilaa: [Moonshot AI](https://platform.moonshot.ai/)
629
+ 2. Hanki API-avain
630
+ 3. Kojelauta → Lisää API-avain
631
+
632
+ **Käytä:** `kimi/kimi-latest`
633
+
634
+ **Ammattilaisen vinkki:** Kiinteä 9 dollaria kuukaudessa 10 miljoonalle tokenille = 0,90 dollaria / 1 miljoona todellista hintaa!
635
+
636
+ </details>
637
+
638
+ <details>
639
+ <summary><b>🆓 ILMAISIA palveluntarjoajia (hätävarmuuskopio)</b></summary>
640
+
641
+ ### iFlow (8 ILMAISTA mallia)
642
+
643
+ ```bash
644
+ Dashboard → Connect iFlow
645
+ → iFlow OAuth login
646
+ → Unlimited usage
647
+
648
+ Models:
649
+ if/kimi-k2-thinking
650
+ if/qwen3-coder-plus
651
+ if/glm-4.7
652
+ if/minimax-m2
653
+ if/deepseek-r1
654
+ ```
655
+
656
+ ### Qwen (3 ILMAISTA mallia)
657
+
658
+ ```bash
659
+ Dashboard → Connect Qwen
660
+ → Device code authorization
661
+ → Unlimited usage
662
+
663
+ Models:
664
+ qw/qwen3-coder-plus
665
+ qw/qwen3-coder-flash
666
+ ```
667
+
668
+ ### Kiro (Claude ILMAINEN)
669
+
670
+ ```bash
671
+ Dashboard → Connect Kiro
672
+ → AWS Builder ID or Google/GitHub
673
+ → Unlimited usage
674
+
675
+ Models:
676
+ kr/claude-sonnet-4.5
677
+ kr/claude-haiku-4.5
678
+ ```
679
+
680
+ </details>
681
+
682
+ <details>
683
+ <summary><b>🎨 Luo komboja</b></summary>
684
+
685
+ ### Esimerkki 1: Maksimoi tilaus → Halpa varmuuskopio
686
+
687
+ ```
688
+ Dashboard → Combos → Create New
689
+
690
+ Name: premium-coding
691
+ Models:
692
+ 1. cc/claude-opus-4-6 (Subscription primary)
693
+ 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
694
+ 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
695
+
696
+ Use in CLI: premium-coding
697
+ ```
698
+
699
+ ### Esimerkki 2: Vain ilmainen (nollahinta)
700
+
701
+ ```
702
+ Name: free-combo
703
+ Models:
704
+ 1. gc/gemini-3-flash-preview (180K free/month)
705
+ 2. if/kimi-k2-thinking (unlimited)
706
+ 3. qw/qwen3-coder-plus (unlimited)
707
+
708
+ Cost: $0 forever!
709
+ ```
710
+
711
+ </details>
712
+
713
+ <details>
714
+ <summary><b>🔧 CLI-integrointi</b></summary>
715
+
716
+ ### Kohdistimen IDE
717
+
718
+ ```
719
+ Settings → Models → Advanced:
720
+ OpenAI API Base URL: http://localhost:20128/v1
721
+ OpenAI API Key: [from OmniRoute dashboard]
722
+ Model: cc/claude-opus-4-6
723
+ ```
724
+
725
+ ### Claude Code
726
+
727
+ Käytä kojelaudan **CLI Tools** -sivua määrittääksesi yhdellä napsautuksella tai muokkaa `~/.claude/settings.json` manuaalisesti.
728
+
729
+ ### Codex CLI
730
+
731
+ ```bash
732
+ export OPENAI_BASE_URL="http://localhost:20128"
733
+ export OPENAI_API_KEY="your-omniroute-api-key"
734
+
735
+ codex "your prompt"
736
+ ```
737
+
738
+ ### OpenClaw
739
+
740
+ **Vaihtoehto 1 – hallintapaneeli (suositus):**
741
+
742
+ ```
743
+ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
744
+ ```
745
+
746
+ **Vaihtoehto 2 – Manuaalinen:** Muokkaa `~/.openclaw/openclaw.json`:
747
+
748
+ ```json
749
+ {
750
+ "models": {
751
+ "providers": {
752
+ "omniroute": {
753
+ "baseUrl": "http://127.0.0.1:20128/v1",
754
+ "apiKey": "sk_omniroute",
755
+ "api": "openai-completions"
756
+ }
757
+ }
758
+ }
759
+ }
760
+ ```
761
+
762
+ > **Huomaa:** OpenClaw toimii vain paikallisen OmniRouten kanssa. Käytä `127.0.0.1` `localhost` sijaan IPv6-resoluutioongelmien välttämiseksi.
763
+
764
+ ### Cline / Continue / RooCode
765
+
766
+ ```
767
+ Settings → API Configuration:
768
+ Provider: OpenAI Compatible
769
+ Base URL: http://localhost:20128/v1
770
+ API Key: [from OmniRoute dashboard]
771
+ Model: if/kimi-k2-thinking
772
+ ```
773
+
774
+ </details>
775
+
776
+ ---
777
+
778
+ ## 📊 Saatavilla olevat mallit
779
+
780
+ <details>
781
+ <summary><b>Näytä kaikki saatavilla olevat mallit</b></summary>
782
+
783
+ **Claude Code (`cc/`)** - Pro/Max:
784
+
785
+ - `cc/claude-opus-4-6`
786
+ - `cc/claude-sonnet-4-5-20250929`
787
+ - `cc/claude-haiku-4-5-20251001`
788
+
789
+ **Koodi (`cx/`)** - Plus/Pro:
790
+
791
+ - `cx/gpt-5.2-codex`
792
+ - `cx/gpt-5.1-codex-max`
793
+
794
+ **Gemini CLI (`gc/`)** - ILMAINEN:
795
+
796
+ - `gc/gemini-3-flash-preview`
797
+ - `gc/gemini-2.5-pro`
798
+
799
+ **GitHub Copilot (`gh/`)**:
800
+
801
+ - `gh/gpt-5`
802
+ - `gh/claude-4.5-sonnet`
803
+
804
+ **NVIDIA NIM (`nvidia/`)** - ILMAISIA krediittejä:
805
+
806
+ - `nvidia/llama-3.3-70b-instruct`
807
+ - `nvidia/mistral-7b-instruct`
808
+ - Yli 50 mallia [build.nvidia.com](https://build.nvidia.com)
809
+
810
+ **GLM (`glm/`)** - 0,6 $/1 milj.:
811
+
812
+ - `glm/glm-4.7`
813
+
814
+ **MiniMax (`minimax/`)** - 0,2 $/1 milj.
815
+
816
+ - `minimax/MiniMax-M2.1`
817
+
818
+ **iFlow (`if/`)** - ILMAINEN:
819
+
820
+ - `if/kimi-k2-thinking`
821
+ - `if/qwen3-coder-plus`
822
+ - `if/deepseek-r1`
823
+ - `if/glm-4.7`
824
+ - `if/minimax-m2`
825
+
826
+ **Qwen (`qw/`)** - ILMAINEN:
827
+
828
+ - `qw/qwen3-coder-plus`
829
+ - `qw/qwen3-coder-flash`
830
+
831
+ **Kiro (`kr/`)** - ILMAINEN:
832
+
833
+ - `kr/claude-sonnet-4.5`
834
+ - `kr/claude-haiku-4.5`
835
+
836
+ **OpenRouter (`or/`)** - 100+ mallia:
837
+
838
+ - `or/anthropic/claude-4-sonnet`
839
+ - `or/google/gemini-2.5-pro`
840
+ - Mikä tahansa malli alkaen [openrouter.ai/models](https://openrouter.ai/models)
841
+
842
+ </details>
843
+
844
+ ---
845
+
846
+ ## 🧪 Arvioinnit (Evals)
847
+
848
+ OmniRoute sisältää sisäänrakennetun arviointikehyksen, jolla testataan LLM-vastauksen laatua kultaiseen joukkoon verrattuna. Käytä sitä kojelaudan **Analytics → Evals** kautta.
849
+
850
+ ### Sisäänrakennettu kultainen setti
851
+
852
+ Esiladattu "OmniRoute Golden Set" sisältää 10 testitapausta, jotka kattavat:
853
+
854
+ - Tervehdys, matematiikka, maantiede, koodin luominen
855
+ - JSON-muodon noudattaminen, käännös, merkintä
856
+ - Turvallisuuskielto (haitallinen sisältö), laskenta, boolen logiikka
857
+
858
+ ### Arviointistrategiat
859
+
860
+ | Strategia | Kuvaus | Esimerkki |
861
+ | ---------- | ------------------------------------------------------------------------ | -------------------------------- |
862
+ | `exact` | Tulosten on vastattava tarkasti | `"4"` |
863
+ | `contains` | Tulosteen tulee sisältää alimerkkijono (kirjainkoolla ei ole merkitystä) | `"Paris"` |
864
+ | `regex` | Tulostuksen on vastattava regex-mallia | `"1.*2.*3"` |
865
+ | `custom` | Mukautettu JS-funktio palauttaa true/false | `(output) => output.length > 10` |
866
+
867
+ ---
868
+
869
+ ## 🔐 OAuth em Servidor Remoto (OAuth-etäasetus)
870
+
871
+ <a name="oauth-em-servidor-remoto"></a>
872
+
873
+ > **⚠️ TÄRKEÄÄ käyttäjille com OmniRoute em VPS/Docker/servidor Remoto**
874
+
875
+ ### Onko OAuth do Antigravity / Gemini CLI falha em servidores Remotos?
876
+
877
+ 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.
878
+
879
+ 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:
880
+
881
+ ```
882
+ Error 400: redirect_uri_mismatch
883
+ ```
884
+
885
+ ### Ratkaisu: Määritä suas próprias credenciais OAuth
886
+
887
+ Você precisa criar um **OAuth 2.0 Client ID** ei Google Cloud Console com URI do seu servidor.
888
+
889
+ #### Passo a passo
890
+
891
+ **1. Acesse tai Google Cloud Console**
892
+
893
+ Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
894
+
895
+ **2. Crie um novo OAuth 2.0 -asiakastunnus**
896
+
897
+ - Klikkaa em **"+ Luo kirjautumistiedot"** → **"OAuth-asiakastunnus"**
898
+ - Tipo de aplicativo: **"Web-sovellus"**
899
+ - Nimi: escolha qualquer nome (esim.: `OmniRoute Remote`)
900
+
901
+ **3. Adicione valtuutettuina uudelleenohjaus-URI:ina**
902
+
903
+ No campo **"Authorized redirect URIs"**, lisäys:
904
+
905
+ ```
906
+ https://seu-servidor.com/callback
907
+ ```
908
+
909
+ > 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`).
910
+
911
+ **4. Tallenna kopio valtuutuksena**
912
+
913
+ Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
914
+
915
+ **5. Määritä variáveis de ambiente**
916
+
917
+ Ei seu `.env` (ou nas variáveis de ambiente do Docker):
918
+
919
+ ```bash
920
+ # Para Antigravity:
921
+ ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
922
+ ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
923
+
924
+ # Para Gemini CLI:
925
+ GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
926
+ GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
927
+ GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
928
+ ```
929
+
930
+ **6. Reinicie o OmniRoute**
931
+
932
+ ```bash
933
+ # Se usando npm:
934
+ npm run dev
935
+
936
+ # Se usando Docker:
937
+ docker restart omniroute
938
+ ```
939
+
940
+ **7. Tente conectar novamente**
941
+
942
+ Dashboard → Providers → Antigravity (ou Gemini CLI) → OAuth
943
+
944
+ Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
945
+
946
+ ---
947
+
948
+ ### Workaround temporário (sem configurar credenciais próprias)
949
+
950
+ Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
951
+
952
+ 1. OmniRoute lähettää Googlen lupa-osoitteen
953
+ 2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor Remoto)
954
+ 3. **Kopioi URL-osoite täydellinen** da barra de endereço do seu selaimessa (mesmo que a página não carregue)
955
+ 4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
956
+ 5. Klikkaa em **"Yhdistä"**
957
+
958
+ > Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
959
+
960
+ ---
961
+
962
+ ## 🐛 Vianetsintä
963
+
964
+ <details>
965
+ <summary><b>Laajenna vianetsintäopas napsauttamalla</b></summary>
966
+
967
+ **"Kielimalli ei antanut viestejä"**
968
+
969
+ - Palveluntarjoajan kiintiö käytetty loppuun → Tarkista kojelaudan kiintiön seuranta
970
+ - Ratkaisu: Käytä yhdistelmävaraa tai vaihda halvempaan tasoon
971
+
972
+ **hintarajoitus**
973
+
974
+ - Tilauskiintiö loppu → Varaa GLM/MiniMaxiin
975
+ - Lisää yhdistelmä: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
976
+
977
+ **OAuth-tunnus vanhentunut**
978
+
979
+ - OmniRoute päivittää automaattisesti
980
+ - Jos ongelmat jatkuvat: Kojelauta → Palveluntarjoaja → Yhdistä uudelleen
981
+
982
+ **Korkeat kustannukset**
983
+
984
+ - Tarkista käyttötilastot kohdassa Dashboard → Costs
985
+ - Vaihda ensisijaiseksi malliksi GLM/MiniMax
986
+ - Käytä ilmaista tasoa (Gemini CLI, iFlow) ei-kriittisiin tehtäviin
987
+
988
+ **Kojelauta avautuu väärään porttiin**
989
+
990
+ - Aseta `PORT=20128` ja `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
991
+
992
+ **Pilvisynkronointivirheet**
993
+
994
+ - Vahvista `BASE_URL` pistettä käynnissä olevaan esiintymääsi
995
+ - Vahvista `CLOUD_URL` pistettä odotettuun pilvipäätepisteeseen
996
+ - Pidä `NEXT_PUBLIC_*`-arvot kohdakkain palvelinpuolen arvojen kanssa
997
+
998
+ **Ensimmäinen kirjautuminen ei toimi**
999
+
1000
+ - Tarkista `INITIAL_PASSWORD` kohteessa `.env`
1001
+ - Jos ei ole asetettu, varasalasana on `123456`
1002
+
1003
+ **Ei pyyntölokeja**
1004
+
1005
+ - Aseta `ENABLE_REQUEST_LOGS=true` kohteeseen `.env`
1006
+
1007
+ **Yhteystesti näyttää "Virheellinen" OpenAI-yhteensopiville palveluntarjoajille**
1008
+
1009
+ - Monet palveluntarjoajat eivät paljasta `/models`-päätepistettä
1010
+ - OmniRoute v1.0.6+ sisältää varatarkistuksen chatin loppuunsaattamisen kautta
1011
+ - Varmista, että perus-URL sisältää `/v1`-liitteen
1012
+
1013
+ </details>
1014
+
1015
+ ---
1016
+
1017
+ ## 🛠️ Tech Stack
1018
+
1019
+ - **Suoritusaika**: Node.js 18–22 LTS (⚠️ Node.js 24+ -versiota **ei tueta** — `better-sqlite3` alkuperäiset binaarit eivät ole yhteensopivia)
1020
+ - **Kieli**: TypeScript 5.9 — **100 % TypeScript** `src/` ja `open-sse/` (v1.0.6) välillä
1021
+ - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
1022
+ - **Tietokanta**: LowDB (JSON) + SQLite (verkkotunnuksen tila + välityspalvelimen lokit)
1023
+ - **Striimaus**: Palvelimen lähettämät tapahtumat (SSE)
1024
+ - **Auth**: OAuth 2.0 (PKCE) + JWT + API-avaimet
1025
+ - **Testaus**: Node.js-testausohjelma (368+ yksikkötestiä)
1026
+ - **CI/CD**: GitHub Actions (automaattinen npm-julkaisu + Docker Hub julkaisussa)
1027
+ - **Verkkosivusto**: [omniroute.online](https://omniroute.online)
1028
+ - **Paketti**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1029
+ - **Dokkeri**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1030
+ - **Kestävyys**: Katkaisija, eksponentiaalinen backoff, ukkosen esto, TLS-huijaus
1031
+
1032
+ ---
1033
+
1034
+ ## 📖 Dokumentaatio
1035
+
1036
+ | Asiakirja | Kuvaus |
1037
+ | -------------------------------------------- | ------------------------------------------------------------- |
1038
+ | [User Guide](docs/USER_GUIDE.md) | Palveluntarjoajat, yhdistelmät, CLI-integrointi, käyttöönotto |
1039
+ | [API Reference](docs/API_REFERENCE.md) | Kaikki päätepisteet esimerkeineen |
1040
+ | [Troubleshooting](docs/TROUBLESHOOTING.md) | Yleisiä ongelmia ja ratkaisuja |
1041
+ | [Architecture](docs/ARCHITECTURE.md) | Järjestelmäarkkitehtuuri ja sisäosat |
1042
+ | [Contributing](CONTRIBUTING.md) | Kehittämisjärjestelyt ja -ohjeet |
1043
+ | [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 -spesifikaatio |
1044
+ | [Security Policy](SECURITY.md) | Haavoittuvuusraportointi ja tietoturvakäytännöt |
1045
+ | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Täydellinen opas: VM + nginx + Cloudflare-asennus |
1046
+ | [Features Gallery](docs/FEATURES.md) | Visuaalinen kojelautakierros kuvakaappauksilla |
1047
+
1048
+ ### 📸 Kojelaudan esikatselu
1049
+
1050
+ <details>
1051
+ <summary><b>Klikkaa nähdäksesi hallintapaneelin kuvakaappaukset</b></summary>
1052
+
1053
+ | Sivu | Kuvakaappaus |
1054
+ | ---------------- | ------------------------------------------------- |
1055
+ | **Palvelut** | ![Providers](docs/screenshots/01-providers.png) |
1056
+ | **Yhdistelmät** | ![Combos](docs/screenshots/02-combos.png) |
1057
+ | **Analytics** | ![Analytics](docs/screenshots/03-analytics.png) |
1058
+ | **Terveys** | ![Health](docs/screenshots/04-health.png) |
1059
+ | **Kääntäjä** | ![Translator](docs/screenshots/05-translator.png) |
1060
+ | **Asetukset** | ![Settings](docs/screenshots/06-settings.png) |
1061
+ | **CLI-työkalut** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1062
+ | **Käyttölokit** | ![Usage](docs/screenshots/08-usage.png) |
1063
+ | **Päätepiste** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1064
+
1065
+ </details>
1066
+
1067
+ ---
1068
+
1069
+ ## 🗺️ Etenemissuunnitelma
1070
+
1071
+ OmniRoutella on **210+ suunniteltua ominaisuutta** useissa kehitysvaiheissa. Tässä ovat tärkeimmät alueet:
1072
+
1073
+ | Luokka | Suunnitellut ominaisuudet | Kohokohdat |
1074
+ | ------------------------------------------- | ------------------------- | ---------------------------------------------------------------------------------------------------------- |
1075
+ | 🧠 **Routing & Intelligence** | 25+ | Pienimmän viiveen reititys, tunnistepohjainen reititys, kiintiön esitarkastus, P2C-tilin valinta |
1076
+ | 🔒 **Turvallisuus ja vaatimustenmukaisuus** | 20+ | SSRF-karkaisu, valtuustietojen peittäminen, päätepistekohtainen nopeusraja, hallintaavaimen laajuus |
1077
+ | 📊 **Havaittavuus** | 15+ | OpenTelemetry-integraatio, reaaliaikainen kiintiöiden seuranta, kustannusseuranta mallikohtaisesti |
1078
+ | 🔄 **Tarjoajien integraatiot** | 20+ | Dynaaminen mallirekisteri, palveluntarjoajan jäähtyminen, usean tilin Codex, Copilot-kiintiön jäsentäminen |
1079
+ | ⚡ **Suorituskyky** | 15+ | Kaksoisvälimuistikerros, kehotevälimuisti, vastausvälimuisti, suoratoiston ylläpitäminen, erä-API |
1080
+ | 🌐 **Ekosysteemi** | 10+ | WebSocket API, konfiguroinnin hot-reload, hajautettu konfiguraatiosäilö, kaupallinen tila |
1081
+
1082
+ ### 🔜 Tulossa pian
1083
+
1084
+ - 🔗 **OpenCode Integration** - Natiivitoimittajan tuki OpenCode AI -koodaus-IDE:lle
1085
+ - 🔗 **TRAE-integraatio** — Täysi tuki TRAE AI -kehityskehykselle
1086
+ - 📦 **Eräsovellusliittymä** — Asynkroninen eräkäsittely joukkopyyntöille
1087
+ - 🎯 **Tagipohjainen reititys** - Reittipyynnöt mukautettujen tunnisteiden ja metatietojen perusteella
1088
+ - 💰 **Alhaisimman kustannustason strategia** - Valitse automaattisesti halvin saatavilla oleva palveluntarjoaja
1089
+
1090
+ > 📝 Täydelliset ominaisuudet saatavilla osoitteessa [link](docs/new-features/) (217 yksityiskohtaista spesifikaatiota)
1091
+
1092
+ ---
1093
+
1094
+ ## 📧 Tuki
1095
+
1096
+ > 💬 **Liity yhteisöömme!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Hanki apua, jaa vinkkejä ja pysy ajan tasalla.
1097
+
1098
+ - **Verkkosivusto**: [omniroute.online](https://omniroute.online)
1099
+ - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
1100
+ - **Ongelmia**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
1101
+ - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
1102
+ - **Alkuperäinen projekti**: [9router by decolua](https://github.com/decolua/9router)
1103
+
1104
+ ---
1105
+
1106
+ ## 👥 Avustajat
1107
+
1108
+ [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1109
+
1110
+ ### Kuinka osallistua
1111
+
1112
+ 1. Haarukka arkisto
1113
+ 2. Luo ominaisuushaara (`git checkout -b feature/amazing-feature`)
1114
+ 3. Vahvista muutokset (`git commit -m 'Add amazing feature'`)
1115
+ 4. Työnnä haaraan (`git push origin feature/amazing-feature`)
1116
+ 5. Avaa vetopyyntö
1117
+
1118
+ Katso tarkemmat ohjeet kohdasta [CONTRIBUTING.md](CONTRIBUTING.md).
1119
+
1120
+ ### Uuden version julkaisu
1121
+
1122
+ ```bash
1123
+ # Create a release — npm publish happens automatically
1124
+ gh release create v1.0.6 --title "v1.0.6" --generate-notes
1125
+ ```
1126
+
1127
+ ---
1128
+
1129
+ ## 📊 Tähtihistoria
1130
+
1131
+ <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1132
+ <picture>
1133
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1134
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1135
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1136
+ </picture>
1137
+ </a>
1138
+
1139
+ ---
1140
+
1141
+ ## 🙏 Kiitokset
1142
+
1143
+ 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.
1144
+
1145
+ Erityinen kiitos **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** - alkuperäiselle Go-toteutukselle, joka inspiroi tätä JavaScript-porttia.
1146
+
1147
+ ---
1148
+
1149
+ ## 📄 Lisenssi
1150
+
1151
+ MIT-lisenssi – katso lisätietoja osoitteesta [LICENSE](LICENSE).
1152
+
1153
+ ---
1154
+
1155
+ ---
1156
+
1157
+ ## 🇧🇷 OmniRoute — Gateway de IA Gratuito
1158
+
1159
+ <a name="-omniroute--gateway-de-ia-gratuito"></a>
1160
+
1161
+ ### Nunca pare de codar. Roteamento inteligente para **mallit de IA GRATUITOS e de baixo custo** com backback automático.
1162
+
1163
+ _Seu välityspalvelin universaali de API — um päätepiste, 36+ valmistajaa, nolla seisokkeja._
1164
+
1165
+ ### 🌐 Internacionalização (i18n)
1166
+
1167
+ OmniRoute-kojelauta tukee **múltiplos idiomas**. Atualmente disponível em:
1168
+
1169
+ | Idioma | Código | Tila |
1170
+ | ----------------------- | ------- | -------------- |
1171
+ | 🇺🇸 englanti | `en` | ✅ Täydellinen |
1172
+ | 🇧🇷 Português (Brasilia) | `pt-BR` | ✅ Täydellinen |
1173
+
1174
+ **Para trocar o idioma:** Clique no seletor de idioma (🇺🇸 FI) no header do dashboard → selecione o idioma desejado.
1175
+
1176
+ **Para adicionar um novo idioma:**
1177
+
1178
+ 1. Itke `src/i18n/messages/{codigo}.json` baseado em `en.json`
1179
+ 2. Adicione o código em `src/i18n/config.ts` → `LOCALES` ja `LANGUAGES`
1180
+ 3. Reinicie o servidor
1181
+
1182
+ ### ⚡ Início Rápido
1183
+
1184
+ ```bash
1185
+ # Instalar via npm
1186
+ npx omniroute@latest
1187
+
1188
+ # Ou rodar do código-fonte
1189
+ cp .env.example .env
1190
+ npm install
1191
+ PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
1192
+ ```
1193
+
1194
+ ### 🐳 Docker
1195
+
1196
+ ```bash
1197
+ docker run -d --name omniroute -p 20128:20128 diegosouzapw/omniroute:latest
1198
+ ```
1199
+
1200
+ ### 🔑 Funcionalidades Principais
1201
+
1202
+ - **36+ IA:n tuottajaa** – Claude, GPT, Gemini, Llama, Qwen, DeepSeek, e mais
1203
+ - **Roteamento inteligente** — Varastoautomatico entre provedores
1204
+ - **Tradução de formato** — OpenAI ↔ Claude ↔ Gemini automaticamente
1205
+ - **Multi-conta** — Múltiplas contas por provedor com seleção inteligente
1206
+ - **Cache semântico** - Reduz custos e latência
1207
+ - **OAuth automático** — Tokens renovam automaticamente
1208
+ - **Yhdistelmät personoidut** - 6 estratégias de roteamento
1209
+ - **Dashboard Completo** - Monitoramento, lokit, analyysit, konfiguraatiot
1210
+ - **CLI-työkalut** — Määritä Claude Code, Codex, Cursor, Cline com um clique
1211
+ - **100 % TypeScript** - Código limpo e tipado
1212
+
1213
+ ### 📖 Documentação
1214
+
1215
+ | Documento | Kuvaus |
1216
+ | ----------------------------------------------- | ------------------------------------------- |
1217
+ | [Guia do Usuário](docs/USER_GUIDE.md) | Provedorit, yhdistelmät, CLI, käyttöönotto |
1218
+ | [Referência da API](docs/API_REFERENCE.md) | Todos os päätepisteet com exemplos |
1219
+ | [Solução de Problemas](docs/TROUBLESHOOTING.md) | Problemas comuns e soluções |
1220
+ | [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura e internos do system |
1221
+ | [Contribuição](CONTRIBUTING.md) | Desenvolvimento e -ohjeiden asennus |
1222
+ | [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Täydellinen versio: VM + nginx + Cloudflare |
1223
+
1224
+ ### 📧 Tuki
1225
+
1226
+ > 💬 **Entre para a comunidade!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Tire dúvidas, compartilhe dicas e fique atualizado.
1227
+
1228
+ - **Verkkosivusto**: [omniroute.online](https://omniroute.online)
1229
+ - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
1230
+ - **Ongelmia**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
1231
+
1232
+ ---
1233
+
1234
+ <div align="center">
1235
+ <sub>Rakennettu ❤️-kehittäjille, jotka koodaavat 24/7</sub>
1236
+ <br/>
1237
+ <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1238
+ </div>