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.it.md
ADDED
|
@@ -0,0 +1,995 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
|
|
3
|
+
|
|
4
|
+
# 🚀 OmniRoute — Il Gateway IA Gratuito
|
|
5
|
+
|
|
6
|
+
### Non smettere mai di programmare. Routing intelligente verso **modelli IA GRATUITI e economici** con fallback automatico.
|
|
7
|
+
|
|
8
|
+
_Il tuo proxy API universale — un endpoint, 36+ provider, zero downtime._
|
|
9
|
+
|
|
10
|
+
**Chat Completions • Embeddings • Generazione Immagini • Audio • Reranking • 100% TypeScript**
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
### 🤖 Provider IA gratuito per i tuoi agenti di programmazione preferiti
|
|
15
|
+
|
|
16
|
+
_Connetti qualsiasi IDE o strumento CLI con IA tramite OmniRoute — gateway API gratuito per programmazione illimitata._
|
|
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>📡 Tutti gli agenti si connettono via <code>http://localhost:20128/v1</code> o <code>http://cloud.omniroute.online/v1</code> — una configurazione, modelli e quota illimitati</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
|
+
[🌐 Sito Web](https://omniroute.online) • [🚀 Avvio Rapido](#-avvio-rapido) • [💡 Funzionalità](#-funzionalità-principali) • [📖 Docs](#-documentazione) • [💰 Prezzi](#-panoramica-prezzi)
|
|
105
|
+
|
|
106
|
+
🌐 **Disponibile in:** [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
|
+
## 🤔 Perché OmniRoute?
|
|
113
|
+
|
|
114
|
+
**Smetti di sprecare soldi e di sbattere contro i limiti:**
|
|
115
|
+
|
|
116
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> La quota dell'abbonamento scade inutilizzata ogni mese
|
|
117
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> I limiti di rate ti fermano nel mezzo della programmazione
|
|
118
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> API costose ($20-50/mese per provider)
|
|
119
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Cambio manuale tra provider
|
|
120
|
+
|
|
121
|
+
**OmniRoute risolve tutto questo:**
|
|
122
|
+
|
|
123
|
+
- ✅ **Massimizza gli abbonamenti** — Traccia le quote, usa tutto prima del reset
|
|
124
|
+
- ✅ **Fallback automatico** — Abbonamento → API Key → Economico → Gratuito, zero downtime
|
|
125
|
+
- ✅ **Multi-account** — Round-robin tra account per provider
|
|
126
|
+
- ✅ **Universale** — Funziona con Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, qualsiasi strumento CLI
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 🔄 Come Funziona
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
┌─────────────┐
|
|
134
|
+
│ Il tuo CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
|
135
|
+
│ Tool │
|
|
136
|
+
└──────┬──────┘
|
|
137
|
+
│ http://localhost:20128/v1
|
|
138
|
+
↓
|
|
139
|
+
┌─────────────────────────────────────────┐
|
|
140
|
+
│ OmniRoute (Router Intelligente) │
|
|
141
|
+
│ • Traduzione formato (OpenAI ↔ Claude) │
|
|
142
|
+
│ • Tracciamento quote + Embeddings + Immagini │
|
|
143
|
+
│ • Rinnovo automatico dei token │
|
|
144
|
+
└──────┬──────────────────────────────────┘
|
|
145
|
+
│
|
|
146
|
+
├─→ [Tier 1: ABBONAMENTO] Claude Code, Codex, Gemini CLI
|
|
147
|
+
│ ↓ quota esaurita
|
|
148
|
+
├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, ecc.
|
|
149
|
+
│ ↓ limite budget
|
|
150
|
+
├─→ [Tier 3: ECONOMICO] GLM ($0.6/1M), MiniMax ($0.2/1M)
|
|
151
|
+
│ ↓ limite budget
|
|
152
|
+
└─→ [Tier 4: GRATUITO] iFlow, Qwen, Kiro (illimitato)
|
|
153
|
+
|
|
154
|
+
Risultato: Non smettere mai di programmare, costo minimo
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## ⚡ Avvio Rapido
|
|
160
|
+
|
|
161
|
+
**1. Installa globalmente:**
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm install -g omniroute
|
|
165
|
+
omniroute
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
🎉 La Dashboard si apre su `http://localhost:20128`
|
|
169
|
+
|
|
170
|
+
| Comando | Descrizione |
|
|
171
|
+
| ----------------------- | ------------------------------------------- |
|
|
172
|
+
| `omniroute` | Avviare il server (porta predefinita 20128) |
|
|
173
|
+
| `omniroute --port 3000` | Usare una porta personalizzata |
|
|
174
|
+
| `omniroute --no-open` | Non aprire il browser automaticamente |
|
|
175
|
+
| `omniroute --help` | Mostrare l'aiuto |
|
|
176
|
+
|
|
177
|
+
**2. Connetti un provider GRATUITO:**
|
|
178
|
+
|
|
179
|
+
Dashboard → Provider → Connetti **Claude Code** o **Antigravity** → Login OAuth → Fatto!
|
|
180
|
+
|
|
181
|
+
**3. Usa nel tuo strumento CLI:**
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Impostazioni:
|
|
185
|
+
Endpoint: http://localhost:20128/v1
|
|
186
|
+
API Key: [copia dalla dashboard]
|
|
187
|
+
Model: if/kimi-k2-thinking
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Tutto qui!** Inizia a programmare con modelli IA GRATUITI.
|
|
191
|
+
|
|
192
|
+
**Alternativa — eseguire dal codice sorgente:**
|
|
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 è disponibile come immagine Docker pubblica su [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
|
205
|
+
|
|
206
|
+
**Avvio rapido:**
|
|
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
|
+
**Con file di ambiente:**
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Copia e modifica il .env prima
|
|
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
|
+
**Con Docker Compose:**
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Profilo base (senza strumenti CLI)
|
|
236
|
+
docker compose --profile base up -d
|
|
237
|
+
|
|
238
|
+
# Profilo CLI (Claude Code, Codex, OpenClaw integrati)
|
|
239
|
+
docker compose --profile cli up -d
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
| Immagine | Tag | Dimensione | Descrizione |
|
|
243
|
+
| ------------------------ | -------- | ---------- | ----------------------- |
|
|
244
|
+
| `diegosouzapw/omniroute` | `latest` | ~250MB | Ultima versione stabile |
|
|
245
|
+
| `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Versione attuale |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 💰 Panoramica Prezzi
|
|
250
|
+
|
|
251
|
+
| Tier | Provider | Costo | Reset Quota | Ideale Per |
|
|
252
|
+
| ------------------ | ----------------- | ---------------------------- | --------------------- | ------------------------------- |
|
|
253
|
+
| **💳 ABBONAMENTO** | Claude Code (Pro) | $20/mese | 5h + settimanale | Già abbonato |
|
|
254
|
+
| | Codex (Plus/Pro) | $20-200/mese | 5h + settimanale | Utenti OpenAI |
|
|
255
|
+
| | Gemini CLI | **GRATUITO** | 180K/mese + 1K/giorno | Tutti! |
|
|
256
|
+
| | GitHub Copilot | $10-19/mese | Mensile | Utenti GitHub |
|
|
257
|
+
| **🔑 API KEY** | NVIDIA NIM | **GRATUITO** (1000 crediti) | Una tantum | Test gratuiti |
|
|
258
|
+
| | DeepSeek | A consumo | Nessuno | Miglior rapporto qualità-prezzo |
|
|
259
|
+
| | Groq | Livello gratis + a pagamento | Limitato | Inferenza ultra-veloce |
|
|
260
|
+
| | xAI (Grok) | A consumo | Nessuno | Modelli Grok |
|
|
261
|
+
| | Mistral | Livello gratis + a pagamento | Limitato | IA Europea |
|
|
262
|
+
| | OpenRouter | A consumo | Nessuno | 100+ modelli |
|
|
263
|
+
| **💰 ECONOMICO** | GLM-4.7 | $0.6/1M | Giornaliero 10h | Backup economico |
|
|
264
|
+
| | MiniMax M2.1 | $0.2/1M | Rotativo 5h | Opzione più economica |
|
|
265
|
+
| | Kimi K2 | $9/mese fisso | 10M token/mese | Costo prevedibile |
|
|
266
|
+
| **🆓 GRATUITO** | iFlow | $0 | Illimitato | 8 modelli gratuiti |
|
|
267
|
+
| | Qwen | $0 | Illimitato | 3 modelli gratuiti |
|
|
268
|
+
| | Kiro | $0 | Illimitato | Claude gratuito |
|
|
269
|
+
|
|
270
|
+
**💡 Consiglio Pro:** Inizia con Gemini CLI (180K gratis/mese) + iFlow (illimitato gratis) = $0 di costo!
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 🎯 Casi d'Uso
|
|
275
|
+
|
|
276
|
+
### Caso 1: "Ho un abbonamento Claude Pro"
|
|
277
|
+
|
|
278
|
+
**Problema:** La quota scade inutilizzata, limiti di rate durante la programmazione intensa
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
Combo: "maximize-claude"
|
|
282
|
+
1. cc/claude-opus-4-6 (usa l'abbonamento al massimo)
|
|
283
|
+
2. glm/glm-4.7 (backup economico quando la quota è esaurita)
|
|
284
|
+
3. if/kimi-k2-thinking (fallback d'emergenza gratuito)
|
|
285
|
+
|
|
286
|
+
Costo mensile: $20 (abbonamento) + ~$5 (backup) = $25 totale
|
|
287
|
+
vs. $20 + sbattere contro i limiti = frustrazione
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Caso 2: "Voglio costo zero"
|
|
291
|
+
|
|
292
|
+
**Problema:** Non può permettersi abbonamenti, ha bisogno di IA affidabile per programmare
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
Combo: "free-forever"
|
|
296
|
+
1. gc/gemini-3-flash (180K gratis/mese)
|
|
297
|
+
2. if/kimi-k2-thinking (illimitato gratis)
|
|
298
|
+
3. qw/qwen3-coder-plus (illimitato gratis)
|
|
299
|
+
|
|
300
|
+
Costo mensile: $0
|
|
301
|
+
Qualità: Modelli pronti per la produzione
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Caso 3: "Devo programmare 24/7, senza interruzioni"
|
|
305
|
+
|
|
306
|
+
**Problema:** Scadenze strette, non può permettersi downtime
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
Combo: "always-on"
|
|
310
|
+
1. cc/claude-opus-4-6 (migliore qualità)
|
|
311
|
+
2. cx/gpt-5.2-codex (secondo abbonamento)
|
|
312
|
+
3. glm/glm-4.7 (economico, reset giornaliero)
|
|
313
|
+
4. minimax/MiniMax-M2.1 (più economico, reset 5h)
|
|
314
|
+
5. if/kimi-k2-thinking (gratuito illimitato)
|
|
315
|
+
|
|
316
|
+
Risultato: 5 livelli di fallback = zero downtime
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Caso 4: "Voglio IA GRATUITA in OpenClaw"
|
|
320
|
+
|
|
321
|
+
**Problema:** Ha bisogno di assistente IA nelle app di messaggistica, completamente gratuito
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
Combo: "openclaw-free"
|
|
325
|
+
1. if/glm-4.7 (illimitato gratis)
|
|
326
|
+
2. if/minimax-m2.1 (illimitato gratis)
|
|
327
|
+
3. if/kimi-k2-thinking (illimitato gratis)
|
|
328
|
+
|
|
329
|
+
Costo mensile: $0
|
|
330
|
+
Accesso via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 💡 Funzionalità Principali
|
|
336
|
+
|
|
337
|
+
### 🧠 Routing & Intelligenza
|
|
338
|
+
|
|
339
|
+
| Funzionalità | Cosa Fa |
|
|
340
|
+
| ---------------------------------------- | ----------------------------------------------------------------------------- |
|
|
341
|
+
| 🎯 **Fallback intelligente 4 livelli** | Auto-routing: Abbonamento → API Key → Economico → Gratuito |
|
|
342
|
+
| 📊 **Tracciamento quote in tempo reale** | Conteggio token live + countdown reset per provider |
|
|
343
|
+
| 🔄 **Traduzione di formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro trasparente |
|
|
344
|
+
| 👥 **Supporto multi-account** | Account multipli per provider con selezione intelligente |
|
|
345
|
+
| 🔄 **Rinnovo automatico dei token** | I token OAuth si rinnovano automaticamente con retry |
|
|
346
|
+
| 🎨 **Combo personalizzati** | 6 strategie: fill-first, round-robin, p2c, random, least-used, cost-optimized |
|
|
347
|
+
| 🧩 **Modelli personalizzati** | Aggiungi qualsiasi ID modello a qualsiasi provider |
|
|
348
|
+
| 🌐 **Router wildcard** | Instrada pattern `provider/*` verso qualsiasi provider dinamicamente |
|
|
349
|
+
| 🧠 **Budget di ragionamento** | Modalità passthrough, auto, custom e adaptive per modelli di ragionamento |
|
|
350
|
+
| 💬 **Iniezione System Prompt** | System prompt globale applicato a tutte le richieste |
|
|
351
|
+
| 📄 **API Responses** | Supporto completo per OpenAI Responses API (`/v1/responses`) per Codex |
|
|
352
|
+
|
|
353
|
+
### 🎵 API Multi-modali
|
|
354
|
+
|
|
355
|
+
| Funzionalità | Cosa Fa |
|
|
356
|
+
| --------------------------- | ---------------------------------------------------- |
|
|
357
|
+
| 🖼️ **Generazione immagini** | `/v1/images/generations` — 4 provider, 9+ modelli |
|
|
358
|
+
| 📐 **Embeddings** | `/v1/embeddings` — 6 provider, 9+ modelli |
|
|
359
|
+
| 🎤 **Trascrizione audio** | `/v1/audio/transcriptions` — Compatibile Whisper |
|
|
360
|
+
| 🔊 **Testo a voce** | `/v1/audio/speech` — Sintesi audio multi-provider |
|
|
361
|
+
| 🛡️ **Moderazioni** | `/v1/moderations` — Controlli di sicurezza |
|
|
362
|
+
| 🔀 **Reranking** | `/v1/rerank` — Riclassificazione rilevanza documenti |
|
|
363
|
+
|
|
364
|
+
### 🛡️ Resilienza & Sicurezza
|
|
365
|
+
|
|
366
|
+
| Funzionalità | Cosa Fa |
|
|
367
|
+
| ------------------------------- | -------------------------------------------------------------- |
|
|
368
|
+
| 🔌 **Circuit Breaker** | Apertura/chiusura auto per provider con soglie configurabili |
|
|
369
|
+
| 🛡️ **Anti-Thundering Herd** | Mutex + semaforo rate-limit per provider con API key |
|
|
370
|
+
| 🧠 **Cache semantica** | Cache a due livelli (firma + semantica) riduce costi e latenza |
|
|
371
|
+
| ⚡ **Idempotenza richieste** | Finestra dedup 5s per richieste duplicate |
|
|
372
|
+
| 🔒 **Spoofing TLS Fingerprint** | Bypass rilevamento bot tramite wreq-js |
|
|
373
|
+
| 🌐 **Filtro IP** | Allowlist/blocklist per controllo accesso API |
|
|
374
|
+
| 📊 **Rate limit modificabili** | RPM, gap minimo e concorrenza massima configurabili |
|
|
375
|
+
|
|
376
|
+
### 📊 Osservabilità & Analytics
|
|
377
|
+
|
|
378
|
+
| Funzionalità | Cosa Fa |
|
|
379
|
+
| ----------------------------- | ------------------------------------------------------------ |
|
|
380
|
+
| 📝 **Log richieste** | Modalità debug con log completi richiesta/risposta |
|
|
381
|
+
| 💾 **Log SQLite** | Log proxy persistenti che sopravvivono ai riavvii |
|
|
382
|
+
| 📊 **Dashboard analytics** | Recharts: card statistiche, grafico uso, tabella provider |
|
|
383
|
+
| 📈 **Tracciamento progresso** | Eventi SSE di progresso opt-in per lo streaming |
|
|
384
|
+
| 🧪 **Valutazioni LLM** | Test con golden set e 4 strategie di corrispondenza |
|
|
385
|
+
| 🔍 **Telemetria richieste** | Aggregazione latenza p50/p95/p99 + tracciamento X-Request-Id |
|
|
386
|
+
| 📋 **Log + Quote** | Pagine dedicate per navigazione log e tracciamento quote |
|
|
387
|
+
| 🏥 **Dashboard salute** | Uptime, stati circuit breaker, lockout, statistiche cache |
|
|
388
|
+
| 💰 **Tracciamento costi** | Gestione budget + configurazione prezzi per modello |
|
|
389
|
+
|
|
390
|
+
### ☁️ Deploy & Sincronizzazione
|
|
391
|
+
|
|
392
|
+
| Funzionalità | Cosa Fa |
|
|
393
|
+
| -------------------------------- | -------------------------------------------------------------------------------- |
|
|
394
|
+
| 💾 **Cloud Sync** | Sincronizza impostazioni tra dispositivi via Cloudflare Workers |
|
|
395
|
+
| 🌐 **Deploy ovunque** | Localhost, VPS, Docker, Cloudflare Workers |
|
|
396
|
+
| 🔑 **Gestione API Key** | Genera, ruota e limita API key per provider |
|
|
397
|
+
| 🧙 **Assistente configurazione** | Setup guidato in 4 passaggi per nuovi utenti |
|
|
398
|
+
| 🔧 **Dashboard CLI Tools** | Configurazione con un clic per Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
|
399
|
+
| 🔄 **Backup DB** | Backup e ripristino automatici di tutte le impostazioni |
|
|
400
|
+
|
|
401
|
+
<details>
|
|
402
|
+
<summary><b>📖 Dettagli funzionalità</b></summary>
|
|
403
|
+
|
|
404
|
+
### 🎯 Fallback intelligente 4 livelli
|
|
405
|
+
|
|
406
|
+
Crea combo con fallback automatico:
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
Combo: "my-coding-stack"
|
|
410
|
+
1. cc/claude-opus-4-6 (il tuo abbonamento)
|
|
411
|
+
2. nvidia/llama-3.3-70b (API NVIDIA gratuita)
|
|
412
|
+
3. glm/glm-4.7 (backup economico, $0.6/1M)
|
|
413
|
+
4. if/kimi-k2-thinking (fallback gratuito)
|
|
414
|
+
|
|
415
|
+
→ Cambia automaticamente quando la quota si esaurisce o si verificano errori
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### 📊 Tracciamento quote in tempo reale
|
|
419
|
+
|
|
420
|
+
- Consumo token per provider
|
|
421
|
+
- Countdown reset (5 ore, giornaliero, settimanale)
|
|
422
|
+
- Stima dei costi per livelli a pagamento
|
|
423
|
+
- Report spese mensili
|
|
424
|
+
|
|
425
|
+
### 🔄 Traduzione di formato
|
|
426
|
+
|
|
427
|
+
Traduzione trasparente tra formati:
|
|
428
|
+
|
|
429
|
+
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
|
|
430
|
+
- Il tuo CLI invia in formato OpenAI → OmniRoute traduce → Il provider riceve il formato nativo
|
|
431
|
+
- Funziona con qualsiasi strumento che supporti endpoint OpenAI personalizzati
|
|
432
|
+
|
|
433
|
+
### 👥 Supporto multi-account
|
|
434
|
+
|
|
435
|
+
- Aggiungi account multipli per provider
|
|
436
|
+
- Round-robin automatico o routing per priorità
|
|
437
|
+
- Fallback all'account successivo quando la quota viene raggiunta
|
|
438
|
+
|
|
439
|
+
### 🔄 Rinnovo automatico dei token
|
|
440
|
+
|
|
441
|
+
- I token OAuth si rinnovano automaticamente prima della scadenza
|
|
442
|
+
- Nessuna necessità di ri-autenticazione manuale
|
|
443
|
+
- Esperienza trasparente su tutti i provider
|
|
444
|
+
|
|
445
|
+
### 🎨 Combo personalizzati
|
|
446
|
+
|
|
447
|
+
- Crea combinazioni di modelli illimitate
|
|
448
|
+
- 6 strategie: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
|
|
449
|
+
- Condividi combo tra dispositivi con Cloud Sync
|
|
450
|
+
|
|
451
|
+
### 🏥 Dashboard salute
|
|
452
|
+
|
|
453
|
+
- Stato del sistema (uptime, versione, utilizzo memoria)
|
|
454
|
+
- Stati circuit breaker per provider (Closed/Open/Half-Open)
|
|
455
|
+
- Stato rate limit e lockout attivi
|
|
456
|
+
- Statistiche cache firme
|
|
457
|
+
- Telemetria latenza (p50/p95/p99) + cache prompt
|
|
458
|
+
- Reset salute con un clic
|
|
459
|
+
|
|
460
|
+
### 🔧 Playground del traduttore
|
|
461
|
+
|
|
462
|
+
- Debug, test e visualizzazione delle traduzioni di formato API
|
|
463
|
+
- Invia richieste e vedi come OmniRoute traduce tra formati dei provider
|
|
464
|
+
- Inestimabile per risolvere problemi di integrazione
|
|
465
|
+
|
|
466
|
+
### 💾 Cloud Sync
|
|
467
|
+
|
|
468
|
+
- Sincronizza provider, combo e impostazioni tra dispositivi
|
|
469
|
+
- Sincronizzazione in background automatica
|
|
470
|
+
- Archiviazione criptata sicura
|
|
471
|
+
|
|
472
|
+
</details>
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## 📖 Guida alla Configurazione
|
|
477
|
+
|
|
478
|
+
<details>
|
|
479
|
+
<summary><b>💳 Provider per abbonamento</b></summary>
|
|
480
|
+
|
|
481
|
+
### Claude Code (Pro/Max)
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
Dashboard → Provider → Connetti Claude Code
|
|
485
|
+
→ Login OAuth → Rinnovo automatico token
|
|
486
|
+
→ Tracciamento quota 5h + settimanale
|
|
487
|
+
|
|
488
|
+
Modelli:
|
|
489
|
+
cc/claude-opus-4-6
|
|
490
|
+
cc/claude-sonnet-4-5-20250929
|
|
491
|
+
cc/claude-haiku-4-5-20251001
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Consiglio Pro:** Usa Opus per compiti complessi, Sonnet per velocità. OmniRoute traccia la quota per modello!
|
|
495
|
+
|
|
496
|
+
### OpenAI Codex (Plus/Pro)
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
Dashboard → Provider → Connetti Codex
|
|
500
|
+
→ Login OAuth (porta 1455)
|
|
501
|
+
→ Reset 5h + settimanale
|
|
502
|
+
|
|
503
|
+
Modelli:
|
|
504
|
+
cx/gpt-5.2-codex
|
|
505
|
+
cx/gpt-5.1-codex-max
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Gemini CLI (GRATUITO 180K/mese!)
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
Dashboard → Provider → Connetti Gemini CLI
|
|
512
|
+
→ Google OAuth
|
|
513
|
+
→ 180K completions/mese + 1K/giorno
|
|
514
|
+
|
|
515
|
+
Modelli:
|
|
516
|
+
gc/gemini-3-flash-preview
|
|
517
|
+
gc/gemini-2.5-pro
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
**Miglior valore:** Livello gratuito enorme! Usa prima dei livelli a pagamento.
|
|
521
|
+
|
|
522
|
+
### GitHub Copilot
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
Dashboard → Provider → Connetti GitHub
|
|
526
|
+
→ OAuth via GitHub
|
|
527
|
+
→ Reset mensile (1° del mese)
|
|
528
|
+
|
|
529
|
+
Modelli:
|
|
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>🔑 Provider per API Key</b></summary>
|
|
539
|
+
|
|
540
|
+
### NVIDIA NIM (GRATUITO 1000 crediti!)
|
|
541
|
+
|
|
542
|
+
1. Registrati: [build.nvidia.com](https://build.nvidia.com)
|
|
543
|
+
2. Ottieni una API key gratuita (1000 crediti di inferenza inclusi)
|
|
544
|
+
3. Dashboard → Aggiungi Provider → NVIDIA NIM:
|
|
545
|
+
- API Key: `nvapi-your-key`
|
|
546
|
+
|
|
547
|
+
**Modelli:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` e 50+ altri
|
|
548
|
+
|
|
549
|
+
**Consiglio Pro:** API compatibile OpenAI — funziona perfettamente con la traduzione di formato di OmniRoute!
|
|
550
|
+
|
|
551
|
+
### DeepSeek
|
|
552
|
+
|
|
553
|
+
1. Registrati: [platform.deepseek.com](https://platform.deepseek.com)
|
|
554
|
+
2. Ottieni una API key
|
|
555
|
+
3. Dashboard → Aggiungi Provider → DeepSeek
|
|
556
|
+
|
|
557
|
+
**Modelli:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
|
558
|
+
|
|
559
|
+
### Groq (Livello gratuito disponibile!)
|
|
560
|
+
|
|
561
|
+
1. Registrati: [console.groq.com](https://console.groq.com)
|
|
562
|
+
2. Ottieni una API key (livello gratuito incluso)
|
|
563
|
+
3. Dashboard → Aggiungi Provider → Groq
|
|
564
|
+
|
|
565
|
+
**Modelli:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
|
566
|
+
|
|
567
|
+
**Consiglio Pro:** Inferenza ultra-veloce — ideale per programmazione in tempo reale!
|
|
568
|
+
|
|
569
|
+
### OpenRouter (100+ modelli)
|
|
570
|
+
|
|
571
|
+
1. Registrati: [openrouter.ai](https://openrouter.ai)
|
|
572
|
+
2. Ottieni una API key
|
|
573
|
+
3. Dashboard → Aggiungi Provider → OpenRouter
|
|
574
|
+
|
|
575
|
+
**Modelli:** Accesso a 100+ modelli da tutti i principali provider tramite una singola API key.
|
|
576
|
+
|
|
577
|
+
</details>
|
|
578
|
+
|
|
579
|
+
<details>
|
|
580
|
+
<summary><b>💰 Provider economici (Backup)</b></summary>
|
|
581
|
+
|
|
582
|
+
### GLM-4.7 (Reset giornaliero, $0.6/1M)
|
|
583
|
+
|
|
584
|
+
1. Registrati: [Zhipu AI](https://open.bigmodel.cn/)
|
|
585
|
+
2. Ottieni la API key dal Coding Plan
|
|
586
|
+
3. Dashboard → Aggiungi API Key:
|
|
587
|
+
- Provider: `glm`
|
|
588
|
+
- API Key: `your-key`
|
|
589
|
+
|
|
590
|
+
**Usa:** `glm/glm-4.7`
|
|
591
|
+
|
|
592
|
+
**Consiglio Pro:** Il Coding Plan offre 3× quota a 1/7 del costo! Reset giornaliero alle 10:00.
|
|
593
|
+
|
|
594
|
+
### MiniMax M2.1 (Reset 5h, $0.20/1M)
|
|
595
|
+
|
|
596
|
+
1. Registrati: [MiniMax](https://www.minimax.io/)
|
|
597
|
+
2. Ottieni una API key
|
|
598
|
+
3. Dashboard → Aggiungi API Key
|
|
599
|
+
|
|
600
|
+
**Usa:** `minimax/MiniMax-M2.1`
|
|
601
|
+
|
|
602
|
+
**Consiglio Pro:** L'opzione più economica per contesto lungo (1M token)!
|
|
603
|
+
|
|
604
|
+
### Kimi K2 ($9/mese fisso)
|
|
605
|
+
|
|
606
|
+
1. Abbonati: [Moonshot AI](https://platform.moonshot.ai/)
|
|
607
|
+
2. Ottieni una API key
|
|
608
|
+
3. Dashboard → Aggiungi API Key
|
|
609
|
+
|
|
610
|
+
**Usa:** `kimi/kimi-latest`
|
|
611
|
+
|
|
612
|
+
**Consiglio Pro:** $9/mese fisso per 10M token = $0.90/1M di costo effettivo!
|
|
613
|
+
|
|
614
|
+
</details>
|
|
615
|
+
|
|
616
|
+
<details>
|
|
617
|
+
<summary><b>🆓 Provider GRATUITI (Backup d'emergenza)</b></summary>
|
|
618
|
+
|
|
619
|
+
### iFlow (8 modelli GRATUITI)
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
Dashboard → Connetti iFlow
|
|
623
|
+
→ Login OAuth iFlow
|
|
624
|
+
→ Utilizzo illimitato
|
|
625
|
+
|
|
626
|
+
Modelli:
|
|
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 modelli GRATUITI)
|
|
635
|
+
|
|
636
|
+
```bash
|
|
637
|
+
Dashboard → Connetti Qwen
|
|
638
|
+
→ Autorizzazione con codice dispositivo
|
|
639
|
+
→ Utilizzo illimitato
|
|
640
|
+
|
|
641
|
+
Modelli:
|
|
642
|
+
qw/qwen3-coder-plus
|
|
643
|
+
qw/qwen3-coder-flash
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
### Kiro (Claude GRATUITO)
|
|
647
|
+
|
|
648
|
+
```bash
|
|
649
|
+
Dashboard → Connetti Kiro
|
|
650
|
+
→ AWS Builder ID o Google/GitHub
|
|
651
|
+
→ Utilizzo illimitato
|
|
652
|
+
|
|
653
|
+
Modelli:
|
|
654
|
+
kr/claude-sonnet-4.5
|
|
655
|
+
kr/claude-haiku-4.5
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
</details>
|
|
659
|
+
|
|
660
|
+
<details>
|
|
661
|
+
<summary><b>🎨 Creare combo</b></summary>
|
|
662
|
+
|
|
663
|
+
### Esempio 1: Massimizzare abbonamento → Backup economico
|
|
664
|
+
|
|
665
|
+
```
|
|
666
|
+
Dashboard → Combo → Crea nuovo
|
|
667
|
+
|
|
668
|
+
Nome: premium-coding
|
|
669
|
+
Modelli:
|
|
670
|
+
1. cc/claude-opus-4-6 (Abbonamento principale)
|
|
671
|
+
2. glm/glm-4.7 (Backup economico, $0.6/1M)
|
|
672
|
+
3. minimax/MiniMax-M2.1 (Fallback più economico, $0.20/1M)
|
|
673
|
+
|
|
674
|
+
Usa nel CLI: premium-coding
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
### Esempio 2: Solo gratuiti (Costo zero)
|
|
678
|
+
|
|
679
|
+
```
|
|
680
|
+
Nome: free-combo
|
|
681
|
+
Modelli:
|
|
682
|
+
1. gc/gemini-3-flash-preview (180K gratis/mese)
|
|
683
|
+
2. if/kimi-k2-thinking (illimitato)
|
|
684
|
+
3. qw/qwen3-coder-plus (illimitato)
|
|
685
|
+
|
|
686
|
+
Costo: $0 per sempre!
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
</details>
|
|
690
|
+
|
|
691
|
+
<details>
|
|
692
|
+
<summary><b>🔧 Integrazione CLI</b></summary>
|
|
693
|
+
|
|
694
|
+
### Cursor IDE
|
|
695
|
+
|
|
696
|
+
```
|
|
697
|
+
Impostazioni → Modelli → Avanzato:
|
|
698
|
+
OpenAI API Base URL: http://localhost:20128/v1
|
|
699
|
+
OpenAI API Key: [dalla dashboard OmniRoute]
|
|
700
|
+
Model: cc/claude-opus-4-6
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
### Claude Code
|
|
704
|
+
|
|
705
|
+
Usa la pagina **CLI Tools** nella dashboard per la configurazione con un clic, o modifica `~/.claude/settings.json` manualmente.
|
|
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
|
+
**Opzione 1 — Dashboard (consigliato):**
|
|
719
|
+
|
|
720
|
+
```
|
|
721
|
+
Dashboard → CLI Tools → OpenClaw → Seleziona Modello → Applica
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
**Opzione 2 — Manuale:** Modifica `~/.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
|
+
> **Nota:** OpenClaw funziona solo con OmniRoute locale. Usa `127.0.0.1` invece di `localhost` per evitare problemi di risoluzione IPv6.
|
|
741
|
+
|
|
742
|
+
### Cline / Continue / RooCode
|
|
743
|
+
|
|
744
|
+
```
|
|
745
|
+
Impostazioni → Configurazione API:
|
|
746
|
+
Provider: OpenAI Compatible
|
|
747
|
+
Base URL: http://localhost:20128/v1
|
|
748
|
+
API Key: [dalla dashboard OmniRoute]
|
|
749
|
+
Model: if/kimi-k2-thinking
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
</details>
|
|
753
|
+
|
|
754
|
+
---
|
|
755
|
+
|
|
756
|
+
## 📊 Modelli Disponibili
|
|
757
|
+
|
|
758
|
+
<details>
|
|
759
|
+
<summary><b>Vedi tutti i modelli disponibili</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/`)** - GRATUITO:
|
|
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/`)** - Crediti GRATUITI:
|
|
783
|
+
|
|
784
|
+
- `nvidia/llama-3.3-70b-instruct`
|
|
785
|
+
- `nvidia/mistral-7b-instruct`
|
|
786
|
+
- 50+ modelli su [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/`)** - GRATUITO:
|
|
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/`)** - GRATUITO:
|
|
805
|
+
|
|
806
|
+
- `qw/qwen3-coder-plus`
|
|
807
|
+
- `qw/qwen3-coder-flash`
|
|
808
|
+
|
|
809
|
+
**Kiro (`kr/`)** - GRATUITO:
|
|
810
|
+
|
|
811
|
+
- `kr/claude-sonnet-4.5`
|
|
812
|
+
- `kr/claude-haiku-4.5`
|
|
813
|
+
|
|
814
|
+
**OpenRouter (`or/`)** - 100+ modelli:
|
|
815
|
+
|
|
816
|
+
- `or/anthropic/claude-4-sonnet`
|
|
817
|
+
- `or/google/gemini-2.5-pro`
|
|
818
|
+
- Qualsiasi modello da [openrouter.ai/models](https://openrouter.ai/models)
|
|
819
|
+
|
|
820
|
+
</details>
|
|
821
|
+
|
|
822
|
+
---
|
|
823
|
+
|
|
824
|
+
## 🧪 Valutazioni (Evals)
|
|
825
|
+
|
|
826
|
+
OmniRoute include un framework di valutazione integrato per testare la qualità delle risposte LLM contro un golden set. Accesso via **Analytics → Evals** nella dashboard.
|
|
827
|
+
|
|
828
|
+
### Golden Set integrato
|
|
829
|
+
|
|
830
|
+
Il "OmniRoute Golden Set" precaricato contiene 10 casi di test:
|
|
831
|
+
|
|
832
|
+
- Saluti, matematica, geografia, generazione codice
|
|
833
|
+
- Conformità formato JSON, traduzione, markdown
|
|
834
|
+
- Rifiuto sicurezza (contenuto nocivo), conteggio, logica booleana
|
|
835
|
+
|
|
836
|
+
### Strategie di valutazione
|
|
837
|
+
|
|
838
|
+
| Strategia | Descrizione | Esempio |
|
|
839
|
+
| ---------- | ---------------------------------------------------------- | -------------------------------- |
|
|
840
|
+
| `exact` | L'output deve corrispondere esattamente | `"4"` |
|
|
841
|
+
| `contains` | L'output deve contenere la sottostringa (case-insensitive) | `"Paris"` |
|
|
842
|
+
| `regex` | L'output deve corrispondere al pattern regex | `"1.*2.*3"` |
|
|
843
|
+
| `custom` | Funzione JS personalizzata restituisce true/false | `(output) => output.length > 10` |
|
|
844
|
+
|
|
845
|
+
---
|
|
846
|
+
|
|
847
|
+
## 🐛 Risoluzione Problemi
|
|
848
|
+
|
|
849
|
+
<details>
|
|
850
|
+
<summary><b>Clicca per espandere la guida alla risoluzione problemi</b></summary>
|
|
851
|
+
|
|
852
|
+
**"Language model did not provide messages"**
|
|
853
|
+
|
|
854
|
+
- Quota del provider esaurita → Controlla il tracker quote nella dashboard
|
|
855
|
+
- Soluzione: Usa un combo con fallback o passa a un livello più economico
|
|
856
|
+
|
|
857
|
+
**Rate limiting**
|
|
858
|
+
|
|
859
|
+
- Quota abbonamento esaurita → Fallback a GLM/MiniMax
|
|
860
|
+
- Aggiungi combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
861
|
+
|
|
862
|
+
**Token OAuth scaduto**
|
|
863
|
+
|
|
864
|
+
- Rinnovato automaticamente da OmniRoute
|
|
865
|
+
- Se il problema persiste: Dashboard → Provider → Riconnetti
|
|
866
|
+
|
|
867
|
+
**Costi elevati**
|
|
868
|
+
|
|
869
|
+
- Controlla le statistiche di utilizzo in Dashboard → Costi
|
|
870
|
+
- Cambia il modello principale a GLM/MiniMax
|
|
871
|
+
- Usa il livello gratuito (Gemini CLI, iFlow) per compiti non critici
|
|
872
|
+
|
|
873
|
+
**La dashboard si apre sulla porta sbagliata**
|
|
874
|
+
|
|
875
|
+
- Imposta `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
|
876
|
+
|
|
877
|
+
**Errori cloud sync**
|
|
878
|
+
|
|
879
|
+
- Verifica che `BASE_URL` punti alla tua istanza in esecuzione
|
|
880
|
+
- Verifica che `CLOUD_URL` punti all'endpoint cloud previsto
|
|
881
|
+
- Mantieni i valori `NEXT_PUBLIC_*` allineati con i valori del server
|
|
882
|
+
|
|
883
|
+
**Il primo login non funziona**
|
|
884
|
+
|
|
885
|
+
- Controlla `INITIAL_PASSWORD` nel `.env`
|
|
886
|
+
- Se non impostata, la password predefinita è `123456`
|
|
887
|
+
|
|
888
|
+
**Nessun log delle richieste**
|
|
889
|
+
|
|
890
|
+
- Imposta `ENABLE_REQUEST_LOGS=true` nel `.env`
|
|
891
|
+
|
|
892
|
+
**Il test di connessione mostra "Invalid" per provider compatibili OpenAI**
|
|
893
|
+
|
|
894
|
+
- Molti provider non espongono l'endpoint `/models`
|
|
895
|
+
- OmniRoute v0.9.0+ include validazione fallback tramite chat completions
|
|
896
|
+
- Assicurati che la URL base includa il suffisso `/v1`
|
|
897
|
+
|
|
898
|
+
</details>
|
|
899
|
+
|
|
900
|
+
---
|
|
901
|
+
|
|
902
|
+
## 🛠️ Stack Tecnologico
|
|
903
|
+
|
|
904
|
+
- **Runtime**: Node.js 20+
|
|
905
|
+
- **Linguaggio**: TypeScript 5.9 — **100% TypeScript** in `src/` e `open-sse/` (v0.9.0)
|
|
906
|
+
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
|
|
907
|
+
- **Database**: LowDB (JSON) + SQLite (stato dominio + log proxy)
|
|
908
|
+
- **Streaming**: Server-Sent Events (SSE)
|
|
909
|
+
- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
|
|
910
|
+
- **Testing**: Node.js test runner (368+ test unitari)
|
|
911
|
+
- **CI/CD**: GitHub Actions (pubblicazione automatica npm + Docker Hub al rilascio)
|
|
912
|
+
- **Sito Web**: [omniroute.online](https://omniroute.online)
|
|
913
|
+
- **Pacchetto**: [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
|
+
- **Resilienza**: Circuit breaker, backoff esponenziale, anti-thundering herd, TLS spoofing
|
|
916
|
+
|
|
917
|
+
---
|
|
918
|
+
|
|
919
|
+
## 📖 Documentazione
|
|
920
|
+
|
|
921
|
+
| Documento | Descrizione |
|
|
922
|
+
| ----------------------------------------------- | -------------------------------------------------- |
|
|
923
|
+
| [Guida Utente](docs/USER_GUIDE.md) | Provider, combo, integrazione CLI, deploy |
|
|
924
|
+
| [Riferimento API](docs/API_REFERENCE.md) | Tutti gli endpoint con esempi |
|
|
925
|
+
| [Risoluzione Problemi](docs/TROUBLESHOOTING.md) | Problemi comuni e soluzioni |
|
|
926
|
+
| [Architettura](docs/ARCHITECTURE.md) | Architettura del sistema e dettagli interni |
|
|
927
|
+
| [Come Contribuire](CONTRIBUTING.md) | Setup di sviluppo e linee guida |
|
|
928
|
+
| [Spec OpenAPI](docs/openapi.yaml) | Specifica OpenAPI 3.0 |
|
|
929
|
+
| [Politica di Sicurezza](SECURITY.md) | Segnalazione vulnerabilità e pratiche di sicurezza |
|
|
930
|
+
|
|
931
|
+
---
|
|
932
|
+
|
|
933
|
+
## 📧 Supporto
|
|
934
|
+
|
|
935
|
+
- **Sito 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
|
+
- **Progetto Originale**: [9router di decolua](https://github.com/decolua/9router)
|
|
939
|
+
|
|
940
|
+
---
|
|
941
|
+
|
|
942
|
+
## 👥 Contributori
|
|
943
|
+
|
|
944
|
+
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
|
945
|
+
|
|
946
|
+
### Come Contribuire
|
|
947
|
+
|
|
948
|
+
1. Fai il fork del repository
|
|
949
|
+
2. Crea il tuo branch di funzionalità (`git checkout -b feature/amazing-feature`)
|
|
950
|
+
3. Fai il commit delle modifiche (`git commit -m 'Add amazing feature'`)
|
|
951
|
+
4. Fai il push al branch (`git push origin feature/amazing-feature`)
|
|
952
|
+
5. Apri una Pull Request
|
|
953
|
+
|
|
954
|
+
Consulta [CONTRIBUTING.md](CONTRIBUTING.md) per le linee guida dettagliate.
|
|
955
|
+
|
|
956
|
+
### Rilasciare una nuova versione
|
|
957
|
+
|
|
958
|
+
```bash
|
|
959
|
+
# Crea un rilascio — la pubblicazione npm avviene automaticamente
|
|
960
|
+
gh release create v0.9.0 --title "v0.9.0" --generate-notes
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
---
|
|
964
|
+
|
|
965
|
+
## 📊 Cronologia Stelle
|
|
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
|
+
## 🙏 Ringraziamenti
|
|
978
|
+
|
|
979
|
+
Un ringraziamento speciale a **[9router](https://github.com/decolua/9router)** di **[decolua](https://github.com/decolua)** — il progetto originale che ha ispirato questo fork. OmniRoute si costruisce su quell'incredibile base con funzionalità aggiuntive, API multi-modali e una riscrittura completa in TypeScript.
|
|
980
|
+
|
|
981
|
+
Un ringraziamento speciale a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — l'implementazione originale in Go che ha ispirato questo porting in JavaScript.
|
|
982
|
+
|
|
983
|
+
---
|
|
984
|
+
|
|
985
|
+
## 📄 Licenza
|
|
986
|
+
|
|
987
|
+
Licenza MIT — vedi [LICENSE](LICENSE) per i dettagli.
|
|
988
|
+
|
|
989
|
+
---
|
|
990
|
+
|
|
991
|
+
<div align="center">
|
|
992
|
+
<sub>Fatto con ❤️ per gli sviluppatori che programmano 24/7</sub>
|
|
993
|
+
<br/>
|
|
994
|
+
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
|
995
|
+
</div>
|