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.da.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 — Den gratis AI-gateway
5
+
6
+ 🌐 **[English](#-omniroute--the-free-ai-gateway)** | **[Português (BR)](#-omniroute--gateway-de-ia-gratuito)**
7
+
8
+ ### Stop aldrig med at kode. Smart routing til **GRATIS og billige AI-modeller** med automatisk fallback.
9
+
10
+ _Din universelle API-proxy — ét slutpunkt, 36+ udbydere, ingen nedetid._
11
+
12
+ **Chatafslutninger • Indlejringer • Billedgenerering • Lyd • Genrangering • 100 % TypeScript**
13
+
14
+ ---
15
+
16
+ ### 🤖 Gratis AI-udbyder til dine foretrukne kodningsagenter
17
+
18
+ _Tilslut ethvert AI-drevet IDE- eller CLI-værktøj gennem OmniRoute - gratis API-gateway til ubegrænset kodning._
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>📡 Alle agenter forbinder via <code>http://localhost:20128/v1</code> eller <code>http://cloud.omniroute.online/v1 , —limited one config and kvote</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
+ ## 🤔 Hvorfor OmniRoute?
116
+
117
+ **Stop med at spilde penge og nå grænser:**
118
+
119
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Abonnementskontingent udløber ubrugt hver måned
120
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Hastighedsgrænser stopper dig midtkodning
121
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Dyre API'er ($20-50/måned pr. udbyder)
122
+ - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Manuel skift mellem udbydere
123
+
124
+ **OmniRoute løser dette:**
125
+
126
+ - ✅ **Maksimer abonnementer** - Spor kvote, brug hver bit før nulstilling
127
+ - ✅ **Automatisk fallback** - Abonnement → API-nøgle → Billig → Gratis, ingen nedetid
128
+ - ✅ **Multi-konto** - Round-robin mellem konti pr. udbyder
129
+ - ✅ **Universal** - Virker med Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, ethvert CLI-værktøj
130
+
131
+ ---
132
+
133
+ ## 🔄 Sådan virker det
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
+ ## ⚡ Hurtig start
163
+
164
+ **1. Installer globalt:**
165
+
166
+ ```bash
167
+ npm install -g omniroute
168
+ omniroute
169
+ ```
170
+
171
+ 🎉 Dashboard åbner kl. `http://localhost:20128`
172
+
173
+ | Kommando | Beskrivelse |
174
+ | ----------------------- | --------------------------------- |
175
+ | `omniroute` | Start server (standardport 20128) |
176
+ | `omniroute --port 3000` | Brug tilpasset port |
177
+ | `omniroute --no-open` | Åbn ikke browseren automatisk |
178
+ | `omniroute --help` | Vis hjælp |
179
+
180
+ **2. Tilslut en GRATIS udbyder:**
181
+
182
+ Dashboard → Udbydere → Connect **Claude Code** eller **Antigravity** → OAuth-login → Færdig!
183
+
184
+ **3. Brug i dit CLI-værktøj:**
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
+ **Det var det!** Begynd at kode med GRATIS AI-modeller.
194
+
195
+ **Alternativt — kør fra kilden:**
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 er tilgængelig som et offentligt Docker-billede på [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
208
+
209
+ **Hurtigt løb:**
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
+ **Med miljøfil:**
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
+ **Brug af Docker Compose:**
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
+ | Billede | Tag | Størrelse | Beskrivelse |
246
+ | ------------------------ | -------- | --------- | ------------------------- |
247
+ | `diegosouzapw/omniroute` | `latest` | ~250MB | Seneste stabile udgivelse |
248
+ | `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Nuværende version |
249
+
250
+ ---
251
+
252
+ ## 💰 Prissætning på et øjeblik
253
+
254
+ | Tier | Udbyder | Omkostninger | Kvote nulstilling | Bedst til |
255
+ | ----------------- | ----------------- | --------------------------- | ------------------ | -------------------------- |
256
+ | **💳 ABONNEMENT** | Claude Code (Pro) | 20 USD/md. | 5 timer + ugentlig | Allerede abonneret |
257
+ | | Codex (Plus/Pro) | $20-200/md. | 5 timer + ugentlig | OpenAI-brugere |
258
+ | | Gemini CLI | **GRATIS** | 180K/md + 1K/dag | Alle sammen! |
259
+ | | GitHub Copilot | $10-19/md. | Månedlig | GitHub-brugere |
260
+ | **🔑 API NØGLE** | NVIDIA NIM | **GRATIS** (1000 kreditter) | Engangs | Gratis tier test |
261
+ | | DeepSeek | Betal pr. brug | Ingen | Bedste pris/kvalitet |
262
+ | | Groq | Gratis niveau + betalt | Sats begrænset | Ultrahurtig slutning |
263
+ | | xAI (Grok) | Betal pr. brug | Ingen | Grok modeller |
264
+ | | Mistral | Gratis niveau + betalt | Sats begrænset | Europæisk AI |
265
+ | | OpenRouter | Betal pr. brug | Ingen | 100+ modeller |
266
+ | **💰 BILLIG** | GLM-4.7 | 0,6 USD/1 mio. | Dagligt 10:00 | Budget backup |
267
+ | | MiniMax M2.1 | $0,2/1 mio. | 5-timers rullende | Billigste mulighed |
268
+ | | Kimi K2 | 9 USD/md. lejlighed | 10M tokens/md. | Forudsigelige omkostninger |
269
+ | **🆓 GRATIS** | iFlow | $0 | Ubegrænset | 8 modeller gratis |
270
+ | | Qwen | $0 | Ubegrænset | 3 modeller gratis |
271
+ | | Kiro | $0 | Ubegrænset | Claude gratis |
272
+
273
+ **💡 Pro-tip:** Start med Gemini CLI (180K gratis/måned) + iFlow (ubegrænset gratis) combo = $0 omkostninger!
274
+
275
+ ---
276
+
277
+ ## 🎯 Use Cases
278
+
279
+ ### Case 1: "Jeg har Claude Pro-abonnement"
280
+
281
+ **Problem:** Kvoten udløber ubrugt, satsgrænser under tung kodning
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
+ ### Case 2: "Jeg vil have nul omkostninger"
294
+
295
+ **Problem:** Har ikke råd til abonnementer, har brug for pålidelig AI-kodning
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
+ ### Case 3: "Jeg har brug for 24/7 kodning, ingen afbrydelser"
308
+
309
+ **Problem:** Deadlines, har ikke råd til nedetid
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
+ ### Case 4: "Jeg vil have GRATIS AI i OpenClaw"
323
+
324
+ **Problem:** Har brug for AI-assistent i beskedapps, helt gratis
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
+ ## 💡 Nøglefunktioner
339
+
340
+ ### 🧠 Core Routing & Intelligence
341
+
342
+ | Funktion | Hvad det gør |
343
+ | ---------------------------------- | -------------------------------------------------------------------------------------- |
344
+ | 🎯 **Smart 4-lags fallback** | Auto-rute: Abonnement → API-nøgle → Billig → Gratis |
345
+ | 📊 **Kvotesporing i realtid** | Live token count + nulstil nedtælling pr. udbyder |
346
+ | 🔄 **Formatoversættelse** | OpenAI ↔ Claude ↔ Gemini ↔ Markør ↔ Kiro sømløs + respons sanitisering |
347
+ | 👥 **Multi-Account Support** | Flere konti pr. udbyder med intelligent valg |
348
+ | 🔄 **Automatisk token-opdatering** | OAuth-tokens opdateres automatisk med genforsøg |
349
+ | 🎨 **Tilpassede kombinationer** | 6 strategier: fill-first, round-robin, p2c, random, mindst brugt, omkostningsoptimeret |
350
+ | 🧩 **Tilpassede modeller** | Tilføj ethvert model-id til enhver udbyder |
351
+ | 🌐 **Wildcard-router** | Rut `provider/*` mønstre til enhver udbyder dynamisk |
352
+ | 🧠 **Tænkende budget** | Passthrough, auto, brugerdefinerede og adaptive tilstande til ræsonnerende modeller |
353
+ | 💬 **System Prompt Injection** | Global systemprompt anvendt på tværs af alle anmodninger |
354
+ | 📄 **Responses API** | Fuld OpenAI Responses API (`/v1/responses`) understøttelse af Codex |
355
+
356
+ ### 🎵 Multi-Modal API'er
357
+
358
+ | Funktion | Hvad det gør |
359
+ | ------------------------ | -------------------------------------------------- |
360
+ | 🖼️ **Billedgenerering** | `/v1/images/generations` — 4 udbydere, 9+ modeller |
361
+ | 📐 **Indlejringer** | `/v1/embeddings` — 6 udbydere, 9+ modeller |
362
+ | 🎤 **Lydtransskription** | `/v1/audio/transcriptions` — Whisper-kompatibel |
363
+ | 🔊 **Tekst-til-tale** | `/v1/audio/speech` — Multi-udbyder lydsyntese |
364
+ | 🛡️ **Moderationer** | `/v1/moderations` — Indholdssikkerhedstjek |
365
+ | 🔀 **Omrangering** | `/v1/rerank` — Omrangering af dokumentrelevans |
366
+
367
+ ### 🛡️ Modstandsdygtighed og sikkerhed
368
+
369
+ | Funktion | Hvad det gør |
370
+ | -------------------------------- | ------------------------------------------------------------------------------ |
371
+ | 🔌 **Circuit Breaker** | Automatisk åbning/lukning pr. udbyder med konfigurerbare tærskler |
372
+ | 🛡️ **Anti-tordenbesætning** | Mutex + semafor-hastighedsgrænse for API-nøgleudbydere |
373
+ | 🧠 **Semantisk cache** | To-lags cache (signatur + semantisk) reducerer omkostninger og ventetid |
374
+ | ⚡ **Anmod om idempotens** | 5s dedup-vindue for duplikerede anmodninger |
375
+ | 🔒 **TLS Fingerprint Spoofing** | Omgå TLS-baseret botdetektion via wreq-js |
376
+ | 🌐 **IP-filtrering** | Tilladelsesliste/blokeringsliste til API-adgangskontrol |
377
+ | 📊 **Redigerbare satsgrænser** | Konfigurerbar RPM, min. gap og maks. samtidighed på systemniveau |
378
+ | 🛡 **API-endepunktsbeskyttelse** | Auth gating + udbyderblokering for `/models` slutpunktet |
379
+ | 🔒 **Proxysynlighed** | Farvekodede badges: 🟢 global, 🟡 udbyder, 🔵 per forbindelse med IP-skærm |
380
+ | 🌐 **3-Level Proxy Config** | Konfigurer proxyer på globalt niveau, pr. udbyder eller pr. forbindelsesniveau |
381
+
382
+ ### 📊 Observerbarhed og analyse
383
+
384
+ | Funktion | Hvad det gør |
385
+ | --------------------------- | ------------------------------------------------------------------------------------- |
386
+ | 📝 **Anmod om logning** | Fejlretningstilstand med fuld anmodnings-/svarlogs |
387
+ | 💾 **SQLite Proxy Logs** | Vedvarende proxy-logfiler overlever genstart af server |
388
+ | 📊 **Analytics Dashboard** | Recharts-drevet: statkort, modelbrugsdiagram, udbydertabel |
389
+ | 📈 **Fremskridtssporing** | Opt-in SSE-fremskridtsbegivenheder til streaming |
390
+ | 🧪 **LLM-evalueringer** | Gyldne sæt test med 4 kampstrategier |
391
+ | 🔍 **Anmod om telemetri** | p50/p95/p99 latenstidsaggregering + X-Request-Id-sporing |
392
+ | 📋 **Log Dashboard** | Samlet side med 4 faner: Anmodningslogfiler, Proxylogfiler, Revisionslogfiler, Konsol |
393
+ | 🖥️ **Konsol Log Viewer** | Real-time terminal-stil fremviser med niveau filter, søgning, auto-scroll |
394
+ | 📑 **Filbaseret logning** | Konsolinterceptor fanger alt output til JSON-logfil med rotation |
395
+ | 🏥 **Sundhedskontrolpanel** | Systemets oppetid, strømafbrydertilstande, lockouts, cachestatistik |
396
+ | 💰 **Omkostningssporing** | Budgetstyring + priskonfiguration pr. model |
397
+
398
+ ### ☁️ Implementering og synkronisering
399
+
400
+ | Funktion | Hvad det gør |
401
+ | ---------------------------- | ------------------------------------------------------------------------ |
402
+ | 💾 **Cloud Sync** | Synkroniser konfiguration på tværs af enheder via Cloudflare Workers |
403
+ | 🌐 **Deploy hvor som helst** | Localhost, VPS, Docker, Cloudflare Workers |
404
+ | 🔑 **API Key Management** | Generer, roter og omfang API-nøgler pr. udbyder |
405
+ | 🧙 **Onboarding Wizard** | 4-trins guidet opsætning for førstegangsbrugere |
406
+ | 🔧 **CLI Tools Dashboard** | Et-klik konfigurer Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
407
+ | 🔄 **DB-sikkerhedskopier** | Automatisk backup, gendannelse, eksport og import for alle indstillinger |
408
+ | 🌐 **Internationalisering** | Fuld i18n med next-intl — engelsk + portugisisk (Brasilien) support |
409
+ | 🌍 **Sprogvælger** | Globusikon i overskriften til sprogskift i realtid (🇺🇸/🇧🇷) |
410
+ | 📂 **Tilpasset datakatalog** | `DATA_DIR` env var for at tilsidesætte standard `~/.omniroute` lagersti |
411
+
412
+ <details>
413
+ <summary><b>📖 Funktionsdetaljer</b></summary>
414
+
415
+ ### 🎯 Smart 4-Tier Fallback
416
+
417
+ Opret kombinationer med automatisk fallback:
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
+ ### 📊 Kvotesporing i realtid
430
+
431
+ - Tokenforbrug pr. udbyder
432
+ - Nulstil nedtælling (5 timer, dagligt, ugentligt)
433
+ - Omkostningsestimat for betalte niveauer
434
+ - Månedlige udgiftsrapporter
435
+
436
+ ### 🔄 Formatoversættelse
437
+
438
+ Problemfri oversættelse mellem formater:
439
+
440
+ - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI-svar**
441
+ - Dit CLI-værktøj sender OpenAI-format → OmniRoute oversætter → Udbyder modtager oprindeligt format
442
+ - Fungerer med ethvert værktøj, der understøtter brugerdefinerede OpenAI-endepunkter
443
+ - **Responssanering** — Fjerner ikke-standardfelter for streng OpenAI SDK-kompatibilitet
444
+ - **Rollenormalisering** — `developer` → `system` for ikke-OpenAI; `system` → `user` til GLM/ERNIE-modeller
445
+ - **Tænk tag-udtrækning** — `<think>` blokke → `reasoning_content` til tænkende modeller
446
+ - **Struktureret output** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
447
+
448
+ ### 👥 Support til flere konti
449
+
450
+ - Tilføj flere konti pr. udbyder
451
+ - Auto round-robin eller prioritetsbaseret routing
452
+ - Fallback til næste konto, når man rammer kvoten
453
+
454
+ ### 🔄 Automatisk token-opdatering
455
+
456
+ - OAuth-tokens opdateres automatisk før udløb
457
+ - Ingen manuel gengodkendelse nødvendig
458
+ - Problemfri oplevelse på tværs af alle udbydere
459
+
460
+ ### 🎨 Brugerdefinerede kombinationer
461
+
462
+ - Opret ubegrænsede modelkombinationer
463
+ - 6 strategier: fill-first, round-robin, power-of-to-choices, tilfældig, mindst brugt, omkostningsoptimeret
464
+ - Del kombinationer på tværs af enheder med Cloud Sync
465
+
466
+ ### 🏥 Health Dashboard
467
+
468
+ - Systemstatus (oppetid, version, hukommelsesforbrug)
469
+ - Strømafbrydertilstande pr. udbyder (lukket/åbent/halvt åbent)
470
+ - Takstgrænsestatus og aktive lockouts
471
+ - Signatur cache statistik
472
+ - Latency-telemetri (p50/p95/p99) + prompt-cache
473
+ - Nulstil sundhedsstatus med et enkelt klik
474
+
475
+ ### 🔧 Oversætterlegeplads
476
+
477
+ OmniRoute inkluderer en kraftfuld indbygget oversætterlegeplads med **4 tilstande** til fejlretning, test og overvågning af API-oversættelser:
478
+
479
+ | Tilstand | Beskrivelse |
480
+ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
481
+ | **💻 Legeplads** | Direkte formatoversættelse — indsæt enhver API-anmodningstekst og se øjeblikkeligt, hvordan OmniRoute oversætter det mellem udbyderformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Indeholder eksempelskabeloner og automatisk genkendelse af formater. |
482
+ | **💬 Chattester** | Send rigtige chatanmodninger gennem OmniRoute og se den fulde rundrejse: dit input, den oversatte anmodning, udbyderens svar og det oversatte svar tilbage. Uvurderlig til validering af combo routing. |
483
+ | **🧪 Test bænk** | Batch-testtilstand – definer flere testcases med forskellige input og forventede output, kør dem alle på én gang, og sammenlign resultater på tværs af udbydere og modeller. |
484
+ | **📱 Live Monitor** | Overvågning af anmodninger i realtid — se indgående anmodninger, mens de flyder gennem OmniRoute, se formatoversættelser, der foregår live, og identificer problemer med det samme. |
485
+
486
+ **Adgang:** Dashboard → Oversætter (sidebjælke)
487
+
488
+ ### 💾 Cloud Sync
489
+
490
+ - Synkroniser udbydere, kombinationer og indstillinger på tværs af enheder
491
+ - Automatisk baggrundssynkronisering
492
+ - Sikker krypteret opbevaring
493
+
494
+ </details>
495
+
496
+ ---
497
+
498
+ ## 📖 Opsætningsvejledning
499
+
500
+ <details>
501
+ <summary><b>💳 Abonnementsudbydere</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
+ **Prof tip:** Brug Opus til komplekse opgaver, Sonnet for hurtighed. OmniRoute sporer kvote pr. model!
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 (GRATIS 180K/måned!)
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
+ **Bedste værdi:** Kæmpe gratis niveau! Brug dette før betalte niveauer.
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-nøgleudbydere</b></summary>
561
+
562
+ ### NVIDIA NIM (GRATIS 1000 kreditter!)
563
+
564
+ 1. Tilmeld dig: [build.nvidia.com](https://build.nvidia.com)
565
+ 2. Få gratis API-nøgle (1000 slutningskreditter inkluderet)
566
+ 3. Dashboard → Tilføj udbyder → NVIDIA NIM:
567
+ - API-nøgle: `nvapi-your-key`
568
+
569
+ **Modeller:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` og mere end 50
570
+
571
+ **Prof tip:** OpenAI-kompatibel API — fungerer problemfrit med OmniRoutes formatoversættelse!
572
+
573
+ ### DeepSeek
574
+
575
+ 1. Tilmeld dig: [platform.deepseek.com](https://platform.deepseek.com)
576
+ 2. Hent API-nøgle
577
+ 3. Dashboard → Tilføj udbyder → DeepSeek
578
+
579
+ **Modeller:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
580
+
581
+ ### Groq (gratis niveau tilgængelig!)
582
+
583
+ 1. Tilmeld dig: [console.groq.com](https://console.groq.com)
584
+ 2. Få API-nøgle (gratis niveau inkluderet)
585
+ 3. Dashboard → Tilføj udbyder → Groq
586
+
587
+ **Modeller:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
588
+
589
+ **Prof tip:** Ultrahurtig slutning — bedst til realtidskodning!
590
+
591
+ ### OpenRouter (100+ modeller)
592
+
593
+ 1. Tilmeld dig: [openrouter.ai](https://openrouter.ai)
594
+ 2. Hent API-nøgle
595
+ 3. Dashboard → Tilføj udbyder → OpenRouter
596
+
597
+ **Modeller:** Få adgang til mere end 100 modeller fra alle større udbydere via en enkelt API-nøgle.
598
+
599
+ </details>
600
+
601
+ <details>
602
+ <summary><b>💰 Billige udbydere (backup)</b></summary>
603
+
604
+ ### GLM-4.7 (Daglig nulstilling, $0,6/1 mio.)
605
+
606
+ 1. Tilmeld dig: [Zhipu AI](https://open.bigmodel.cn/)
607
+ 2. Hent API-nøgle fra Coding Plan
608
+ 3. Dashboard → Tilføj API-nøgle:
609
+ - Udbyder: `glm`
610
+ - API-nøgle: `your-key`
611
+
612
+ **Brug:** `glm/glm-4.7`
613
+
614
+ **Pro-tip:** Coding Plan tilbyder 3× kvote til 1/7 pris! Nulstil dagligt 10:00.
615
+
616
+ ### MiniMax M2.1 (5 timers nulstilling, $0,20/1 mio.)
617
+
618
+ 1. Tilmeld dig: [MiniMax](https://www.minimax.io/)
619
+ 2. Hent API-nøgle
620
+ 3. Dashboard → Tilføj API-nøgle
621
+
622
+ **Brug:** `minimax/MiniMax-M2.1`
623
+
624
+ **Prof tip:** Billigste mulighed for lang sammenhæng (1M tokens)!
625
+
626
+ ### Kimi K2 ($9/måned lejlighed)
627
+
628
+ 1. Abonner: [Moonshot AI](https://platform.moonshot.ai/)
629
+ 2. Hent API-nøgle
630
+ 3. Dashboard → Tilføj API-nøgle
631
+
632
+ **Brug:** `kimi/kimi-latest`
633
+
634
+ **Prof tip:** Fast $9/måned for 10M tokens = $0,90/1M effektive omkostninger!
635
+
636
+ </details>
637
+
638
+ <details>
639
+ <summary><b>🆓 GRATIS udbydere (nødbackup)</b></summary>
640
+
641
+ ### iFlow (8 GRATIS modeller)
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 GRATIS modeller)
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 GRATIS)
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>🎨 Opret kombinationer</b></summary>
684
+
685
+ ### Eksempel 1: Maksimer abonnement → Billig backup
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
+ ### Eksempel 2: Kun gratis (nul omkostninger)
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-integration</b></summary>
715
+
716
+ ### Markør 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
+ Brug siden **CLI Tools** i dashboardet til konfiguration med et enkelt klik, eller rediger `~/.claude/settings.json` manuelt.
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
+ **Mulighed 1 — Dashboard (anbefalet):**
741
+
742
+ ```
743
+ Dashboard → CLI Tools → OpenClaw → Select Model → Apply
744
+ ```
745
+
746
+ **Mulighed 2 — Manuel:** Rediger `~/.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
+ > **Bemærk:** OpenClaw fungerer kun med lokale OmniRoute. Brug `127.0.0.1` i stedet for `localhost` for at undgå problemer med IPv6-opløsning.
763
+
764
+ ### Cline / Fortsæt / 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
+ ## 📊 Tilgængelige modeller
779
+
780
+ <details>
781
+ <summary><b>Se alle tilgængelige modeller</b></summary>
782
+
783
+ **Claude-kode (`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
+ **Codex (`cx/`)** - Plus/Pro:
790
+
791
+ - `cx/gpt-5.2-codex`
792
+ - `cx/gpt-5.1-codex-max`
793
+
794
+ **Gemini CLI (`gc/`)** - GRATIS:
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/`)** - GRATIS kreditter:
805
+
806
+ - `nvidia/llama-3.3-70b-instruct`
807
+ - `nvidia/mistral-7b-instruct`
808
+ - 50+ flere modeller på [build.nvidia.com](https://build.nvidia.com)
809
+
810
+ **GLM (`glm/`)** - 0,6 USD/1 mio.
811
+
812
+ - `glm/glm-4.7`
813
+
814
+ **MiniMax (`minimax/`)** - 0,2 USD/1 mio.
815
+
816
+ - `minimax/MiniMax-M2.1`
817
+
818
+ **iFlow (`if/`)** - GRATIS:
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/`)** - GRATIS:
827
+
828
+ - `qw/qwen3-coder-plus`
829
+ - `qw/qwen3-coder-flash`
830
+
831
+ **Kiro (`kr/`)** - GRATIS:
832
+
833
+ - `kr/claude-sonnet-4.5`
834
+ - `kr/claude-haiku-4.5`
835
+
836
+ **OpenRouter (`or/`)** - 100+ modeller:
837
+
838
+ - `or/anthropic/claude-4-sonnet`
839
+ - `or/google/gemini-2.5-pro`
840
+ - Enhver model fra [openrouter.ai/models](https://openrouter.ai/models)
841
+
842
+ </details>
843
+
844
+ ---
845
+
846
+ ## 🧪 Evalueringer (evalueringer)
847
+
848
+ OmniRoute inkluderer en indbygget evalueringsramme til at teste LLM-svarkvaliteten mod et gyldent sæt. Få adgang til det via **Analytics → Evals** i dashboardet.
849
+
850
+ ### Indbygget gyldent sæt
851
+
852
+ Det forudindlæste "OmniRoute Golden Set" indeholder 10 testcases, der dækker:
853
+
854
+ - Hilsen, matematik, geografi, kodegenerering
855
+ - JSON format compliance, oversættelse, markdown
856
+ - Sikkerhedsafvisning (skadeligt indhold), optælling, boolsk logik
857
+
858
+ ### Evalueringsstrategier
859
+
860
+ | Strategi | Beskrivelse | Eksempel |
861
+ | ---------- | ----------------------------------------------------------------------- | -------------------------------- |
862
+ | `exact` | Output skal matche nøjagtigt | `"4"` |
863
+ | `contains` | Output skal indeholde understreng (uafhængig af store og små bogstaver) | `"Paris"` |
864
+ | `regex` | Output skal matche regex-mønster | `"1.*2.*3"` |
865
+ | `custom` | Brugerdefineret JS-funktion returnerer sand/falsk | `(output) => output.length > 10` |
866
+
867
+ ---
868
+
869
+ ## 🔐 OAuth em Servidor Remoto (Remote OAuth Setup)
870
+
871
+ <a name="oauth-em-servidor-remoto"></a>
872
+
873
+ > **⚠️ VIGTIGT til brugere af OmniRoute med VPS/Docker/server-fjernbetjening**
874
+
875
+ ### Kan du bruge Antigravity / Gemini CLI til at udføre fjernbetjeninger?
876
+
877
+ Os testedores **Antigravity** og **Gemini CLI** usam **Google OAuth 2.0** for autenticação. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pré-cadastradas no Google Cloud Console do aplicativo.
878
+
879
+ Som credenciais OAuth embutidas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google afviser en autenticação com:
880
+
881
+ ```
882
+ Error 400: redirect_uri_mismatch
883
+ ```
884
+
885
+ ### Løsning: Konfigurer OAuth, der er godkendt
886
+
887
+ Você precisa criar um **OAuth 2.0 Client ID** ingen Google Cloud Console med en URI, der udfører denne service.
888
+
889
+ #### Passo a passo
890
+
891
+ **1. Adgang til 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 Client ID**
896
+
897
+ - Klik på dem **"+ Opret legitimationsoplysninger"** → **"OAuth-klient-id"**
898
+ - Tipo de aplicativo: **"Webapplikation"**
899
+ - Navn: escolha qualquer nome (eks.: `OmniRoute Remote`)
900
+
901
+ **3. Adicione som autoriseret omdirigerings-URI**
902
+
903
+ Ingen campo **"Autoriseret omdirigerings-URI'er"**, adicione:
904
+
905
+ ```
906
+ https://seu-servidor.com/callback
907
+ ```
908
+
909
+ > Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
910
+
911
+ **4. Salve e copy as credenciais**
912
+
913
+ Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
914
+
915
+ **5. Konfigurer som variáveis de ambiente**
916
+
917
+ No 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 → Udbydere → Antigravity (ou Gemini CLI) → OAuth
943
+
944
+ Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` og autenticação funcionará.
945
+
946
+ ---
947
+
948
+ ### Løsning midlertidigt (som konfigureret 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. O OmniRoute abrirá en URL de autorização til Google
953
+ 2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
954
+ 3. **Kopier en URL komplet** da barra de endereço do sin browser (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. Klik på **"Forbind"**
957
+
958
+ > Este workaround funciona porque or código de autorização na URL é válido independente do redirect ter carregado or não.
959
+
960
+ ---
961
+
962
+ ## 🐛 Fejlfinding
963
+
964
+ <details>
965
+ <summary><b>Klik for at udvide fejlfindingsvejledning</b></summary>
966
+
967
+ **"Sprogmodellen leverede ikke beskeder"**
968
+
969
+ - Udbyderkvote opbrugt → Tjek dashboardkvotesporing
970
+ - Løsning: Brug combo fallback eller skift til et billigere niveau
971
+
972
+ **Satsbegrænsende**
973
+
974
+ - Abonnementskontingent ude → Fallback til GLM/MiniMax
975
+ - Tilføj kombination: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
976
+
977
+ **OAuth-token er udløbet**
978
+
979
+ - Automatisk genopfrisket af OmniRoute
980
+ - Hvis problemerne fortsætter: Dashboard → Udbyder → Genopret forbindelse
981
+
982
+ **Høje omkostninger**
983
+
984
+ - Tjek brugsstatistik i Dashboard → Omkostninger
985
+ - Skift primær model til GLM/MiniMax
986
+ - Brug gratis niveau (Gemini CLI, iFlow) til ikke-kritiske opgaver
987
+
988
+ **Dashboard åbner på forkert port**
989
+
990
+ - Sæt `PORT=20128` og `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
991
+
992
+ **Skysynkroniseringsfejl**
993
+
994
+ - Bekræft `BASE_URL` peger på din løbeforekomst
995
+ - Bekræft `CLOUD_URL` point til dit forventede cloud-endepunkt
996
+ - Hold `NEXT_PUBLIC_*` værdier på linje med værdier på serversiden
997
+
998
+ **Første login virker ikke**
999
+
1000
+ - Tjek `INITIAL_PASSWORD` i `.env`
1001
+ - Hvis den ikke er angivet, er reserveadgangskoden `123456`
1002
+
1003
+ **Ingen anmodningslogfiler**
1004
+
1005
+ - Indstil `ENABLE_REQUEST_LOGS=true` i `.env`
1006
+
1007
+ **Forbindelsestest viser "Ugyldig" for OpenAI-kompatible udbydere**
1008
+
1009
+ - Mange udbydere eksponerer ikke et `/models` slutpunkt
1010
+ - OmniRoute v1.0.6+ inkluderer fallback-validering via chatafslutninger
1011
+ - Sørg for, at basis-URL'en inkluderer suffikset `/v1`
1012
+
1013
+ </details>
1014
+
1015
+ ---
1016
+
1017
+ ## 🛠️ Tech Stack
1018
+
1019
+ - **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ er **ikke understøttet** — `better-sqlite3` native binære filer er inkompatible)
1020
+ - **Sprog**: TypeScript 5.9 — **100 % TypeScript** på tværs af `src/` og `open-sse/` (v1.0.6)
1021
+ - **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
1022
+ - **Database**: LowDB (JSON) + SQLite (domænetilstand + proxylogfiler)
1023
+ - **Streaming**: Server-sendte hændelser (SSE)
1024
+ - **Auth**: OAuth 2.0 (PKCE) + JWT + API-nøgler
1025
+ - **Test**: Node.js testløber (368+ enhedstest)
1026
+ - **CI/CD**: GitHub-handlinger (automatisk npm-udgivelse + Docker Hub ved udgivelse)
1027
+ - **Websted**: [omniroute.online](https://omniroute.online)
1028
+ - **Pakke**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1029
+ - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1030
+ - **Resiliens**: Circuit breaker, eksponentiel backoff, anti-tordenbesætning, TLS spoofing
1031
+
1032
+ ---
1033
+
1034
+ ## 📖 Dokumentation
1035
+
1036
+ | Dokument | Beskrivelse |
1037
+ | -------------------------------------------- | -------------------------------------------------------- |
1038
+ | [User Guide](docs/USER_GUIDE.md) | Udbydere, kombinationer, CLI-integration, implementering |
1039
+ | [API Reference](docs/API_REFERENCE.md) | Alle endepunkter med eksempler |
1040
+ | [Troubleshooting](docs/TROUBLESHOOTING.md) | Almindelige problemer og løsninger |
1041
+ | [Architecture](docs/ARCHITECTURE.md) | Systemarkitektur og indre |
1042
+ | [Contributing](CONTRIBUTING.md) | Udviklingsopsætning og retningslinjer |
1043
+ | [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0-specifikation |
1044
+ | [Security Policy](SECURITY.md) | Sårbarhedsrapportering og sikkerhedspraksis |
1045
+ | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Komplet guide: VM + nginx + Cloudflare opsætning |
1046
+ | [Features Gallery](docs/FEATURES.md) | Visuel dashboard-rundvisning med skærmbilleder |
1047
+
1048
+ ### 📸 Dashboard Preview
1049
+
1050
+ <details>
1051
+ <summary><b>Klik for at se skærmbilleder af dashboard</b></summary>
1052
+
1053
+ | Side | Skærmbillede |
1054
+ | ----------------- | ------------------------------------------------- |
1055
+ | **Udbydere** | ![Providers](docs/screenshots/01-providers.png) |
1056
+ | **Komboer** | ![Combos](docs/screenshots/02-combos.png) |
1057
+ | **Analyse** | ![Analytics](docs/screenshots/03-analytics.png) |
1058
+ | **Sundhed** | ![Health](docs/screenshots/04-health.png) |
1059
+ | **Oversætter** | ![Translator](docs/screenshots/05-translator.png) |
1060
+ | **Indstillinger** | ![Settings](docs/screenshots/06-settings.png) |
1061
+ | **CLI-værktøjer** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1062
+ | **Brugslogfiler** | ![Usage](docs/screenshots/08-usage.png) |
1063
+ | **Endpunkt** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1064
+
1065
+ </details>
1066
+
1067
+ ---
1068
+
1069
+ ## 🗺️ Køreplan
1070
+
1071
+ OmniRoute har **210+ funktioner planlagt** på tværs af flere udviklingsfaser. Her er nøgleområderne:
1072
+
1073
+ | Kategori | Planlagte funktioner | Højdepunkter |
1074
+ | -------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------- |
1075
+ | 🧠 **Routing & intelligens** | 25+ | Routing med laveste latens, tag-baseret routing, kvote preflight, valg af P2C-konto |
1076
+ | 🔒 **Sikkerhed og overholdelse** | 20+ | SSRF-hærdning, tilsløring af legitimationsoplysninger, hastighedsgrænse pr. slutpunkt, styringsnøgleomfang |
1077
+ | 📊 **Observabilitet** | 15+ | OpenTelemetry-integration, kvoteovervågning i realtid, omkostningssporing pr. model |
1078
+ | 🔄 **Udbyderintegrationer** | 20+ | Dynamisk modelregistrering, udbydernedkøling, multi-konto Codex, Copilot-kvoteparsing |
1079
+ | ⚡ **Ydeevne** | 15+ | Dobbelt cachelag, promptcache, svarcache, streaming keepalive, batch API |
1080
+ | 🌐 **Økosystem** | 10+ | WebSocket API, config hot-reload, distribueret config butik, kommerciel tilstand |
1081
+
1082
+ ### 🔜 Kommer snart
1083
+
1084
+ - 🔗 **OpenCode-integration** — Native udbyderunderstøttelse af OpenCode AI-kodnings-IDE
1085
+ - 🔗 **TRAE-integration** — Fuld understøttelse af TRAE AI-udviklingsrammen
1086
+ - 📦 **Batch API** — Asynkron batchbehandling til masseanmodninger
1087
+ - 🎯 **Tag-baseret Routing** — Ruteanmodninger baseret på tilpassede tags og metadata
1088
+ - 💰 **Laveste omkostningsstrategi** — Vælg automatisk den billigste tilgængelige udbyder
1089
+
1090
+ > 📝 Fuld funktionsspecifikationer tilgængelige i [link](docs/new-features/) (217 detaljerede specifikationer)
1091
+
1092
+ ---
1093
+
1094
+ ## 📧 Support
1095
+
1096
+ > 💬 **Tilmeld dig vores fællesskab!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Få hjælp, del tips, og hold dig opdateret.
1097
+
1098
+ - **Websted**: [omniroute.online](https://omniroute.online)
1099
+ - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
1100
+ - **Problemer**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
1101
+ - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
1102
+ - **Originalt projekt**: [9router by decolua](https://github.com/decolua/9router)
1103
+
1104
+ ---
1105
+
1106
+ ## 👥 Bidragydere
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
+ ### Sådan bidrager du
1111
+
1112
+ 1. Fork depotet
1113
+ 2. Opret din funktionsgren (`git checkout -b feature/amazing-feature`)
1114
+ 3. Bekræft dine ændringer (`git commit -m 'Add amazing feature'`)
1115
+ 4. Skub til grenen (`git push origin feature/amazing-feature`)
1116
+ 5. Åbn en pull-anmodning
1117
+
1118
+ Se [CONTRIBUTING.md](CONTRIBUTING.md) for detaljerede retningslinjer.
1119
+
1120
+ ### Frigiver en ny version
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
+ ## 📊 Stjernehistorie
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
+ ## 🙏 Tak
1142
+
1143
+ Særlig tak til **[9router](https://github.com/decolua/9router)** af **[decolua](https://github.com/decolua)** — det originale projekt, der inspirerede denne gaffel. OmniRoute bygger på det utrolige fundament med yderligere funktioner, multimodale API'er og en fuld TypeScript-omskrivning.
1144
+
1145
+ Særlig tak til **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — den originale Go-implementering, der inspirerede denne JavaScript-port.
1146
+
1147
+ ---
1148
+
1149
+ ## 📄 Licens
1150
+
1151
+ MIT-licens - se [LICENSE](LICENSE) for detaljer.
1152
+
1153
+ ---
1154
+
1155
+ ---
1156
+
1157
+ ## 🇧🇷 OmniRoute — Gateway de IA Gratis
1158
+
1159
+ <a name="-omniroute--gateway-de-ia-gratuito"></a>
1160
+
1161
+ ### Nunca pare de codar. Roteamento inteligente para **modelos de IA GRATUITOS e de baixo custo** com fallback automático.
1162
+
1163
+ _Seu proxy universal de API — et slutpunkt, 36+ tests, nul nedetid._
1164
+
1165
+ ### 🌐 Internacionalização (i18n)
1166
+
1167
+ O dashboard til OmniRoute understøtter **multiplos idiomas**. Atualmente disponível em:
1168
+
1169
+ | Idioma | Kode | Status |
1170
+ | --------------------- | ------- | ---------- |
1171
+ | 🇺🇸 Engelsk | `en` | ✅ Komplet |
1172
+ | 🇧🇷 Português (Brasil) | `pt-BR` | ✅ Komplet |
1173
+
1174
+ **Para trocar o idioma:** Click no selector de idioma (🇺🇸 EN) no header do dashboard → selection o idioma desejado.
1175
+
1176
+ **Sådan tilføjes et nyt formsprog:**
1177
+
1178
+ 1. Crie `src/i18n/messages/{codigo}.json` baseado em `en.json`
1179
+ 2. Adicione o código em `src/i18n/config.ts` → `LOCALES` og `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+ provedores de IA** — Claude, GPT, Gemini, Llama, Qwen, DeepSeek, e mais
1203
+ - **Roteamento inteligente** — Fallback automático 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
+ - **Combos personalizados** — 6 estratégias de roteamento
1209
+ - **Dashboard komplet** — Overvågning, logfiler, analyser, konfigurationer
1210
+ - **CLI Tools** — Konfigurer Claude Code, Codex, Cursor, Cline com um clique
1211
+ - **100% TypeScript** — Código limpo e tipado
1212
+
1213
+ ### 📖 Dokumentation
1214
+
1215
+ | Dokument | Beskrivelse |
1216
+ | ----------------------------------------------- | ---------------------------------------------- |
1217
+ | [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, combos, CLI, implementering |
1218
+ | [Referência da API](docs/API_REFERENCE.md) | Todos os endepunkter com eksempler |
1219
+ | [Solução de Problemas](docs/TROUBLESHOOTING.md) | Problemas comuns e soluções |
1220
+ | [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura e internos do systema |
1221
+ | [Contribuição](CONTRIBUTING.md) | Opsætning af desenvolvimento og retningslinjer |
1222
+ | [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Komplet: VM + nginx + Cloudflare |
1223
+
1224
+ ### 📧 Støtte
1225
+
1226
+ > 💬 **Entre para a comunidade!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Træk til, kompartilhe dicas e fique atualizado.
1227
+
1228
+ - **Websted**: [omniroute.online](https://omniroute.online)
1229
+ - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
1230
+ - **Problemer**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
1231
+
1232
+ ---
1233
+
1234
+ <div align="center">
1235
+ <sub>Bygget med ❤️ for udviklere, der koder 24/7</sub>
1236
+ <br/>
1237
+ <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1238
+ </div>