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.pt-BR.md
ADDED
|
@@ -0,0 +1,995 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
|
|
3
|
+
|
|
4
|
+
# 🚀 OmniRoute — O Gateway de IA Gratuito
|
|
5
|
+
|
|
6
|
+
### Nunca pare de programar. Roteamento inteligente para **modelos de IA GRATUITOS e baratos** com fallback automático.
|
|
7
|
+
|
|
8
|
+
_Seu proxy de API universal — um endpoint, 36+ provedores, zero tempo de inatividade._
|
|
9
|
+
|
|
10
|
+
**Chat Completions • Embeddings • Geração de Imagem • Áudio • Reranking • 100% TypeScript**
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
### 🤖 Provedor de IA Gratuito para seus agentes de programação favoritos
|
|
15
|
+
|
|
16
|
+
_Conecte qualquer IDE ou ferramenta CLI com IA através do OmniRoute — gateway de API gratuito para programação ilimitada._
|
|
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>📡 Todos os agentes se conectam via <code>http://localhost:20128/v1</code> ou <code>http://cloud.omniroute.online/v1</code> — uma configuração, modelos e cota ilimitados</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
|
+
[🌐 Website](https://omniroute.online) • [🚀 Início Rápido](#-início-rápido) • [💡 Funcionalidades](#-funcionalidades-principais) • [📖 Docs](#-documentação) • [💰 Preços](#-preços-resumidos)
|
|
105
|
+
|
|
106
|
+
🌐 **Disponível em:** [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
|
+
## 🤔 Por que OmniRoute?
|
|
113
|
+
|
|
114
|
+
**Pare de desperdiçar dinheiro e bater em limites:**
|
|
115
|
+
|
|
116
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Cota de assinatura expira sem uso todo mês
|
|
117
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Limites de taxa param você no meio da programação
|
|
118
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> APIs caras ($20-50/mês por provedor)
|
|
119
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Trocar manualmente entre provedores
|
|
120
|
+
|
|
121
|
+
**OmniRoute resolve isso:**
|
|
122
|
+
|
|
123
|
+
- ✅ **Maximize assinaturas** - Rastreie cotas, use tudo antes do reset
|
|
124
|
+
- ✅ **Fallback automático** - Assinatura → API Key → Barato → Gratuito, zero tempo de inatividade
|
|
125
|
+
- ✅ **Multi-conta** - Round-robin entre contas por provedor
|
|
126
|
+
- ✅ **Universal** - Funciona com Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, qualquer ferramenta CLI
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 🔄 Como Funciona
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
┌─────────────┐
|
|
134
|
+
│ Sua CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
|
135
|
+
│ Tool │
|
|
136
|
+
└──────┬──────┘
|
|
137
|
+
│ http://localhost:20128/v1
|
|
138
|
+
↓
|
|
139
|
+
┌─────────────────────────────────────────┐
|
|
140
|
+
│ OmniRoute (Roteador Inteligente) │
|
|
141
|
+
│ • Tradução de formato (OpenAI ↔ Claude) │
|
|
142
|
+
│ • Rastreamento de cota + Embeddings + Imagens │
|
|
143
|
+
│ • Renovação automática de tokens │
|
|
144
|
+
└──────┬──────────────────────────────────┘
|
|
145
|
+
│
|
|
146
|
+
├─→ [Tier 1: ASSINATURA] Claude Code, Codex, Gemini CLI
|
|
147
|
+
│ ↓ cota esgotada
|
|
148
|
+
├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
|
|
149
|
+
│ ↓ limite de orçamento
|
|
150
|
+
├─→ [Tier 3: BARATO] GLM ($0.6/1M), MiniMax ($0.2/1M)
|
|
151
|
+
│ ↓ limite de orçamento
|
|
152
|
+
└─→ [Tier 4: GRATUITO] iFlow, Qwen, Kiro (ilimitado)
|
|
153
|
+
|
|
154
|
+
Resultado: Nunca pare de programar, custo mínimo
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## ⚡ Início Rápido
|
|
160
|
+
|
|
161
|
+
**1. Instale globalmente:**
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm install -g omniroute
|
|
165
|
+
omniroute
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
🎉 Dashboard abre em `http://localhost:20128`
|
|
169
|
+
|
|
170
|
+
| Comando | Descrição |
|
|
171
|
+
| ----------------------- | ------------------------------------- |
|
|
172
|
+
| `omniroute` | Iniciar servidor (porta padrão 20128) |
|
|
173
|
+
| `omniroute --port 3000` | Usar porta personalizada |
|
|
174
|
+
| `omniroute --no-open` | Não abrir navegador automaticamente |
|
|
175
|
+
| `omniroute --help` | Mostrar ajuda |
|
|
176
|
+
|
|
177
|
+
**2. Conecte um provedor GRATUITO:**
|
|
178
|
+
|
|
179
|
+
Dashboard → Provedores → Conectar **Claude Code** ou **Antigravity** → Login OAuth → Pronto!
|
|
180
|
+
|
|
181
|
+
**3. Use na sua ferramenta CLI:**
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Configurações:
|
|
185
|
+
Endpoint: http://localhost:20128/v1
|
|
186
|
+
API Key: [copie do dashboard]
|
|
187
|
+
Model: if/kimi-k2-thinking
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Pronto!** Comece a programar com modelos de IA GRATUITOS.
|
|
191
|
+
|
|
192
|
+
**Alternativa — rodar a partir do código-fonte:**
|
|
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á disponível como imagem Docker pública no [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
|
205
|
+
|
|
206
|
+
**Execução rápida:**
|
|
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
|
+
**Com arquivo de ambiente:**
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Copie e edite o .env primeiro
|
|
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
|
+
**Usando Docker Compose:**
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Perfil base (sem ferramentas CLI)
|
|
236
|
+
docker compose --profile base up -d
|
|
237
|
+
|
|
238
|
+
# Perfil CLI (Claude Code, Codex, OpenClaw integrados)
|
|
239
|
+
docker compose --profile cli up -d
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
| Imagem | Tag | Tamanho | Descrição |
|
|
243
|
+
| ------------------------ | -------- | ------- | --------------------- |
|
|
244
|
+
| `diegosouzapw/omniroute` | `latest` | ~250MB | Última versão estável |
|
|
245
|
+
| `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Versão atual |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 💰 Preços Resumidos
|
|
250
|
+
|
|
251
|
+
| Tier | Provedor | Custo | Reset de Cota | Melhor Para |
|
|
252
|
+
| ----------------- | ----------------- | ---------------------------- | ----------------- | ----------------------- |
|
|
253
|
+
| **💳 ASSINATURA** | Claude Code (Pro) | $20/mês | 5h + semanal | Já é assinante |
|
|
254
|
+
| | Codex (Plus/Pro) | $20-200/mês | 5h + semanal | Usuários OpenAI |
|
|
255
|
+
| | Gemini CLI | **GRATUITO** | 180K/mês + 1K/dia | Todos! |
|
|
256
|
+
| | GitHub Copilot | $10-19/mês | Mensal | Usuários GitHub |
|
|
257
|
+
| **🔑 API KEY** | NVIDIA NIM | **GRATUITO** (1000 créditos) | Único | Testes gratuitos |
|
|
258
|
+
| | DeepSeek | Por uso | Nenhum | Melhor preço/qualidade |
|
|
259
|
+
| | Groq | Tier gratuito + pago | Limitado | Inferência ultra-rápida |
|
|
260
|
+
| | xAI (Grok) | Por uso | Nenhum | Modelos Grok |
|
|
261
|
+
| | Mistral | Tier gratuito + pago | Limitado | IA Europeia |
|
|
262
|
+
| | OpenRouter | Por uso | Nenhum | 100+ modelos |
|
|
263
|
+
| **💰 BARATO** | GLM-4.7 | $0.6/1M | Diário 10h | Backup econômico |
|
|
264
|
+
| | MiniMax M2.1 | $0.2/1M | Rotativo 5h | Opção mais barata |
|
|
265
|
+
| | Kimi K2 | $9/mês fixo | 10M tokens/mês | Custo previsível |
|
|
266
|
+
| **🆓 GRATUITO** | iFlow | $0 | Ilimitado | 8 modelos gratuitos |
|
|
267
|
+
| | Qwen | $0 | Ilimitado | 3 modelos gratuitos |
|
|
268
|
+
| | Kiro | $0 | Ilimitado | Claude gratuito |
|
|
269
|
+
|
|
270
|
+
**💡 Dica Pro:** Comece com Gemini CLI (180K grátis/mês) + iFlow (ilimitado grátis) = $0 de custo!
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 🎯 Casos de Uso
|
|
275
|
+
|
|
276
|
+
### Caso 1: "Tenho assinatura Claude Pro"
|
|
277
|
+
|
|
278
|
+
**Problema:** Cota expira sem uso, limites de taxa durante programação intensa
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
Combo: "maximize-claude"
|
|
282
|
+
1. cc/claude-opus-4-6 (usar assinatura ao máximo)
|
|
283
|
+
2. glm/glm-4.7 (backup barato quando a cota acabar)
|
|
284
|
+
3. if/kimi-k2-thinking (fallback de emergência gratuito)
|
|
285
|
+
|
|
286
|
+
Custo mensal: $20 (assinatura) + ~$5 (backup) = $25 total
|
|
287
|
+
vs. $20 + bater em limites = frustração
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Caso 2: "Quero custo zero"
|
|
291
|
+
|
|
292
|
+
**Problema:** Não pode pagar assinaturas, precisa de IA confiável para programar
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
Combo: "free-forever"
|
|
296
|
+
1. gc/gemini-3-flash (180K grátis/mês)
|
|
297
|
+
2. if/kimi-k2-thinking (ilimitado grátis)
|
|
298
|
+
3. qw/qwen3-coder-plus (ilimitado grátis)
|
|
299
|
+
|
|
300
|
+
Custo mensal: $0
|
|
301
|
+
Qualidade: Modelos prontos para produção
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Caso 3: "Preciso programar 24/7, sem interrupções"
|
|
305
|
+
|
|
306
|
+
**Problema:** Prazos apertados, não pode ter tempo de inatividade
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
Combo: "always-on"
|
|
310
|
+
1. cc/claude-opus-4-6 (melhor qualidade)
|
|
311
|
+
2. cx/gpt-5.2-codex (segunda assinatura)
|
|
312
|
+
3. glm/glm-4.7 (barato, reset diário)
|
|
313
|
+
4. minimax/MiniMax-M2.1 (mais barato, reset 5h)
|
|
314
|
+
5. if/kimi-k2-thinking (gratuito ilimitado)
|
|
315
|
+
|
|
316
|
+
Resultado: 5 camadas de fallback = zero tempo de inatividade
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Caso 4: "Quero IA GRATUITA no OpenClaw"
|
|
320
|
+
|
|
321
|
+
**Problema:** Precisa de assistente de IA em aplicativos de mensagens, completamente gratuito
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
Combo: "openclaw-free"
|
|
325
|
+
1. if/glm-4.7 (ilimitado grátis)
|
|
326
|
+
2. if/minimax-m2.1 (ilimitado grátis)
|
|
327
|
+
3. if/kimi-k2-thinking (ilimitado grátis)
|
|
328
|
+
|
|
329
|
+
Custo mensal: $0
|
|
330
|
+
Acesso via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 💡 Funcionalidades Principais
|
|
336
|
+
|
|
337
|
+
### 🧠 Roteamento e Inteligência
|
|
338
|
+
|
|
339
|
+
| Funcionalidade | O que Faz |
|
|
340
|
+
| ----------------------------------------- | ------------------------------------------------------------------------------- |
|
|
341
|
+
| 🎯 **Fallback Inteligente 4 Tiers** | Auto-roteamento: Assinatura → API Key → Barato → Gratuito |
|
|
342
|
+
| 📊 **Rastreamento de Cota em Tempo Real** | Contagem de tokens ao vivo + countdown de reset por provedor |
|
|
343
|
+
| 🔄 **Tradução de Formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro transparente |
|
|
344
|
+
| 👥 **Suporte Multi-Conta** | Múltiplas contas por provedor com seleção inteligente |
|
|
345
|
+
| 🔄 **Renovação Automática de Token** | Tokens OAuth renovam automaticamente com retry |
|
|
346
|
+
| 🎨 **Combos Personalizados** | 6 estratégias: fill-first, round-robin, p2c, random, least-used, cost-optimized |
|
|
347
|
+
| 🧩 **Modelos Personalizados** | Adicione qualquer ID de modelo a qualquer provedor |
|
|
348
|
+
| 🌐 **Roteador Wildcard** | Roteie padrões `provider/*` para qualquer provedor dinamicamente |
|
|
349
|
+
| 🧠 **Budget de Raciocínio** | Modos passthrough, auto, custom e adaptativo para modelos de raciocínio |
|
|
350
|
+
| 💬 **Injeção de System Prompt** | System prompt global aplicado em todas as requisições |
|
|
351
|
+
| 📄 **API Responses** | Suporte completo à API Responses da OpenAI (`/v1/responses`) para Codex |
|
|
352
|
+
|
|
353
|
+
### 🎵 APIs Multi-Modal
|
|
354
|
+
|
|
355
|
+
| Funcionalidade | O que Faz |
|
|
356
|
+
| --------------------------- | ---------------------------------------------------- |
|
|
357
|
+
| 🖼️ **Geração de Imagem** | `/v1/images/generations` — 4 provedores, 9+ modelos |
|
|
358
|
+
| 📐 **Embeddings** | `/v1/embeddings` — 6 provedores, 9+ modelos |
|
|
359
|
+
| 🎤 **Transcrição de Áudio** | `/v1/audio/transcriptions` — Compatível com Whisper |
|
|
360
|
+
| 🔊 **Texto para Fala** | `/v1/audio/speech` — Síntese de áudio multi-provedor |
|
|
361
|
+
| 🛡️ **Moderações** | `/v1/moderations` — Verificações de segurança |
|
|
362
|
+
| 🔀 **Reranking** | `/v1/rerank` — Reranking de relevância de documentos |
|
|
363
|
+
|
|
364
|
+
### 🛡️ Resiliência e Segurança
|
|
365
|
+
|
|
366
|
+
| Funcionalidade | O que Faz |
|
|
367
|
+
| ---------------------------------- | --------------------------------------------------------------------- |
|
|
368
|
+
| 🔌 **Circuit Breaker** | Auto-abertura/fechamento por provedor com limites configuráveis |
|
|
369
|
+
| 🛡️ **Anti-Thundering Herd** | Mutex + semáforo rate-limit para provedores com API key |
|
|
370
|
+
| 🧠 **Cache Semântico** | Cache de duas camadas (assinatura + semântico) reduz custo e latência |
|
|
371
|
+
| ⚡ **Idempotência de Requisição** | Janela de dedup de 5s para requisições duplicadas |
|
|
372
|
+
| 🔒 **Spoofing de Fingerprint TLS** | Bypass de detecção de bot via TLS com wreq-js |
|
|
373
|
+
| 🌐 **Filtragem de IP** | Allowlist/blocklist para controle de acesso à API |
|
|
374
|
+
| 📊 **Rate Limits Editáveis** | RPM, gap mínimo e concorrência máxima configuráveis |
|
|
375
|
+
|
|
376
|
+
### 📊 Observabilidade e Analytics
|
|
377
|
+
|
|
378
|
+
| Funcionalidade | O que Faz |
|
|
379
|
+
| -------------------------------- | --------------------------------------------------------------------- |
|
|
380
|
+
| 📝 **Logs de Requisição** | Modo debug com logs completos de request/response |
|
|
381
|
+
| 💾 **Logs SQLite** | Logs de proxy persistentes sobrevivem a reinicializações |
|
|
382
|
+
| 📊 **Dashboard de Analytics** | Recharts: cards de estatísticas, gráfico de uso, tabela de provedores |
|
|
383
|
+
| 📈 **Rastreamento de Progresso** | Eventos de progresso SSE opt-in para streaming |
|
|
384
|
+
| 🧪 **Avaliações de LLM** | Testes com conjunto golden e 4 estratégias de match |
|
|
385
|
+
| 🔍 **Telemetria de Requisição** | Agregação de latência p50/p95/p99 + rastreamento X-Request-Id |
|
|
386
|
+
| 📋 **Logs + Cotas** | Páginas dedicadas para navegação de logs e rastreamento de cotas |
|
|
387
|
+
| 🏥 **Dashboard de Saúde** | Uptime, estados de circuit breaker, lockouts, stats de cache |
|
|
388
|
+
| 💰 **Rastreamento de Custo** | Gestão de orçamento + configuração de preços por modelo |
|
|
389
|
+
|
|
390
|
+
### ☁️ Deploy e Sincronização
|
|
391
|
+
|
|
392
|
+
| Funcionalidade | O que Faz |
|
|
393
|
+
| --------------------------------- | -------------------------------------------------------------------------------- |
|
|
394
|
+
| 💾 **Cloud Sync** | Sincronize configurações entre dispositivos via Cloudflare Workers |
|
|
395
|
+
| 🌐 **Deploy em Qualquer Lugar** | Localhost, VPS, Docker, Cloudflare Workers |
|
|
396
|
+
| 🔑 **Gestão de API Keys** | Gere, rotacione e defina escopo de API keys por provedor |
|
|
397
|
+
| 🧙 **Assistente de Configuração** | Setup guiado em 4 etapas para novos usuários |
|
|
398
|
+
| 🔧 **Dashboard CLI Tools** | Configuração em um clique para Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
|
399
|
+
| 🔄 **Backups de DB** | Backup e restauração automáticos de todas as configurações |
|
|
400
|
+
|
|
401
|
+
<details>
|
|
402
|
+
<summary><b>📖 Detalhes das Funcionalidades</b></summary>
|
|
403
|
+
|
|
404
|
+
### 🎯 Fallback Inteligente 4 Tiers
|
|
405
|
+
|
|
406
|
+
Crie combos com fallback automático:
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
Combo: "my-coding-stack"
|
|
410
|
+
1. cc/claude-opus-4-6 (sua assinatura)
|
|
411
|
+
2. nvidia/llama-3.3-70b (API NVIDIA gratuita)
|
|
412
|
+
3. glm/glm-4.7 (backup barato, $0.6/1M)
|
|
413
|
+
4. if/kimi-k2-thinking (fallback gratuito)
|
|
414
|
+
|
|
415
|
+
→ Troca automaticamente quando a cota acaba ou erros ocorrem
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### 📊 Rastreamento de Cota em Tempo Real
|
|
419
|
+
|
|
420
|
+
- Consumo de tokens por provedor
|
|
421
|
+
- Countdown de reset (5 horas, diário, semanal)
|
|
422
|
+
- Estimativa de custo para tiers pagos
|
|
423
|
+
- Relatórios de gastos mensais
|
|
424
|
+
|
|
425
|
+
### 🔄 Tradução de Formato
|
|
426
|
+
|
|
427
|
+
Tradução transparente entre formatos:
|
|
428
|
+
|
|
429
|
+
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
|
|
430
|
+
- Sua ferramenta CLI envia formato OpenAI → OmniRoute traduz → Provedor recebe formato nativo
|
|
431
|
+
- Funciona com qualquer ferramenta que suporte endpoints OpenAI customizados
|
|
432
|
+
|
|
433
|
+
### 👥 Suporte Multi-Conta
|
|
434
|
+
|
|
435
|
+
- Adicione múltiplas contas por provedor
|
|
436
|
+
- Round-robin automático ou roteamento por prioridade
|
|
437
|
+
- Fallback para próxima conta quando uma atinge a cota
|
|
438
|
+
|
|
439
|
+
### 🔄 Renovação Automática de Token
|
|
440
|
+
|
|
441
|
+
- Tokens OAuth renovam automaticamente antes de expirar
|
|
442
|
+
- Sem necessidade de re-autenticação manual
|
|
443
|
+
- Experiência transparente em todos os provedores
|
|
444
|
+
|
|
445
|
+
### 🎨 Combos Personalizados
|
|
446
|
+
|
|
447
|
+
- Crie combinações ilimitadas de modelos
|
|
448
|
+
- 6 estratégias: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
|
|
449
|
+
- Compartilhe combos entre dispositivos com Cloud Sync
|
|
450
|
+
|
|
451
|
+
### 🏥 Dashboard de Saúde
|
|
452
|
+
|
|
453
|
+
- Status do sistema (uptime, versão, uso de memória)
|
|
454
|
+
- Estados de circuit breaker por provedor (Closed/Open/Half-Open)
|
|
455
|
+
- Status de rate limit e lockouts ativos
|
|
456
|
+
- Estatísticas de cache de assinatura
|
|
457
|
+
- Telemetria de latência (p50/p95/p99) + cache de prompt
|
|
458
|
+
- Reset de saúde com um clique
|
|
459
|
+
|
|
460
|
+
### 🔧 Playground do Tradutor
|
|
461
|
+
|
|
462
|
+
- Debug, teste e visualize traduções de formato de API
|
|
463
|
+
- Envie requisições e veja como o OmniRoute traduz entre formatos de provedores
|
|
464
|
+
- Inestimável para troubleshooting de problemas de integração
|
|
465
|
+
|
|
466
|
+
### 💾 Cloud Sync
|
|
467
|
+
|
|
468
|
+
- Sincronize provedores, combos e configurações entre dispositivos
|
|
469
|
+
- Sincronização automática em background
|
|
470
|
+
- Armazenamento criptografado seguro
|
|
471
|
+
|
|
472
|
+
</details>
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## 📖 Guia de Configuração
|
|
477
|
+
|
|
478
|
+
<details>
|
|
479
|
+
<summary><b>💳 Provedores por Assinatura</b></summary>
|
|
480
|
+
|
|
481
|
+
### Claude Code (Pro/Max)
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
Dashboard → Provedores → Conectar Claude Code
|
|
485
|
+
→ Login OAuth → Renovação automática de token
|
|
486
|
+
→ Rastreamento de cota 5h + semanal
|
|
487
|
+
|
|
488
|
+
Modelos:
|
|
489
|
+
cc/claude-opus-4-6
|
|
490
|
+
cc/claude-sonnet-4-5-20250929
|
|
491
|
+
cc/claude-haiku-4-5-20251001
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Dica Pro:** Use Opus para tarefas complexas, Sonnet para velocidade. OmniRoute rastreia cota por modelo!
|
|
495
|
+
|
|
496
|
+
### OpenAI Codex (Plus/Pro)
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
Dashboard → Provedores → Conectar Codex
|
|
500
|
+
→ Login OAuth (porta 1455)
|
|
501
|
+
→ Reset 5h + semanal
|
|
502
|
+
|
|
503
|
+
Modelos:
|
|
504
|
+
cx/gpt-5.2-codex
|
|
505
|
+
cx/gpt-5.1-codex-max
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Gemini CLI (GRATUITO 180K/mês!)
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
Dashboard → Provedores → Conectar Gemini CLI
|
|
512
|
+
→ Google OAuth
|
|
513
|
+
→ 180K completions/mês + 1K/dia
|
|
514
|
+
|
|
515
|
+
Modelos:
|
|
516
|
+
gc/gemini-3-flash-preview
|
|
517
|
+
gc/gemini-2.5-pro
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
**Melhor Valor:** Tier gratuito enorme! Use antes dos tiers pagos.
|
|
521
|
+
|
|
522
|
+
### GitHub Copilot
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
Dashboard → Provedores → Conectar GitHub
|
|
526
|
+
→ OAuth via GitHub
|
|
527
|
+
→ Reset mensal (1º do mês)
|
|
528
|
+
|
|
529
|
+
Modelos:
|
|
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>🔑 Provedores por API Key</b></summary>
|
|
539
|
+
|
|
540
|
+
### NVIDIA NIM (GRATUITO 1000 créditos!)
|
|
541
|
+
|
|
542
|
+
1. Cadastre-se: [build.nvidia.com](https://build.nvidia.com)
|
|
543
|
+
2. Obtenha API key gratuita (1000 créditos de inferência incluídos)
|
|
544
|
+
3. Dashboard → Adicionar Provedor → NVIDIA NIM:
|
|
545
|
+
- API Key: `nvapi-your-key`
|
|
546
|
+
|
|
547
|
+
**Modelos:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, e 50+ mais
|
|
548
|
+
|
|
549
|
+
**Dica Pro:** API compatível com OpenAI — funciona perfeitamente com a tradução de formato do OmniRoute!
|
|
550
|
+
|
|
551
|
+
### DeepSeek
|
|
552
|
+
|
|
553
|
+
1. Cadastre-se: [platform.deepseek.com](https://platform.deepseek.com)
|
|
554
|
+
2. Obtenha API key
|
|
555
|
+
3. Dashboard → Adicionar Provedor → DeepSeek
|
|
556
|
+
|
|
557
|
+
**Modelos:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
|
558
|
+
|
|
559
|
+
### Groq (Tier Gratuito Disponível!)
|
|
560
|
+
|
|
561
|
+
1. Cadastre-se: [console.groq.com](https://console.groq.com)
|
|
562
|
+
2. Obtenha API key (tier gratuito incluído)
|
|
563
|
+
3. Dashboard → Adicionar Provedor → Groq
|
|
564
|
+
|
|
565
|
+
**Modelos:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
|
566
|
+
|
|
567
|
+
**Dica Pro:** Inferência ultra-rápida — melhor para programação em tempo real!
|
|
568
|
+
|
|
569
|
+
### OpenRouter (100+ Modelos)
|
|
570
|
+
|
|
571
|
+
1. Cadastre-se: [openrouter.ai](https://openrouter.ai)
|
|
572
|
+
2. Obtenha API key
|
|
573
|
+
3. Dashboard → Adicionar Provedor → OpenRouter
|
|
574
|
+
|
|
575
|
+
**Modelos:** Acesse 100+ modelos de todos os principais provedores através de uma única API key.
|
|
576
|
+
|
|
577
|
+
</details>
|
|
578
|
+
|
|
579
|
+
<details>
|
|
580
|
+
<summary><b>💰 Provedores Baratos (Backup)</b></summary>
|
|
581
|
+
|
|
582
|
+
### GLM-4.7 (Reset diário, $0.6/1M)
|
|
583
|
+
|
|
584
|
+
1. Cadastre-se: [Zhipu AI](https://open.bigmodel.cn/)
|
|
585
|
+
2. Obtenha API key do Plano Coding
|
|
586
|
+
3. Dashboard → Adicionar API Key:
|
|
587
|
+
- Provedor: `glm`
|
|
588
|
+
- API Key: `your-key`
|
|
589
|
+
|
|
590
|
+
**Use:** `glm/glm-4.7`
|
|
591
|
+
|
|
592
|
+
**Dica Pro:** Plano Coding oferece 3× cota a 1/7 do custo! Reset diário 10:00 AM.
|
|
593
|
+
|
|
594
|
+
### MiniMax M2.1 (Reset 5h, $0.20/1M)
|
|
595
|
+
|
|
596
|
+
1. Cadastre-se: [MiniMax](https://www.minimax.io/)
|
|
597
|
+
2. Obtenha API key
|
|
598
|
+
3. Dashboard → Adicionar API Key
|
|
599
|
+
|
|
600
|
+
**Use:** `minimax/MiniMax-M2.1`
|
|
601
|
+
|
|
602
|
+
**Dica Pro:** Opção mais barata para contexto longo (1M tokens)!
|
|
603
|
+
|
|
604
|
+
### Kimi K2 ($9/mês fixo)
|
|
605
|
+
|
|
606
|
+
1. Assine: [Moonshot AI](https://platform.moonshot.ai/)
|
|
607
|
+
2. Obtenha API key
|
|
608
|
+
3. Dashboard → Adicionar API Key
|
|
609
|
+
|
|
610
|
+
**Use:** `kimi/kimi-latest`
|
|
611
|
+
|
|
612
|
+
**Dica Pro:** $9/mês fixo por 10M tokens = $0.90/1M de custo efetivo!
|
|
613
|
+
|
|
614
|
+
</details>
|
|
615
|
+
|
|
616
|
+
<details>
|
|
617
|
+
<summary><b>🆓 Provedores GRATUITOS (Backup de Emergência)</b></summary>
|
|
618
|
+
|
|
619
|
+
### iFlow (8 modelos GRATUITOS)
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
Dashboard → Conectar iFlow
|
|
623
|
+
→ Login OAuth iFlow
|
|
624
|
+
→ Uso ilimitado
|
|
625
|
+
|
|
626
|
+
Modelos:
|
|
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 modelos GRATUITOS)
|
|
635
|
+
|
|
636
|
+
```bash
|
|
637
|
+
Dashboard → Conectar Qwen
|
|
638
|
+
→ Autorização por código de dispositivo
|
|
639
|
+
→ Uso ilimitado
|
|
640
|
+
|
|
641
|
+
Modelos:
|
|
642
|
+
qw/qwen3-coder-plus
|
|
643
|
+
qw/qwen3-coder-flash
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
### Kiro (Claude GRATUITO)
|
|
647
|
+
|
|
648
|
+
```bash
|
|
649
|
+
Dashboard → Conectar Kiro
|
|
650
|
+
→ AWS Builder ID ou Google/GitHub
|
|
651
|
+
→ Uso ilimitado
|
|
652
|
+
|
|
653
|
+
Modelos:
|
|
654
|
+
kr/claude-sonnet-4.5
|
|
655
|
+
kr/claude-haiku-4.5
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
</details>
|
|
659
|
+
|
|
660
|
+
<details>
|
|
661
|
+
<summary><b>🎨 Criar Combos</b></summary>
|
|
662
|
+
|
|
663
|
+
### Exemplo 1: Maximizar Assinatura → Backup Barato
|
|
664
|
+
|
|
665
|
+
```
|
|
666
|
+
Dashboard → Combos → Criar Novo
|
|
667
|
+
|
|
668
|
+
Nome: premium-coding
|
|
669
|
+
Modelos:
|
|
670
|
+
1. cc/claude-opus-4-6 (Assinatura primária)
|
|
671
|
+
2. glm/glm-4.7 (Backup barato, $0.6/1M)
|
|
672
|
+
3. minimax/MiniMax-M2.1 (Fallback mais barato, $0.20/1M)
|
|
673
|
+
|
|
674
|
+
Use na CLI: premium-coding
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
### Exemplo 2: Somente Gratuito (Custo Zero)
|
|
678
|
+
|
|
679
|
+
```
|
|
680
|
+
Nome: free-combo
|
|
681
|
+
Modelos:
|
|
682
|
+
1. gc/gemini-3-flash-preview (180K grátis/mês)
|
|
683
|
+
2. if/kimi-k2-thinking (ilimitado)
|
|
684
|
+
3. qw/qwen3-coder-plus (ilimitado)
|
|
685
|
+
|
|
686
|
+
Custo: $0 para sempre!
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
</details>
|
|
690
|
+
|
|
691
|
+
<details>
|
|
692
|
+
<summary><b>🔧 Integração CLI</b></summary>
|
|
693
|
+
|
|
694
|
+
### Cursor IDE
|
|
695
|
+
|
|
696
|
+
```
|
|
697
|
+
Configurações → Modelos → Avançado:
|
|
698
|
+
OpenAI API Base URL: http://localhost:20128/v1
|
|
699
|
+
OpenAI API Key: [do dashboard OmniRoute]
|
|
700
|
+
Model: cc/claude-opus-4-6
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
### Claude Code
|
|
704
|
+
|
|
705
|
+
Use a página **CLI Tools** no dashboard para configuração em um clique, ou edite `~/.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
|
+
**Opção 1 — Dashboard (recomendado):**
|
|
719
|
+
|
|
720
|
+
```
|
|
721
|
+
Dashboard → CLI Tools → OpenClaw → Selecionar Modelo → Aplicar
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
**Opção 2 — Manual:** Edite `~/.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 funciona apenas com OmniRoute local. Use `127.0.0.1` em vez de `localhost` para evitar problemas de resolução IPv6.
|
|
741
|
+
|
|
742
|
+
### Cline / Continue / RooCode
|
|
743
|
+
|
|
744
|
+
```
|
|
745
|
+
Configurações → Configuração de API:
|
|
746
|
+
Provedor: OpenAI Compatible
|
|
747
|
+
Base URL: http://localhost:20128/v1
|
|
748
|
+
API Key: [do dashboard OmniRoute]
|
|
749
|
+
Model: if/kimi-k2-thinking
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
</details>
|
|
753
|
+
|
|
754
|
+
---
|
|
755
|
+
|
|
756
|
+
## 📊 Modelos Disponíveis
|
|
757
|
+
|
|
758
|
+
<details>
|
|
759
|
+
<summary><b>Ver todos os modelos disponíveis</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/`)** - Créditos GRATUITOS:
|
|
783
|
+
|
|
784
|
+
- `nvidia/llama-3.3-70b-instruct`
|
|
785
|
+
- `nvidia/mistral-7b-instruct`
|
|
786
|
+
- 50+ mais modelos em [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+ modelos:
|
|
815
|
+
|
|
816
|
+
- `or/anthropic/claude-4-sonnet`
|
|
817
|
+
- `or/google/gemini-2.5-pro`
|
|
818
|
+
- Qualquer modelo de [openrouter.ai/models](https://openrouter.ai/models)
|
|
819
|
+
|
|
820
|
+
</details>
|
|
821
|
+
|
|
822
|
+
---
|
|
823
|
+
|
|
824
|
+
## 🧪 Avaliações (Evals)
|
|
825
|
+
|
|
826
|
+
OmniRoute inclui um framework de avaliação integrado para testar a qualidade de respostas de LLM contra um conjunto golden. Acesse via **Analytics → Evals** no dashboard.
|
|
827
|
+
|
|
828
|
+
### Conjunto Golden Integrado
|
|
829
|
+
|
|
830
|
+
O "OmniRoute Golden Set" pré-carregado contém 10 casos de teste cobrindo:
|
|
831
|
+
|
|
832
|
+
- Saudações, matemática, geografia, geração de código
|
|
833
|
+
- Conformidade de formato JSON, tradução, markdown
|
|
834
|
+
- Recusa de segurança (conteúdo prejudicial), contagem, lógica booleana
|
|
835
|
+
|
|
836
|
+
### Estratégias de Avaliação
|
|
837
|
+
|
|
838
|
+
| Estratégia | Descrição | Exemplo |
|
|
839
|
+
| ---------- | ---------------------------------------------- | -------------------------------- |
|
|
840
|
+
| `exact` | Saída deve corresponder exatamente | `"4"` |
|
|
841
|
+
| `contains` | Saída deve conter substring (case-insensitive) | `"Paris"` |
|
|
842
|
+
| `regex` | Saída deve corresponder ao padrão regex | `"1.*2.*3"` |
|
|
843
|
+
| `custom` | Função JS customizada retorna true/false | `(output) => output.length > 10` |
|
|
844
|
+
|
|
845
|
+
---
|
|
846
|
+
|
|
847
|
+
## 🐛 Solução de Problemas
|
|
848
|
+
|
|
849
|
+
<details>
|
|
850
|
+
<summary><b>Clique para expandir o guia de solução de problemas</b></summary>
|
|
851
|
+
|
|
852
|
+
**"Language model did not provide messages"**
|
|
853
|
+
|
|
854
|
+
- Cota do provedor esgotada → Verifique o rastreador de cota no dashboard
|
|
855
|
+
- Solução: Use combo com fallback ou mude para tier mais barato
|
|
856
|
+
|
|
857
|
+
**Rate limiting**
|
|
858
|
+
|
|
859
|
+
- Cota de assinatura esgotada → Fallback para GLM/MiniMax
|
|
860
|
+
- Adicione combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
861
|
+
|
|
862
|
+
**Token OAuth expirado**
|
|
863
|
+
|
|
864
|
+
- Renovado automaticamente pelo OmniRoute
|
|
865
|
+
- Se persistir: Dashboard → Provedor → Reconectar
|
|
866
|
+
|
|
867
|
+
**Custos altos**
|
|
868
|
+
|
|
869
|
+
- Verifique estatísticas de uso em Dashboard → Custos
|
|
870
|
+
- Mude modelo primário para GLM/MiniMax
|
|
871
|
+
- Use tier gratuito (Gemini CLI, iFlow) para tarefas não-críticas
|
|
872
|
+
|
|
873
|
+
**Dashboard abre na porta errada**
|
|
874
|
+
|
|
875
|
+
- Defina `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
|
876
|
+
|
|
877
|
+
**Erros de cloud sync**
|
|
878
|
+
|
|
879
|
+
- Verifique se `BASE_URL` aponta para sua instância em execução
|
|
880
|
+
- Verifique se `CLOUD_URL` aponta para seu endpoint cloud esperado
|
|
881
|
+
- Mantenha valores `NEXT_PUBLIC_*` alinhados com valores do servidor
|
|
882
|
+
|
|
883
|
+
**Primeiro login não funciona**
|
|
884
|
+
|
|
885
|
+
- Verifique `INITIAL_PASSWORD` no `.env`
|
|
886
|
+
- Se não definido, senha padrão é `123456`
|
|
887
|
+
|
|
888
|
+
**Sem logs de requisição**
|
|
889
|
+
|
|
890
|
+
- Defina `ENABLE_REQUEST_LOGS=true` no `.env`
|
|
891
|
+
|
|
892
|
+
**Teste de conexão mostra "Invalid" para provedores compatíveis com OpenAI**
|
|
893
|
+
|
|
894
|
+
- Muitos provedores não expõem endpoint `/models`
|
|
895
|
+
- OmniRoute v0.9.0+ inclui validação via chat completions como fallback
|
|
896
|
+
- Certifique-se de que a base URL inclui sufixo `/v1`
|
|
897
|
+
|
|
898
|
+
</details>
|
|
899
|
+
|
|
900
|
+
---
|
|
901
|
+
|
|
902
|
+
## 🛠️ Stack Tecnológico
|
|
903
|
+
|
|
904
|
+
- **Runtime**: Node.js 20+
|
|
905
|
+
- **Linguagem**: TypeScript 5.9 — **100% TypeScript** em `src/` e `open-sse/` (v0.9.0)
|
|
906
|
+
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
|
|
907
|
+
- **Banco de Dados**: LowDB (JSON) + SQLite (estado do domínio + logs de proxy)
|
|
908
|
+
- **Streaming**: Server-Sent Events (SSE)
|
|
909
|
+
- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
|
|
910
|
+
- **Testes**: Node.js test runner (368+ testes unitários)
|
|
911
|
+
- **CI/CD**: GitHub Actions (publicação automática npm + Docker Hub no release)
|
|
912
|
+
- **Website**: [omniroute.online](https://omniroute.online)
|
|
913
|
+
- **Pacote**: [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
|
+
- **Resiliência**: Circuit breaker, backoff exponencial, anti-thundering herd, spoofing TLS
|
|
916
|
+
|
|
917
|
+
---
|
|
918
|
+
|
|
919
|
+
## 📖 Documentação
|
|
920
|
+
|
|
921
|
+
| Documento | Descrição |
|
|
922
|
+
| ----------------------------------------------- | ------------------------------------------------- |
|
|
923
|
+
| [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, combos, integração CLI, deploy |
|
|
924
|
+
| [Referência da API](docs/API_REFERENCE.md) | Todos os endpoints com exemplos |
|
|
925
|
+
| [Solução de Problemas](docs/TROUBLESHOOTING.md) | Problemas comuns e soluções |
|
|
926
|
+
| [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura do sistema e internos |
|
|
927
|
+
| [Contribuindo](CONTRIBUTING.md) | Setup de desenvolvimento e diretrizes |
|
|
928
|
+
| [Spec OpenAPI](docs/openapi.yaml) | Especificação OpenAPI 3.0 |
|
|
929
|
+
| [Política de Segurança](SECURITY.md) | Reportar vulnerabilidades e práticas de segurança |
|
|
930
|
+
|
|
931
|
+
---
|
|
932
|
+
|
|
933
|
+
## 📧 Suporte
|
|
934
|
+
|
|
935
|
+
- **Website**: [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
|
+
- **Projeto Original**: [9router por decolua](https://github.com/decolua/9router)
|
|
939
|
+
|
|
940
|
+
---
|
|
941
|
+
|
|
942
|
+
## 👥 Contribuidores
|
|
943
|
+
|
|
944
|
+
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
|
945
|
+
|
|
946
|
+
### Como Contribuir
|
|
947
|
+
|
|
948
|
+
1. Faça fork do repositório
|
|
949
|
+
2. Crie sua branch de funcionalidade (`git checkout -b feature/amazing-feature`)
|
|
950
|
+
3. Faça commit das suas alterações (`git commit -m 'Add amazing feature'`)
|
|
951
|
+
4. Faça push para a branch (`git push origin feature/amazing-feature`)
|
|
952
|
+
5. Abra um Pull Request
|
|
953
|
+
|
|
954
|
+
Veja [CONTRIBUTING.md](CONTRIBUTING.md) para diretrizes detalhadas.
|
|
955
|
+
|
|
956
|
+
### Lançando uma Nova Versão
|
|
957
|
+
|
|
958
|
+
```bash
|
|
959
|
+
# Crie um release — publicação no npm acontece automaticamente
|
|
960
|
+
gh release create v0.9.0 --title "v0.9.0" --generate-notes
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
---
|
|
964
|
+
|
|
965
|
+
## 📊 Histórico de 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
|
+
## 🙏 Agradecimentos
|
|
978
|
+
|
|
979
|
+
Agradecimento especial a **[9router](https://github.com/decolua/9router)** por **[decolua](https://github.com/decolua)** — o projeto original que inspirou este fork. OmniRoute se baseia nessa fundação incrível com funcionalidades adicionais, APIs multi-modal e uma reescrita completa em TypeScript.
|
|
980
|
+
|
|
981
|
+
Agradecimento especial a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — a implementação original em Go que inspirou esta adaptação em JavaScript.
|
|
982
|
+
|
|
983
|
+
---
|
|
984
|
+
|
|
985
|
+
## 📄 Licença
|
|
986
|
+
|
|
987
|
+
Licença MIT - veja [LICENSE](LICENSE) para detalhes.
|
|
988
|
+
|
|
989
|
+
---
|
|
990
|
+
|
|
991
|
+
<div align="center">
|
|
992
|
+
<sub>Feito com ❤️ para desenvolvedores que programam 24/7</sub>
|
|
993
|
+
<br/>
|
|
994
|
+
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
|
995
|
+
</div>
|