omniroute 0.8.5 → 0.9.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.
- package/README.de.md +995 -0
- package/README.es.md +995 -0
- package/README.fr.md +995 -0
- package/README.it.md +995 -0
- package/README.md +725 -101
- package/README.pt-BR.md +995 -0
- package/README.ru.md +995 -0
- package/README.zh-CN.md +995 -0
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +25 -24
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +27 -3
- package/app/.next/routes-manifest.json +6 -0
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +5 -5
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -0
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -0
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -0
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +3 -3
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/route.js +1 -1
- package/app/.next/server/app/api/evals/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/fallback/chains/route.js +2 -2
- package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/monitoring/health/route.js +2 -2
- package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/policies/route.js +2 -2
- package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/route.js +1 -1
- package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/budget/route.js +2 -2
- package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +3 -3
- package/app/.next/server/app/callback.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.html +1 -1
- package/app/.next/server/app/dashboard/analytics.rsc +5 -5
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/analytics.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +5 -5
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +5 -5
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.html +1 -1
- package/app/.next/server/app/dashboard/costs.rsc +5 -5
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +5 -5
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.html +1 -1
- package/app/.next/server/app/dashboard/health.rsc +5 -5
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/limits.html +2 -0
- package/app/.next/server/app/dashboard/limits.meta +17 -0
- package/app/.next/server/app/dashboard/limits.rsc +24 -0
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +9 -0
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +4 -0
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +4 -0
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -0
- package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +24 -0
- package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +6 -0
- package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +9 -0
- package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +5 -0
- package/app/.next/server/app/dashboard/onboarding.html +1 -1
- package/app/.next/server/app/dashboard/onboarding.rsc +4 -4
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +4 -4
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.html +1 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +5 -5
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.html +1 -1
- package/app/.next/server/app/dashboard/providers.rsc +5 -5
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.html +1 -1
- package/app/.next/server/app/dashboard/settings.rsc +5 -5
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.html +2 -2
- package/app/.next/server/app/dashboard/translator.rsc +5 -5
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +5 -5
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/docs/page.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs.html +1 -1
- package/app/.next/server/app/docs.rsc +3 -3
- package/app/.next/server/app/docs.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/docs.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden.html +1 -1
- package/app/.next/server/app/forbidden.rsc +3 -3
- package/app/.next/server/app/forbidden.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/forbidden.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +1 -1
- package/app/.next/server/app/forgot-password/page.js +1 -1
- package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password.html +1 -1
- package/app/.next/server/app/forgot-password.rsc +4 -4
- package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +3 -3
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +3 -3
- package/app/.next/server/app/landing.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page.js +1 -1
- package/app/.next/server/app/login/page.js.nft.json +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +4 -4
- package/app/.next/server/app/login.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy.html +1 -1
- package/app/.next/server/app/privacy.rsc +3 -3
- package/app/.next/server/app/privacy.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/privacy.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/privacy.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms.html +1 -1
- package/app/.next/server/app/terms.rsc +3 -3
- package/app/.next/server/app/terms.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/terms.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/terms.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
- package/app/.next/server/app-paths-manifest.json +25 -24
- package/app/.next/server/chunks/1020.js +1 -1
- package/app/.next/server/chunks/239.js +2 -2
- package/app/.next/server/chunks/2620.js +2 -2
- package/app/.next/server/chunks/4277.js +1 -0
- package/app/.next/server/chunks/438.js +1 -0
- package/app/.next/server/chunks/5583.js +1 -1
- package/app/.next/server/chunks/7669.js +2 -2
- package/app/.next/server/chunks/8369.js +1 -1
- package/app/.next/server/chunks/9824.js +1 -1
- package/app/.next/server/pages/404.html +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/8ACUE6hz9uxBNe_Q_ZH6y/_buildManifest.js +1 -0
- package/app/.next/static/chunks/1149-fefe7f95f0e9842f.js +1 -0
- package/app/.next/static/chunks/{5846-2708fad522c4092b.js → 5846-0541241939d8c7e3.js} +1 -1
- package/app/.next/static/chunks/{993-6be0cd05a02eb09b.js → 993-b74bac8c882e8d1a.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-74ac2092c2a6b3dc.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-918d5f38d5cdbbc2.js +15 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-2cf4a7b419667452.js → page-421e732016c49ee4.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-6913ad5d715dcc3f.js → page-9495b294cfe54d73.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/{page-a446f6fd8dc64f29.js → page-623e54048b5d4f69.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-58ea3e55f475ea7b.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/{usage/page-8e19076a0d9227ca.js → limits/page-3b7083be8adedc57.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-3c840eaf6d7cd77d.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-26ec85a0bf8624f2.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-521cffebf9da74b1.js → page-200bed170f9ee2b0.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-627628d3588d56d0.js → page-98c6b97d0c195a2c.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-038687bc5d2c3bb5.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-c3cbea97c4f3a3b3.js → page-efca884c20a509a4.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-51a813eac9d71eed.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/{layout-c498dd9c790d0115.js → layout-cf710bbfb7c3ba11.js} +1 -1
- package/app/.next/static/chunks/app/forgot-password/{page-3682163d66078655.js → page-373672767bb0aae4.js} +1 -1
- package/app/.next/static/chunks/app/login/{page-319adaa570f7cef2.js → page-8a9aa887783f2370.js} +1 -1
- package/app/.next/static/css/1c99dc691f001331.css +1 -0
- package/app/package.json +1 -1
- package/app/public/providers/ironclaw.png +0 -0
- package/app/public/providers/nanobot.png +0 -0
- package/app/public/providers/opencode.svg +18 -0
- package/app/public/providers/picoclaw.jpg +0 -0
- package/app/public/providers/zeroclaw.png +0 -0
- package/package.json +1 -1
- package/app/.next/server/chunks/2951.js +0 -1
- package/app/.next/static/4zh9cgkOJsay7eUxfk-tb/_buildManifest.js +0 -1
- package/app/.next/static/chunks/7013-718042994c9127fa.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-a7a7e3485f278504.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-1c6897612e762e03.js +0 -15
- package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-d3f501b59334c3d5.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-7312e2dd8b5feff0.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-a9c594cf56c3465e.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-ae5e43ea2a576094.js +0 -1
- package/app/.next/static/css/c08bd521c418658c.css +0 -1
- /package/app/.next/static/{4zh9cgkOJsay7eUxfk-tb → 8ACUE6hz9uxBNe_Q_ZH6y}/_ssgManifest.js +0 -0
package/README.fr.md
ADDED
|
@@ -0,0 +1,995 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
|
|
3
|
+
|
|
4
|
+
# 🚀 OmniRoute — La Passerelle IA Gratuite
|
|
5
|
+
|
|
6
|
+
### N'arrêtez jamais de coder. Routage intelligent vers des **modèles IA GRATUITS et économiques** avec fallback automatique.
|
|
7
|
+
|
|
8
|
+
_Votre proxy API universel — un endpoint, 36+ fournisseurs, zéro temps d'arrêt._
|
|
9
|
+
|
|
10
|
+
**Chat Completions • Embeddings • Génération d'images • Audio • Reranking • 100% TypeScript**
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
### 🤖 Fournisseur IA gratuit pour vos agents de programmation préférés
|
|
15
|
+
|
|
16
|
+
_Connectez n'importe quel IDE ou outil CLI alimenté par l'IA via OmniRoute — passerelle API gratuite pour un codage illimité._
|
|
17
|
+
|
|
18
|
+
<table>
|
|
19
|
+
<tr>
|
|
20
|
+
<td align="center" width="110">
|
|
21
|
+
<a href="https://github.com/cline/cline">
|
|
22
|
+
<img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
|
|
23
|
+
<b>OpenClaw</b>
|
|
24
|
+
</a><br/>
|
|
25
|
+
<sub>⭐ 205K</sub>
|
|
26
|
+
</td>
|
|
27
|
+
<td align="center" width="110">
|
|
28
|
+
<a href="https://github.com/HKUDS/nanobot">
|
|
29
|
+
<img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
|
|
30
|
+
<b>NanoBot</b>
|
|
31
|
+
</a><br/>
|
|
32
|
+
<sub>⭐ 20.9K</sub>
|
|
33
|
+
</td>
|
|
34
|
+
<td align="center" width="110">
|
|
35
|
+
<a href="https://github.com/sipeed/picoclaw">
|
|
36
|
+
<img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
|
|
37
|
+
<b>PicoClaw</b>
|
|
38
|
+
</a><br/>
|
|
39
|
+
<sub>⭐ 14.6K</sub>
|
|
40
|
+
</td>
|
|
41
|
+
<td align="center" width="110">
|
|
42
|
+
<a href="https://github.com/zeroclaw-labs/zeroclaw">
|
|
43
|
+
<img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
|
|
44
|
+
<b>ZeroClaw</b>
|
|
45
|
+
</a><br/>
|
|
46
|
+
<sub>⭐ 9.9K</sub>
|
|
47
|
+
</td>
|
|
48
|
+
<td align="center" width="110">
|
|
49
|
+
<a href="https://github.com/nearai/ironclaw">
|
|
50
|
+
<img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
|
|
51
|
+
<b>IronClaw</b>
|
|
52
|
+
</a><br/>
|
|
53
|
+
<sub>⭐ 2.1K</sub>
|
|
54
|
+
</td>
|
|
55
|
+
</tr>
|
|
56
|
+
<tr>
|
|
57
|
+
<td align="center" width="110">
|
|
58
|
+
<a href="https://github.com/anomalyco/opencode">
|
|
59
|
+
<img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
|
|
60
|
+
<b>OpenCode</b>
|
|
61
|
+
</a><br/>
|
|
62
|
+
<sub>⭐ 106K</sub>
|
|
63
|
+
</td>
|
|
64
|
+
<td align="center" width="110">
|
|
65
|
+
<a href="https://github.com/openai/codex">
|
|
66
|
+
<img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
|
|
67
|
+
<b>Codex CLI</b>
|
|
68
|
+
</a><br/>
|
|
69
|
+
<sub>⭐ 60.8K</sub>
|
|
70
|
+
</td>
|
|
71
|
+
<td align="center" width="110">
|
|
72
|
+
<a href="https://github.com/anthropics/claude-code">
|
|
73
|
+
<img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
|
|
74
|
+
<b>Claude Code</b>
|
|
75
|
+
</a><br/>
|
|
76
|
+
<sub>⭐ 67.3K</sub>
|
|
77
|
+
</td>
|
|
78
|
+
<td align="center" width="110">
|
|
79
|
+
<a href="https://github.com/google-gemini/gemini-cli">
|
|
80
|
+
<img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
|
|
81
|
+
<b>Gemini CLI</b>
|
|
82
|
+
</a><br/>
|
|
83
|
+
<sub>⭐ 94.7K</sub>
|
|
84
|
+
</td>
|
|
85
|
+
<td align="center" width="110">
|
|
86
|
+
<a href="https://github.com/Kilo-Org/kilocode">
|
|
87
|
+
<img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
|
|
88
|
+
<b>Kilo Code</b>
|
|
89
|
+
</a><br/>
|
|
90
|
+
<sub>⭐ 15.5K</sub>
|
|
91
|
+
</td>
|
|
92
|
+
</tr>
|
|
93
|
+
</table>
|
|
94
|
+
|
|
95
|
+
<sub>📡 Tous les agents se connectent via <code>http://localhost:20128/v1</code> ou <code>http://cloud.omniroute.online/v1</code> — une configuration, modèles et quota illimités</sub>
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
[](https://www.npmjs.com/package/omniroute)
|
|
100
|
+
[](https://hub.docker.com/r/diegosouzapw/omniroute)
|
|
101
|
+
[](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
|
|
102
|
+
[](https://omniroute.online)
|
|
103
|
+
|
|
104
|
+
[🌐 Site web](https://omniroute.online) • [🚀 Démarrage rapide](#-démarrage-rapide) • [💡 Fonctionnalités](#-fonctionnalités-principales) • [📖 Docs](#-documentation) • [💰 Tarifs](#-aperçu-des-tarifs)
|
|
105
|
+
|
|
106
|
+
🌐 **Disponible en :** [English](README.md) | [Português](README.pt-BR.md) | [Español](README.es.md) | [Русский](README.ru.md) | [中文](README.zh-CN.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Italiano](README.it.md)
|
|
107
|
+
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 🤔 Pourquoi OmniRoute ?
|
|
113
|
+
|
|
114
|
+
**Arrêtez de gaspiller de l'argent et de vous heurter aux limites :**
|
|
115
|
+
|
|
116
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Le quota d'abonnement expire inutilisé chaque mois
|
|
117
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Les limites de débit vous arrêtent en plein codage
|
|
118
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> APIs coûteuses (20-50 $/mois par fournisseur)
|
|
119
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Changement manuel entre fournisseurs
|
|
120
|
+
|
|
121
|
+
**OmniRoute résout ces problèmes :**
|
|
122
|
+
|
|
123
|
+
- ✅ **Maximisez les abonnements** — Suivez les quotas, utilisez chaque bit avant la réinitialisation
|
|
124
|
+
- ✅ **Fallback automatique** — Abonnement → Clé API → Économique → Gratuit, zéro temps d'arrêt
|
|
125
|
+
- ✅ **Multi-comptes** — Round-robin entre les comptes par fournisseur
|
|
126
|
+
- ✅ **Universel** — Fonctionne avec Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, tout outil CLI
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 🔄 Comment ça fonctionne
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
┌─────────────┐
|
|
134
|
+
│ Votre CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
|
135
|
+
│ Tool │
|
|
136
|
+
└──────┬──────┘
|
|
137
|
+
│ http://localhost:20128/v1
|
|
138
|
+
↓
|
|
139
|
+
┌─────────────────────────────────────────┐
|
|
140
|
+
│ OmniRoute (Routeur intelligent) │
|
|
141
|
+
│ • Traduction de format (OpenAI ↔ Claude) │
|
|
142
|
+
│ • Suivi des quotas + Embeddings + Images │
|
|
143
|
+
│ • Renouvellement automatique des tokens │
|
|
144
|
+
└──────┬──────────────────────────────────┘
|
|
145
|
+
│
|
|
146
|
+
├─→ [Tier 1: ABONNEMENT] Claude Code, Codex, Gemini CLI
|
|
147
|
+
│ ↓ quota épuisé
|
|
148
|
+
├─→ [Tier 2: CLÉ API] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
|
|
149
|
+
│ ↓ limite de budget
|
|
150
|
+
├─→ [Tier 3: ÉCONOMIQUE] GLM ($0.6/1M), MiniMax ($0.2/1M)
|
|
151
|
+
│ ↓ limite de budget
|
|
152
|
+
└─→ [Tier 4: GRATUIT] iFlow, Qwen, Kiro (illimité)
|
|
153
|
+
|
|
154
|
+
Résultat : Ne jamais arrêter de coder, coût minimal
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## ⚡ Démarrage rapide
|
|
160
|
+
|
|
161
|
+
**1. Installer globalement :**
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm install -g omniroute
|
|
165
|
+
omniroute
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
🎉 Le tableau de bord s'ouvre sur `http://localhost:20128`
|
|
169
|
+
|
|
170
|
+
| Commande | Description |
|
|
171
|
+
| ----------------------- | ------------------------------------------- |
|
|
172
|
+
| `omniroute` | Démarrer le serveur (port par défaut 20128) |
|
|
173
|
+
| `omniroute --port 3000` | Utiliser un port personnalisé |
|
|
174
|
+
| `omniroute --no-open` | Ne pas ouvrir le navigateur automatiquement |
|
|
175
|
+
| `omniroute --help` | Afficher l'aide |
|
|
176
|
+
|
|
177
|
+
**2. Connecter un fournisseur GRATUIT :**
|
|
178
|
+
|
|
179
|
+
Tableau de bord → Fournisseurs → Connecter **Claude Code** ou **Antigravity** → Connexion OAuth → Terminé !
|
|
180
|
+
|
|
181
|
+
**3. Utiliser dans votre outil CLI :**
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Paramètres :
|
|
185
|
+
Endpoint : http://localhost:20128/v1
|
|
186
|
+
API Key : [copier depuis le tableau de bord]
|
|
187
|
+
Model : if/kimi-k2-thinking
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**C'est tout !** Commencez à coder avec des modèles IA GRATUITS.
|
|
191
|
+
|
|
192
|
+
**Alternative — exécuter depuis le code source :**
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
cp .env.example .env
|
|
196
|
+
npm install
|
|
197
|
+
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 🐳 Docker
|
|
203
|
+
|
|
204
|
+
OmniRoute est disponible en tant qu'image Docker publique sur [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
|
205
|
+
|
|
206
|
+
**Démarrage rapide :**
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
docker run -d \
|
|
210
|
+
--name omniroute \
|
|
211
|
+
--restart unless-stopped \
|
|
212
|
+
-p 20128:20128 \
|
|
213
|
+
-v omniroute-data:/app/data \
|
|
214
|
+
diegosouzapw/omniroute:latest
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Avec fichier d'environnement :**
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Copier et modifier le .env d'abord
|
|
221
|
+
cp .env.example .env
|
|
222
|
+
|
|
223
|
+
docker run -d \
|
|
224
|
+
--name omniroute \
|
|
225
|
+
--restart unless-stopped \
|
|
226
|
+
--env-file .env \
|
|
227
|
+
-p 20128:20128 \
|
|
228
|
+
-v omniroute-data:/app/data \
|
|
229
|
+
diegosouzapw/omniroute:latest
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Avec Docker Compose :**
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Profil de base (sans outils CLI)
|
|
236
|
+
docker compose --profile base up -d
|
|
237
|
+
|
|
238
|
+
# Profil CLI (Claude Code, Codex, OpenClaw intégrés)
|
|
239
|
+
docker compose --profile cli up -d
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
| Image | Tag | Taille | Description |
|
|
243
|
+
| ------------------------ | -------- | ------ | ----------------------- |
|
|
244
|
+
| `diegosouzapw/omniroute` | `latest` | ~250MB | Dernière version stable |
|
|
245
|
+
| `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Version actuelle |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 💰 Aperçu des tarifs
|
|
250
|
+
|
|
251
|
+
| Tier | Fournisseur | Coût | Réinitialisation | Idéal pour |
|
|
252
|
+
| ----------------- | ----------------- | -------------------------- | ------------------- | ----------------------------- |
|
|
253
|
+
| **💳 ABONNEMENT** | Claude Code (Pro) | 20 $/mois | 5h + hebdomadaire | Déjà abonné |
|
|
254
|
+
| | Codex (Plus/Pro) | 20-200 $/mois | 5h + hebdomadaire | Utilisateurs OpenAI |
|
|
255
|
+
| | Gemini CLI | **GRATUIT** | 180K/mois + 1K/jour | Tout le monde ! |
|
|
256
|
+
| | GitHub Copilot | 10-19 $/mois | Mensuel | Utilisateurs GitHub |
|
|
257
|
+
| **🔑 CLÉ API** | NVIDIA NIM | **GRATUIT** (1000 crédits) | Unique | Tests gratuits |
|
|
258
|
+
| | DeepSeek | À l'usage | Aucune | Meilleur rapport qualité-prix |
|
|
259
|
+
| | Groq | Niveau gratuit + payant | Limité | Inférence ultra-rapide |
|
|
260
|
+
| | xAI (Grok) | À l'usage | Aucune | Modèles Grok |
|
|
261
|
+
| | Mistral | Niveau gratuit + payant | Limité | IA européenne |
|
|
262
|
+
| | OpenRouter | À l'usage | Aucune | 100+ modèles |
|
|
263
|
+
| **💰 ÉCONOMIQUE** | GLM-4.7 | 0,6 $/1M | Quotidien 10h | Backup économique |
|
|
264
|
+
| | MiniMax M2.1 | 0,2 $/1M | Rotatif 5h | Option la moins chère |
|
|
265
|
+
| | Kimi K2 | 9 $/mois fixe | 10M tokens/mois | Coût prévisible |
|
|
266
|
+
| **🆓 GRATUIT** | iFlow | 0 $ | Illimité | 8 modèles gratuits |
|
|
267
|
+
| | Qwen | 0 $ | Illimité | 3 modèles gratuits |
|
|
268
|
+
| | Kiro | 0 $ | Illimité | Claude gratuit |
|
|
269
|
+
|
|
270
|
+
**💡 Conseil Pro :** Commencez avec Gemini CLI (180K gratuits/mois) + iFlow (illimité gratuit) = 0 $ de coût !
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 🎯 Cas d'utilisation
|
|
275
|
+
|
|
276
|
+
### Cas 1 : « J'ai un abonnement Claude Pro »
|
|
277
|
+
|
|
278
|
+
**Problème :** Le quota expire inutilisé, limites de débit pendant le codage intensif
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
Combo : "maximize-claude"
|
|
282
|
+
1. cc/claude-opus-4-6 (utiliser l'abonnement au maximum)
|
|
283
|
+
2. glm/glm-4.7 (backup économique quand le quota est épuisé)
|
|
284
|
+
3. if/kimi-k2-thinking (fallback d'urgence gratuit)
|
|
285
|
+
|
|
286
|
+
Coût mensuel : 20 $ (abonnement) + ~5 $ (backup) = 25 $ au total
|
|
287
|
+
vs. 20 $ + atteindre les limites = frustration
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Cas 2 : « Je veux zéro coût »
|
|
291
|
+
|
|
292
|
+
**Problème :** Impossible de payer des abonnements, besoin d'IA fiable pour coder
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
Combo : "free-forever"
|
|
296
|
+
1. gc/gemini-3-flash (180K gratuits/mois)
|
|
297
|
+
2. if/kimi-k2-thinking (illimité gratuit)
|
|
298
|
+
3. qw/qwen3-coder-plus (illimité gratuit)
|
|
299
|
+
|
|
300
|
+
Coût mensuel : 0 $
|
|
301
|
+
Qualité : Modèles prêts pour la production
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Cas 3 : « Je dois coder 24/7, sans interruption »
|
|
305
|
+
|
|
306
|
+
**Problème :** Délais serrés, ne peut pas se permettre de temps d'arrêt
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
Combo : "always-on"
|
|
310
|
+
1. cc/claude-opus-4-6 (meilleure qualité)
|
|
311
|
+
2. cx/gpt-5.2-codex (deuxième abonnement)
|
|
312
|
+
3. glm/glm-4.7 (économique, reset quotidien)
|
|
313
|
+
4. minimax/MiniMax-M2.1 (le moins cher, reset 5h)
|
|
314
|
+
5. if/kimi-k2-thinking (gratuit illimité)
|
|
315
|
+
|
|
316
|
+
Résultat : 5 niveaux de fallback = zéro temps d'arrêt
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Cas 4 : « Je veux l'IA GRATUITE dans OpenClaw »
|
|
320
|
+
|
|
321
|
+
**Problème :** Besoin d'assistant IA dans les apps de messagerie, entièrement gratuit
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
Combo : "openclaw-free"
|
|
325
|
+
1. if/glm-4.7 (illimité gratuit)
|
|
326
|
+
2. if/minimax-m2.1 (illimité gratuit)
|
|
327
|
+
3. if/kimi-k2-thinking (illimité gratuit)
|
|
328
|
+
|
|
329
|
+
Coût mensuel : 0 $
|
|
330
|
+
Accès via : WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 💡 Fonctionnalités principales
|
|
336
|
+
|
|
337
|
+
### 🧠 Routage & Intelligence
|
|
338
|
+
|
|
339
|
+
| Fonctionnalité | Ce qu'elle fait |
|
|
340
|
+
| ------------------------------------- | ------------------------------------------------------------------------------- |
|
|
341
|
+
| 🎯 **Fallback intelligent 4 niveaux** | Auto-routage : Abonnement → Clé API → Économique → Gratuit |
|
|
342
|
+
| 📊 **Suivi des quotas en temps réel** | Comptage de tokens en direct + compte à rebours de réinitialisation |
|
|
343
|
+
| 🔄 **Traduction de format** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro transparent |
|
|
344
|
+
| 👥 **Support multi-comptes** | Plusieurs comptes par fournisseur avec sélection intelligente |
|
|
345
|
+
| 🔄 **Renouvellement auto des tokens** | Les tokens OAuth se renouvellent automatiquement avec retry |
|
|
346
|
+
| 🎨 **Combos personnalisés** | 6 stratégies : fill-first, round-robin, p2c, random, least-used, cost-optimized |
|
|
347
|
+
| 🧩 **Modèles personnalisés** | Ajoutez n'importe quel ID de modèle à n'importe quel fournisseur |
|
|
348
|
+
| 🌐 **Routeur wildcard** | Routez les patterns `provider/*` vers n'importe quel fournisseur dynamiquement |
|
|
349
|
+
| 🧠 **Budget de raisonnement** | Modes passthrough, auto, custom et adaptive pour les modèles de raisonnement |
|
|
350
|
+
| 💬 **Injection System Prompt** | System prompt global appliqué à toutes les requêtes |
|
|
351
|
+
| 📄 **API Responses** | Support complet de l'API Responses d'OpenAI (`/v1/responses`) pour Codex |
|
|
352
|
+
|
|
353
|
+
### 🎵 APIs multi-modales
|
|
354
|
+
|
|
355
|
+
| Fonctionnalité | Ce qu'elle fait |
|
|
356
|
+
| -------------------------- | ------------------------------------------------------- |
|
|
357
|
+
| 🖼️ **Génération d'images** | `/v1/images/generations` — 4 fournisseurs, 9+ modèles |
|
|
358
|
+
| 📐 **Embeddings** | `/v1/embeddings` — 6 fournisseurs, 9+ modèles |
|
|
359
|
+
| 🎤 **Transcription audio** | `/v1/audio/transcriptions` — compatible Whisper |
|
|
360
|
+
| 🔊 **Texte vers parole** | `/v1/audio/speech` — synthèse audio multi-fournisseur |
|
|
361
|
+
| 🛡️ **Modérations** | `/v1/moderations` — vérifications de sécurité |
|
|
362
|
+
| 🔀 **Reranking** | `/v1/rerank` — reclassement de pertinence des documents |
|
|
363
|
+
|
|
364
|
+
### 🛡️ Résilience & Sécurité
|
|
365
|
+
|
|
366
|
+
| Fonctionnalité | Ce qu'elle fait |
|
|
367
|
+
| ------------------------------- | -------------------------------------------------------------------- |
|
|
368
|
+
| 🔌 **Circuit Breaker** | Ouverture/fermeture auto par fournisseur avec seuils configurables |
|
|
369
|
+
| 🛡️ **Anti-Thundering Herd** | Mutex + sémaphore de rate-limit pour les fournisseurs avec clé API |
|
|
370
|
+
| 🧠 **Cache sémantique** | Cache à deux niveaux (signature + sémantique) réduit coût et latence |
|
|
371
|
+
| ⚡ **Idempotence des requêtes** | Fenêtre de dédup 5s pour les requêtes dupliquées |
|
|
372
|
+
| 🔒 **Spoofing TLS Fingerprint** | Contournement de détection de bot via wreq-js |
|
|
373
|
+
| 🌐 **Filtrage IP** | Allowlist/blocklist pour le contrôle d'accès API |
|
|
374
|
+
| 📊 **Rate limits éditables** | RPM configurable, intervalle minimum, concurrence max |
|
|
375
|
+
|
|
376
|
+
### 📊 Observabilité & Analytique
|
|
377
|
+
|
|
378
|
+
| Fonctionnalité | Ce qu'elle fait |
|
|
379
|
+
| --------------------------------- | ------------------------------------------------------------------------- |
|
|
380
|
+
| 📝 **Logs de requêtes** | Mode debug avec logs complets requête/réponse |
|
|
381
|
+
| 💾 **Logs SQLite** | Logs proxy persistants survivant aux redémarrages |
|
|
382
|
+
| 📊 **Tableau de bord analytique** | Recharts : cartes de stats, graphique d'utilisation, tableau fournisseurs |
|
|
383
|
+
| 📈 **Suivi de progression** | Événements SSE de progression opt-in pour le streaming |
|
|
384
|
+
| 🧪 **Évaluations LLM** | Tests avec golden set et 4 stratégies de correspondance |
|
|
385
|
+
| 🔍 **Télémétrie des requêtes** | Agrégation de latence p50/p95/p99 + traçage X-Request-Id |
|
|
386
|
+
| 📋 **Logs + Quotas** | Pages dédiées pour navigation des logs et suivi des quotas |
|
|
387
|
+
| 🏥 **Tableau de bord santé** | Uptime, états circuit breaker, lockouts, stats cache |
|
|
388
|
+
| 💰 **Suivi des coûts** | Gestion de budget + configuration des prix par modèle |
|
|
389
|
+
|
|
390
|
+
### ☁️ Déploiement & Synchronisation
|
|
391
|
+
|
|
392
|
+
| Fonctionnalité | Ce qu'elle fait |
|
|
393
|
+
| --------------------------------- | ------------------------------------------------------------------------------- |
|
|
394
|
+
| 💾 **Cloud Sync** | Synchroniser les paramètres entre appareils via Cloudflare Workers |
|
|
395
|
+
| 🌐 **Déployer partout** | Localhost, VPS, Docker, Cloudflare Workers |
|
|
396
|
+
| 🔑 **Gestion des clés API** | Générer, faire tourner et limiter les clés API par fournisseur |
|
|
397
|
+
| 🧙 **Assistant de configuration** | Setup guidé en 4 étapes pour les nouveaux utilisateurs |
|
|
398
|
+
| 🔧 **Tableau de bord CLI Tools** | Configuration en un clic pour Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
|
399
|
+
| 🔄 **Sauvegardes DB** | Sauvegarde et restauration automatiques de tous les paramètres |
|
|
400
|
+
|
|
401
|
+
<details>
|
|
402
|
+
<summary><b>📖 Détails des fonctionnalités</b></summary>
|
|
403
|
+
|
|
404
|
+
### 🎯 Fallback intelligent 4 niveaux
|
|
405
|
+
|
|
406
|
+
Créez des combos avec fallback automatique :
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
Combo : "my-coding-stack"
|
|
410
|
+
1. cc/claude-opus-4-6 (votre abonnement)
|
|
411
|
+
2. nvidia/llama-3.3-70b (API NVIDIA gratuite)
|
|
412
|
+
3. glm/glm-4.7 (backup économique, $0.6/1M)
|
|
413
|
+
4. if/kimi-k2-thinking (fallback gratuit)
|
|
414
|
+
|
|
415
|
+
→ Bascule automatiquement lorsque le quota est épuisé ou en cas d'erreurs
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### 📊 Suivi des quotas en temps réel
|
|
419
|
+
|
|
420
|
+
- Consommation de tokens par fournisseur
|
|
421
|
+
- Compte à rebours de réinitialisation (5 heures, quotidien, hebdomadaire)
|
|
422
|
+
- Estimation des coûts pour les niveaux payants
|
|
423
|
+
- Rapports de dépenses mensuels
|
|
424
|
+
|
|
425
|
+
### 🔄 Traduction de format
|
|
426
|
+
|
|
427
|
+
Traduction transparente entre les formats :
|
|
428
|
+
|
|
429
|
+
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
|
|
430
|
+
- Votre CLI envoie le format OpenAI → OmniRoute traduit → Le fournisseur reçoit le format natif
|
|
431
|
+
- Fonctionne avec tout outil supportant les endpoints OpenAI personnalisés
|
|
432
|
+
|
|
433
|
+
### 👥 Support multi-comptes
|
|
434
|
+
|
|
435
|
+
- Ajouter plusieurs comptes par fournisseur
|
|
436
|
+
- Round-robin automatique ou routage par priorité
|
|
437
|
+
- Basculement vers le compte suivant lorsqu'un quota est atteint
|
|
438
|
+
|
|
439
|
+
### 🔄 Renouvellement automatique des tokens
|
|
440
|
+
|
|
441
|
+
- Les tokens OAuth se renouvellent automatiquement avant expiration
|
|
442
|
+
- Pas de réauthentification manuelle nécessaire
|
|
443
|
+
- Expérience transparente sur tous les fournisseurs
|
|
444
|
+
|
|
445
|
+
### 🎨 Combos personnalisés
|
|
446
|
+
|
|
447
|
+
- Créer des combinaisons de modèles illimitées
|
|
448
|
+
- 6 stratégies : fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
|
|
449
|
+
- Partager les combos entre appareils avec Cloud Sync
|
|
450
|
+
|
|
451
|
+
### 🏥 Tableau de bord santé
|
|
452
|
+
|
|
453
|
+
- Statut du système (uptime, version, utilisation mémoire)
|
|
454
|
+
- États des circuit breakers par fournisseur (Closed/Open/Half-Open)
|
|
455
|
+
- Statut des rate limits et lockouts actifs
|
|
456
|
+
- Statistiques du cache de signatures
|
|
457
|
+
- Télémétrie de latence (p50/p95/p99) + cache de prompt
|
|
458
|
+
- Réinitialisation de la santé en un clic
|
|
459
|
+
|
|
460
|
+
### 🔧 Playground du traducteur
|
|
461
|
+
|
|
462
|
+
- Déboguer, tester et visualiser les traductions de format d'API
|
|
463
|
+
- Envoyer des requêtes et voir comment OmniRoute traduit entre les formats des fournisseurs
|
|
464
|
+
- Inestimable pour résoudre les problèmes d'intégration
|
|
465
|
+
|
|
466
|
+
### 💾 Cloud Sync
|
|
467
|
+
|
|
468
|
+
- Synchroniser fournisseurs, combos et paramètres entre appareils
|
|
469
|
+
- Synchronisation en arrière-plan automatique
|
|
470
|
+
- Stockage chiffré sécurisé
|
|
471
|
+
|
|
472
|
+
</details>
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## 📖 Guide de configuration
|
|
477
|
+
|
|
478
|
+
<details>
|
|
479
|
+
<summary><b>💳 Fournisseurs par abonnement</b></summary>
|
|
480
|
+
|
|
481
|
+
### Claude Code (Pro/Max)
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
Tableau de bord → Fournisseurs → Connecter Claude Code
|
|
485
|
+
→ Connexion OAuth → Renouvellement auto des tokens
|
|
486
|
+
→ Suivi de quota 5h + hebdomadaire
|
|
487
|
+
|
|
488
|
+
Modèles :
|
|
489
|
+
cc/claude-opus-4-6
|
|
490
|
+
cc/claude-sonnet-4-5-20250929
|
|
491
|
+
cc/claude-haiku-4-5-20251001
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Conseil Pro :** Utilisez Opus pour les tâches complexes, Sonnet pour la vitesse. OmniRoute suit les quotas par modèle !
|
|
495
|
+
|
|
496
|
+
### OpenAI Codex (Plus/Pro)
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
Tableau de bord → Fournisseurs → Connecter Codex
|
|
500
|
+
→ Connexion OAuth (port 1455)
|
|
501
|
+
→ Reset 5h + hebdomadaire
|
|
502
|
+
|
|
503
|
+
Modèles :
|
|
504
|
+
cx/gpt-5.2-codex
|
|
505
|
+
cx/gpt-5.1-codex-max
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Gemini CLI (GRATUIT 180K/mois !)
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
Tableau de bord → Fournisseurs → Connecter Gemini CLI
|
|
512
|
+
→ Google OAuth
|
|
513
|
+
→ 180K completions/mois + 1K/jour
|
|
514
|
+
|
|
515
|
+
Modèles :
|
|
516
|
+
gc/gemini-3-flash-preview
|
|
517
|
+
gc/gemini-2.5-pro
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
**Meilleure valeur :** Niveau gratuit énorme ! Utilisez avant les niveaux payants.
|
|
521
|
+
|
|
522
|
+
### GitHub Copilot
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
Tableau de bord → Fournisseurs → Connecter GitHub
|
|
526
|
+
→ OAuth via GitHub
|
|
527
|
+
→ Reset mensuel (1er du mois)
|
|
528
|
+
|
|
529
|
+
Modèles :
|
|
530
|
+
gh/gpt-5
|
|
531
|
+
gh/claude-4.5-sonnet
|
|
532
|
+
gh/gemini-3-pro
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
</details>
|
|
536
|
+
|
|
537
|
+
<details>
|
|
538
|
+
<summary><b>🔑 Fournisseurs par clé API</b></summary>
|
|
539
|
+
|
|
540
|
+
### NVIDIA NIM (GRATUIT 1000 crédits !)
|
|
541
|
+
|
|
542
|
+
1. S'inscrire : [build.nvidia.com](https://build.nvidia.com)
|
|
543
|
+
2. Obtenir une clé API gratuite (1000 crédits d'inférence inclus)
|
|
544
|
+
3. Tableau de bord → Ajouter fournisseur → NVIDIA NIM :
|
|
545
|
+
- API Key : `nvapi-your-key`
|
|
546
|
+
|
|
547
|
+
**Modèles :** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` et 50+ autres
|
|
548
|
+
|
|
549
|
+
**Conseil Pro :** API compatible OpenAI — fonctionne parfaitement avec la traduction de format d'OmniRoute !
|
|
550
|
+
|
|
551
|
+
### DeepSeek
|
|
552
|
+
|
|
553
|
+
1. S'inscrire : [platform.deepseek.com](https://platform.deepseek.com)
|
|
554
|
+
2. Obtenir une clé API
|
|
555
|
+
3. Tableau de bord → Ajouter fournisseur → DeepSeek
|
|
556
|
+
|
|
557
|
+
**Modèles :** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
|
558
|
+
|
|
559
|
+
### Groq (Niveau gratuit disponible !)
|
|
560
|
+
|
|
561
|
+
1. S'inscrire : [console.groq.com](https://console.groq.com)
|
|
562
|
+
2. Obtenir une clé API (niveau gratuit inclus)
|
|
563
|
+
3. Tableau de bord → Ajouter fournisseur → Groq
|
|
564
|
+
|
|
565
|
+
**Modèles :** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
|
566
|
+
|
|
567
|
+
**Conseil Pro :** Inférence ultra-rapide — idéal pour le codage en temps réel !
|
|
568
|
+
|
|
569
|
+
### OpenRouter (100+ modèles)
|
|
570
|
+
|
|
571
|
+
1. S'inscrire : [openrouter.ai](https://openrouter.ai)
|
|
572
|
+
2. Obtenir une clé API
|
|
573
|
+
3. Tableau de bord → Ajouter fournisseur → OpenRouter
|
|
574
|
+
|
|
575
|
+
**Modèles :** Accès à 100+ modèles de tous les grands fournisseurs via une seule clé API.
|
|
576
|
+
|
|
577
|
+
</details>
|
|
578
|
+
|
|
579
|
+
<details>
|
|
580
|
+
<summary><b>💰 Fournisseurs économiques (Backup)</b></summary>
|
|
581
|
+
|
|
582
|
+
### GLM-4.7 (Reset quotidien, $0.6/1M)
|
|
583
|
+
|
|
584
|
+
1. S'inscrire : [Zhipu AI](https://open.bigmodel.cn/)
|
|
585
|
+
2. Obtenir une clé API du Coding Plan
|
|
586
|
+
3. Tableau de bord → Ajouter clé API :
|
|
587
|
+
- Fournisseur : `glm`
|
|
588
|
+
- API Key : `your-key`
|
|
589
|
+
|
|
590
|
+
**Utilisez :** `glm/glm-4.7`
|
|
591
|
+
|
|
592
|
+
**Conseil Pro :** Le Coding Plan offre 3× le quota à 1/7 du coût ! Reset quotidien à 10h.
|
|
593
|
+
|
|
594
|
+
### MiniMax M2.1 (Reset 5h, $0.20/1M)
|
|
595
|
+
|
|
596
|
+
1. S'inscrire : [MiniMax](https://www.minimax.io/)
|
|
597
|
+
2. Obtenir une clé API
|
|
598
|
+
3. Tableau de bord → Ajouter clé API
|
|
599
|
+
|
|
600
|
+
**Utilisez :** `minimax/MiniMax-M2.1`
|
|
601
|
+
|
|
602
|
+
**Conseil Pro :** L'option la moins chère pour le contexte long (1M tokens) !
|
|
603
|
+
|
|
604
|
+
### Kimi K2 (9 $/mois fixe)
|
|
605
|
+
|
|
606
|
+
1. S'abonner : [Moonshot AI](https://platform.moonshot.ai/)
|
|
607
|
+
2. Obtenir une clé API
|
|
608
|
+
3. Tableau de bord → Ajouter clé API
|
|
609
|
+
|
|
610
|
+
**Utilisez :** `kimi/kimi-latest`
|
|
611
|
+
|
|
612
|
+
**Conseil Pro :** 9 $/mois fixe pour 10M tokens = 0,90 $/1M de coût effectif !
|
|
613
|
+
|
|
614
|
+
</details>
|
|
615
|
+
|
|
616
|
+
<details>
|
|
617
|
+
<summary><b>🆓 Fournisseurs GRATUITS (Backup d'urgence)</b></summary>
|
|
618
|
+
|
|
619
|
+
### iFlow (8 modèles GRATUITS)
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
Tableau de bord → Connecter iFlow
|
|
623
|
+
→ Connexion OAuth iFlow
|
|
624
|
+
→ Utilisation illimitée
|
|
625
|
+
|
|
626
|
+
Modèles :
|
|
627
|
+
if/kimi-k2-thinking
|
|
628
|
+
if/qwen3-coder-plus
|
|
629
|
+
if/glm-4.7
|
|
630
|
+
if/minimax-m2
|
|
631
|
+
if/deepseek-r1
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
### Qwen (3 modèles GRATUITS)
|
|
635
|
+
|
|
636
|
+
```bash
|
|
637
|
+
Tableau de bord → Connecter Qwen
|
|
638
|
+
→ Autorisation par code d'appareil
|
|
639
|
+
→ Utilisation illimitée
|
|
640
|
+
|
|
641
|
+
Modèles :
|
|
642
|
+
qw/qwen3-coder-plus
|
|
643
|
+
qw/qwen3-coder-flash
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
### Kiro (Claude GRATUIT)
|
|
647
|
+
|
|
648
|
+
```bash
|
|
649
|
+
Tableau de bord → Connecter Kiro
|
|
650
|
+
→ AWS Builder ID ou Google/GitHub
|
|
651
|
+
→ Utilisation illimitée
|
|
652
|
+
|
|
653
|
+
Modèles :
|
|
654
|
+
kr/claude-sonnet-4.5
|
|
655
|
+
kr/claude-haiku-4.5
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
</details>
|
|
659
|
+
|
|
660
|
+
<details>
|
|
661
|
+
<summary><b>🎨 Créer des combos</b></summary>
|
|
662
|
+
|
|
663
|
+
### Exemple 1 : Maximiser l'abonnement → Backup économique
|
|
664
|
+
|
|
665
|
+
```
|
|
666
|
+
Tableau de bord → Combos → Créer nouveau
|
|
667
|
+
|
|
668
|
+
Nom : premium-coding
|
|
669
|
+
Modèles :
|
|
670
|
+
1. cc/claude-opus-4-6 (Abonnement principal)
|
|
671
|
+
2. glm/glm-4.7 (Backup économique, $0.6/1M)
|
|
672
|
+
3. minimax/MiniMax-M2.1 (Fallback le moins cher, $0.20/1M)
|
|
673
|
+
|
|
674
|
+
Utilisez en CLI : premium-coding
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
### Exemple 2 : Gratuit uniquement (Zéro coût)
|
|
678
|
+
|
|
679
|
+
```
|
|
680
|
+
Nom : free-combo
|
|
681
|
+
Modèles :
|
|
682
|
+
1. gc/gemini-3-flash-preview (180K gratuits/mois)
|
|
683
|
+
2. if/kimi-k2-thinking (illimité)
|
|
684
|
+
3. qw/qwen3-coder-plus (illimité)
|
|
685
|
+
|
|
686
|
+
Coût : 0 $ pour toujours !
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
</details>
|
|
690
|
+
|
|
691
|
+
<details>
|
|
692
|
+
<summary><b>🔧 Intégration CLI</b></summary>
|
|
693
|
+
|
|
694
|
+
### Cursor IDE
|
|
695
|
+
|
|
696
|
+
```
|
|
697
|
+
Paramètres → Modèles → Avancé :
|
|
698
|
+
OpenAI API Base URL : http://localhost:20128/v1
|
|
699
|
+
OpenAI API Key : [du tableau de bord OmniRoute]
|
|
700
|
+
Model : cc/claude-opus-4-6
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
### Claude Code
|
|
704
|
+
|
|
705
|
+
Utilisez la page **CLI Tools** dans le tableau de bord pour la configuration en un clic, ou modifiez `~/.claude/settings.json` manuellement.
|
|
706
|
+
|
|
707
|
+
### Codex CLI
|
|
708
|
+
|
|
709
|
+
```bash
|
|
710
|
+
export OPENAI_BASE_URL="http://localhost:20128"
|
|
711
|
+
export OPENAI_API_KEY="your-omniroute-api-key"
|
|
712
|
+
|
|
713
|
+
codex "your prompt"
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
### OpenClaw
|
|
717
|
+
|
|
718
|
+
**Option 1 — Tableau de bord (recommandé) :**
|
|
719
|
+
|
|
720
|
+
```
|
|
721
|
+
Tableau de bord → CLI Tools → OpenClaw → Sélectionner modèle → Appliquer
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
**Option 2 — Manuel :** Modifier `~/.openclaw/openclaw.json` :
|
|
725
|
+
|
|
726
|
+
```json
|
|
727
|
+
{
|
|
728
|
+
"models": {
|
|
729
|
+
"providers": {
|
|
730
|
+
"omniroute": {
|
|
731
|
+
"baseUrl": "http://127.0.0.1:20128/v1",
|
|
732
|
+
"apiKey": "sk_omniroute",
|
|
733
|
+
"api": "openai-completions"
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
> **Note :** OpenClaw fonctionne uniquement avec OmniRoute local. Utilisez `127.0.0.1` au lieu de `localhost` pour éviter les problèmes de résolution IPv6.
|
|
741
|
+
|
|
742
|
+
### Cline / Continue / RooCode
|
|
743
|
+
|
|
744
|
+
```
|
|
745
|
+
Paramètres → Configuration API :
|
|
746
|
+
Fournisseur : OpenAI Compatible
|
|
747
|
+
Base URL : http://localhost:20128/v1
|
|
748
|
+
API Key : [du tableau de bord OmniRoute]
|
|
749
|
+
Model : if/kimi-k2-thinking
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
</details>
|
|
753
|
+
|
|
754
|
+
---
|
|
755
|
+
|
|
756
|
+
## 📊 Modèles disponibles
|
|
757
|
+
|
|
758
|
+
<details>
|
|
759
|
+
<summary><b>Voir tous les modèles disponibles</b></summary>
|
|
760
|
+
|
|
761
|
+
**Claude Code (`cc/`)** - Pro/Max :
|
|
762
|
+
|
|
763
|
+
- `cc/claude-opus-4-6`
|
|
764
|
+
- `cc/claude-sonnet-4-5-20250929`
|
|
765
|
+
- `cc/claude-haiku-4-5-20251001`
|
|
766
|
+
|
|
767
|
+
**Codex (`cx/`)** - Plus/Pro :
|
|
768
|
+
|
|
769
|
+
- `cx/gpt-5.2-codex`
|
|
770
|
+
- `cx/gpt-5.1-codex-max`
|
|
771
|
+
|
|
772
|
+
**Gemini CLI (`gc/`)** - GRATUIT :
|
|
773
|
+
|
|
774
|
+
- `gc/gemini-3-flash-preview`
|
|
775
|
+
- `gc/gemini-2.5-pro`
|
|
776
|
+
|
|
777
|
+
**GitHub Copilot (`gh/`)** :
|
|
778
|
+
|
|
779
|
+
- `gh/gpt-5`
|
|
780
|
+
- `gh/claude-4.5-sonnet`
|
|
781
|
+
|
|
782
|
+
**NVIDIA NIM (`nvidia/`)** - Crédits GRATUITS :
|
|
783
|
+
|
|
784
|
+
- `nvidia/llama-3.3-70b-instruct`
|
|
785
|
+
- `nvidia/mistral-7b-instruct`
|
|
786
|
+
- 50+ modèles sur [build.nvidia.com](https://build.nvidia.com)
|
|
787
|
+
|
|
788
|
+
**GLM (`glm/`)** - $0.6/1M :
|
|
789
|
+
|
|
790
|
+
- `glm/glm-4.7`
|
|
791
|
+
|
|
792
|
+
**MiniMax (`minimax/`)** - $0.2/1M :
|
|
793
|
+
|
|
794
|
+
- `minimax/MiniMax-M2.1`
|
|
795
|
+
|
|
796
|
+
**iFlow (`if/`)** - GRATUIT :
|
|
797
|
+
|
|
798
|
+
- `if/kimi-k2-thinking`
|
|
799
|
+
- `if/qwen3-coder-plus`
|
|
800
|
+
- `if/deepseek-r1`
|
|
801
|
+
- `if/glm-4.7`
|
|
802
|
+
- `if/minimax-m2`
|
|
803
|
+
|
|
804
|
+
**Qwen (`qw/`)** - GRATUIT :
|
|
805
|
+
|
|
806
|
+
- `qw/qwen3-coder-plus`
|
|
807
|
+
- `qw/qwen3-coder-flash`
|
|
808
|
+
|
|
809
|
+
**Kiro (`kr/`)** - GRATUIT :
|
|
810
|
+
|
|
811
|
+
- `kr/claude-sonnet-4.5`
|
|
812
|
+
- `kr/claude-haiku-4.5`
|
|
813
|
+
|
|
814
|
+
**OpenRouter (`or/`)** - 100+ modèles :
|
|
815
|
+
|
|
816
|
+
- `or/anthropic/claude-4-sonnet`
|
|
817
|
+
- `or/google/gemini-2.5-pro`
|
|
818
|
+
- Tout modèle de [openrouter.ai/models](https://openrouter.ai/models)
|
|
819
|
+
|
|
820
|
+
</details>
|
|
821
|
+
|
|
822
|
+
---
|
|
823
|
+
|
|
824
|
+
## 🧪 Évaluations (Evals)
|
|
825
|
+
|
|
826
|
+
OmniRoute inclut un framework d'évaluation intégré pour tester la qualité des réponses LLM contre un golden set. Accès via **Analytics → Evals** dans le tableau de bord.
|
|
827
|
+
|
|
828
|
+
### Golden Set intégré
|
|
829
|
+
|
|
830
|
+
Le « OmniRoute Golden Set » préchargé contient 10 cas de test :
|
|
831
|
+
|
|
832
|
+
- Salutations, mathématiques, géographie, génération de code
|
|
833
|
+
- Conformité format JSON, traduction, markdown
|
|
834
|
+
- Rejet de sécurité (contenu nocif), comptage, logique booléenne
|
|
835
|
+
|
|
836
|
+
### Stratégies d'évaluation
|
|
837
|
+
|
|
838
|
+
| Stratégie | Description | Exemple |
|
|
839
|
+
| ---------- | -------------------------------------------------------------- | -------------------------------- |
|
|
840
|
+
| `exact` | La sortie doit correspondre exactement | `"4"` |
|
|
841
|
+
| `contains` | La sortie doit contenir la sous-chaîne (insensible à la casse) | `"Paris"` |
|
|
842
|
+
| `regex` | La sortie doit correspondre au motif regex | `"1.*2.*3"` |
|
|
843
|
+
| `custom` | Fonction JS personnalisée retourne true/false | `(output) => output.length > 10` |
|
|
844
|
+
|
|
845
|
+
---
|
|
846
|
+
|
|
847
|
+
## 🐛 Dépannage
|
|
848
|
+
|
|
849
|
+
<details>
|
|
850
|
+
<summary><b>Cliquez pour développer le guide de dépannage</b></summary>
|
|
851
|
+
|
|
852
|
+
**« Language model did not provide messages »**
|
|
853
|
+
|
|
854
|
+
- Quota du fournisseur épuisé → Vérifiez le suivi de quota dans le tableau de bord
|
|
855
|
+
- Solution : Utilisez un combo avec fallback ou passez à un niveau moins cher
|
|
856
|
+
|
|
857
|
+
**Rate limiting**
|
|
858
|
+
|
|
859
|
+
- Quota d'abonnement épuisé → Fallback vers GLM/MiniMax
|
|
860
|
+
- Ajoutez un combo : `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
861
|
+
|
|
862
|
+
**Token OAuth expiré**
|
|
863
|
+
|
|
864
|
+
- Renouvelé automatiquement par OmniRoute
|
|
865
|
+
- Si le problème persiste : Tableau de bord → Fournisseur → Reconnecter
|
|
866
|
+
|
|
867
|
+
**Coûts élevés**
|
|
868
|
+
|
|
869
|
+
- Vérifiez les statistiques d'utilisation dans Tableau de bord → Coûts
|
|
870
|
+
- Changez le modèle principal pour GLM/MiniMax
|
|
871
|
+
- Utilisez le niveau gratuit (Gemini CLI, iFlow) pour les tâches non critiques
|
|
872
|
+
|
|
873
|
+
**Le tableau de bord s'ouvre sur le mauvais port**
|
|
874
|
+
|
|
875
|
+
- Définissez `PORT=20128` et `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
|
876
|
+
|
|
877
|
+
**Erreurs de cloud sync**
|
|
878
|
+
|
|
879
|
+
- Vérifiez que `BASE_URL` pointe vers votre instance en cours d'exécution
|
|
880
|
+
- Vérifiez que `CLOUD_URL` pointe vers le point de terminaison cloud attendu
|
|
881
|
+
- Gardez les valeurs `NEXT_PUBLIC_*` alignées avec les valeurs du serveur
|
|
882
|
+
|
|
883
|
+
**Le premier login ne fonctionne pas**
|
|
884
|
+
|
|
885
|
+
- Vérifiez `INITIAL_PASSWORD` dans `.env`
|
|
886
|
+
- Si non défini, le mot de passe par défaut est `123456`
|
|
887
|
+
|
|
888
|
+
**Pas de logs de requêtes**
|
|
889
|
+
|
|
890
|
+
- Définissez `ENABLE_REQUEST_LOGS=true` dans `.env`
|
|
891
|
+
|
|
892
|
+
**Le test de connexion affiche « Invalid » pour les fournisseurs compatibles OpenAI**
|
|
893
|
+
|
|
894
|
+
- Beaucoup de fournisseurs n'exposent pas le point de terminaison `/models`
|
|
895
|
+
- OmniRoute v0.9.0+ inclut une validation de secours via chat completions
|
|
896
|
+
- Assurez-vous que l'URL de base inclut le suffixe `/v1`
|
|
897
|
+
|
|
898
|
+
</details>
|
|
899
|
+
|
|
900
|
+
---
|
|
901
|
+
|
|
902
|
+
## 🛠️ Stack technologique
|
|
903
|
+
|
|
904
|
+
- **Runtime** : Node.js 20+
|
|
905
|
+
- **Langage** : TypeScript 5.9 — **100% TypeScript** dans `src/` et `open-sse/` (v0.9.0)
|
|
906
|
+
- **Framework** : Next.js 16 + React 19 + Tailwind CSS 4
|
|
907
|
+
- **Base de données** : LowDB (JSON) + SQLite (état du domaine + logs proxy)
|
|
908
|
+
- **Streaming** : Server-Sent Events (SSE)
|
|
909
|
+
- **Auth** : OAuth 2.0 (PKCE) + JWT + API Keys
|
|
910
|
+
- **Tests** : Node.js test runner (368+ tests unitaires)
|
|
911
|
+
- **CI/CD** : GitHub Actions (publication automatique npm + Docker Hub lors du release)
|
|
912
|
+
- **Site web** : [omniroute.online](https://omniroute.online)
|
|
913
|
+
- **Package** : [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
|
|
914
|
+
- **Docker** : [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
|
|
915
|
+
- **Résilience** : Circuit breaker, backoff exponentiel, anti-thundering herd, spoofing TLS
|
|
916
|
+
|
|
917
|
+
---
|
|
918
|
+
|
|
919
|
+
## 📖 Documentation
|
|
920
|
+
|
|
921
|
+
| Document | Description |
|
|
922
|
+
| ------------------------------------------ | --------------------------------------------------- |
|
|
923
|
+
| [Guide utilisateur](docs/USER_GUIDE.md) | Fournisseurs, combos, intégration CLI, déploiement |
|
|
924
|
+
| [Référence API](docs/API_REFERENCE.md) | Tous les endpoints avec exemples |
|
|
925
|
+
| [Dépannage](docs/TROUBLESHOOTING.md) | Problèmes courants et solutions |
|
|
926
|
+
| [Architecture](docs/ARCHITECTURE.md) | Architecture système et détails internes |
|
|
927
|
+
| [Contribuer](CONTRIBUTING.md) | Configuration de développement et directives |
|
|
928
|
+
| [Spécification OpenAPI](docs/openapi.yaml) | Spécification OpenAPI 3.0 |
|
|
929
|
+
| [Politique de sécurité](SECURITY.md) | Signalement de vulnérabilités et pratiques sécurité |
|
|
930
|
+
|
|
931
|
+
---
|
|
932
|
+
|
|
933
|
+
## 📧 Support
|
|
934
|
+
|
|
935
|
+
- **Site web** : [omniroute.online](https://omniroute.online)
|
|
936
|
+
- **GitHub** : [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
|
937
|
+
- **Issues** : [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
|
938
|
+
- **Projet original** : [9router par decolua](https://github.com/decolua/9router)
|
|
939
|
+
|
|
940
|
+
---
|
|
941
|
+
|
|
942
|
+
## 👥 Contributeurs
|
|
943
|
+
|
|
944
|
+
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
|
945
|
+
|
|
946
|
+
### Comment contribuer
|
|
947
|
+
|
|
948
|
+
1. Forkez le dépôt
|
|
949
|
+
2. Créez votre branche de fonctionnalité (`git checkout -b feature/amazing-feature`)
|
|
950
|
+
3. Committez vos changements (`git commit -m 'Add amazing feature'`)
|
|
951
|
+
4. Poussez vers la branche (`git push origin feature/amazing-feature`)
|
|
952
|
+
5. Ouvrez une Pull Request
|
|
953
|
+
|
|
954
|
+
Consultez [CONTRIBUTING.md](CONTRIBUTING.md) pour les directives détaillées.
|
|
955
|
+
|
|
956
|
+
### Publier une nouvelle version
|
|
957
|
+
|
|
958
|
+
```bash
|
|
959
|
+
# Créer un release — la publication npm est automatique
|
|
960
|
+
gh release create v0.9.0 --title "v0.9.0" --generate-notes
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
---
|
|
964
|
+
|
|
965
|
+
## 📊 Historique des Stars
|
|
966
|
+
|
|
967
|
+
<a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
|
|
968
|
+
<picture>
|
|
969
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
|
|
970
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
|
|
971
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
|
|
972
|
+
</picture>
|
|
973
|
+
</a>
|
|
974
|
+
|
|
975
|
+
---
|
|
976
|
+
|
|
977
|
+
## 🙏 Remerciements
|
|
978
|
+
|
|
979
|
+
Remerciements spéciaux à **[9router](https://github.com/decolua/9router)** par **[decolua](https://github.com/decolua)** — le projet original qui a inspiré ce fork. OmniRoute construit sur cette base incroyable avec des fonctionnalités supplémentaires, des APIs multi-modales et une réécriture complète en TypeScript.
|
|
980
|
+
|
|
981
|
+
Remerciements spéciaux à **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — l'implémentation originale en Go qui a inspiré ce portage en JavaScript.
|
|
982
|
+
|
|
983
|
+
---
|
|
984
|
+
|
|
985
|
+
## 📄 Licence
|
|
986
|
+
|
|
987
|
+
Licence MIT — voir [LICENSE](LICENSE) pour les détails.
|
|
988
|
+
|
|
989
|
+
---
|
|
990
|
+
|
|
991
|
+
<div align="center">
|
|
992
|
+
<sub>Fait avec ❤️ pour les développeurs qui codent 24/7</sub>
|
|
993
|
+
<br/>
|
|
994
|
+
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
|
995
|
+
</div>
|