omniroute 1.4.11 → 1.6.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.ar.md +1153 -0
- package/README.bg.md +1238 -0
- package/README.da.md +1238 -0
- package/README.de.md +1 -1
- package/README.es.md +1 -1
- package/README.fi.md +1238 -0
- package/README.fr.md +1 -1
- package/README.he.md +1238 -0
- package/README.hu.md +1238 -0
- package/README.id.md +1238 -0
- package/README.in.md +952 -0
- package/README.it.md +1 -1
- package/README.ja.md +1152 -0
- package/README.ko.md +1238 -0
- package/README.md +47 -29
- package/README.ms.md +1238 -0
- package/README.nl.md +1238 -0
- package/README.no.md +1238 -0
- package/README.phi.md +1238 -0
- package/README.pl.md +1238 -0
- package/README.pt-BR.md +16 -12
- package/README.pt.md +1238 -0
- package/README.ro.md +1238 -0
- package/README.ru.md +1 -1
- package/README.sk.md +1239 -0
- package/README.sv.md +1238 -0
- package/README.th.md +1229 -0
- package/README.uk-UA.md +1240 -0
- package/README.vi.md +1238 -0
- package/README.zh-CN.md +1 -1
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +34 -34
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
- 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/api-manager/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +6 -6
- 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 +2 -2
- 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 +2 -2
- 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 -2
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
- 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 +2 -2
- 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 +3 -3
- 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 +1 -1
- 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.js +1 -1
- package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- 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/auth/status/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 +2 -2
- 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 +2 -2
- 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_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 +2 -2
- 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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.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 +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 +2 -2
- 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 +2 -2
- 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/export/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/import/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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route.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/logs/console/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 +1 -1
- 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_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_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.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.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_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.js +2 -2
- package/app/.next/server/app/callback/page.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page.js +2 -2
- package/app/.next/server/app/docs/page.js.nft.json +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page.js +2 -2
- package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page.js +2 -2
- 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/landing/page.js +2 -2
- package/app/.next/server/app/landing/page.js.nft.json +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page.js +2 -2
- 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/page.js +1 -1
- package/app/.next/server/app/page.js.nft.json +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page.js +2 -2
- package/app/.next/server/app/privacy/page.js.nft.json +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page.js +2 -2
- package/app/.next/server/app/terms/page.js.nft.json +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +34 -34
- package/app/.next/server/chunks/1248.js +1 -0
- package/app/.next/server/chunks/{3994.js → 1465.js} +2 -2
- package/app/.next/server/chunks/1526.js +1 -0
- package/app/.next/server/chunks/1584.js +1 -0
- package/app/.next/server/chunks/1623.js +1 -0
- package/app/.next/server/chunks/1880.js +1 -0
- package/app/.next/server/chunks/1960.js +1 -1
- package/app/.next/server/chunks/1990.js +1 -1
- package/app/.next/server/chunks/2214.js +1 -0
- package/app/.next/server/chunks/2372.js +1 -0
- package/app/.next/server/chunks/2594.js +1 -0
- package/app/.next/server/chunks/3371.js +1 -0
- package/app/.next/server/chunks/3498.js +1 -1
- package/app/.next/server/chunks/3911.js +1 -0
- package/app/.next/server/chunks/438.js +1 -0
- package/app/.next/server/chunks/496.js +1 -0
- package/app/.next/server/chunks/5047.js +1 -0
- package/app/.next/server/chunks/5094.js +1 -0
- package/app/.next/server/chunks/5097.js +1 -0
- package/app/.next/server/chunks/5393.js +2 -0
- package/app/.next/server/chunks/5521.js +1 -0
- package/app/.next/server/chunks/5945.js +1 -0
- package/app/.next/server/chunks/6118.js +1 -0
- package/app/.next/server/chunks/6928.js +1 -0
- package/app/.next/server/chunks/6930.js +1 -0
- package/app/.next/server/chunks/7011.js +1 -0
- package/app/.next/server/chunks/708.js +1 -0
- package/app/.next/server/chunks/7650.js +1 -0
- package/app/.next/server/chunks/8220.js +1 -0
- package/app/.next/server/chunks/8464.js +1 -0
- package/app/.next/server/chunks/8706.js +1 -0
- package/app/.next/server/chunks/8976.js +1 -0
- package/app/.next/server/chunks/9119.js +1 -0
- package/app/.next/server/chunks/944.js +1 -0
- package/app/.next/server/chunks/9824.js +1 -1
- package/app/.next/server/chunks/9837.js +1 -0
- package/app/.next/server/instrumentation.js +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/chunks/{6458-085536744d592424.js → 1149-fefe7f95f0e9842f.js} +1 -1
- package/app/.next/static/chunks/{5846-19c878280decbd16.js → 5846-4d550ce248336a0a.js} +1 -1
- package/app/.next/static/chunks/{782-5e138760b7f7bf48.js → 8055-5844ff783b2e8a99.js} +3 -3
- package/app/.next/static/chunks/{993-e3050ebfd4f5032f.js → 993-cf9fe6c017bc7e67.js} +3 -3
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-52f76c7c91444ec2.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-1dd4d0c348a7b0a6.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-e5bf8955e7b9a4f5.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-11e68927df2ceb77.js +15 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-ede2315b6918315e.js → page-6abed29d64c46388.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/page-3ed2a7685adf9b91.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-1420c3ca376f1585.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-9a6519bf1468f16e.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-f4a2d6d07df5ddc4.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/{page-6ee69634597daee0.js → page-833d24f322a20f5a.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-d424641c7e428be9.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-388840686801f3f5.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-9c8ffb212f855704.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-31cdb6e15134d8c2.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-1f022385b812b987.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-1393d4935fc087cf.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/{page-77158451270c1852.js → page-f10a8d4bb8236913.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-83b07523f81d6282.js +4 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-9cc99ab874fc36e7.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/{layout-b23c2c5427e04dcf.js → layout-00d5d56af65098a9.js} +1 -1
- package/app/.next/static/chunks/app/callback/page-585a53f7dc6a30f1.js +1 -0
- package/app/.next/static/chunks/app/docs/page-2fe9dcbeb3f738c0.js +1 -0
- package/app/.next/static/chunks/app/forbidden/{page-4a39fedc08aaaf55.js → page-df886dfa2d5bd9fa.js} +1 -1
- package/app/.next/static/chunks/app/forgot-password/page-2a495f0b0c653ab4.js +1 -0
- package/app/.next/static/chunks/app/landing/page-9d540ab1716f8e3e.js +1 -0
- package/app/.next/static/chunks/app/login/page-121c612ee459e7c2.js +1 -0
- package/app/.next/static/chunks/app/privacy/page-2fe9dcbeb3f738c0.js +1 -0
- package/app/.next/static/chunks/app/terms/page-2fe9dcbeb3f738c0.js +1 -0
- package/app/.next/static/css/6f101b114a4a7286.css +1 -0
- package/app/package.json +3 -3
- package/bin/omniroute.mjs +27 -14
- package/package.json +3 -3
- package/app/.next/server/chunks/1259.js +0 -2
- package/app/.next/server/chunks/4509.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-a50474b6ebdf468a.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-d806e4f28c15636a.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-27bc511cf3930e1e.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-ad885fdf9806e9a6.js +0 -15
- package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/page-08f3ed204d01b6a0.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-6e4f3ca7ac9778be.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-8725f1a181e558a3.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-fbe1442b61df950a.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-931fa0c45dca76c9.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-04bc41f9e9de17ef.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-6b6d62c5872aee46.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-2dc2a865e90681dd.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-ac85ce5066cd9044.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-88cac9e6f2fbe335.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-b351778975cb8622.js +0 -4
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-f0809c7842e4f5b4.js +0 -1
- package/app/.next/static/chunks/app/callback/page-e439cd5a287000d8.js +0 -1
- package/app/.next/static/chunks/app/docs/page-8f74097544a61b9d.js +0 -1
- package/app/.next/static/chunks/app/forgot-password/page-a440e0c1675842bf.js +0 -1
- package/app/.next/static/chunks/app/landing/page-09741814aaca7548.js +0 -1
- package/app/.next/static/chunks/app/login/page-164f6b6b41167c5a.js +0 -1
- package/app/.next/static/chunks/app/privacy/page-8f74097544a61b9d.js +0 -1
- package/app/.next/static/chunks/app/terms/page-8f74097544a61b9d.js +0 -1
- package/app/.next/static/css/e90887a86e63903f.css +0 -1
- /package/app/.next/static/{g7Mie-iq39oZ7ts610YtL → 8-doeVY8E2CPMK7rYufd5}/_buildManifest.js +0 -0
- /package/app/.next/static/{g7Mie-iq39oZ7ts610YtL → 8-doeVY8E2CPMK7rYufd5}/_ssgManifest.js +0 -0
package/README.pt.md
ADDED
|
@@ -0,0 +1,1238 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
|
|
3
|
+
|
|
4
|
+
# 🚀 OmniRoute — O gateway de IA gratuito
|
|
5
|
+
|
|
6
|
+
🌐 **[English](#-omniroute--the-free-ai-gateway)** | **[Português (BR)](#-omniroute--gateway-de-ia-gratuito)**
|
|
7
|
+
|
|
8
|
+
### Nunca pare de codificar. Roteamento inteligente para **modelos de IA GRATUITOS e de baixo custo** com fallback automático.
|
|
9
|
+
|
|
10
|
+
_Seu proxy de API universal — um endpoint, mais de 36 provedores, tempo de inatividade zero._
|
|
11
|
+
|
|
12
|
+
**Conclusões de bate-papo • Incorporações • Geração de imagem • Áudio • Reclassificação • 100% TypeScript**
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
### 🤖 Provedor de IA gratuito para seus agentes de codificação favoritos
|
|
17
|
+
|
|
18
|
+
_Conecte qualquer ferramenta IDE ou CLI com tecnologia de IA por meio do OmniRoute - gateway de API gratuito para codificação ilimitada._
|
|
19
|
+
|
|
20
|
+
<table>
|
|
21
|
+
<tr>
|
|
22
|
+
<td align="center" width="110">
|
|
23
|
+
<a href="https://github.com/cline/cline">
|
|
24
|
+
<img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
|
|
25
|
+
<b>OpenClaw</b>
|
|
26
|
+
</a><br/>
|
|
27
|
+
<sub>⭐ 205K</sub>
|
|
28
|
+
</td>
|
|
29
|
+
<td align="center" width="110">
|
|
30
|
+
<a href="https://github.com/HKUDS/nanobot">
|
|
31
|
+
<img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
|
|
32
|
+
<b>NanoBot</b>
|
|
33
|
+
</a><br/>
|
|
34
|
+
<sub>⭐ 20.9K</sub>
|
|
35
|
+
</td>
|
|
36
|
+
<td align="center" width="110">
|
|
37
|
+
<a href="https://github.com/sipeed/picoclaw">
|
|
38
|
+
<img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
|
|
39
|
+
<b>PicoClaw</b>
|
|
40
|
+
</a><br/>
|
|
41
|
+
<sub>⭐ 14.6K</sub>
|
|
42
|
+
</td>
|
|
43
|
+
<td align="center" width="110">
|
|
44
|
+
<a href="https://github.com/zeroclaw-labs/zeroclaw">
|
|
45
|
+
<img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
|
|
46
|
+
<b>ZeroClaw</b>
|
|
47
|
+
</a><br/>
|
|
48
|
+
<sub>⭐ 9.9K</sub>
|
|
49
|
+
</td>
|
|
50
|
+
<td align="center" width="110">
|
|
51
|
+
<a href="https://github.com/nearai/ironclaw">
|
|
52
|
+
<img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
|
|
53
|
+
<b>IronClaw</b>
|
|
54
|
+
</a><br/>
|
|
55
|
+
<sub>⭐ 2.1K</sub>
|
|
56
|
+
</td>
|
|
57
|
+
</tr>
|
|
58
|
+
<tr>
|
|
59
|
+
<td align="center" width="110">
|
|
60
|
+
<a href="https://github.com/anomalyco/opencode">
|
|
61
|
+
<img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
|
|
62
|
+
<b>OpenCode</b>
|
|
63
|
+
</a><br/>
|
|
64
|
+
<sub>⭐ 106K</sub>
|
|
65
|
+
</td>
|
|
66
|
+
<td align="center" width="110">
|
|
67
|
+
<a href="https://github.com/openai/codex">
|
|
68
|
+
<img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
|
|
69
|
+
<b>Codex CLI</b>
|
|
70
|
+
</a><br/>
|
|
71
|
+
<sub>⭐ 60.8K</sub>
|
|
72
|
+
</td>
|
|
73
|
+
<td align="center" width="110">
|
|
74
|
+
<a href="https://github.com/anthropics/claude-code">
|
|
75
|
+
<img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
|
|
76
|
+
<b>Claude Code</b>
|
|
77
|
+
</a><br/>
|
|
78
|
+
<sub>⭐ 67.3K</sub>
|
|
79
|
+
</td>
|
|
80
|
+
<td align="center" width="110">
|
|
81
|
+
<a href="https://github.com/google-gemini/gemini-cli">
|
|
82
|
+
<img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
|
|
83
|
+
<b>Gemini CLI</b>
|
|
84
|
+
</a><br/>
|
|
85
|
+
<sub>⭐ 94.7K</sub>
|
|
86
|
+
</td>
|
|
87
|
+
<td align="center" width="110">
|
|
88
|
+
<a href="https://github.com/Kilo-Org/kilocode">
|
|
89
|
+
<img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
|
|
90
|
+
<b>Kilo Code</b>
|
|
91
|
+
</a><br/>
|
|
92
|
+
<sub>⭐ 15.5K</sub>
|
|
93
|
+
</td>
|
|
94
|
+
</tr>
|
|
95
|
+
</table>
|
|
96
|
+
|
|
97
|
+
<sub>📡 Todos os agentes se conectam via <code>http://localhost:20128/v1</code> ou <code>http://cloud.omniroute.online/v1</code> — uma configuração, modelos ilimitados e cota</sub>
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
[](https://www.npmjs.com/package/omniroute)
|
|
102
|
+
[](https://hub.docker.com/r/diegosouzapw/omniroute)
|
|
103
|
+
[](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
|
|
104
|
+
[](https://omniroute.online)
|
|
105
|
+
[](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
|
|
106
|
+
|
|
107
|
+
[🌐 Website](https://omniroute.online) • [🚀 Quick Start](#-quick-start) • [💡 Features](#-key-features) • [📖 Docs](#-documentation) • [💰 Pricing](#-pricing-at-a-glance) • [💬 WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
|
|
108
|
+
|
|
109
|
+
🌐 **Available in:** 🇺🇸 [English](README.md) | 🇧🇷 [Português (Brasil)](README.pt-BR.md) | 🇪🇸 [Español](README.es.md) | 🇫🇷 [Français](README.fr.md) | 🇮🇹 [Italiano](README.it.md) | 🇷🇺 [Русский](README.ru.md) | 🇨🇳 [中文 (简体)](README.zh-CN.md) | 🇩🇪 [Deutsch](README.de.md) | 🇮🇳 [हिन्दी](README.in.md) | 🇹🇭 [ไทย](README.th.md) | 🇺🇦 [Українська](README.uk-UA.md) | 🇸🇦 [العربية](README.ar.md) | 🇯🇵 [日本語](README.ja.md) | 🇻🇳 [Tiếng Việt](README.vi.md) | 🇧🇬 [Български](README.bg.md) | 🇩🇰 [Dansk](README.da.md) | 🇫🇮 [Suomi](README.fi.md) | 🇮🇱 [עברית](README.he.md) | 🇭🇺 [Magyar](README.hu.md) | 🇮🇩 [Bahasa Indonesia](README.id.md) | 🇰🇷 [한국어](README.ko.md) | 🇲🇾 [Bahasa Melayu](README.ms.md) | 🇳🇱 [Nederlands](README.nl.md) | 🇳🇴 [Norsk](README.no.md) | 🇵🇹 [Português (Portugal)](README.pt.md) | 🇷🇴 [Română](README.ro.md) | 🇵🇱 [Polski](README.pl.md) | 🇸🇰 [Slovenčina](README.sk.md) | 🇸🇪 [Svenska](README.sv.md) | 🇵🇭 [Filipino](README.phi.md)
|
|
110
|
+
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 🤔 Por que OmniRoute?
|
|
116
|
+
|
|
117
|
+
**Pare de desperdiçar dinheiro e atingir limites:**
|
|
118
|
+
|
|
119
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> A cota de assinatura expira sem ser utilizada todos os meses
|
|
120
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Os limites de taxa impedem você no meio da codificação
|
|
121
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> APIs caras (US$ 20-50/mês por provedor)
|
|
122
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Troca manual entre provedores
|
|
123
|
+
|
|
124
|
+
**OmniRoute resolve isso:**
|
|
125
|
+
|
|
126
|
+
- ✅ **Maximize as assinaturas** - Rastreie a cota, use cada bit antes de redefinir
|
|
127
|
+
- ✅ **Fullback automático** - Assinatura → Chave de API → Barato → Gratuito, tempo de inatividade zero
|
|
128
|
+
- ✅ **Múltiplas contas** - Round-robin entre contas por provedor
|
|
129
|
+
- ✅ **Universal** - Funciona com Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, qualquer ferramenta CLI
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 🔄 Como funciona
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
┌─────────────┐
|
|
137
|
+
│ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
|
138
|
+
│ Tool │
|
|
139
|
+
└──────┬──────┘
|
|
140
|
+
│ http://localhost:20128/v1
|
|
141
|
+
↓
|
|
142
|
+
┌─────────────────────────────────────────┐
|
|
143
|
+
│ OmniRoute (Smart Router) │
|
|
144
|
+
│ • Format translation (OpenAI ↔ Claude) │
|
|
145
|
+
│ • Quota tracking + Embeddings + Images │
|
|
146
|
+
│ • Auto token refresh │
|
|
147
|
+
└──────┬──────────────────────────────────┘
|
|
148
|
+
│
|
|
149
|
+
├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI
|
|
150
|
+
│ ↓ quota exhausted
|
|
151
|
+
├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
|
|
152
|
+
│ ↓ budget limit
|
|
153
|
+
├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)
|
|
154
|
+
│ ↓ budget limit
|
|
155
|
+
└─→ [Tier 4: FREE] iFlow, Qwen, Kiro (unlimited)
|
|
156
|
+
|
|
157
|
+
Result: Never stop coding, minimal cost
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## ⚡ Início rápido
|
|
163
|
+
|
|
164
|
+
**1. Instale globalmente:**
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npm install -g omniroute
|
|
168
|
+
omniroute
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
🎉 O painel abre às `http://localhost:20128`
|
|
172
|
+
|
|
173
|
+
| Comando | Descrição |
|
|
174
|
+
| ----------------------- | ------------------------------------- |
|
|
175
|
+
| `omniroute` | Iniciar servidor (porta padrão 20128) |
|
|
176
|
+
| `omniroute --port 3000` | Usar porta personalizada |
|
|
177
|
+
| `omniroute --no-open` | Não abra o navegador automaticamente |
|
|
178
|
+
| `omniroute --help` | Mostrar ajuda |
|
|
179
|
+
|
|
180
|
+
**2. Conecte um provedor GRATUITO:**
|
|
181
|
+
|
|
182
|
+
Painel → Provedores → Conectar **Claude Code** ou **Antigravidade** → Login OAuth → Concluído!
|
|
183
|
+
|
|
184
|
+
**3. Use em sua ferramenta CLI:**
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
|
|
188
|
+
Endpoint: http://localhost:20128/v1
|
|
189
|
+
API Key: [copy from dashboard]
|
|
190
|
+
Model: if/kimi-k2-thinking
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**É isso aí!** Comece a codificar com modelos de IA GRATUITOS.
|
|
194
|
+
|
|
195
|
+
**Alternativa – execute a partir da fonte:**
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
cp .env.example .env
|
|
199
|
+
npm install
|
|
200
|
+
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 🐳 Docker
|
|
206
|
+
|
|
207
|
+
OmniRoute está disponível como uma imagem pública do Docker em [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
|
208
|
+
|
|
209
|
+
**Execução rápida:**
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
docker run -d \
|
|
213
|
+
--name omniroute \
|
|
214
|
+
--restart unless-stopped \
|
|
215
|
+
-p 20128:20128 \
|
|
216
|
+
-v omniroute-data:/app/data \
|
|
217
|
+
diegosouzapw/omniroute:latest
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Com arquivo de ambiente:**
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Copy and edit .env first
|
|
224
|
+
cp .env.example .env
|
|
225
|
+
|
|
226
|
+
docker run -d \
|
|
227
|
+
--name omniroute \
|
|
228
|
+
--restart unless-stopped \
|
|
229
|
+
--env-file .env \
|
|
230
|
+
-p 20128:20128 \
|
|
231
|
+
-v omniroute-data:/app/data \
|
|
232
|
+
diegosouzapw/omniroute:latest
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Usando Docker Compose:**
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# Base profile (no CLI tools)
|
|
239
|
+
docker compose --profile base up -d
|
|
240
|
+
|
|
241
|
+
# CLI profile (Claude Code, Codex, OpenClaw built-in)
|
|
242
|
+
docker compose --profile cli up -d
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
| Imagem | Etiqueta | Tamanho | Descrição |
|
|
246
|
+
| ------------------------ | -------- | ------- | --------------------- |
|
|
247
|
+
| `diegosouzapw/omniroute` | `latest` | ~250 MB | Última versão estável |
|
|
248
|
+
| `diegosouzapw/omniroute` | `1.0.3` | ~250 MB | Versão atual |
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 💰 Visão geral dos preços
|
|
253
|
+
|
|
254
|
+
| Nível | Provedor | Custo | Redefinição de cota | Melhor para |
|
|
255
|
+
| ------------------- | ------------------- | -------------------------- | ------------------------ | ----------------------- |
|
|
256
|
+
| **💳 ASSINATURA** | Código Claude (Pro) | $ 20/mês | 5h + semanalmente | Já inscrito |
|
|
257
|
+
| | Códice (Plus/Pro) | US$ 20-200/mês | 5h + semanalmente | Usuários OpenAI |
|
|
258
|
+
| | Gêmeos CLI | **GRÁTIS** | 180 mil/mês + 1 mil/dia | Todos! |
|
|
259
|
+
| | Copiloto GitHub | US$ 10-19/mês | Mensalmente | Usuários do GitHub |
|
|
260
|
+
| **🔑 CHAVE DE API** | NVIDIA NIM | **GRÁTIS** (1000 créditos) | Único | Teste de nível gratuito |
|
|
261
|
+
| | DeepSeek | Pagamento conforme uso | Nenhum | Melhor preço/qualidade |
|
|
262
|
+
| | Groq | Nível gratuito + pago | Taxa limitada | Inferência ultrarrápida |
|
|
263
|
+
| | xAI (Groque) | Pagamento conforme uso | Nenhum | Modelos Grok |
|
|
264
|
+
| | Mistral | Nível gratuito + pago | Taxa limitada | IA Europeia |
|
|
265
|
+
| | OpenRouter | Pagamento conforme uso | Nenhum | Mais de 100 modelos |
|
|
266
|
+
| **💰 BARATO** | GLM-4.7 | US$ 0,6/1 milhão | Diariamente 10h | Backup de orçamento |
|
|
267
|
+
| | MiniMax M2.1 | US$ 0,2/1 milhão | Rolamento de 5 horas | Opção mais barata |
|
|
268
|
+
| | Kimi K2 | $ 9 / mês fixo | 10 milhões de tokens/mês | Custo previsível |
|
|
269
|
+
| **🆓 GRÁTIS** | iFlow | $0 | Ilimitado | 8 modelos grátis |
|
|
270
|
+
| | Qwen | $0 | Ilimitado | 3 modelos grátis |
|
|
271
|
+
| | Kiro | $0 | Ilimitado | Cláudio grátis |
|
|
272
|
+
|
|
273
|
+
**💡 Dica profissional:** Comece com Gemini CLI (180 mil grátis/mês) + combo iFlow (gratuito ilimitado) = custo de $ 0!
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## 🎯 Casos de uso
|
|
278
|
+
|
|
279
|
+
### Caso 1: "Tenho assinatura do Claude Pro"
|
|
280
|
+
|
|
281
|
+
**Problema:** A cota expira sem ser utilizada, limites de taxa durante codificação pesada
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
Combo: "maximize-claude"
|
|
285
|
+
1. cc/claude-opus-4-6 (use subscription fully)
|
|
286
|
+
2. glm/glm-4.7 (cheap backup when quota out)
|
|
287
|
+
3. if/kimi-k2-thinking (free emergency fallback)
|
|
288
|
+
|
|
289
|
+
Monthly cost: $20 (subscription) + ~$5 (backup) = $25 total
|
|
290
|
+
vs. $20 + hitting limits = frustration
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### Caso 2: "Quero custo zero"
|
|
294
|
+
|
|
295
|
+
**Problema:** Não posso pagar assinaturas, preciso de codificação de IA confiável
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
Combo: "free-forever"
|
|
299
|
+
1. gc/gemini-3-flash (180K free/month)
|
|
300
|
+
2. if/kimi-k2-thinking (unlimited free)
|
|
301
|
+
3. qw/qwen3-coder-plus (unlimited free)
|
|
302
|
+
|
|
303
|
+
Monthly cost: $0
|
|
304
|
+
Quality: Production-ready models
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Caso 3: "Preciso de codificação 24 horas por dia, 7 dias por semana, sem interrupções"
|
|
308
|
+
|
|
309
|
+
**Problema:** Prazos, não podemos arcar com o tempo de inatividade
|
|
310
|
+
|
|
311
|
+
```
|
|
312
|
+
Combo: "always-on"
|
|
313
|
+
1. cc/claude-opus-4-6 (best quality)
|
|
314
|
+
2. cx/gpt-5.2-codex (second subscription)
|
|
315
|
+
3. glm/glm-4.7 (cheap, resets daily)
|
|
316
|
+
4. minimax/MiniMax-M2.1 (cheapest, 5h reset)
|
|
317
|
+
5. if/kimi-k2-thinking (free unlimited)
|
|
318
|
+
|
|
319
|
+
Result: 5 layers of fallback = zero downtime
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Caso 4: "Quero IA GRATUITA no OpenClaw"
|
|
323
|
+
|
|
324
|
+
**Problema:** Precisa de assistente de IA em aplicativos de mensagens, totalmente gratuito
|
|
325
|
+
|
|
326
|
+
```
|
|
327
|
+
Combo: "openclaw-free"
|
|
328
|
+
1. if/glm-4.7 (unlimited free)
|
|
329
|
+
2. if/minimax-m2.1 (unlimited free)
|
|
330
|
+
3. if/kimi-k2-thinking (unlimited free)
|
|
331
|
+
|
|
332
|
+
Monthly cost: $0
|
|
333
|
+
Access via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## 💡 Principais recursos
|
|
339
|
+
|
|
340
|
+
### 🧠 Roteamento e inteligência central
|
|
341
|
+
|
|
342
|
+
| Recurso | O que faz |
|
|
343
|
+
| -------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
344
|
+
| 🎯 **Fullback inteligente de 4 camadas** | Roteamento automático: Assinatura → Chave de API → Barato → Grátis |
|
|
345
|
+
| 📊 **Acompanhamento de cotas em tempo real** | Contagem de tokens ativos + contagem regressiva redefinida por provedor |
|
|
346
|
+
| 🔄 **Tradução de formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro sem costura + higienização de resposta |
|
|
347
|
+
| 👥 **Suporte para múltiplas contas** | Múltiplas contas por provedor com seleção inteligente |
|
|
348
|
+
| 🔄 **Atualização automática de token** | Os tokens OAuth são atualizados automaticamente com nova tentativa |
|
|
349
|
+
| 🎨 **Combos Personalizados** | 6 estratégias: preencher primeiro, round-robin, p2c, aleatório, menos usado, otimizado para custos |
|
|
350
|
+
| 🧩 **Modelos Personalizados** | Adicione qualquer ID de modelo a qualquer provedor |
|
|
351
|
+
| 🌐 **Roteador curinga** | Rotear padrões `provider/*` para qualquer provedor dinamicamente |
|
|
352
|
+
| 🧠 **Pensando no Orçamento** | Modos de passagem, automático, personalizado e adaptativo para modelos de raciocínio |
|
|
353
|
+
| 💬 **Injeção imediata do sistema** | Prompt de sistema global aplicado em todas as solicitações |
|
|
354
|
+
| 📄 **API de respostas** | Suporte completo à API de respostas OpenAI (`/v1/responses`) para Codex |
|
|
355
|
+
|
|
356
|
+
### 🎵 APIs multimodais
|
|
357
|
+
|
|
358
|
+
| Recurso | O que faz |
|
|
359
|
+
| --------------------------------- | ----------------------------------------------------------- |
|
|
360
|
+
| 🖼️ **Geração de imagens** | `/v1/images/generations` — 4 provedores, mais de 9 modelos |
|
|
361
|
+
| 📐 **Incorporações** | `/v1/embeddings` — 6 provedores, mais de 9 modelos |
|
|
362
|
+
| 🎤 **Transcrição de áudio** | `/v1/audio/transcriptions` — Compatível com sussurro |
|
|
363
|
+
| 🔊 **Conversão de texto em fala** | `/v1/audio/speech` — Síntese de áudio multiprovedor |
|
|
364
|
+
| 🛡️ **Moderações** | `/v1/moderations` — Verificações de segurança de conteúdo |
|
|
365
|
+
| 🔀 **Reclassificação** | `/v1/rerank` — Reclassificação da relevância dos documentos |
|
|
366
|
+
|
|
367
|
+
### 🛡️ Resiliência e segurança
|
|
368
|
+
|
|
369
|
+
| Recurso | O que faz |
|
|
370
|
+
| -------------------------------------------- | ------------------------------------------------------------------------------------ |
|
|
371
|
+
| 🔌 **Disjuntor** | Abertura/fechamento automático por provedor com limites configuráveis |
|
|
372
|
+
| 🛡️ **Rebanho Anti-Trovão** | Mutex + limite de taxa de semáforo para provedores de chaves de API |
|
|
373
|
+
| 🧠 **Cache Semântico** | Cache de duas camadas (assinatura + semântica) reduz custo e latência |
|
|
374
|
+
| ⚡ **Solicitar Idempotência** | Janela de desduplicação 5s para solicitações duplicadas |
|
|
375
|
+
| 🔒 **Falsificação de impressão digital TLS** | Ignore a detecção de bot baseada em TLS via wreq-js |
|
|
376
|
+
| 🌐 **Filtragem de IP** | Lista de permissões/lista de bloqueio para controle de acesso à API |
|
|
377
|
+
| 📊 **Limites de taxas editáveis** | RPM configurável, intervalo mínimo e simultâneo máximo no nível do sistema |
|
|
378
|
+
| 🛡 **Proteção de endpoint de API** | Autenticação + bloqueio de provedor para o endpoint `/models` |
|
|
379
|
+
| 🔒 **Visibilidade do proxy** | Crachás codificados por cores: 🟢 global, 🟡 provedor, 🔵 por conexão com display IP |
|
|
380
|
+
| 🌐 **Configuração de proxy de 3 níveis** | Configurar proxies em nível global, por provedor ou por conexão |
|
|
381
|
+
|
|
382
|
+
### 📊 Observabilidade e análise
|
|
383
|
+
|
|
384
|
+
| Recurso | O que faz |
|
|
385
|
+
| ------------------------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
386
|
+
| 📝 **Solicitar registro** | Modo de depuração com logs completos de solicitação/resposta |
|
|
387
|
+
| 💾 **Logs de proxy SQLite** | Logs de proxy persistentes sobrevivem às reinicializações do servidor |
|
|
388
|
+
| 📊 **Painel de análise** | Alimentado por recargas: cartões de estatísticas, gráfico de uso de modelo, tabela de provedores |
|
|
389
|
+
| 📈 **Acompanhamento do progresso** | Eventos de progresso SSE opcionais para streaming |
|
|
390
|
+
| 🧪 **Avaliações LLM** | Teste de Golden Set com 4 estratégias de jogo |
|
|
391
|
+
| 🔍 **Solicitar Telemetria** | Agregação de latência p50/p95/p99 + rastreamento X-Request-Id |
|
|
392
|
+
| 📋 **Painel de registros** | Página unificada de 4 guias: Logs de solicitação, Logs de proxy, Logs de auditoria, Console |
|
|
393
|
+
| 🖥️ **Visualizador de registros do console** | Visualizador em estilo terminal em tempo real com filtro de nível, pesquisa, rolagem automática |
|
|
394
|
+
| 📑 **Registro baseado em arquivo** | O interceptor do console captura toda a saída para o arquivo de log JSON com rotação |
|
|
395
|
+
| 🏥 **Painel de saúde** | Tempo de atividade do sistema, estados de disjuntores, bloqueios, estatísticas de cache |
|
|
396
|
+
| 💰 **Acompanhamento de custos** | Gestão orçamentária + configuração de preços por modelo |
|
|
397
|
+
|
|
398
|
+
### ☁️ Implantação e sincronização
|
|
399
|
+
|
|
400
|
+
| Recurso | O que faz |
|
|
401
|
+
| --------------------------------------- | ------------------------------------------------------------------------------------ |
|
|
402
|
+
| 💾 **Sincronização na nuvem** | Sincronize a configuração entre dispositivos por meio do Cloudflare Workers |
|
|
403
|
+
| 🌐 **Implante em qualquer lugar** | Localhost, VPS, Docker, Cloudflare Workers |
|
|
404
|
+
| 🔑 **Gerenciamento de chaves de API** | Gerar, alternar e definir o escopo de chaves de API por provedor |
|
|
405
|
+
| 🧙 **Assistente de integração** | Configuração guiada em 4 etapas para usuários iniciantes |
|
|
406
|
+
| 🔧 **Painel de Ferramentas CLI** | Configurar com um clique Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
|
407
|
+
| 🔄 **Backups de banco de dados** | Backup, restauração, exportação e importação automáticos para todas as configurações |
|
|
408
|
+
| 🌐 **Internacionalização** | i18n completo com next-intl — Suporte Inglês + Português (Brasil) |
|
|
409
|
+
| 🌍 **Seletor de idioma** | Ícone de globo no cabeçalho para troca de idioma em tempo real (🇺🇸/🇧🇷) |
|
|
410
|
+
| 📂 **Diretório de dados personalizado** | `DATA_DIR` env var para substituir o caminho de armazenamento padrão `~/.omniroute` |
|
|
411
|
+
|
|
412
|
+
<details>
|
|
413
|
+
<summary><b>📖 Detalhes do recurso</b></summary>
|
|
414
|
+
|
|
415
|
+
### 🎯 Fallback inteligente de 4 camadas
|
|
416
|
+
|
|
417
|
+
Crie combos com fallback automático:
|
|
418
|
+
|
|
419
|
+
```
|
|
420
|
+
Combo: "my-coding-stack"
|
|
421
|
+
1. cc/claude-opus-4-6 (your subscription)
|
|
422
|
+
2. nvidia/llama-3.3-70b (free NVIDIA API)
|
|
423
|
+
3. glm/glm-4.7 (cheap backup, $0.6/1M)
|
|
424
|
+
4. if/kimi-k2-thinking (free fallback)
|
|
425
|
+
|
|
426
|
+
→ Auto switches when quota runs out or errors occur
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
### 📊 Rastreamento de cotas em tempo real
|
|
430
|
+
|
|
431
|
+
- Consumo de token por provedor
|
|
432
|
+
- Redefinir contagem regressiva (5 horas, diariamente, semanalmente)
|
|
433
|
+
- Estimativa de custos para níveis pagos
|
|
434
|
+
- Relatórios mensais de gastos
|
|
435
|
+
|
|
436
|
+
### 🔄 Tradução de formato
|
|
437
|
+
|
|
438
|
+
Tradução perfeita entre formatos:
|
|
439
|
+
|
|
440
|
+
- **OpenAI** ↔ **Claude** ↔ **Gêmeos** ↔ **Respostas OpenAI**
|
|
441
|
+
- Sua ferramenta CLI envia o formato OpenAI → OmniRoute traduz → O provedor recebe o formato nativo
|
|
442
|
+
- Funciona com qualquer ferramenta que suporte endpoints OpenAI personalizados
|
|
443
|
+
- **Higienização de resposta** — Remove campos não padrão para compatibilidade estrita com o OpenAI SDK
|
|
444
|
+
- **Normalização de funções** — `developer` → `system` para não-OpenAI; `system` → `user` para modelos GLM/ERNIE
|
|
445
|
+
- ** Extração de tags Think ** — `<think>` blocos → `reasoning_content` para modelos de pensamento
|
|
446
|
+
- **Saída estruturada** — `json_schema` → `responseMimeType`/`responseSchema` de Gêmeos
|
|
447
|
+
|
|
448
|
+
### 👥 Suporte para múltiplas contas
|
|
449
|
+
|
|
450
|
+
- Adicione várias contas por provedor
|
|
451
|
+
- Round-robin automático ou roteamento baseado em prioridade
|
|
452
|
+
- Fallback para a próxima conta quando alguém atingir a cota
|
|
453
|
+
|
|
454
|
+
### 🔄 Atualização automática de token
|
|
455
|
+
|
|
456
|
+
- Os tokens OAuth são atualizados automaticamente antes da expiração
|
|
457
|
+
- Não é necessária reautenticação manual
|
|
458
|
+
- Experiência perfeita em todos os provedores
|
|
459
|
+
|
|
460
|
+
### 🎨 Combos Personalizados
|
|
461
|
+
|
|
462
|
+
- Crie combinações ilimitadas de modelos
|
|
463
|
+
- 6 estratégias: preencher primeiro, round-robin, poder de duas escolhas, aleatório, menos usado, otimizado para custos
|
|
464
|
+
- Compartilhe combos entre dispositivos com Cloud Sync
|
|
465
|
+
|
|
466
|
+
### 🏥 Painel de saúde
|
|
467
|
+
|
|
468
|
+
- Status do sistema (tempo de atividade, versão, uso de memória)
|
|
469
|
+
- Estados do disjuntor por provedor (Fechado/Aberto/Meio-Aberto)
|
|
470
|
+
- Status do limite de taxa e bloqueios ativos
|
|
471
|
+
- Estatísticas de cache de assinatura
|
|
472
|
+
- Telemetria de latência (p50/p95/p99) + cache de prompt
|
|
473
|
+
- Redefinir o status de saúde com um clique
|
|
474
|
+
|
|
475
|
+
### 🔧 Parque do Tradutor
|
|
476
|
+
|
|
477
|
+
OmniRoute inclui um poderoso Translator Playground integrado com **4 modos** para depuração, teste e monitoramento de traduções de API:
|
|
478
|
+
|
|
479
|
+
| Modo | Descrição |
|
|
480
|
+
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
481
|
+
| **💻 Parque Infantil** | Tradução direta de formato — cole qualquer corpo de solicitação de API e veja instantaneamente como o OmniRoute o traduz entre formatos de provedor (OpenAI ↔ Claude ↔ Gemini ↔ API de respostas). Inclui modelos de exemplo e detecção automática de formato. |
|
|
482
|
+
| **💬 Testador de bate-papo** | Envie solicitações de chat reais por meio do OmniRoute e veja o percurso completo: sua entrada, a solicitação traduzida, a resposta do provedor e a resposta traduzida de volta. Inestimável para validar o roteamento combinado. |
|
|
483
|
+
| **🧪 Bancada de testes** | Modo de teste em lote — defina vários casos de teste com diferentes entradas e resultados esperados, execute-os todos de uma vez e compare os resultados entre provedores e modelos. |
|
|
484
|
+
| **📱Monitoramento ao vivo** | Monitoramento de solicitações em tempo real: observe as solicitações recebidas conforme elas fluem pelo OmniRoute, veja as traduções de formato acontecendo ao vivo e identifique problemas instantaneamente. |
|
|
485
|
+
|
|
486
|
+
**Acesso:** Painel → Tradutor (barra lateral)
|
|
487
|
+
|
|
488
|
+
### 💾 Sincronização na nuvem
|
|
489
|
+
|
|
490
|
+
- Sincronize provedores, combos e configurações entre dispositivos
|
|
491
|
+
- Sincronização automática em segundo plano
|
|
492
|
+
- Armazenamento criptografado seguro
|
|
493
|
+
|
|
494
|
+
</details>
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## 📖 Guia de configuração
|
|
499
|
+
|
|
500
|
+
<details>
|
|
501
|
+
<summary><b>💳 Provedores de assinatura</b></summary>
|
|
502
|
+
|
|
503
|
+
### Código Claude (Pro/Max)
|
|
504
|
+
|
|
505
|
+
```bash
|
|
506
|
+
Dashboard → Providers → Connect Claude Code
|
|
507
|
+
→ OAuth login → Auto token refresh
|
|
508
|
+
→ 5-hour + weekly quota tracking
|
|
509
|
+
|
|
510
|
+
Models:
|
|
511
|
+
cc/claude-opus-4-6
|
|
512
|
+
cc/claude-sonnet-4-5-20250929
|
|
513
|
+
cc/claude-haiku-4-5-20251001
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
**Dica profissional:** Use o Opus para tarefas complexas e o Sonnet para velocidade. OmniRoute rastreia cota por modelo!
|
|
517
|
+
|
|
518
|
+
### Codex OpenAI (Plus/Pro)
|
|
519
|
+
|
|
520
|
+
```bash
|
|
521
|
+
Dashboard → Providers → Connect Codex
|
|
522
|
+
→ OAuth login (port 1455)
|
|
523
|
+
→ 5-hour + weekly reset
|
|
524
|
+
|
|
525
|
+
Models:
|
|
526
|
+
cx/gpt-5.2-codex
|
|
527
|
+
cx/gpt-5.1-codex-max
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Gemini CLI (GRÁTIS 180K/mês!)
|
|
531
|
+
|
|
532
|
+
```bash
|
|
533
|
+
Dashboard → Providers → Connect Gemini CLI
|
|
534
|
+
→ Google OAuth
|
|
535
|
+
→ 180K completions/month + 1K/day
|
|
536
|
+
|
|
537
|
+
Models:
|
|
538
|
+
gc/gemini-3-flash-preview
|
|
539
|
+
gc/gemini-2.5-pro
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
**Melhor valor:** Grande nível gratuito! Use isso antes dos níveis pagos.
|
|
543
|
+
|
|
544
|
+
### GitHub Copiloto
|
|
545
|
+
|
|
546
|
+
```bash
|
|
547
|
+
Dashboard → Providers → Connect GitHub
|
|
548
|
+
→ OAuth via GitHub
|
|
549
|
+
→ Monthly reset (1st of month)
|
|
550
|
+
|
|
551
|
+
Models:
|
|
552
|
+
gh/gpt-5
|
|
553
|
+
gh/claude-4.5-sonnet
|
|
554
|
+
gh/gemini-3-pro
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
</details>
|
|
558
|
+
|
|
559
|
+
<details>
|
|
560
|
+
<summary><b>🔑 Provedores de chave de API</b></summary>
|
|
561
|
+
|
|
562
|
+
### NVIDIA NIM (1000 créditos GRÁTIS!)
|
|
563
|
+
|
|
564
|
+
1. Inscreva-se: [build.nvidia.com](https://build.nvidia.com)
|
|
565
|
+
2. Obtenha uma chave de API gratuita (1.000 créditos de inferência incluídos)
|
|
566
|
+
3. Painel → Adicionar Provedor → NVIDIA NIM:
|
|
567
|
+
- Chave API: `nvapi-your-key`
|
|
568
|
+
|
|
569
|
+
**Modelos:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` e mais de 50
|
|
570
|
+
|
|
571
|
+
**Dica profissional:** API compatível com OpenAI — funciona perfeitamente com a tradução de formato do OmniRoute!
|
|
572
|
+
|
|
573
|
+
### DeepSeek
|
|
574
|
+
|
|
575
|
+
1. Inscreva-se: [platform.deepseek.com](https://platform.deepseek.com)
|
|
576
|
+
2. Obtenha a chave API
|
|
577
|
+
3. Painel → Adicionar provedor → DeepSeek
|
|
578
|
+
|
|
579
|
+
**Modelos:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
|
580
|
+
|
|
581
|
+
### Groq (nível gratuito disponível!)
|
|
582
|
+
|
|
583
|
+
1. Inscreva-se: [console.groq.com](https://console.groq.com)
|
|
584
|
+
2. Obtenha a chave API (nível gratuito incluído)
|
|
585
|
+
3. Painel → Adicionar Provedor → Groq
|
|
586
|
+
|
|
587
|
+
**Modelos:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
|
588
|
+
|
|
589
|
+
**Dica profissional:** Inferência ultrarrápida — melhor para codificação em tempo real!
|
|
590
|
+
|
|
591
|
+
### OpenRouter (mais de 100 modelos)
|
|
592
|
+
|
|
593
|
+
1. Inscreva-se: [openrouter.ai](https://openrouter.ai)
|
|
594
|
+
2. Obtenha a chave API
|
|
595
|
+
3. Painel → Adicionar Provedor → OpenRouter
|
|
596
|
+
|
|
597
|
+
**Modelos:** acesse mais de 100 modelos de todos os principais fornecedores por meio de uma única chave de API.
|
|
598
|
+
|
|
599
|
+
</details>
|
|
600
|
+
|
|
601
|
+
<details>
|
|
602
|
+
<summary><b>💰 Provedores baratos (backup)</b></summary>
|
|
603
|
+
|
|
604
|
+
### GLM-4.7 (redefinição diária, US$ 0,6/1 milhão)
|
|
605
|
+
|
|
606
|
+
1. Inscreva-se: [Zhipu AI](https://open.bigmodel.cn/)
|
|
607
|
+
2. Obtenha a chave API do plano de codificação
|
|
608
|
+
3. Painel → Adicionar chave API:
|
|
609
|
+
- Provedor: `glm`
|
|
610
|
+
- Chave API: `your-key`
|
|
611
|
+
|
|
612
|
+
**Usar:** `glm/glm-4.7`
|
|
613
|
+
|
|
614
|
+
**Dica profissional:** O plano de codificação oferece cota 3× com custo de 1/7! Redefinir diariamente às 10h.
|
|
615
|
+
|
|
616
|
+
### MiniMax M2.1 (redefinição de 5h, US$ 0,20/1 milhão)
|
|
617
|
+
|
|
618
|
+
1. Inscreva-se: [MiniMax](https://www.minimax.io/)
|
|
619
|
+
2. Obtenha a chave API
|
|
620
|
+
3. Painel → Adicionar chave API
|
|
621
|
+
|
|
622
|
+
**Usar:** `minimax/MiniMax-M2.1`
|
|
623
|
+
|
|
624
|
+
**Dica profissional:** Opção mais barata para contexto longo (1 milhão de tokens)!
|
|
625
|
+
|
|
626
|
+
### Kimi K2 (US$ 9/mês fixo)
|
|
627
|
+
|
|
628
|
+
1. Inscreva-se: [Moonshot AI](https://platform.moonshot.ai/)
|
|
629
|
+
2. Obtenha a chave API
|
|
630
|
+
3. Painel → Adicionar chave API
|
|
631
|
+
|
|
632
|
+
**Usar:** `kimi/kimi-latest`
|
|
633
|
+
|
|
634
|
+
**Dica profissional:** $9 fixos/mês para 10 milhões de tokens = $0,90/custo efetivo de 1 milhão!
|
|
635
|
+
|
|
636
|
+
</details>
|
|
637
|
+
|
|
638
|
+
<details>
|
|
639
|
+
<summary><b>🆓 Provedores GRATUITOS (backup de emergência)</b></summary>
|
|
640
|
+
|
|
641
|
+
### iFlow (8 modelos GRATUITOS)
|
|
642
|
+
|
|
643
|
+
```bash
|
|
644
|
+
Dashboard → Connect iFlow
|
|
645
|
+
→ iFlow OAuth login
|
|
646
|
+
→ Unlimited usage
|
|
647
|
+
|
|
648
|
+
Models:
|
|
649
|
+
if/kimi-k2-thinking
|
|
650
|
+
if/qwen3-coder-plus
|
|
651
|
+
if/glm-4.7
|
|
652
|
+
if/minimax-m2
|
|
653
|
+
if/deepseek-r1
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
### Qwen (3 modelos GRATUITOS)
|
|
657
|
+
|
|
658
|
+
```bash
|
|
659
|
+
Dashboard → Connect Qwen
|
|
660
|
+
→ Device code authorization
|
|
661
|
+
→ Unlimited usage
|
|
662
|
+
|
|
663
|
+
Models:
|
|
664
|
+
qw/qwen3-coder-plus
|
|
665
|
+
qw/qwen3-coder-flash
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
### Kiro (Claude GRÁTIS)
|
|
669
|
+
|
|
670
|
+
```bash
|
|
671
|
+
Dashboard → Connect Kiro
|
|
672
|
+
→ AWS Builder ID or Google/GitHub
|
|
673
|
+
→ Unlimited usage
|
|
674
|
+
|
|
675
|
+
Models:
|
|
676
|
+
kr/claude-sonnet-4.5
|
|
677
|
+
kr/claude-haiku-4.5
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
</details>
|
|
681
|
+
|
|
682
|
+
<details>
|
|
683
|
+
<summary><b>🎨 Criar Combos</b></summary>
|
|
684
|
+
|
|
685
|
+
### Exemplo 1: Maximize a assinatura → Backup barato
|
|
686
|
+
|
|
687
|
+
```
|
|
688
|
+
Dashboard → Combos → Create New
|
|
689
|
+
|
|
690
|
+
Name: premium-coding
|
|
691
|
+
Models:
|
|
692
|
+
1. cc/claude-opus-4-6 (Subscription primary)
|
|
693
|
+
2. glm/glm-4.7 (Cheap backup, $0.6/1M)
|
|
694
|
+
3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
|
|
695
|
+
|
|
696
|
+
Use in CLI: premium-coding
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
### Exemplo 2: somente gratuito (custo zero)
|
|
700
|
+
|
|
701
|
+
```
|
|
702
|
+
Name: free-combo
|
|
703
|
+
Models:
|
|
704
|
+
1. gc/gemini-3-flash-preview (180K free/month)
|
|
705
|
+
2. if/kimi-k2-thinking (unlimited)
|
|
706
|
+
3. qw/qwen3-coder-plus (unlimited)
|
|
707
|
+
|
|
708
|
+
Cost: $0 forever!
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
</details>
|
|
712
|
+
|
|
713
|
+
<details>
|
|
714
|
+
<summary><b>🔧 Integração CLI</b></summary>
|
|
715
|
+
|
|
716
|
+
### Cursor IDE
|
|
717
|
+
|
|
718
|
+
```
|
|
719
|
+
Settings → Models → Advanced:
|
|
720
|
+
OpenAI API Base URL: http://localhost:20128/v1
|
|
721
|
+
OpenAI API Key: [from OmniRoute dashboard]
|
|
722
|
+
Model: cc/claude-opus-4-6
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
### Código Cláudio
|
|
726
|
+
|
|
727
|
+
Use a página **Ferramentas CLI** no painel para configuração com um clique ou edite `~/.claude/settings.json` manualmente.
|
|
728
|
+
|
|
729
|
+
### CLI do Codex
|
|
730
|
+
|
|
731
|
+
```bash
|
|
732
|
+
export OPENAI_BASE_URL="http://localhost:20128"
|
|
733
|
+
export OPENAI_API_KEY="your-omniroute-api-key"
|
|
734
|
+
|
|
735
|
+
codex "your prompt"
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
###OpenClaw
|
|
739
|
+
|
|
740
|
+
**Opção 1 — Painel (recomendado):**
|
|
741
|
+
|
|
742
|
+
```
|
|
743
|
+
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
**Opção 2 — Manual:** Editar `~/.openclaw/openclaw.json`:
|
|
747
|
+
|
|
748
|
+
```json
|
|
749
|
+
{
|
|
750
|
+
"models": {
|
|
751
|
+
"providers": {
|
|
752
|
+
"omniroute": {
|
|
753
|
+
"baseUrl": "http://127.0.0.1:20128/v1",
|
|
754
|
+
"apiKey": "sk_omniroute",
|
|
755
|
+
"api": "openai-completions"
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
> **Observação:** OpenClaw só funciona com OmniRoute local. Use `127.0.0.1` em vez de `localhost` para evitar problemas de resolução de IPv6.
|
|
763
|
+
|
|
764
|
+
### Cline / Continuar / RooCode
|
|
765
|
+
|
|
766
|
+
```
|
|
767
|
+
Settings → API Configuration:
|
|
768
|
+
Provider: OpenAI Compatible
|
|
769
|
+
Base URL: http://localhost:20128/v1
|
|
770
|
+
API Key: [from OmniRoute dashboard]
|
|
771
|
+
Model: if/kimi-k2-thinking
|
|
772
|
+
```
|
|
773
|
+
|
|
774
|
+
</details>
|
|
775
|
+
|
|
776
|
+
---
|
|
777
|
+
|
|
778
|
+
## 📊 Modelos Disponíveis
|
|
779
|
+
|
|
780
|
+
<details>
|
|
781
|
+
<summary><b>Ver todos os modelos disponíveis</b></summary>
|
|
782
|
+
|
|
783
|
+
**Código Claude (`cc/`)** - Pro/Máx:
|
|
784
|
+
|
|
785
|
+
- `cc/claude-opus-4-6`
|
|
786
|
+
- `cc/claude-sonnet-4-5-20250929`
|
|
787
|
+
- `cc/claude-haiku-4-5-20251001`
|
|
788
|
+
|
|
789
|
+
**Códice (`cx/`)** - Plus/Pro:
|
|
790
|
+
|
|
791
|
+
- `cx/gpt-5.2-codex`
|
|
792
|
+
- `cx/gpt-5.1-codex-max`
|
|
793
|
+
|
|
794
|
+
**Gemini CLI (`gc/`)** - GRATUITO:
|
|
795
|
+
|
|
796
|
+
- `gc/gemini-3-flash-preview`
|
|
797
|
+
- `gc/gemini-2.5-pro`
|
|
798
|
+
|
|
799
|
+
**Copiloto do GitHub (`gh/`)**:
|
|
800
|
+
|
|
801
|
+
- `gh/gpt-5`
|
|
802
|
+
- `gh/claude-4.5-sonnet`
|
|
803
|
+
|
|
804
|
+
**NVIDIA NIM (`nvidia/`)** - Créditos GRATUITOS:
|
|
805
|
+
|
|
806
|
+
- `nvidia/llama-3.3-70b-instruct`
|
|
807
|
+
- `nvidia/mistral-7b-instruct`
|
|
808
|
+
- Mais de 50 modelos em [build.nvidia.com](https://build.nvidia.com)
|
|
809
|
+
|
|
810
|
+
**GLM (`glm/`)** - US$ 0,6/1 milhão:
|
|
811
|
+
|
|
812
|
+
- `glm/glm-4.7`
|
|
813
|
+
|
|
814
|
+
**MiniMax (`minimax/`)** - US$ 0,2/1 milhão:
|
|
815
|
+
|
|
816
|
+
- `minimax/MiniMax-M2.1`
|
|
817
|
+
|
|
818
|
+
**iFlow (`if/`)** - GRATUITO:
|
|
819
|
+
|
|
820
|
+
- `if/kimi-k2-thinking`
|
|
821
|
+
- `if/qwen3-coder-plus`
|
|
822
|
+
- `if/deepseek-r1`
|
|
823
|
+
- `if/glm-4.7`
|
|
824
|
+
- `if/minimax-m2`
|
|
825
|
+
|
|
826
|
+
**Qwen (`qw/`)** - GRATUITO:
|
|
827
|
+
|
|
828
|
+
- `qw/qwen3-coder-plus`
|
|
829
|
+
- `qw/qwen3-coder-flash`
|
|
830
|
+
|
|
831
|
+
**Kiro (`kr/`)** - GRATUITO:
|
|
832
|
+
|
|
833
|
+
- `kr/claude-sonnet-4.5`
|
|
834
|
+
- `kr/claude-haiku-4.5`
|
|
835
|
+
|
|
836
|
+
**OpenRouter (`or/`)** - mais de 100 modelos:
|
|
837
|
+
|
|
838
|
+
- `or/anthropic/claude-4-sonnet`
|
|
839
|
+
- `or/google/gemini-2.5-pro`
|
|
840
|
+
- Qualquer modelo de [openrouter.ai/models](https://openrouter.ai/models)
|
|
841
|
+
|
|
842
|
+
</details>
|
|
843
|
+
|
|
844
|
+
---
|
|
845
|
+
|
|
846
|
+
## 🧪 Avaliações (Evals)
|
|
847
|
+
|
|
848
|
+
OmniRoute inclui uma estrutura de avaliação integrada para testar a qualidade da resposta do LLM em relação a um conjunto dourado. Acesse-o em **Analytics → Evals** no painel.
|
|
849
|
+
|
|
850
|
+
### Conjunto Dourado Integrado
|
|
851
|
+
|
|
852
|
+
O "OmniRoute Golden Set" pré-carregado contém 10 casos de teste cobrindo:
|
|
853
|
+
|
|
854
|
+
- Saudações, matemática, geografia, geração de código
|
|
855
|
+
- Conformidade com o formato JSON, tradução, remarcação
|
|
856
|
+
- Recusa de segurança (conteúdo prejudicial), contagem, lógica booleana
|
|
857
|
+
|
|
858
|
+
### Estratégias de Avaliação
|
|
859
|
+
|
|
860
|
+
| Estratégia | Descrição | Exemplo |
|
|
861
|
+
| ---------- | --------------------------------------------------------------------------- | -------------------------------- |
|
|
862
|
+
| `exact` | A saída deve corresponder exatamente | `"4"` |
|
|
863
|
+
| `contains` | A saída deve conter substring (sem distinção entre maiúsculas e minúsculas) | `"Paris"` |
|
|
864
|
+
| `regex` | A saída deve corresponder ao padrão regex | `"1.*2.*3"` |
|
|
865
|
+
| `custom` | Função JS personalizada retorna verdadeiro/falso | `(output) => output.length > 10` |
|
|
866
|
+
|
|
867
|
+
---
|
|
868
|
+
|
|
869
|
+
## 🔐 OAuth em Servidor Remoto (Remote OAuth Setup)
|
|
870
|
+
|
|
871
|
+
<a name="oauth-em-servidor-remoto"></a>
|
|
872
|
+
|
|
873
|
+
> **⚠️ IMPORTANTE para usuários com OmniRoute em VPS/Docker/servidor remoto**
|
|
874
|
+
|
|
875
|
+
### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
|
|
876
|
+
|
|
877
|
+
Os provedores **Antigravity** e **Gemini CLI** usam **Google OAuth 2.0** para autenticação. O Google exige que um `redirect_uri` usado no fluxo OAuth seja **exatamente** uma das URIs pré-cadastradas no Google Cloud Console do aplicativo.
|
|
878
|
+
|
|
879
|
+
As credenciais OAuth incorporadas no OmniRoute estão cadastradas **apenas para `localhost`**. Quando você acessa o OmniRoute em um servidor remoto (ex: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:
|
|
880
|
+
|
|
881
|
+
```
|
|
882
|
+
Error 400: redirect_uri_mismatch
|
|
883
|
+
```
|
|
884
|
+
|
|
885
|
+
### Solução: Configure suas próprias credenciais OAuth
|
|
886
|
+
|
|
887
|
+
Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com o URI do seu servidor.
|
|
888
|
+
|
|
889
|
+
####Passo a passo
|
|
890
|
+
|
|
891
|
+
**1. Acesse o Console do Google Cloud**
|
|
892
|
+
|
|
893
|
+
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
|
|
894
|
+
|
|
895
|
+
**2. Crie um novo ID de cliente OAuth 2.0**
|
|
896
|
+
|
|
897
|
+
- Clique em **"+ Criar credenciais"** → **"ID do cliente OAuth"**
|
|
898
|
+
- Tipo de aplicativo: **"Aplicativo Web"**
|
|
899
|
+
- Nome: escolha qualquer nome (ex: `OmniRoute Remote`)
|
|
900
|
+
|
|
901
|
+
**3. Adicionar como URIs de redirecionamento autorizados**
|
|
902
|
+
|
|
903
|
+
No campo **"URIs de redirecionamento autorizados"**, adicionado:
|
|
904
|
+
|
|
905
|
+
```
|
|
906
|
+
https://seu-servidor.com/callback
|
|
907
|
+
```
|
|
908
|
+
|
|
909
|
+
> Substitua `seu-servidor.com` pelo domínio ou IP do seu servidor (inclua a porta se necessário, ex: `http://45.33.32.156:20128/callback`).
|
|
910
|
+
|
|
911
|
+
**4. Salve e copie as credenciais**
|
|
912
|
+
|
|
913
|
+
Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
|
|
914
|
+
|
|
915
|
+
**5. Configurar como variáveis de ambiente**
|
|
916
|
+
|
|
917
|
+
No seu `.env` (ou nas variáveis de ambiente do Docker):
|
|
918
|
+
|
|
919
|
+
```bash
|
|
920
|
+
# Para Antigravity:
|
|
921
|
+
ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
|
|
922
|
+
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
|
|
923
|
+
|
|
924
|
+
# Para Gemini CLI:
|
|
925
|
+
GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
|
|
926
|
+
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
|
|
927
|
+
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
|
|
928
|
+
```
|
|
929
|
+
|
|
930
|
+
**6. Reinicie o OmniRoute**
|
|
931
|
+
|
|
932
|
+
```bash
|
|
933
|
+
# Se usando npm:
|
|
934
|
+
npm run dev
|
|
935
|
+
|
|
936
|
+
# Se usando Docker:
|
|
937
|
+
docker restart omniroute
|
|
938
|
+
```
|
|
939
|
+
|
|
940
|
+
**7. Tente conectar novamente**
|
|
941
|
+
|
|
942
|
+
Painel → Provedores → Antigravidade (ou Gemini CLI) → OAuth
|
|
943
|
+
|
|
944
|
+
Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e a autenticação funcionará.
|
|
945
|
+
|
|
946
|
+
---
|
|
947
|
+
|
|
948
|
+
### Solução alternativa temporária (sem configurar credenciais próprias)
|
|
949
|
+
|
|
950
|
+
Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo **manual de URL**:
|
|
951
|
+
|
|
952
|
+
1. O OmniRoute abrirá uma URL de autorização do Google
|
|
953
|
+
2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
|
|
954
|
+
3. **Copie a URL completa** da barra de endereço do seu navegador (mesmo que a página não carregue)
|
|
955
|
+
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
|
|
956
|
+
5. Clique em **"Conectar"**
|
|
957
|
+
|
|
958
|
+
> Esta solução alternativa funciona porque o código de autorização na URL é válido, independentemente do redirecionamento ter sido carregado ou não.
|
|
959
|
+
|
|
960
|
+
---
|
|
961
|
+
|
|
962
|
+
## 🐛 Solução de problemas
|
|
963
|
+
|
|
964
|
+
<details>
|
|
965
|
+
<summary><b>Clique para expandir o guia de solução de problemas</b></summary>
|
|
966
|
+
|
|
967
|
+
**"O modelo de linguagem não forneceu mensagens"**
|
|
968
|
+
|
|
969
|
+
- Cota do provedor esgotada → Verifique o rastreador de cota do painel
|
|
970
|
+
- Solução: use o combo substituto ou mude para um nível mais barato
|
|
971
|
+
|
|
972
|
+
** Limitação de taxa **
|
|
973
|
+
|
|
974
|
+
- Cota de assinatura esgotada → Fallback para GLM/MiniMax
|
|
975
|
+
- Adicionar combinação: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
976
|
+
|
|
977
|
+
**O token OAuth expirou**
|
|
978
|
+
|
|
979
|
+
- Atualizado automaticamente pelo OmniRoute
|
|
980
|
+
- Se os problemas persistirem: Painel → Provedor → Reconectar
|
|
981
|
+
|
|
982
|
+
**Custos elevados**
|
|
983
|
+
|
|
984
|
+
- Verifique as estatísticas de uso em Painel → Custos
|
|
985
|
+
- Mude o modelo primário para GLM/MiniMax
|
|
986
|
+
- Use o nível gratuito (Gemini CLI, iFlow) para tarefas não críticas
|
|
987
|
+
|
|
988
|
+
**Painel abre na porta errada**
|
|
989
|
+
|
|
990
|
+
- Definir `PORT=20128` e `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
|
991
|
+
|
|
992
|
+
**Erros de sincronização na nuvem**
|
|
993
|
+
|
|
994
|
+
- Verifique `BASE_URL` aponta para sua instância em execução
|
|
995
|
+
- Verifique os pontos `CLOUD_URL` para o endpoint de nuvem esperado
|
|
996
|
+
- Mantenha os valores `NEXT_PUBLIC_*` alinhados com os valores do lado do servidor
|
|
997
|
+
|
|
998
|
+
**Primeiro login não funciona**
|
|
999
|
+
|
|
1000
|
+
- Verifique `INITIAL_PASSWORD` em `.env`
|
|
1001
|
+
- Se não definida, a senha substituta é `123456`
|
|
1002
|
+
|
|
1003
|
+
**Sem registros de solicitação**
|
|
1004
|
+
|
|
1005
|
+
- Definir `ENABLE_REQUEST_LOGS=true` em `.env`
|
|
1006
|
+
|
|
1007
|
+
**O teste de conexão mostra "Inválido" para provedores compatíveis com OpenAI**
|
|
1008
|
+
|
|
1009
|
+
- Muitos provedores não expõem um endpoint `/models`
|
|
1010
|
+
- OmniRoute v1.0.6+ inclui validação de fallback por meio de conclusões de chat
|
|
1011
|
+
- Certifique-se de que o URL base inclua o sufixo `/v1`
|
|
1012
|
+
|
|
1013
|
+
</details>
|
|
1014
|
+
|
|
1015
|
+
---
|
|
1016
|
+
|
|
1017
|
+
## 🛠️ Pilha de tecnologia
|
|
1018
|
+
|
|
1019
|
+
- **Tempo de execução**: Node.js 18–22 LTS (⚠️ Node.js 24+ **não é compatível** — `better-sqlite3` binários nativos são incompatíveis)
|
|
1020
|
+
- **Idioma**: TypeScript 5.9 — **100% TypeScript** em `src/` e `open-sse/` (v1.0.6)
|
|
1021
|
+
- **Estrutura**: Next.js 16 + React 19 + Tailwind CSS 4
|
|
1022
|
+
- **Banco de dados**: LowDB (JSON) + SQLite (estado do domínio + logs de proxy)
|
|
1023
|
+
- **Streaming**: eventos enviados pelo servidor (SSE)
|
|
1024
|
+
- **Autenticação**: OAuth 2.0 (PKCE) + JWT + chaves de API
|
|
1025
|
+
- **Testes**: executor de testes Node.js (mais de 368 testes de unidade)
|
|
1026
|
+
- **CI/CD**: GitHub Actions (publicação automática de npm + Docker Hub no lançamento)
|
|
1027
|
+
- **Site**: [omniroute.online](https://omniroute.online)
|
|
1028
|
+
- **Pacote**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
|
|
1029
|
+
- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
|
|
1030
|
+
- **Resiliência**: Disjuntor, espera exponencial, rebanho anti-trovão, falsificação de TLS
|
|
1031
|
+
|
|
1032
|
+
---
|
|
1033
|
+
|
|
1034
|
+
## 📖 Documentação
|
|
1035
|
+
|
|
1036
|
+
| Documento | Descrição |
|
|
1037
|
+
| -------------------------------------------- | ------------------------------------------------------ |
|
|
1038
|
+
| [User Guide](docs/USER_GUIDE.md) | Provedores, combos, integração CLI, implantação |
|
|
1039
|
+
| [API Reference](docs/API_REFERENCE.md) | Todos os endpoints com exemplos |
|
|
1040
|
+
| [Troubleshooting](docs/TROUBLESHOOTING.md) | Problemas e soluções comuns |
|
|
1041
|
+
| [Architecture](docs/ARCHITECTURE.md) | Arquitetura do sistema e componentes internos |
|
|
1042
|
+
| [Contributing](CONTRIBUTING.md) | Configuração e diretrizes de desenvolvimento |
|
|
1043
|
+
| [OpenAPI Spec](docs/openapi.yaml) | Especificação OpenAPI 3.0 |
|
|
1044
|
+
| [Security Policy](SECURITY.md) | Relatórios de vulnerabilidades e práticas de segurança |
|
|
1045
|
+
| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Guia completo: configuração de VM + nginx + Cloudflare |
|
|
1046
|
+
| [Features Gallery](docs/FEATURES.md) | Tour visual do painel com capturas de tela |
|
|
1047
|
+
|
|
1048
|
+
### 📸 Visualização do painel
|
|
1049
|
+
|
|
1050
|
+
<details>
|
|
1051
|
+
<summary><b>Clique para ver as capturas de tela do painel</b></summary>
|
|
1052
|
+
|
|
1053
|
+
| Página | Captura de tela |
|
|
1054
|
+
| -------------------- | ------------------------------------------------- |
|
|
1055
|
+
| **Fornecedores** |  |
|
|
1056
|
+
| **Combos** |  |
|
|
1057
|
+
| **Análise** |  |
|
|
1058
|
+
| **Saúde** |  |
|
|
1059
|
+
| **Tradutor** |  |
|
|
1060
|
+
| **Configurações** |  |
|
|
1061
|
+
| **Ferramentas CLI** |  |
|
|
1062
|
+
| **Registros de uso** |  |
|
|
1063
|
+
| **Ponto final** |  |
|
|
1064
|
+
|
|
1065
|
+
</details>
|
|
1066
|
+
|
|
1067
|
+
---
|
|
1068
|
+
|
|
1069
|
+
## 🗺️ Roteiro
|
|
1070
|
+
|
|
1071
|
+
OmniRoute tem **210+ recursos planejados** em diversas fases de desenvolvimento. Aqui estão as principais áreas:
|
|
1072
|
+
|
|
1073
|
+
| Categoria | Recursos planejados | Destaques |
|
|
1074
|
+
| --------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------ |
|
|
1075
|
+
| 🧠 **Roteamento e Inteligência** | 25+ | Roteamento de menor latência, roteamento baseado em tags, simulação de cota, seleção de conta P2C |
|
|
1076
|
+
| 🔒 **Segurança e Conformidade** | 20+ | Proteção SSRF, camuflagem de credenciais, limite de taxa por endpoint, escopo de chave de gerenciamento |
|
|
1077
|
+
| 📊 **Observabilidade** | 15+ | Integração OpenTelemetry, monitoramento de cotas em tempo real, rastreamento de custos por modelo |
|
|
1078
|
+
| 🔄 **Integrações com Provedores** | 20+ | Registro de modelo dinâmico, resfriamento de provedor, Codex multicontas, análise de cotas do Copilot |
|
|
1079
|
+
| ⚡ **Desempenho** | 15+ | Camada de cache dupla, cache de prompt, cache de resposta, manutenção de atividade de streaming, API em lote |
|
|
1080
|
+
| 🌐 **Ecossistema** | 10+ | API WebSocket, configuração hot-reload, armazenamento de configuração distribuído, modo comercial |
|
|
1081
|
+
|
|
1082
|
+
### 🔜 Em breve
|
|
1083
|
+
|
|
1084
|
+
- 🔗 **Integração OpenCode** — Suporte de provedor nativo para o IDE de codificação OpenCode AI
|
|
1085
|
+
- 🔗 **Integração TRAE** — Suporte total para a estrutura de desenvolvimento TRAE AI
|
|
1086
|
+
- 📦 **API Batch** — Processamento assíncrono em lote para solicitações em massa
|
|
1087
|
+
- 🎯 **Roteamento baseado em tags** — Roteie solicitações com base em tags personalizadas e metadados
|
|
1088
|
+
- 💰 **Estratégia de custo mais baixo** — Selecione automaticamente o provedor mais barato disponível
|
|
1089
|
+
|
|
1090
|
+
> 📝 Especificações completas de recursos disponíveis em [link](docs/new-features/) (217 especificações detalhadas)
|
|
1091
|
+
|
|
1092
|
+
---
|
|
1093
|
+
|
|
1094
|
+
## 📧 Suporte
|
|
1095
|
+
|
|
1096
|
+
> 💬 **Junte-se à nossa comunidade!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Obtenha ajuda, compartilhe dicas e fique atualizado.
|
|
1097
|
+
|
|
1098
|
+
- **Site**: [omniroute.online](https://omniroute.online)
|
|
1099
|
+
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
|
1100
|
+
- **Problemas**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
|
1101
|
+
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
|
|
1102
|
+
- **Projeto Original**: [9router by decolua](https://github.com/decolua/9router)
|
|
1103
|
+
|
|
1104
|
+
---
|
|
1105
|
+
|
|
1106
|
+
## 👥 Colaboradores
|
|
1107
|
+
|
|
1108
|
+
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
|
1109
|
+
|
|
1110
|
+
### Como contribuir
|
|
1111
|
+
|
|
1112
|
+
1. Bifurque o repositório
|
|
1113
|
+
2. Crie sua ramificação de recursos (`git checkout -b feature/amazing-feature`)
|
|
1114
|
+
3. Confirme suas alterações (`git commit -m 'Add amazing feature'`)
|
|
1115
|
+
4. Envie para a ramificação (`git push origin feature/amazing-feature`)
|
|
1116
|
+
5. Abra uma solicitação pull
|
|
1117
|
+
|
|
1118
|
+
Consulte [CONTRIBUTING.md](CONTRIBUTING.md) para obter diretrizes detalhadas.
|
|
1119
|
+
|
|
1120
|
+
### Lançando uma nova versão
|
|
1121
|
+
|
|
1122
|
+
```bash
|
|
1123
|
+
# Create a release — npm publish happens automatically
|
|
1124
|
+
gh release create v1.0.6 --title "v1.0.6" --generate-notes
|
|
1125
|
+
```
|
|
1126
|
+
|
|
1127
|
+
---
|
|
1128
|
+
|
|
1129
|
+
## 📊 História das Estrelas
|
|
1130
|
+
|
|
1131
|
+
<a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
|
|
1132
|
+
<picture>
|
|
1133
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
|
|
1134
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
|
|
1135
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
|
|
1136
|
+
</picture>
|
|
1137
|
+
</a>
|
|
1138
|
+
|
|
1139
|
+
---
|
|
1140
|
+
|
|
1141
|
+
## 🙏 Agradecimentos
|
|
1142
|
+
|
|
1143
|
+
Agradecimentos especiais a **[9router](https://github.com/decolua/9router)** de **[decolua](https://github.com/decolua)** — o projeto original que inspirou este fork. OmniRoute se baseia nessa base incrível com recursos adicionais, APIs multimodais e uma reescrita completa do TypeScript.
|
|
1144
|
+
|
|
1145
|
+
Agradecimentos especiais a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — a implementação Go original que inspirou esta versão JavaScript.
|
|
1146
|
+
|
|
1147
|
+
---
|
|
1148
|
+
|
|
1149
|
+
## 📄 Licença
|
|
1150
|
+
|
|
1151
|
+
Licença MIT - consulte [LICENSE](LICENSE) para obter detalhes.
|
|
1152
|
+
|
|
1153
|
+
---
|
|
1154
|
+
|
|
1155
|
+
---
|
|
1156
|
+
|
|
1157
|
+
## 🇧🇷 OmniRoute — Gateway de IA Gratuito
|
|
1158
|
+
|
|
1159
|
+
<a name="-omniroute--gateway-de-ia-gratuito"></a>
|
|
1160
|
+
|
|
1161
|
+
### Nunca pare de codificar. Roteamento inteligente para **modelos de IA GRATUITOS e de baixo custo** com fallback automático.
|
|
1162
|
+
|
|
1163
|
+
_Seu proxy universal de API — um endpoint, mais de 36 provedores, tempo de inatividade zero._
|
|
1164
|
+
|
|
1165
|
+
### 🌐 Internacionalização (i18n)
|
|
1166
|
+
|
|
1167
|
+
O painel do OmniRoute suporta **múltiplos idiomas**. Atualmente disponível em:
|
|
1168
|
+
|
|
1169
|
+
| Idioma | Código | Estado |
|
|
1170
|
+
| --------------------- | ------- | ----------- |
|
|
1171
|
+
| 🇺🇸 Inglês | `en` | ✅ Completo |
|
|
1172
|
+
| 🇧🇷 Português (Brasil) | `pt-BR` | ✅ Completo |
|
|
1173
|
+
|
|
1174
|
+
**Para alterar o idioma:** Clique no seletor de idioma (🇺🇸 PT) no cabeçalho do painel → selecione o idioma desejado.
|
|
1175
|
+
|
|
1176
|
+
**Para adicionar um novo idioma:**
|
|
1177
|
+
|
|
1178
|
+
1. Crie `src/i18n/messages/{codigo}.json` baseado em `en.json`
|
|
1179
|
+
2. Adicione o código em `src/i18n/config.ts` → `LOCALES` e `LANGUAGES`
|
|
1180
|
+
3. Reinicie o servidor
|
|
1181
|
+
|
|
1182
|
+
### ⚡ Início Rápido
|
|
1183
|
+
|
|
1184
|
+
```bash
|
|
1185
|
+
# Instalar via npm
|
|
1186
|
+
npx omniroute@latest
|
|
1187
|
+
|
|
1188
|
+
# Ou rodar do código-fonte
|
|
1189
|
+
cp .env.example .env
|
|
1190
|
+
npm install
|
|
1191
|
+
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
|
|
1192
|
+
```
|
|
1193
|
+
|
|
1194
|
+
### 🐳 Docker
|
|
1195
|
+
|
|
1196
|
+
```bash
|
|
1197
|
+
docker run -d --name omniroute -p 20128:20128 diegosouzapw/omniroute:latest
|
|
1198
|
+
```
|
|
1199
|
+
|
|
1200
|
+
### 🔑 Funcionalidades Principais
|
|
1201
|
+
|
|
1202
|
+
- **36+ provedores de IA** — Claude, GPT, Gemini, Llama, Qwen, DeepSeek, e mais
|
|
1203
|
+
- **Roteamento inteligente** — Fallback automático entre provedores
|
|
1204
|
+
- **Tradução de formato** — OpenAI ↔ Claude ↔ Gemini automaticamente
|
|
1205
|
+
- **Multi-conta** — Múltiplas contas por provedor com seleção inteligente
|
|
1206
|
+
- **Cache semântico** — Reduz custos e latência
|
|
1207
|
+
- **OAuth automático** — Tokens renovam automaticamente
|
|
1208
|
+
- **Combos personalizados** — 6 estratégias de roteamento
|
|
1209
|
+
- **Dashboard completo** — Monitoramento, logs, análises, configurações
|
|
1210
|
+
- **Ferramentas CLI** — Configure Claude Code, Codex, Cursor, Cline com um clique
|
|
1211
|
+
- **100% TypeScript** — Código limpo e digitado
|
|
1212
|
+
|
|
1213
|
+
### 📖 Documentação
|
|
1214
|
+
|
|
1215
|
+
| Documento | Descrição |
|
|
1216
|
+
| ----------------------------------------------- | -------------------------------------------- |
|
|
1217
|
+
| [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, combos, CLI, implantar |
|
|
1218
|
+
| [Referência da API](docs/API_REFERENCE.md) | Todos os endpoints com exemplos |
|
|
1219
|
+
| [Solução de Problemas](docs/TROUBLESHOOTING.md) | Problemas comuns e soluções |
|
|
1220
|
+
| [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura e portas do sistema |
|
|
1221
|
+
| [Contribuição](CONTRIBUTING.md) | Configuração de desenvolvimento e diretrizes |
|
|
1222
|
+
| [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Guia completo: VM + nginx + Cloudflare |
|
|
1223
|
+
|
|
1224
|
+
### 📧Suporte
|
|
1225
|
+
|
|
1226
|
+
> 💬 **Entre para a comunidade!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Tire dúvidas, compartilhe dicas e fique atualizado.
|
|
1227
|
+
|
|
1228
|
+
- **Site**: [omniroute.online](https://omniroute.online)
|
|
1229
|
+
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
|
1230
|
+
- **Problemas**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
|
1231
|
+
|
|
1232
|
+
---
|
|
1233
|
+
|
|
1234
|
+
<div align="center">
|
|
1235
|
+
<sub>Construído com ❤️ para desenvolvedores que codificam 24 horas por dia, 7 dias por semana</sub>
|
|
1236
|
+
<br/>
|
|
1237
|
+
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
|
1238
|
+
</div>
|