omniroute 1.6.9 → 1.7.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 (226) hide show
  1. package/README.ar.md +257 -0
  2. package/README.bg.md +257 -0
  3. package/README.da.md +257 -0
  4. package/README.de.md +257 -0
  5. package/README.es.md +257 -0
  6. package/README.fi.md +257 -0
  7. package/README.fr.md +257 -0
  8. package/README.he.md +257 -0
  9. package/README.hu.md +257 -0
  10. package/README.id.md +257 -0
  11. package/README.in.md +257 -0
  12. package/README.it.md +257 -0
  13. package/README.ja.md +257 -0
  14. package/README.ko.md +257 -0
  15. package/README.md +259 -0
  16. package/README.ms.md +257 -0
  17. package/README.nl.md +257 -0
  18. package/README.no.md +257 -0
  19. package/README.phi.md +257 -0
  20. package/README.pl.md +257 -0
  21. package/README.pt-BR.md +257 -0
  22. package/README.pt.md +257 -0
  23. package/README.ro.md +257 -0
  24. package/README.ru.md +257 -0
  25. package/README.sk.md +257 -0
  26. package/README.sv.md +257 -0
  27. package/README.th.md +257 -0
  28. package/README.uk-UA.md +257 -0
  29. package/README.vi.md +257 -0
  30. package/README.zh-CN.md +257 -0
  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_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  47. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/_global-error.html +2 -2
  58. package/app/.next/server/app/_global-error.rsc +1 -1
  59. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  60. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  61. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  62. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  63. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  64. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  65. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  72. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +4 -4
  74. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
  76. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  78. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
  80. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +1 -1
  82. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
  84. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  86. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  89. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  91. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  93. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
  95. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  105. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/models/route.js +1 -1
  120. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  122. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  134. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/providers/route.js +1 -1
  144. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/docs/page.js +1 -1
  203. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  207. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  208. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  209. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app-paths-manifest.json +28 -28
  212. package/app/.next/server/chunks/438.js +1 -1
  213. package/app/.next/server/chunks/5393.js +1 -1
  214. package/app/.next/server/chunks/7544.js +1 -1
  215. package/app/.next/server/chunks/8429.js +1 -1
  216. package/app/.next/server/pages/500.html +2 -2
  217. package/app/.next/server/server-reference-manifest.js +1 -1
  218. package/app/.next/server/server-reference-manifest.json +1 -1
  219. package/app/.next/static/chunks/{5846-a32c3b3f717e0e73.js → 5846-81e3478c82ba1c2d.js} +1 -1
  220. package/app/package.json +1 -1
  221. package/app/src/mitm/cert/generate.ts +2 -2
  222. package/app/src/mitm/manager.ts +4 -4
  223. package/app/src/mitm/server.ts +11 -3
  224. package/package.json +1 -1
  225. /package/app/.next/static/{Gj-XTVNHpbHGOb3WgUYuu → q3Cs_iVHjquNMTXn09P8X}/_buildManifest.js +0 -0
  226. /package/app/.next/static/{Gj-XTVNHpbHGOb3WgUYuu → q3Cs_iVHjquNMTXn09P8X}/_ssgManifest.js +0 -0
package/README.ar.md CHANGED
@@ -157,6 +157,263 @@ Result: Never stop coding, minimal cost
157
157
 
158
158
  ---
159
159
 
160
+ ## 🎯 What OmniRoute Solves — 16 Real Pain Points
161
+
162
+ > **Every developer using AI tools faces these problems daily.** OmniRoute was built to solve them all — from cost overruns to regional blocks, from broken OAuth flows to zero observability.
163
+
164
+ <details>
165
+ <summary><b>💸 1. "I pay for an expensive subscription but still get interrupted by limits"</b></summary>
166
+
167
+ Developers pay $20–200/month for Claude Pro, Codex Pro, or GitHub Copilot. Even paying, quota has a ceiling — 5h of usage, weekly limits, or per-minute rate limits. Mid-coding session, the provider stops responding and the developer loses flow and productivity.
168
+
169
+ **How OmniRoute solves it:**
170
+
171
+ - **Smart 4-Tier Fallback** — If subscription quota runs out, automatically redirects to API Key → Cheap → Free with zero manual intervention
172
+ - **Real-Time Quota Tracking** — Shows token consumption in real-time with reset countdown (5h, daily, weekly)
173
+ - **Multi-Account Support** — Multiple accounts per provider with auto round-robin — when one runs out, switches to the next
174
+ - **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
175
+ - **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
176
+
177
+ </details>
178
+
179
+ <details>
180
+ <summary><b>🔌 2. "I need to use multiple providers but each has a different API"</b></summary>
181
+
182
+ OpenAI uses one format, Claude (Anthropic) uses another, Gemini yet another. If a dev wants to test models from different providers or fallback between them, they need to reconfigure SDKs, change endpoints, deal with incompatible formats. Custom providers (FriendLI, NIM) have non-standard model endpoints.
183
+
184
+ **How OmniRoute solves it:**
185
+
186
+ - **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 36+ providers
187
+ - **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
188
+ - **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
189
+ - **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
190
+ - **Think Tag Extraction** — Extracts `<think>` blocks from models like DeepSeek R1 into standardized `reasoning_content`
191
+ - **Structured Output for Gemini** — `json_schema` → `responseMimeType`/`responseSchema` automatic conversion
192
+ - **`stream` defaults to `false`** — Aligns with OpenAI spec, avoiding unexpected SSE in Python/Rust/Go SDKs
193
+
194
+ </details>
195
+
196
+ <details>
197
+ <summary><b>🌐 3. "My AI provider blocks my region/country"</b></summary>
198
+
199
+ Providers like OpenAI/Codex block access from certain geographic regions. Users get errors like `unsupported_country_region_territory` during OAuth and API connections. This is especially frustrating for developers from developing countries.
200
+
201
+ **How OmniRoute solves it:**
202
+
203
+ - **3-Level Proxy Config** — Configurable proxy at 3 levels: global (all traffic), per-provider (one provider only), and per-connection/key
204
+ - **Color-Coded Proxy Badges** — Visual indicators: 🟢 global proxy, 🟡 provider proxy, 🔵 connection proxy, always showing the IP
205
+ - **OAuth Token Exchange Through Proxy** — OAuth flow also goes through the proxy, solving `unsupported_country_region_territory`
206
+ - **Connection Tests via Proxy** — Connection tests use the configured proxy (no more direct bypass)
207
+ - **SOCKS5 Support** — Full SOCKS5 proxy support for outbound routing
208
+ - **TLS Fingerprint Spoofing** — Browser-like TLS fingerprint via `wreq-js` to bypass bot detection
209
+
210
+ </details>
211
+
212
+ <details>
213
+ <summary><b>🆓 4. "I want to use AI for coding but I have no money"</b></summary>
214
+
215
+ Not everyone can pay $20–200/month for AI subscriptions. Students, devs from emerging countries, hobbyists, and freelancers need access to quality models at zero cost.
216
+
217
+ **How OmniRoute solves it:**
218
+
219
+ - **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (8 unlimited models), Qwen (3 unlimited models), Kiro (Claude for free), Gemini CLI (180K/month free)
220
+ - **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
221
+ - **NVIDIA NIM Free Credits** — 1000 free credits integrated
222
+ - **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
223
+
224
+ </details>
225
+
226
+ <details>
227
+ <summary><b>🔒 5. "I need to protect my AI gateway from unauthorized access"</b></summary>
228
+
229
+ When exposing an AI gateway to the network (LAN, VPS, Docker), anyone with the address can consume the developer's tokens/quota. Without protection, APIs are vulnerable to misuse, prompt injection, and abuse.
230
+
231
+ **How OmniRoute solves it:**
232
+
233
+ - **API Key Management** — Generation, rotation, and scoping per provider with a dedicated `/dashboard/api-manager` page
234
+ - **Model-Level Permissions** — Restrict API keys to specific models (`openai/*`, wildcard patterns), with Allow All/Restrict toggle
235
+ - **API Endpoint Protection** — Require a key for `/v1/models` and block specific providers from the listing
236
+ - **Auth Guard + CSRF Protection** — All dashboard routes protected with `withAuth` middleware + CSRF tokens
237
+ - **Rate Limiter** — Per-IP rate limiting with configurable windows
238
+ - **IP Filtering** — Allowlist/blocklist for access control
239
+ - **Prompt Injection Guard** — Sanitization against malicious prompt patterns
240
+ - **AES-256-GCM Encryption** — Credentials encrypted at rest
241
+
242
+ </details>
243
+
244
+ <details>
245
+ <summary><b>🛑 6. "My provider went down and I lost my coding flow"</b></summary>
246
+
247
+ AI providers can become unstable, return 5xx errors, or hit temporary rate limits. If a dev depends on a single provider, they're interrupted. Without circuit breakers, repeated retries can crash the application.
248
+
249
+ **How OmniRoute solves it:**
250
+
251
+ - **Circuit Breaker per-provider** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open)
252
+ - **Exponential Backoff** — Progressive retry delays
253
+ - **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
254
+ - **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
255
+ - **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
256
+ - **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
257
+
258
+ </details>
259
+
260
+ <details>
261
+ <summary><b>🔧 7. "Configuring each AI tool is tedious and repetitive"</b></summary>
262
+
263
+ Developers use Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Each tool needs a different config (API endpoint, key, model). Reconfiguring when switching providers or models is a waste of time.
264
+
265
+ **How OmniRoute solves it:**
266
+
267
+ - **CLI Tools Dashboard** — Dedicated page with one-click setup for Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
268
+ - **GitHub Copilot Config Generator** — Generates `chatLanguageModels.json` for VS Code with bulk model selection
269
+ - **Onboarding Wizard** — Guided 4-step setup for first-time users
270
+ - **One endpoint, all models** — Configure `http://localhost:20128/v1` once, access 36+ providers
271
+
272
+ </details>
273
+
274
+ <details>
275
+ <summary><b>🔑 8. "Managing OAuth tokens from multiple providers is hell"</b></summary>
276
+
277
+ Claude Code, Codex, Gemini CLI, Copilot — all use OAuth 2.0 with expiring tokens. Developers need to re-authenticate constantly, deal with `client_secret is missing`, `redirect_uri_mismatch`, and failures on remote servers. OAuth on LAN/VPS is particularly problematic.
278
+
279
+ **How OmniRoute solves it:**
280
+
281
+ - **Auto Token Refresh** — OAuth tokens refresh in background before expiration
282
+ - **OAuth 2.0 (PKCE) Built-in** — Automatic flow for Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
283
+ - **Multi-Account OAuth** — Multiple accounts per provider via JWT/ID token extraction
284
+ - **OAuth LAN/Remote Fix** — Private IP detection for `redirect_uri` + manual URL mode for remote servers
285
+ - **OAuth Behind Nginx** — Uses `window.location.origin` for reverse proxy compatibility
286
+ - **Remote OAuth Guide** — Step-by-step guide for Google Cloud credentials on VPS/Docker
287
+
288
+ </details>
289
+
290
+ <details>
291
+ <summary><b>📊 9. "I don't know how much I'm spending or where"</b></summary>
292
+
293
+ Developers use multiple paid providers but have no unified view of spending. Each provider has its own billing dashboard, but there's no consolidated view. Unexpected costs can pile up.
294
+
295
+ **How OmniRoute solves it:**
296
+
297
+ - **Cost Analytics Dashboard** — Per-token cost tracking and budget management per provider
298
+ - **Budget Limits per Tier** — Spending ceiling per tier that triggers automatic fallback
299
+ - **Per-Model Pricing Configuration** — Configurable prices per model
300
+ - **Usage Statistics Per API Key** — Request count and last-used timestamp per key
301
+ - **Analytics Dashboard** — Stat cards, model usage chart, provider table with success rates and latency
302
+
303
+ </details>
304
+
305
+ <details>
306
+ <summary><b>🐛 10. "I can't diagnose errors and problems in AI calls"</b></summary>
307
+
308
+ When a call fails, the dev doesn't know if it was a rate limit, expired token, wrong format, or provider error. Fragmented logs across different terminals. Without observability, debugging is trial-and-error.
309
+
310
+ **How OmniRoute solves it:**
311
+
312
+ - **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
313
+ - **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
314
+ - **SQLite Proxy Logs** — Persistent logs that survive server restarts
315
+ - **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
316
+ - **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
317
+ - **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
318
+
319
+ </details>
320
+
321
+ <details>
322
+ <summary><b>🏗️ 11. "Deploying and maintaining the gateway is complex"</b></summary>
323
+
324
+ Installing, configuring, and maintaining an AI proxy across different environments (local, VPS, Docker, cloud) is labor-intensive. Problems like hardcoded paths, `EACCES` on directories, port conflicts, and cross-platform builds add friction.
325
+
326
+ **How OmniRoute solves it:**
327
+
328
+ - **npm global install** — `npm install -g omniroute && omniroute` — done
329
+ - **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
330
+ - **Docker Compose Profiles** — `base` (no CLI tools) and `cli` (with Claude Code, Codex, OpenClaw)
331
+ - **Electron Desktop App** — Native app for Windows/macOS/Linux with system tray, auto-start, offline mode
332
+ - **Split-Port Mode** — API and Dashboard on separate ports for advanced scenarios (reverse proxy, container networking)
333
+ - **Cloud Sync** — Config synchronization across devices via Cloudflare Workers
334
+ - **DB Backups** — Automatic backup, restore, export and import of all settings
335
+
336
+ </details>
337
+
338
+ <details>
339
+ <summary><b>🌍 12. "The interface is English-only and my team doesn't speak English"</b></summary>
340
+
341
+ Teams in non-English-speaking countries, especially in Latin America, Asia, and Europe, struggle with English-only interfaces. Language barriers reduce adoption and increase configuration errors.
342
+
343
+ **How OmniRoute solves it:**
344
+
345
+ - **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
346
+ - **RTL Support** — Right-to-left support for Arabic and Hebrew
347
+ - **Multi-Language READMEs** — 30 complete documentation translations
348
+ - **Language Selector** — Globe icon in header for real-time switching
349
+
350
+ </details>
351
+
352
+ <details>
353
+ <summary><b>🔄 13. "I need more than chat — I need embeddings, images, audio"</b></summary>
354
+
355
+ AI isn't just chat completion. Devs need to generate images, transcribe audio, create embeddings for RAG, rerank documents, and moderate content. Each API has a different endpoint and format.
356
+
357
+ **How OmniRoute solves it:**
358
+
359
+ - **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
360
+ - **Image Generation** — `/v1/images/generations` with 4 providers and 9+ models
361
+ - **Audio Transcription** — `/v1/audio/transcriptions` — Whisper-compatible
362
+ - **Text-to-Speech** — `/v1/audio/speech` — Multi-provider audio synthesis
363
+ - **Moderations** — `/v1/moderations` — Content safety checks
364
+ - **Reranking** — `/v1/rerank` — Document relevance reranking
365
+ - **Responses API** — Full `/v1/responses` support for Codex
366
+
367
+ </details>
368
+
369
+ <details>
370
+ <summary><b>🧪 14. "I have no way to test and compare quality across models"</b></summary>
371
+
372
+ Developers want to know which model is best for their use case — code, translation, reasoning — but comparing manually is slow. No integrated eval tools exist.
373
+
374
+ **How OmniRoute solves it:**
375
+
376
+ - **LLM Evaluations** — Golden set testing with 10 pre-loaded cases covering greetings, math, geography, code generation, JSON compliance, translation, markdown, safety refusal
377
+ - **4 Match Strategies** — `exact`, `contains`, `regex`, `custom` (JS function)
378
+ - **Translator Playground Test Bench** — Batch testing with multiple inputs and expected outputs, cross-provider comparison
379
+ - **Chat Tester** — Full round-trip with visual response rendering
380
+ - **Live Monitor** — Real-time stream of all requests flowing through the proxy
381
+
382
+ </details>
383
+
384
+ <details>
385
+ <summary><b>📈 15. "I need to scale without losing performance"</b></summary>
386
+
387
+ As request volume grows, without caching the same questions generate duplicate costs. Without idempotency, duplicate requests waste processing. Per-provider rate limits must be respected.
388
+
389
+ **How OmniRoute solves it:**
390
+
391
+ - **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
392
+ - **Request Idempotency** — 5s deduplication window for identical requests
393
+ - **Rate Limit Detection** — Per-provider RPM, min gap, and max concurrent tracking
394
+ - **Editable Rate Limits** — Configurable defaults in Settings → Resilience with persistence
395
+ - **API Key Validation Cache** — 3-tier cache for production performance
396
+ - **Health Dashboard with Telemetry** — p50/p95/p99 latency, cache stats, uptime
397
+
398
+ </details>
399
+
400
+ <details>
401
+ <summary><b>🤖 16. "I want to control model behavior globally"</b></summary>
402
+
403
+ Developers who want all responses in a specific language, with a specific tone, or want to limit reasoning tokens. Configuring this in every tool/request is impractical.
404
+
405
+ **How OmniRoute solves it:**
406
+
407
+ - **System Prompt Injection** — Global prompt applied to all requests
408
+ - **Thinking Budget Validation** — Reasoning token allocation control per request (passthrough, auto, custom, adaptive)
409
+ - **6 Routing Strategies** — Global strategies that determine how requests are distributed
410
+ - **Wildcard Router** — `provider/*` patterns route dynamically to any provider
411
+ - **Combo Enable/Disable Toggle** — Toggle combos directly from the dashboard
412
+ - **Provider Toggle** — Enable/disable all connections for a provider with one click
413
+ - **Blocked Providers** — Exclude specific providers from `/v1/models` listing
414
+
415
+ </details>
416
+
160
417
  ## ⚡ بداية سريعة
161
418
 
162
419
  **1. التثبيت عالميًا:**
package/README.bg.md CHANGED
@@ -157,6 +157,263 @@ Result: Never stop coding, minimal cost
157
157
 
158
158
  ---
159
159
 
160
+ ## 🎯 What OmniRoute Solves — 16 Real Pain Points
161
+
162
+ > **Every developer using AI tools faces these problems daily.** OmniRoute was built to solve them all — from cost overruns to regional blocks, from broken OAuth flows to zero observability.
163
+
164
+ <details>
165
+ <summary><b>💸 1. "I pay for an expensive subscription but still get interrupted by limits"</b></summary>
166
+
167
+ Developers pay $20–200/month for Claude Pro, Codex Pro, or GitHub Copilot. Even paying, quota has a ceiling — 5h of usage, weekly limits, or per-minute rate limits. Mid-coding session, the provider stops responding and the developer loses flow and productivity.
168
+
169
+ **How OmniRoute solves it:**
170
+
171
+ - **Smart 4-Tier Fallback** — If subscription quota runs out, automatically redirects to API Key → Cheap → Free with zero manual intervention
172
+ - **Real-Time Quota Tracking** — Shows token consumption in real-time with reset countdown (5h, daily, weekly)
173
+ - **Multi-Account Support** — Multiple accounts per provider with auto round-robin — when one runs out, switches to the next
174
+ - **Custom Combos** — Customizable fallback chains with 6 balancing strategies (fill-first, round-robin, P2C, random, least-used, cost-optimized)
175
+ - **Codex Business Quotas** — Business/Team workspace quota monitoring directly in the dashboard
176
+
177
+ </details>
178
+
179
+ <details>
180
+ <summary><b>🔌 2. "I need to use multiple providers but each has a different API"</b></summary>
181
+
182
+ OpenAI uses one format, Claude (Anthropic) uses another, Gemini yet another. If a dev wants to test models from different providers or fallback between them, they need to reconfigure SDKs, change endpoints, deal with incompatible formats. Custom providers (FriendLI, NIM) have non-standard model endpoints.
183
+
184
+ **How OmniRoute solves it:**
185
+
186
+ - **Unified Endpoint** — A single `http://localhost:20128/v1` serves as proxy for all 36+ providers
187
+ - **Format Translation** — Automatic and transparent: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
188
+ - **Response Sanitization** — Strips non-standard fields (`x_groq`, `usage_breakdown`, `service_tier`) that break OpenAI SDK v1.83+
189
+ - **Role Normalization** — Converts `developer` → `system` for non-OpenAI providers; `system` → `user` for GLM/ERNIE
190
+ - **Think Tag Extraction** — Extracts `<think>` blocks from models like DeepSeek R1 into standardized `reasoning_content`
191
+ - **Structured Output for Gemini** — `json_schema` → `responseMimeType`/`responseSchema` automatic conversion
192
+ - **`stream` defaults to `false`** — Aligns with OpenAI spec, avoiding unexpected SSE in Python/Rust/Go SDKs
193
+
194
+ </details>
195
+
196
+ <details>
197
+ <summary><b>🌐 3. "My AI provider blocks my region/country"</b></summary>
198
+
199
+ Providers like OpenAI/Codex block access from certain geographic regions. Users get errors like `unsupported_country_region_territory` during OAuth and API connections. This is especially frustrating for developers from developing countries.
200
+
201
+ **How OmniRoute solves it:**
202
+
203
+ - **3-Level Proxy Config** — Configurable proxy at 3 levels: global (all traffic), per-provider (one provider only), and per-connection/key
204
+ - **Color-Coded Proxy Badges** — Visual indicators: 🟢 global proxy, 🟡 provider proxy, 🔵 connection proxy, always showing the IP
205
+ - **OAuth Token Exchange Through Proxy** — OAuth flow also goes through the proxy, solving `unsupported_country_region_territory`
206
+ - **Connection Tests via Proxy** — Connection tests use the configured proxy (no more direct bypass)
207
+ - **SOCKS5 Support** — Full SOCKS5 proxy support for outbound routing
208
+ - **TLS Fingerprint Spoofing** — Browser-like TLS fingerprint via `wreq-js` to bypass bot detection
209
+
210
+ </details>
211
+
212
+ <details>
213
+ <summary><b>🆓 4. "I want to use AI for coding but I have no money"</b></summary>
214
+
215
+ Not everyone can pay $20–200/month for AI subscriptions. Students, devs from emerging countries, hobbyists, and freelancers need access to quality models at zero cost.
216
+
217
+ **How OmniRoute solves it:**
218
+
219
+ - **Free Tier Providers Built-in** — Native support for 100% free providers: iFlow (8 unlimited models), Qwen (3 unlimited models), Kiro (Claude for free), Gemini CLI (180K/month free)
220
+ - **Free-Only Combos** — Chain `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/month with zero downtime
221
+ - **NVIDIA NIM Free Credits** — 1000 free credits integrated
222
+ - **Cost Optimized Strategy** — Routing strategy that automatically chooses the cheapest available provider
223
+
224
+ </details>
225
+
226
+ <details>
227
+ <summary><b>🔒 5. "I need to protect my AI gateway from unauthorized access"</b></summary>
228
+
229
+ When exposing an AI gateway to the network (LAN, VPS, Docker), anyone with the address can consume the developer's tokens/quota. Without protection, APIs are vulnerable to misuse, prompt injection, and abuse.
230
+
231
+ **How OmniRoute solves it:**
232
+
233
+ - **API Key Management** — Generation, rotation, and scoping per provider with a dedicated `/dashboard/api-manager` page
234
+ - **Model-Level Permissions** — Restrict API keys to specific models (`openai/*`, wildcard patterns), with Allow All/Restrict toggle
235
+ - **API Endpoint Protection** — Require a key for `/v1/models` and block specific providers from the listing
236
+ - **Auth Guard + CSRF Protection** — All dashboard routes protected with `withAuth` middleware + CSRF tokens
237
+ - **Rate Limiter** — Per-IP rate limiting with configurable windows
238
+ - **IP Filtering** — Allowlist/blocklist for access control
239
+ - **Prompt Injection Guard** — Sanitization against malicious prompt patterns
240
+ - **AES-256-GCM Encryption** — Credentials encrypted at rest
241
+
242
+ </details>
243
+
244
+ <details>
245
+ <summary><b>🛑 6. "My provider went down and I lost my coding flow"</b></summary>
246
+
247
+ AI providers can become unstable, return 5xx errors, or hit temporary rate limits. If a dev depends on a single provider, they're interrupted. Without circuit breakers, repeated retries can crash the application.
248
+
249
+ **How OmniRoute solves it:**
250
+
251
+ - **Circuit Breaker per-provider** — Auto-open/close with configurable thresholds and cooldown (Closed/Open/Half-Open)
252
+ - **Exponential Backoff** — Progressive retry delays
253
+ - **Anti-Thundering Herd** — Mutex + semaphore protection against concurrent retry storms
254
+ - **Combo Fallback Chains** — If the primary provider fails, automatically falls through the chain with no intervention
255
+ - **Combo Circuit Breaker** — Auto-disables failing providers within a combo chain
256
+ - **Health Dashboard** — Uptime monitoring, circuit breaker states, lockouts, cache stats, p50/p95/p99 latency
257
+
258
+ </details>
259
+
260
+ <details>
261
+ <summary><b>🔧 7. "Configuring each AI tool is tedious and repetitive"</b></summary>
262
+
263
+ Developers use Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Each tool needs a different config (API endpoint, key, model). Reconfiguring when switching providers or models is a waste of time.
264
+
265
+ **How OmniRoute solves it:**
266
+
267
+ - **CLI Tools Dashboard** — Dedicated page with one-click setup for Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
268
+ - **GitHub Copilot Config Generator** — Generates `chatLanguageModels.json` for VS Code with bulk model selection
269
+ - **Onboarding Wizard** — Guided 4-step setup for first-time users
270
+ - **One endpoint, all models** — Configure `http://localhost:20128/v1` once, access 36+ providers
271
+
272
+ </details>
273
+
274
+ <details>
275
+ <summary><b>🔑 8. "Managing OAuth tokens from multiple providers is hell"</b></summary>
276
+
277
+ Claude Code, Codex, Gemini CLI, Copilot — all use OAuth 2.0 with expiring tokens. Developers need to re-authenticate constantly, deal with `client_secret is missing`, `redirect_uri_mismatch`, and failures on remote servers. OAuth on LAN/VPS is particularly problematic.
278
+
279
+ **How OmniRoute solves it:**
280
+
281
+ - **Auto Token Refresh** — OAuth tokens refresh in background before expiration
282
+ - **OAuth 2.0 (PKCE) Built-in** — Automatic flow for Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
283
+ - **Multi-Account OAuth** — Multiple accounts per provider via JWT/ID token extraction
284
+ - **OAuth LAN/Remote Fix** — Private IP detection for `redirect_uri` + manual URL mode for remote servers
285
+ - **OAuth Behind Nginx** — Uses `window.location.origin` for reverse proxy compatibility
286
+ - **Remote OAuth Guide** — Step-by-step guide for Google Cloud credentials on VPS/Docker
287
+
288
+ </details>
289
+
290
+ <details>
291
+ <summary><b>📊 9. "I don't know how much I'm spending or where"</b></summary>
292
+
293
+ Developers use multiple paid providers but have no unified view of spending. Each provider has its own billing dashboard, but there's no consolidated view. Unexpected costs can pile up.
294
+
295
+ **How OmniRoute solves it:**
296
+
297
+ - **Cost Analytics Dashboard** — Per-token cost tracking and budget management per provider
298
+ - **Budget Limits per Tier** — Spending ceiling per tier that triggers automatic fallback
299
+ - **Per-Model Pricing Configuration** — Configurable prices per model
300
+ - **Usage Statistics Per API Key** — Request count and last-used timestamp per key
301
+ - **Analytics Dashboard** — Stat cards, model usage chart, provider table with success rates and latency
302
+
303
+ </details>
304
+
305
+ <details>
306
+ <summary><b>🐛 10. "I can't diagnose errors and problems in AI calls"</b></summary>
307
+
308
+ When a call fails, the dev doesn't know if it was a rate limit, expired token, wrong format, or provider error. Fragmented logs across different terminals. Without observability, debugging is trial-and-error.
309
+
310
+ **How OmniRoute solves it:**
311
+
312
+ - **Unified Logs Dashboard** — 4 tabs: Request Logs, Proxy Logs, Audit Logs, Console
313
+ - **Console Log Viewer** — Real-time terminal-style viewer with color-coded levels, auto-scroll, search, filter
314
+ - **SQLite Proxy Logs** — Persistent logs that survive server restarts
315
+ - **Translator Playground** — 4 debugging modes: Playground (format translation), Chat Tester (round-trip), Test Bench (batch), Live Monitor (real-time)
316
+ - **Request Telemetry** — p50/p95/p99 latency + X-Request-Id tracing
317
+ - **File-Based Logging with Rotation** — Console interceptor captures everything to JSON log with size-based rotation
318
+
319
+ </details>
320
+
321
+ <details>
322
+ <summary><b>🏗️ 11. "Deploying and maintaining the gateway is complex"</b></summary>
323
+
324
+ Installing, configuring, and maintaining an AI proxy across different environments (local, VPS, Docker, cloud) is labor-intensive. Problems like hardcoded paths, `EACCES` on directories, port conflicts, and cross-platform builds add friction.
325
+
326
+ **How OmniRoute solves it:**
327
+
328
+ - **npm global install** — `npm install -g omniroute && omniroute` — done
329
+ - **Docker Multi-Platform** — AMD64 + ARM64 native (Apple Silicon, AWS Graviton, Raspberry Pi)
330
+ - **Docker Compose Profiles** — `base` (no CLI tools) and `cli` (with Claude Code, Codex, OpenClaw)
331
+ - **Electron Desktop App** — Native app for Windows/macOS/Linux with system tray, auto-start, offline mode
332
+ - **Split-Port Mode** — API and Dashboard on separate ports for advanced scenarios (reverse proxy, container networking)
333
+ - **Cloud Sync** — Config synchronization across devices via Cloudflare Workers
334
+ - **DB Backups** — Automatic backup, restore, export and import of all settings
335
+
336
+ </details>
337
+
338
+ <details>
339
+ <summary><b>🌍 12. "The interface is English-only and my team doesn't speak English"</b></summary>
340
+
341
+ Teams in non-English-speaking countries, especially in Latin America, Asia, and Europe, struggle with English-only interfaces. Language barriers reduce adoption and increase configuration errors.
342
+
343
+ **How OmniRoute solves it:**
344
+
345
+ - **Dashboard i18n — 30 Languages** — All 500+ keys translated including Arabic, Bulgarian, Danish, German, Spanish, Finnish, French, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Dutch, Norwegian, Polish, Portuguese (PT/BR), Romanian, Russian, Slovak, Swedish, Thai, Ukrainian, Vietnamese, Chinese, Filipino, English
346
+ - **RTL Support** — Right-to-left support for Arabic and Hebrew
347
+ - **Multi-Language READMEs** — 30 complete documentation translations
348
+ - **Language Selector** — Globe icon in header for real-time switching
349
+
350
+ </details>
351
+
352
+ <details>
353
+ <summary><b>🔄 13. "I need more than chat — I need embeddings, images, audio"</b></summary>
354
+
355
+ AI isn't just chat completion. Devs need to generate images, transcribe audio, create embeddings for RAG, rerank documents, and moderate content. Each API has a different endpoint and format.
356
+
357
+ **How OmniRoute solves it:**
358
+
359
+ - **Embeddings** — `/v1/embeddings` with 6 providers and 9+ models
360
+ - **Image Generation** — `/v1/images/generations` with 4 providers and 9+ models
361
+ - **Audio Transcription** — `/v1/audio/transcriptions` — Whisper-compatible
362
+ - **Text-to-Speech** — `/v1/audio/speech` — Multi-provider audio synthesis
363
+ - **Moderations** — `/v1/moderations` — Content safety checks
364
+ - **Reranking** — `/v1/rerank` — Document relevance reranking
365
+ - **Responses API** — Full `/v1/responses` support for Codex
366
+
367
+ </details>
368
+
369
+ <details>
370
+ <summary><b>🧪 14. "I have no way to test and compare quality across models"</b></summary>
371
+
372
+ Developers want to know which model is best for their use case — code, translation, reasoning — but comparing manually is slow. No integrated eval tools exist.
373
+
374
+ **How OmniRoute solves it:**
375
+
376
+ - **LLM Evaluations** — Golden set testing with 10 pre-loaded cases covering greetings, math, geography, code generation, JSON compliance, translation, markdown, safety refusal
377
+ - **4 Match Strategies** — `exact`, `contains`, `regex`, `custom` (JS function)
378
+ - **Translator Playground Test Bench** — Batch testing with multiple inputs and expected outputs, cross-provider comparison
379
+ - **Chat Tester** — Full round-trip with visual response rendering
380
+ - **Live Monitor** — Real-time stream of all requests flowing through the proxy
381
+
382
+ </details>
383
+
384
+ <details>
385
+ <summary><b>📈 15. "I need to scale without losing performance"</b></summary>
386
+
387
+ As request volume grows, without caching the same questions generate duplicate costs. Without idempotency, duplicate requests waste processing. Per-provider rate limits must be respected.
388
+
389
+ **How OmniRoute solves it:**
390
+
391
+ - **Semantic Cache** — Two-tier cache (signature + semantic) reduces cost and latency
392
+ - **Request Idempotency** — 5s deduplication window for identical requests
393
+ - **Rate Limit Detection** — Per-provider RPM, min gap, and max concurrent tracking
394
+ - **Editable Rate Limits** — Configurable defaults in Settings → Resilience with persistence
395
+ - **API Key Validation Cache** — 3-tier cache for production performance
396
+ - **Health Dashboard with Telemetry** — p50/p95/p99 latency, cache stats, uptime
397
+
398
+ </details>
399
+
400
+ <details>
401
+ <summary><b>🤖 16. "I want to control model behavior globally"</b></summary>
402
+
403
+ Developers who want all responses in a specific language, with a specific tone, or want to limit reasoning tokens. Configuring this in every tool/request is impractical.
404
+
405
+ **How OmniRoute solves it:**
406
+
407
+ - **System Prompt Injection** — Global prompt applied to all requests
408
+ - **Thinking Budget Validation** — Reasoning token allocation control per request (passthrough, auto, custom, adaptive)
409
+ - **6 Routing Strategies** — Global strategies that determine how requests are distributed
410
+ - **Wildcard Router** — `provider/*` patterns route dynamically to any provider
411
+ - **Combo Enable/Disable Toggle** — Toggle combos directly from the dashboard
412
+ - **Provider Toggle** — Enable/disable all connections for a provider with one click
413
+ - **Blocked Providers** — Exclude specific providers from `/v1/models` listing
414
+
415
+ </details>
416
+
160
417
  ## ⚡ Бърз старт
161
418
 
162
419
  **1. Инсталирайте глобално:**