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.sv.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 — Den kostnadsfria AI-gatewayen
|
|
5
|
+
|
|
6
|
+
🌐 **[English](#-omniroute--the-free-ai-gateway)** | **[Português (BR)](#-omniroute--gateway-de-ia-gratuito)**
|
|
7
|
+
|
|
8
|
+
### Sluta aldrig koda. Smart routing till **GRATIS & lågkostnads AI-modeller** med automatisk reserv.
|
|
9
|
+
|
|
10
|
+
_Din universella API-proxy — en slutpunkt, 36+ leverantörer, noll driftstopp._
|
|
11
|
+
|
|
12
|
+
**Slutförda chatt • Inbäddningar • Bildgenerering • Ljud • Omrankning • 100 % TypeScript**
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
### 🤖 Gratis AI-leverantör för dina favoritkodningsagenter
|
|
17
|
+
|
|
18
|
+
_Anslut alla AI-drivna IDE- eller CLI-verktyg via OmniRoute — gratis API-gateway för obegränsad kodning._
|
|
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>📡 Alla agenter ansluter via <code>http://localhost:20128/v1</code> eller <code>http://cloud.omniroute.online/v1</code>, —limited one config_245\_\_ kvot</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
|
+
## 🤔 Varför OmniRoute?
|
|
116
|
+
|
|
117
|
+
**Sluta slösa pengar och nå gränser:**
|
|
118
|
+
|
|
119
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Prenumerationskvoten löper ut oanvänd varje månad
|
|
120
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Hastighetsgränser stoppar dig mellankodning
|
|
121
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Dyra API:er ($20-50/månad per leverantör)
|
|
122
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Manuellt byte mellan leverantörer
|
|
123
|
+
|
|
124
|
+
**OmniRoute löser detta:**
|
|
125
|
+
|
|
126
|
+
- ✅ **Maximera prenumerationer** - Spåra kvot, använd varje bit innan återställning
|
|
127
|
+
- ✅ **Automatisk reserv** - Prenumeration → API-nyckel → Billigt → Gratis, noll driftstopp
|
|
128
|
+
- ✅ **Multi-konto** - Round-robin mellan konton per leverantör
|
|
129
|
+
- ✅ **Universal** - Fungerar med Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, vilket CLI-verktyg som helst
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 🔄 Hur det fungerar
|
|
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
|
+
## ⚡ Snabbstart
|
|
163
|
+
|
|
164
|
+
**1. Installera globalt:**
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npm install -g omniroute
|
|
168
|
+
omniroute
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
🎉 Instrumentpanelen öppnar kl. `http://localhost:20128`
|
|
172
|
+
|
|
173
|
+
| Kommando | Beskrivning |
|
|
174
|
+
| ----------------------- | ---------------------------------- |
|
|
175
|
+
| `omniroute` | Startserver (standardport 20128) |
|
|
176
|
+
| `omniroute --port 3000` | Använd anpassad port |
|
|
177
|
+
| `omniroute --no-open` | Öppna inte webbläsaren automatiskt |
|
|
178
|
+
| `omniroute --help` | Visa hjälp |
|
|
179
|
+
|
|
180
|
+
**2. Anslut en GRATIS leverantör:**
|
|
181
|
+
|
|
182
|
+
Dashboard → Leverantörer → Anslut **Claude Code** eller **Antigravity** → OAuth-inloggning → Klar!
|
|
183
|
+
|
|
184
|
+
**3. Använd i ditt CLI-verktyg:**
|
|
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
|
+
**Det var allt!** Börja koda med GRATIS AI-modeller.
|
|
194
|
+
|
|
195
|
+
**Alternativ – kör från källan:**
|
|
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
|
+
## 🐳 Hamnarbetare
|
|
206
|
+
|
|
207
|
+
OmniRoute är tillgänglig som en offentlig Docker-bild på [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
|
208
|
+
|
|
209
|
+
**Snabbkörning:**
|
|
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
|
+
**Med miljöfil:**
|
|
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
|
+
**Använda 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
|
+
| Bild | Tagga | Storlek | Beskrivning |
|
|
246
|
+
| ------------------------ | -------- | ------- | ----------------------- |
|
|
247
|
+
| `diegosouzapw/omniroute` | `latest` | ~250MB | Senaste stabila utgåvan |
|
|
248
|
+
| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Aktuell version |
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 💰 Prissättning i en överblick
|
|
253
|
+
|
|
254
|
+
| Nivå | Leverantör | Kostnad | Kvotåterställning | Bäst för |
|
|
255
|
+
| -------------------- | ----------------- | ----------------------- | ------------------------ | ----------------------- |
|
|
256
|
+
| **💳 PRENUMERATION** | Claude Code (Pro) | 20 USD/månad | 5h + veckovis | Har redan prenumererat |
|
|
257
|
+
| | Codex (Plus/Pro) | 20-200 USD/månad | 5h + veckovis | OpenAI-användare |
|
|
258
|
+
| | Gemini CLI | **GRATIS** | 180K/månad + 1K/dag | Alla! |
|
|
259
|
+
| | GitHub Copilot | 10-19 USD/månad | Månatlig | GitHub-användare |
|
|
260
|
+
| **🔑 API-NYCKEL** | NVIDIA NIM | **GRATIS** (1000 poäng) | Engång | Gratis nivåtestning |
|
|
261
|
+
| | DeepSeek | Betala per användning | Inga | Bästa pris/kvalitet |
|
|
262
|
+
| | Groq | Gratis nivå + betald | Begränsat pris | Ultrasnabb slutledning |
|
|
263
|
+
| | xAI (Grok) | Betala per användning | Inga | Grok modeller |
|
|
264
|
+
| | Mistral | Gratis nivå + betald | Begränsat pris | Europeisk AI |
|
|
265
|
+
| | OpenRouter | Betala per användning | Inga | 100+ modeller |
|
|
266
|
+
| **💰 BILLIGT** | GLM-4.7 | $0,6/1M | Dagligen 10:00 | Budget backup |
|
|
267
|
+
| | MiniMax M2.1 | $0,2/1M | 5-timmars rullande | Billigaste alternativet |
|
|
268
|
+
| | Kimi K2 | 9 USD/mån lägenhet | 10 miljoner tokens/månad | Förutsägbar kostnad |
|
|
269
|
+
| **🆓 GRATIS** | iFlow | $0 | Obegränsad | 8 modeller gratis |
|
|
270
|
+
| | Qwen | $0 | Obegränsad | 3 modeller gratis |
|
|
271
|
+
| | Kiro | $0 | Obegränsad | Claude gratis |
|
|
272
|
+
|
|
273
|
+
**💡 Proffstips:** Börja med Gemini CLI (180K gratis/månad) + iFlow (obegränsat gratis) combo = $0 kostnad!
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## 🎯 Användningsfall
|
|
278
|
+
|
|
279
|
+
### Fall 1: "Jag har Claude Pro-abonnemang"
|
|
280
|
+
|
|
281
|
+
**Problem:** Kvoten går ut oanvänd, hastighetsgränser under tung kodning
|
|
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
|
+
### Fall 2: "Jag vill ha noll kostnad"
|
|
294
|
+
|
|
295
|
+
**Problem:** Har inte råd med prenumerationer, behöver pålitlig AI-kodning
|
|
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
|
+
### Fall 3: "Jag behöver kodning dygnet runt, inga avbrott"
|
|
308
|
+
|
|
309
|
+
**Problem:** Deadlines, har inte råd med driftstopp
|
|
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
|
+
### Fall 4: "Jag vill ha GRATIS AI i OpenClaw"
|
|
323
|
+
|
|
324
|
+
**Problem:** Behöver AI-assistent i meddelandeappar, helt gratis
|
|
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
|
+
## 💡 Nyckelfunktioner
|
|
339
|
+
|
|
340
|
+
### 🧠 Core Routing & Intelligence
|
|
341
|
+
|
|
342
|
+
| Funktion | Vad det gör |
|
|
343
|
+
| ------------------------------ | ----------------------------------------------------------------------------------------- |
|
|
344
|
+
| 🎯 **Smart 4-lagers reserv** | Automatisk rutt: Prenumeration → API-nyckel → Billigt → Gratis |
|
|
345
|
+
| 📊 **Kvotspårning i realtid** | Live token count + återställ nedräkning per leverantör |
|
|
346
|
+
| 🔄 **Formatöversättning** | OpenAI ↔ Claude ↔ Gemini ↔ Markör ↔ Kiro sömlös + sanering av svar |
|
|
347
|
+
| 👥 **Multi-Account Support** | Flera konton per leverantör med intelligent urval |
|
|
348
|
+
| 🔄 **Auto Token Refresh** | OAuth-tokens uppdateras automatiskt med försök igen |
|
|
349
|
+
| 🎨 **Anpassade kombinationer** | 6 strategier: fill-first, round-robin, p2c, slumpmässig, minst använda, kostnadsoptimerad |
|
|
350
|
+
| 🧩 **Anpassade modeller** | Lägg till valfritt modell-ID till valfri leverantör |
|
|
351
|
+
| 🌐 **Wildcard-router** | Dirigera `provider/*`-mönster till valfri leverantör dynamiskt |
|
|
352
|
+
| 🧠 **Tänkande budget** | Genomgång, auto, anpassade och adaptiva lägen för resonerande modeller |
|
|
353
|
+
| 💬 **System Prompt Injection** | Global systemprompt tillämpas på alla förfrågningar |
|
|
354
|
+
| 📄 **Responses API** | Fullständigt stöd för OpenAI Responses API (`/v1/responses`) för Codex |
|
|
355
|
+
|
|
356
|
+
### 🎵 Multimodala API:er
|
|
357
|
+
|
|
358
|
+
| Funktion | Vad det gör |
|
|
359
|
+
| ------------------------ | ------------------------------------------------------ |
|
|
360
|
+
| 🖼️ **Bildgenerering** | `/v1/images/generations` — 4 leverantörer, 9+ modeller |
|
|
361
|
+
| 📐 **Inbäddningar** | `/v1/embeddings` — 6 leverantörer, 9+ modeller |
|
|
362
|
+
| 🎤 **Ljudtranskription** | `/v1/audio/transcriptions` — Whisper-kompatibel |
|
|
363
|
+
| 🔊 **Text-till-tal** | `/v1/audio/speech` — Ljudsyntes med flera leverantörer |
|
|
364
|
+
| 🛡️ **Moderationer** | `/v1/moderations` — Innehållssäkerhetskontroller |
|
|
365
|
+
| 🔀 **Omrankning** | `/v1/rerank` — Omrankning av dokumentrelevans |
|
|
366
|
+
|
|
367
|
+
### 🛡️ Motståndskraft och säkerhet
|
|
368
|
+
|
|
369
|
+
| Funktion | Vad det gör |
|
|
370
|
+
| -------------------------------------- | --------------------------------------------------------------------------------- |
|
|
371
|
+
| 🔌 **Circuit Breaker** | Autoöppna/stäng per leverantör med konfigurerbara trösklar |
|
|
372
|
+
| 🛡️ **Anti-ånflock** | Mutex + semaforhastighetsgräns för API-nyckelleverantörer |
|
|
373
|
+
| 🧠 **Semantisk cache** | Tvåskiktscache (signatur + semantisk) minskar kostnaden och fördröjningen |
|
|
374
|
+
| ⚡ **Begär idempotens** | 5s dedup-fönster för dubblettförfrågningar |
|
|
375
|
+
| 🔒 **TLS Fingerprint Spoofing** | Förbi TLS-baserad botdetektering via wreq-js |
|
|
376
|
+
| 🌐 **IP-filtrering** | Tillåtelselista/blockeringslista för API-åtkomstkontroll |
|
|
377
|
+
| 📊 **Redigerbara hastighetsgränser** | Konfigurerbart RPM, min gap och max samtidiga på systemnivå |
|
|
378
|
+
| 🛡 **API Endpoint Protection** | Auth gating + leverantörsblockering för `/models` slutpunkt |
|
|
379
|
+
| 🔒 **Proxysynlighet** | Färgkodade märken: 🟢 global, 🟡 leverantör, 🔵 per anslutning med IP-display |
|
|
380
|
+
| 🌐 **Proxykonfiguration med 3 nivåer** | Konfigurera proxyservrar på global nivå, per leverantör eller per anslutningsnivå |
|
|
381
|
+
|
|
382
|
+
### 📊 Observerbarhet och analys
|
|
383
|
+
|
|
384
|
+
| Funktion | Vad det gör |
|
|
385
|
+
| --------------------------- | ----------------------------------------------------------------------------- |
|
|
386
|
+
| 📝 **Begär loggning** | Felsökningsläge med fullständiga förfrågnings-/svarsloggar |
|
|
387
|
+
| 💾 **SQLite proxyloggar** | Beständiga proxyloggar överlever serverstarter |
|
|
388
|
+
| 📊 **Analytics Dashboard** | Recharts-driven: statistikkort, modellanvändningsdiagram, leverantörstabell |
|
|
389
|
+
| 📈 **Förloppsspårning** | Opt-in SSE-förloppshändelser för streaming |
|
|
390
|
+
| 🧪 **LLM-utvärderingar** | Golden set testning med 4 matchstrategier |
|
|
391
|
+
| 🔍 **Begär telemetri** | p50/p95/p99 latensaggregation + X-Request-Id-spårning |
|
|
392
|
+
| 📋 **Dashboard för loggar** | Enad sida med 4 flikar: Begäranloggar, Proxyloggar, Granskningsloggar, Konsol |
|
|
393
|
+
| 🖥️ **Konsolloggvisare** | Realtidsvisare i terminalstil med nivåfilter, sökning, automatisk rullning |
|
|
394
|
+
| 📑 **Filbaserad loggning** | Console Interceptor fångar all utdata till JSON-loggfilen med rotation |
|
|
395
|
+
| 🏥 **Hälsoinstrumentpanel** | Systemupptid, strömbrytartillstånd, låsningar, cachestatistik |
|
|
396
|
+
| 💰 **Kostnadsspårning** | Budgethantering + prissättning per modell |
|
|
397
|
+
|
|
398
|
+
### ☁️ Implementering och synkronisering
|
|
399
|
+
|
|
400
|
+
| Funktion | Vad det gör |
|
|
401
|
+
| -------------------------------- | -------------------------------------------------------------------------------------- |
|
|
402
|
+
| 💾 **Cloud Sync** | Synkronisera konfiguration mellan enheter via Cloudflare Workers |
|
|
403
|
+
| 🌐 **Distribuera var som helst** | Localhost, VPS, Docker, Cloudflare Workers |
|
|
404
|
+
| 🔑 **API-nyckelhantering** | Generera, rotera och omfång API-nycklar per leverantör |
|
|
405
|
+
| 🧙 **Onboarding Wizard** | 4-stegs guidad installation för förstagångsanvändare |
|
|
406
|
+
| 🔧 **CLI Tools Dashboard** | Konfigurera med ett klick Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
|
407
|
+
| 🔄 **DB-säkerhetskopior** | Automatisk säkerhetskopiering, återställning, export och import för alla inställningar |
|
|
408
|
+
| 🌐 **Internationalisering** | Fullständig i18n med nästa-intl — stöd för engelska + portugisiska (Brasilien) |
|
|
409
|
+
| 🌍 **Språkväljare** | Globikon i rubriken för språkväxling i realtid (🇺🇸/🇧🇷) |
|
|
410
|
+
| 📂 **Anpassad datakatalog** | `DATA_DIR` env var för att åsidosätta standard `~/.omniroute` lagringssökväg |
|
|
411
|
+
|
|
412
|
+
<details>
|
|
413
|
+
<summary><b>📖 Funktionsdetaljer</b></summary>
|
|
414
|
+
|
|
415
|
+
### 🎯 Smart 4-lagers reserv
|
|
416
|
+
|
|
417
|
+
Skapa kombinationer med automatisk reserv:
|
|
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
|
+
### 📊 Kvotspårning i realtid
|
|
430
|
+
|
|
431
|
+
- Tokenförbrukning per leverantör
|
|
432
|
+
- Återställ nedräkningen (5 timmar, dagligen, veckovis)
|
|
433
|
+
- Kostnadsuppskattning för betalda nivåer
|
|
434
|
+
- Månatliga utgiftsrapporter
|
|
435
|
+
|
|
436
|
+
### 🔄 Formatöversättning
|
|
437
|
+
|
|
438
|
+
Sömlös översättning mellan format:
|
|
439
|
+
|
|
440
|
+
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI-svar**
|
|
441
|
+
- Ditt CLI-verktyg skickar OpenAI-format → OmniRoute översätter → Leverantör tar emot inbyggt format
|
|
442
|
+
- Fungerar med alla verktyg som stöder anpassade OpenAI-slutpunkter
|
|
443
|
+
- **Responssanering** — Tar bort icke-standardiserade fält för strikt OpenAI SDK-kompatibilitet
|
|
444
|
+
- **Rollnormalisering** — `developer` → `system` för icke-OpenAI; `system` → `user` för GLM/ERNIE-modeller
|
|
445
|
+
- **Think tag extrahering** — `<think>` block → `reasoning_content` för tänkande modeller
|
|
446
|
+
- **Structured output** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
|
|
447
|
+
|
|
448
|
+
### 👥 Support för flera konton
|
|
449
|
+
|
|
450
|
+
- Lägg till flera konton per leverantör
|
|
451
|
+
- Auto round-robin eller prioritetsbaserad routing
|
|
452
|
+
- Fallback till nästa konto när man når kvoten
|
|
453
|
+
|
|
454
|
+
### 🔄 Auto Token Refresh
|
|
455
|
+
|
|
456
|
+
- OAuth-tokens uppdateras automatiskt innan utgången
|
|
457
|
+
- Ingen manuell återautentisering behövs
|
|
458
|
+
- Sömlös upplevelse hos alla leverantörer
|
|
459
|
+
|
|
460
|
+
### 🎨 Anpassade kombinationer
|
|
461
|
+
|
|
462
|
+
- Skapa obegränsade modellkombinationer
|
|
463
|
+
- 6 strategier: fyll-först, round-robin, kraft-av-två-val, slumpmässig, minst använda, kostnadsoptimerad
|
|
464
|
+
- Dela kombinationer mellan enheter med Cloud Sync
|
|
465
|
+
|
|
466
|
+
### 🏥 Health Dashboard
|
|
467
|
+
|
|
468
|
+
- Systemstatus (upptid, version, minnesanvändning)
|
|
469
|
+
- Strömbrytarstatus per leverantör (stängd/öppen/halvöppen)
|
|
470
|
+
- Prisgränsstatus och aktiva låsningar
|
|
471
|
+
- Signaturcachestatistik
|
|
472
|
+
- Latens-telemetri (p50/p95/p99) + promptcache
|
|
473
|
+
- Återställ hälsostatus med ett klick
|
|
474
|
+
|
|
475
|
+
### 🔧 Översättarlekplats
|
|
476
|
+
|
|
477
|
+
OmniRoute inkluderar en kraftfull inbyggd översättarlekplats med **4 lägen** för felsökning, testning och övervakning av API-översättningar:
|
|
478
|
+
|
|
479
|
+
| Läge | Beskrivning |
|
|
480
|
+
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
481
|
+
| **💻 Lekplats** | Direkt formatöversättning — klistra in valfri API-begäran och se direkt hur OmniRoute översätter den mellan leverantörsformat (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Inkluderar exempelmallar och automatisk identifiering av format. |
|
|
482
|
+
| **💬 Chattestare** | Skicka riktiga chattförfrågningar genom OmniRoute och se hela tur och retur: din input, den översatta begäran, leverantörens svar och det översatta svaret tillbaka. Ovärderligt för att validera combo routing. |
|
|
483
|
+
| **🧪 Testbänk** | Batchtestläge — definiera flera testfall med olika ingångar och förväntade utgångar, kör dem alla på en gång och jämför resultat mellan leverantörer och modeller. |
|
|
484
|
+
| **📱 Live Monitor** | Bevakning av förfrågningar i realtid — titta på inkommande förfrågningar när de flödar genom OmniRoute, se formatöversättningar som sker live och identifiera problem direkt. |
|
|
485
|
+
|
|
486
|
+
**Åtkomst:** Instrumentpanel → Översättare (sidofält)
|
|
487
|
+
|
|
488
|
+
### 💾 Cloud Sync
|
|
489
|
+
|
|
490
|
+
- Synkronisera leverantörer, kombinationer och inställningar mellan enheter
|
|
491
|
+
- Automatisk bakgrundssynkronisering
|
|
492
|
+
- Säker krypterad lagring
|
|
493
|
+
|
|
494
|
+
</details>
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## 📖 Installationsguide
|
|
499
|
+
|
|
500
|
+
<details>
|
|
501
|
+
<summary><b>💳 Prenumerationsleverantörer</b></summary>
|
|
502
|
+
|
|
503
|
+
### Claude Code (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
|
+
**Proffstips:** Använd Opus för komplexa uppgifter, Sonnet för snabbhet. OmniRoute spårar kvot per modell!
|
|
517
|
+
|
|
518
|
+
### OpenAI Codex (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 (GRATIS 180K/månad!)
|
|
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
|
+
**Bäst värde:** Enorma gratis nivå! Använd detta före betalda nivåer.
|
|
543
|
+
|
|
544
|
+
### GitHub Copilot
|
|
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>🔑 API-nyckelleverantörer</b></summary>
|
|
561
|
+
|
|
562
|
+
### NVIDIA NIM (GRATIS 1000 krediter!)
|
|
563
|
+
|
|
564
|
+
1. Registrera dig: [build.nvidia.com](https://build.nvidia.com)
|
|
565
|
+
2. Få gratis API-nyckel (1000 slutsatspoäng ingår)
|
|
566
|
+
3. Dashboard → Lägg till leverantör → NVIDIA NIM:
|
|
567
|
+
- API-nyckel: `nvapi-your-key`
|
|
568
|
+
|
|
569
|
+
**Modeller:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` och 50+ till
|
|
570
|
+
|
|
571
|
+
**Proffstips:** OpenAI-kompatibelt API — fungerar sömlöst med OmniRoutes formatöversättning!
|
|
572
|
+
|
|
573
|
+
### DeepSeek
|
|
574
|
+
|
|
575
|
+
1. Registrera dig: [platform.deepseek.com](https://platform.deepseek.com)
|
|
576
|
+
2. Hämta API-nyckel
|
|
577
|
+
3. Dashboard → Lägg till leverantör → DeepSeek
|
|
578
|
+
|
|
579
|
+
**Modeller:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
|
580
|
+
|
|
581
|
+
### Groq (gratis nivå tillgänglig!)
|
|
582
|
+
|
|
583
|
+
1. Registrera dig: [console.groq.com](https://console.groq.com)
|
|
584
|
+
2. Skaffa API-nyckel (gratis nivå ingår)
|
|
585
|
+
3. Dashboard → Lägg till leverantör → Groq
|
|
586
|
+
|
|
587
|
+
**Modeller:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
|
588
|
+
|
|
589
|
+
**Proffstips:** Ultrasnabb slutledning — bäst för realtidskodning!
|
|
590
|
+
|
|
591
|
+
### OpenRouter (100+ modeller)
|
|
592
|
+
|
|
593
|
+
1. Registrera dig: [openrouter.ai](https://openrouter.ai)
|
|
594
|
+
2. Hämta API-nyckel
|
|
595
|
+
3. Dashboard → Lägg till leverantör → OpenRouter
|
|
596
|
+
|
|
597
|
+
**Modeller:** Få tillgång till 100+ modeller från alla större leverantörer genom en enda API-nyckel.
|
|
598
|
+
|
|
599
|
+
</details>
|
|
600
|
+
|
|
601
|
+
<details>
|
|
602
|
+
<summary><b>💰 Billiga leverantörer (backup)</b></summary>
|
|
603
|
+
|
|
604
|
+
### GLM-4.7 (Daglig återställning, $0,6/1M)
|
|
605
|
+
|
|
606
|
+
1. Registrera dig: [Zhipu AI](https://open.bigmodel.cn/)
|
|
607
|
+
2. Hämta API-nyckel från Coding Plan
|
|
608
|
+
3. Instrumentpanel → Lägg till API-nyckel:
|
|
609
|
+
- Leverantör: `glm`
|
|
610
|
+
- API-nyckel: `your-key`
|
|
611
|
+
|
|
612
|
+
**Använd:** `glm/glm-4.7`
|
|
613
|
+
|
|
614
|
+
**Proffstips:** Coding Plan erbjuder 3× kvot till 1/7 kostnad! Återställ dagligen 10:00.
|
|
615
|
+
|
|
616
|
+
### MiniMax M2.1 (5 timmars återställning, $0,20/1M)
|
|
617
|
+
|
|
618
|
+
1. Registrera dig: [MiniMax](https://www.minimax.io/)
|
|
619
|
+
2. Hämta API-nyckel
|
|
620
|
+
3. Instrumentpanel → Lägg till API-nyckel
|
|
621
|
+
|
|
622
|
+
**Använd:** `minimax/MiniMax-M2.1`
|
|
623
|
+
|
|
624
|
+
**Proffstips:** Billigaste alternativet för långa sammanhang (1M tokens)!
|
|
625
|
+
|
|
626
|
+
### Kimi K2 ($9/månad platt)
|
|
627
|
+
|
|
628
|
+
1. Prenumerera: [Moonshot AI](https://platform.moonshot.ai/)
|
|
629
|
+
2. Hämta API-nyckel
|
|
630
|
+
3. Instrumentpanel → Lägg till API-nyckel
|
|
631
|
+
|
|
632
|
+
**Använd:** `kimi/kimi-latest`
|
|
633
|
+
|
|
634
|
+
**Proffstips:** Fast $9/månad för 10 miljoner tokens = $0,90/1 miljon effektiv kostnad!
|
|
635
|
+
|
|
636
|
+
</details>
|
|
637
|
+
|
|
638
|
+
<details>
|
|
639
|
+
<summary><b>🆓 GRATIS leverantörer (nödbackup)</b></summary>
|
|
640
|
+
|
|
641
|
+
### iFlow (8 GRATIS modeller)
|
|
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 GRATIS modeller)
|
|
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 FREE)
|
|
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>🎨 Skapa kombinationer</b></summary>
|
|
684
|
+
|
|
685
|
+
### Exempel 1: Maximera prenumeration → Billig backup
|
|
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
|
+
### Exempel 2: Endast gratis (noll kostnad)
|
|
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>🔧 CLI-integration</b></summary>
|
|
715
|
+
|
|
716
|
+
### Markör 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
|
+
### Claude Code
|
|
726
|
+
|
|
727
|
+
Använd sidan **CLI Tools** i instrumentpanelen för konfiguration med ett klick, eller redigera `~/.claude/settings.json` manuellt.
|
|
728
|
+
|
|
729
|
+
### Codex CLI
|
|
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
|
+
**Alternativ 1 — Instrumentpanel (rekommenderas):**
|
|
741
|
+
|
|
742
|
+
```
|
|
743
|
+
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
**Alternativ 2 — Manuell:** Redigera `~/.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
|
+
> **Obs!** OpenClaw fungerar endast med lokal OmniRoute. Använd `127.0.0.1` istället för `localhost` för att undvika problem med IPv6-upplösning.
|
|
763
|
+
|
|
764
|
+
### Cline / Fortsätt / 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
|
+
## 📊 Tillgängliga modeller
|
|
779
|
+
|
|
780
|
+
<details>
|
|
781
|
+
<summary><b>Visa alla tillgängliga modeller</b></summary>
|
|
782
|
+
|
|
783
|
+
**Claude Code (`cc/`)** - Pro/Max:
|
|
784
|
+
|
|
785
|
+
- `cc/claude-opus-4-6`
|
|
786
|
+
- `cc/claude-sonnet-4-5-20250929`
|
|
787
|
+
- `cc/claude-haiku-4-5-20251001`
|
|
788
|
+
|
|
789
|
+
**Codex (`cx/`)** - Plus/Pro:
|
|
790
|
+
|
|
791
|
+
- `cx/gpt-5.2-codex`
|
|
792
|
+
- `cx/gpt-5.1-codex-max`
|
|
793
|
+
|
|
794
|
+
**Gemini CLI (`gc/`)** - GRATIS:
|
|
795
|
+
|
|
796
|
+
- `gc/gemini-3-flash-preview`
|
|
797
|
+
- `gc/gemini-2.5-pro`
|
|
798
|
+
|
|
799
|
+
**GitHub Copilot (`gh/`)**:
|
|
800
|
+
|
|
801
|
+
- `gh/gpt-5`
|
|
802
|
+
- `gh/claude-4.5-sonnet`
|
|
803
|
+
|
|
804
|
+
**NVIDIA NIM (`nvidia/`)** - GRATIS krediter:
|
|
805
|
+
|
|
806
|
+
- `nvidia/llama-3.3-70b-instruct`
|
|
807
|
+
- `nvidia/mistral-7b-instruct`
|
|
808
|
+
- 50+ modeller till på [build.nvidia.com](https://build.nvidia.com)
|
|
809
|
+
|
|
810
|
+
**GLM (`glm/`)** - $0,6/1M:
|
|
811
|
+
|
|
812
|
+
- `glm/glm-4.7`
|
|
813
|
+
|
|
814
|
+
**MiniMax (`minimax/`)** - $0,2/1M:
|
|
815
|
+
|
|
816
|
+
- `minimax/MiniMax-M2.1`
|
|
817
|
+
|
|
818
|
+
**iFlow (`if/`)** - GRATIS:
|
|
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/`)** - GRATIS:
|
|
827
|
+
|
|
828
|
+
- `qw/qwen3-coder-plus`
|
|
829
|
+
- `qw/qwen3-coder-flash`
|
|
830
|
+
|
|
831
|
+
**Kiro (`kr/`)** - GRATIS:
|
|
832
|
+
|
|
833
|
+
- `kr/claude-sonnet-4.5`
|
|
834
|
+
- `kr/claude-haiku-4.5`
|
|
835
|
+
|
|
836
|
+
**OpenRouter (`or/`)** - 100+ modeller:
|
|
837
|
+
|
|
838
|
+
- `or/anthropic/claude-4-sonnet`
|
|
839
|
+
- `or/google/gemini-2.5-pro`
|
|
840
|
+
- Alla modeller från [openrouter.ai/models](https://openrouter.ai/models)
|
|
841
|
+
|
|
842
|
+
</details>
|
|
843
|
+
|
|
844
|
+
---
|
|
845
|
+
|
|
846
|
+
## 🧪 Utvärderingar (Evals)
|
|
847
|
+
|
|
848
|
+
OmniRoute inkluderar ett inbyggt utvärderingsramverk för att testa LLM-svarskvalitet mot en gyllene uppsättning. Få åtkomst till det via **Analytics → Evals** i instrumentpanelen.
|
|
849
|
+
|
|
850
|
+
### Inbyggt gyllene set
|
|
851
|
+
|
|
852
|
+
Det förinstallerade "OmniRoute Golden Set" innehåller 10 testfall som täcker:
|
|
853
|
+
|
|
854
|
+
- Hälsningar, matematik, geografi, kodgenerering
|
|
855
|
+
- JSON-formatöverensstämmelse, översättning, markdown
|
|
856
|
+
- Säkerhetsvägran (skadligt innehåll), räkning, boolesk logik
|
|
857
|
+
|
|
858
|
+
### Utvärderingsstrategier
|
|
859
|
+
|
|
860
|
+
| Strategi | Beskrivning | Exempel |
|
|
861
|
+
| ---------- | ---------------------------------------------------- | -------------------------------- |
|
|
862
|
+
| `exact` | Utdata måste matcha exakt | `"4"` |
|
|
863
|
+
| `contains` | Utdata måste innehålla delsträng (skiftlägeskänslig) | `"Paris"` |
|
|
864
|
+
| `regex` | Utdata måste matcha regexmönster | `"1.*2.*3"` |
|
|
865
|
+
| `custom` | Anpassad JS-funktion returnerar true/false | `(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
|
+
> **⚠️ VIKTIGT för användning av OmniRoute med VPS/Docker/serverfjärrkontroll**
|
|
874
|
+
|
|
875
|
+
### Hur kan du göra Antigravity / Tvilling CLI på fjärrkontroller?
|
|
876
|
+
|
|
877
|
+
Os provedores **Antigravity** och **Gemini CLI** usam **Google OAuth 2.0** för autenticação. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pré-cadastradas no Google Cloud Console do aplicativo.
|
|
878
|
+
|
|
879
|
+
Som credenciais OAuth embutidas 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
|
+
### Lösning: Konfigurera självständigt OAuth
|
|
886
|
+
|
|
887
|
+
Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu service.
|
|
888
|
+
|
|
889
|
+
#### Passo a passo
|
|
890
|
+
|
|
891
|
+
**1. Åtkomst till Google Cloud Console**
|
|
892
|
+
|
|
893
|
+
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
|
|
894
|
+
|
|
895
|
+
**2. Crie um novo OAuth 2.0 Client ID**
|
|
896
|
+
|
|
897
|
+
- Klicka på dem **"+ Skapa inloggningsuppgifter"** → **"OAuth-klient-ID"**
|
|
898
|
+
- Typo de aplicativo: **"Webbapplikation"**
|
|
899
|
+
- Namn: escolha qualquer nome (ex: `OmniRoute Remote`)
|
|
900
|
+
|
|
901
|
+
**3. Adicione som auktoriserade omdirigerings-URI**
|
|
902
|
+
|
|
903
|
+
Ingen campo **"Auktoriserade omdirigerings-URIs"**, adicione:
|
|
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. Spara e kopia som credenciais**
|
|
912
|
+
|
|
913
|
+
Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
|
|
914
|
+
|
|
915
|
+
**5. Konfigurera som 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
|
+
Dashboard → Leverantörer → Antigravity (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
|
+
### Lösning temporário (som 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á en URL de autorização till Google
|
|
953
|
+
2. Após você autorizar, o Google tentará redirecionar para `localhost` (que falha no servidor remoto)
|
|
954
|
+
3. **Kopiera en webbadress komplett** da barra de endereço do seu webbläsare (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. Klicka på **"Anslut"**
|
|
957
|
+
|
|
958
|
+
> Este workaround funciona porque o código de autorização na URL é válido independente do redirect ter carregado ou não.
|
|
959
|
+
|
|
960
|
+
---
|
|
961
|
+
|
|
962
|
+
## 🐛 Felsökning
|
|
963
|
+
|
|
964
|
+
<details>
|
|
965
|
+
<summary><b>Klicka för att expandera felsökningsguide</b></summary>
|
|
966
|
+
|
|
967
|
+
**"Språkmodellen gav inga meddelanden"**
|
|
968
|
+
|
|
969
|
+
- Leverantörskvoten är slut → Kontrollera instrumentpanelens kvotföljare
|
|
970
|
+
- Lösning: Använd kombinationsalternativ eller byt till billigare nivå
|
|
971
|
+
|
|
972
|
+
**Taxebegränsning**
|
|
973
|
+
|
|
974
|
+
- Prenumerationskvot ute → Fallback till GLM/MiniMax
|
|
975
|
+
- Lägg till kombination: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
976
|
+
|
|
977
|
+
**OAuth-token har löpt ut**
|
|
978
|
+
|
|
979
|
+
- Automatisk uppdatering av OmniRoute
|
|
980
|
+
- Om problemen kvarstår: Dashboard → Leverantör → Återanslut
|
|
981
|
+
|
|
982
|
+
**Höga kostnader**
|
|
983
|
+
|
|
984
|
+
- Kontrollera användningsstatistik i Dashboard → Kostnader
|
|
985
|
+
- Byt primär modell till GLM/MiniMax
|
|
986
|
+
- Använd gratis nivå (Gemini CLI, iFlow) för icke-kritiska uppgifter
|
|
987
|
+
|
|
988
|
+
**Dashboard öppnas på fel port**
|
|
989
|
+
|
|
990
|
+
- Set `PORT=20128` och `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
|
991
|
+
|
|
992
|
+
**Molnsynkroniseringsfel**
|
|
993
|
+
|
|
994
|
+
- Verifiera att `BASE_URL` pekar på din löpinstans
|
|
995
|
+
- Verifiera `CLOUD_URL` poäng till din förväntade molnslutpunkt
|
|
996
|
+
- Håll `NEXT_PUBLIC_*` värden i linje med värden på serversidan
|
|
997
|
+
|
|
998
|
+
**Första inloggningen fungerar inte**
|
|
999
|
+
|
|
1000
|
+
- Kontrollera `INITIAL_PASSWORD` i `.env`
|
|
1001
|
+
- Om det inte är inställt är reservlösenordet `123456`
|
|
1002
|
+
|
|
1003
|
+
**Inga förfrågningsloggar**
|
|
1004
|
+
|
|
1005
|
+
- Ställ in `ENABLE_REQUEST_LOGS=true` i `.env`
|
|
1006
|
+
|
|
1007
|
+
**Anslutningstest visar "Invalid" för OpenAI-kompatibla leverantörer**
|
|
1008
|
+
|
|
1009
|
+
- Många leverantörer exponerar inte en `/models` slutpunkt
|
|
1010
|
+
- OmniRoute v1.0.6+ inkluderar reservvalidering via chattslutföranden
|
|
1011
|
+
- Se till att baswebbadressen innehåller suffixet `/v1`
|
|
1012
|
+
|
|
1013
|
+
</details>
|
|
1014
|
+
|
|
1015
|
+
---
|
|
1016
|
+
|
|
1017
|
+
## 🛠️ Tech Stack
|
|
1018
|
+
|
|
1019
|
+
- **Körtid**: Node.js 18–22 LTS (⚠️ Node.js 24+ stöds **inte** — `better-sqlite3` inbyggda binärer är inkompatibla)
|
|
1020
|
+
- **Språk**: TypeScript 5.9 — **100 % TypeScript** över `src/` och `open-sse/` (v1.0.6)
|
|
1021
|
+
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
|
|
1022
|
+
- **Databas**: LowDB (JSON) + SQLite (domäntillstånd + proxyloggar)
|
|
1023
|
+
- **Streaming**: Serversända händelser (SSE)
|
|
1024
|
+
- **Auth**: OAuth 2.0 (PKCE) + JWT + API-nycklar
|
|
1025
|
+
- **Test**: Node.js testlöpare (368+ enhetstester)
|
|
1026
|
+
- **CI/CD**: GitHub-åtgärder (automatisk npm-publicering + Docker Hub vid release)
|
|
1027
|
+
- **Webbplats**: [omniroute.online](https://omniroute.online)
|
|
1028
|
+
- **Paket**: [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
|
+
- **Resiliens**: Strömbrytare, exponentiell backoff, anti-dundrande flock, TLS-spoofing
|
|
1031
|
+
|
|
1032
|
+
---
|
|
1033
|
+
|
|
1034
|
+
## 📖 Dokumentation
|
|
1035
|
+
|
|
1036
|
+
| Dokument | Beskrivning |
|
|
1037
|
+
| -------------------------------------------- | ---------------------------------------------------------- |
|
|
1038
|
+
| [User Guide](docs/USER_GUIDE.md) | Leverantörer, kombinationer, CLI-integration, distribution |
|
|
1039
|
+
| [API Reference](docs/API_REFERENCE.md) | Alla slutpunkter med exempel |
|
|
1040
|
+
| [Troubleshooting](docs/TROUBLESHOOTING.md) | Vanliga problem och lösningar |
|
|
1041
|
+
| [Architecture](docs/ARCHITECTURE.md) | Systemarkitektur och interna delar |
|
|
1042
|
+
| [Contributing](CONTRIBUTING.md) | Utvecklingsupplägg och riktlinjer |
|
|
1043
|
+
| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0-specifikation |
|
|
1044
|
+
| [Security Policy](SECURITY.md) | Sårbarhetsrapportering och säkerhetsrutiner |
|
|
1045
|
+
| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Komplett guide: VM + nginx + Cloudflare-installation |
|
|
1046
|
+
| [Features Gallery](docs/FEATURES.md) | Visuell visning av instrumentpanelen med skärmdumpar |
|
|
1047
|
+
|
|
1048
|
+
### 📸 Förhandsgranskning av instrumentpanelen
|
|
1049
|
+
|
|
1050
|
+
<details>
|
|
1051
|
+
<summary><b>Klicka för att se skärmdumpar på instrumentpanelen</b></summary>
|
|
1052
|
+
|
|
1053
|
+
| Sida | Skärmdump |
|
|
1054
|
+
| --------------------- | ------------------------------------------------- |
|
|
1055
|
+
| **Leverantörer** |  |
|
|
1056
|
+
| **Kombos** |  |
|
|
1057
|
+
| **Analytics** |  |
|
|
1058
|
+
| **Hälsa** |  |
|
|
1059
|
+
| **Översättare** |  |
|
|
1060
|
+
| **Inställningar** |  |
|
|
1061
|
+
| **CLI-verktyg** |  |
|
|
1062
|
+
| **Användningsloggar** |  |
|
|
1063
|
+
| **Slutpunkt** |  |
|
|
1064
|
+
|
|
1065
|
+
</details>
|
|
1066
|
+
|
|
1067
|
+
---
|
|
1068
|
+
|
|
1069
|
+
## 🗺️ Färdkarta
|
|
1070
|
+
|
|
1071
|
+
OmniRoute har **210+ funktioner planerade** över flera utvecklingsfaser. Här är nyckelområdena:
|
|
1072
|
+
|
|
1073
|
+
| Kategori | Planerade funktioner | Höjdpunkter |
|
|
1074
|
+
| ------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------ |
|
|
1075
|
+
| 🧠 **Routing & intelligens** | 25+ | Routning med lägsta latens, taggbaserad routing, kvotförhandskontroll, val av P2C-konto |
|
|
1076
|
+
| 🔒 **Säkerhet och efterlevnad** | 20+ | SSRF-härdning, cloaking av autentiseringsuppgifter, hastighetsgräns per endpoint, hanteringsnyckelomfattning |
|
|
1077
|
+
| 📊 **Observerbarhet** | 15+ | OpenTelemetry-integration, kvotövervakning i realtid, kostnadsspårning per modell |
|
|
1078
|
+
| 🔄 **Providerintegrationer** | 20+ | Dynamiskt modellregister, nedkylning av leverantörer, Codex för flera konton, Copilot-kvotanalys |
|
|
1079
|
+
| ⚡ **Prestanda** | 15+ | Dubbla cachelager, promptcache, svarscache, streaming keepalive, batch API |
|
|
1080
|
+
| 🌐 **Ekosystem** | 10+ | WebSocket API, config hot-reload, distribuerad config store, kommersiellt läge |
|
|
1081
|
+
|
|
1082
|
+
### 🔜 Kommer snart
|
|
1083
|
+
|
|
1084
|
+
- 🔗 **OpenCode Integration** — Inbyggt leverantörsstöd för OpenCode AI-kodnings-IDE
|
|
1085
|
+
- 🔗 **TRAE Integration** — Fullständigt stöd för TRAE AI-utvecklingsramverket
|
|
1086
|
+
- 📦 **Batch API** — Asynkron batchbearbetning för bulkförfrågningar
|
|
1087
|
+
- 🎯 **Taggbaserad routing** — Ruttbegäranden baserade på anpassade taggar och metadata
|
|
1088
|
+
- 💰 **Lägsta kostnadsstrategi** — Välj automatiskt den billigaste tillgängliga leverantören
|
|
1089
|
+
|
|
1090
|
+
> 📝 Fullständiga funktionsspecifikationer tillgängliga i [link](docs/new-features/) (217 detaljerade specifikationer)
|
|
1091
|
+
|
|
1092
|
+
---
|
|
1093
|
+
|
|
1094
|
+
## 📧 Support
|
|
1095
|
+
|
|
1096
|
+
> 💬 **Gå med i vår community!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Få hjälp, dela tips och håll dig uppdaterad.
|
|
1097
|
+
|
|
1098
|
+
- **Webbplats**: [omniroute.online](https://omniroute.online)
|
|
1099
|
+
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
|
1100
|
+
- **Frågor**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
|
1101
|
+
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
|
|
1102
|
+
- **Originalprojekt**: [9router by decolua](https://github.com/decolua/9router)
|
|
1103
|
+
|
|
1104
|
+
---
|
|
1105
|
+
|
|
1106
|
+
## 👥 Bidragsgivare
|
|
1107
|
+
|
|
1108
|
+
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
|
1109
|
+
|
|
1110
|
+
### Hur man bidrar
|
|
1111
|
+
|
|
1112
|
+
1. Dela förvaret
|
|
1113
|
+
2. Skapa din funktionsgren (`git checkout -b feature/amazing-feature`)
|
|
1114
|
+
3. Bekräfta dina ändringar (`git commit -m 'Add amazing feature'`)
|
|
1115
|
+
4. Tryck till grenen (`git push origin feature/amazing-feature`)
|
|
1116
|
+
5. Öppna en Pull Request
|
|
1117
|
+
|
|
1118
|
+
Se [CONTRIBUTING.md](CONTRIBUTING.md) för detaljerade riktlinjer.
|
|
1119
|
+
|
|
1120
|
+
### Släpper en ny version
|
|
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
|
+
## 📊 Stjärnhistorik
|
|
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
|
+
## 🙏 Tack
|
|
1142
|
+
|
|
1143
|
+
Speciellt tack till **[9router](https://github.com/decolua/9router)** av **[decolua](https://github.com/decolua)** — originalprojektet som inspirerade denna gaffel. OmniRoute bygger på den otroliga grunden med ytterligare funktioner, multimodala API:er och en fullständig TypeScript-omskrivning.
|
|
1144
|
+
|
|
1145
|
+
Särskilt tack till **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — den ursprungliga Go-implementeringen som inspirerade denna JavaScript-port.
|
|
1146
|
+
|
|
1147
|
+
---
|
|
1148
|
+
|
|
1149
|
+
## 📄 Licens
|
|
1150
|
+
|
|
1151
|
+
MIT-licens - se [LICENSE](LICENSE) för detaljer.
|
|
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 codar. Roteamento inteligente para **modeller de IA GRATUITOS e de baixo custo** com reservautomatisk.
|
|
1162
|
+
|
|
1163
|
+
_Seu proxy universal de API — um endpoint, 36+ tester, noll driftstopp._
|
|
1164
|
+
|
|
1165
|
+
### 🌐 Internacionalização (i18n)
|
|
1166
|
+
|
|
1167
|
+
O instrumentpanelen gör OmniRoute stöder **múltiplos idiomas**. Attualmente disponível em:
|
|
1168
|
+
|
|
1169
|
+
| Idiom | Código | Status |
|
|
1170
|
+
| ------------------------ | ------- | ----------- |
|
|
1171
|
+
| 🇺🇸 engelska | `en` | ✅ Komplett |
|
|
1172
|
+
| 🇧🇷 Português (Brasilien) | `pt-BR` | ✅ Komplett |
|
|
1173
|
+
|
|
1174
|
+
**Para trocar o idioma:** Clique no selector de idioma (🇺🇸 EN) no header do dashboard → selecione o idioma desejado.
|
|
1175
|
+
|
|
1176
|
+
**För att lägga till ett nytt uttryck:**
|
|
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` och `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
|
+
### 🐳 Hamnarbetare
|
|
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 komplett** — Övervakning, loggar, analyser, konfigurationer
|
|
1210
|
+
- **CLI-verktyg** — Konfigurera Claude Code, Codex, Cursor, Cline com um clique
|
|
1211
|
+
- **100 % TypeScript** — Código limpo e tipado
|
|
1212
|
+
|
|
1213
|
+
### 📖 Dokumentation
|
|
1214
|
+
|
|
1215
|
+
| Dokument | Beskrivning |
|
|
1216
|
+
| ----------------------------------------------- | --------------------------------------------- |
|
|
1217
|
+
| [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, combos, CLI, distribuera |
|
|
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 internos do sistema |
|
|
1221
|
+
| [Contribuição](CONTRIBUTING.md) | Inställning av desenvolvimento och riktlinjer |
|
|
1222
|
+
| [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Komplettera med: VM + nginx + Cloudflare |
|
|
1223
|
+
|
|
1224
|
+
### 📧 Stöd
|
|
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
|
+
- **Webbplats**: [omniroute.online](https://omniroute.online)
|
|
1229
|
+
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
|
1230
|
+
- **Frågor**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
|
1231
|
+
|
|
1232
|
+
---
|
|
1233
|
+
|
|
1234
|
+
<div align="center">
|
|
1235
|
+
<sub>Byggd med ❤️ för utvecklare som kodar 24/7</sub>
|
|
1236
|
+
<br/>
|
|
1237
|
+
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
|
1238
|
+
</div>
|