omniroute 1.4.11 → 1.5.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 +25 -20
- 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 +28 -28
- 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_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_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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/budget/route_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 +28 -28
- 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/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/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-c6bffec2bf9757fa.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-ce332ffdb491a4d8.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-ec914ae79f085e6f.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 +1 -1
- package/package.json +1 -1
- 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 → XOdkUGO-Pm15MwsN4s6B3}/_buildManifest.js +0 -0
- /package/app/.next/static/{g7Mie-iq39oZ7ts610YtL → XOdkUGO-Pm15MwsN4s6B3}/_ssgManifest.js +0 -0
package/README.no.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 gratis AI-gatewayen
|
|
5
|
+
|
|
6
|
+
🌐 **[English](#-omniroute--the-free-ai-gateway)** | **[Português (BR)](#-omniroute--gateway-de-ia-gratuito)**
|
|
7
|
+
|
|
8
|
+
### Slutt aldri å kode. Smart ruting til **GRATIS og rimelige AI-modeller** med automatisk fallback.
|
|
9
|
+
|
|
10
|
+
_Din universelle API-proxy – ett endepunkt, 36+ leverandører, null nedetid._
|
|
11
|
+
|
|
12
|
+
**Chatfullføringer • Innebygginger • Bildegenerering • Lyd • Omrangering • 100 % TypeScript**
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
### 🤖 Gratis AI-leverandør for dine favorittkodeagenter
|
|
17
|
+
|
|
18
|
+
_Koble til ethvert AI-drevet IDE- eller CLI-verktøy gjennom OmniRoute – gratis API-gateway for ubegrenset koding._
|
|
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>📡 Alle agenter kobler til via <code>http://localhost:20128/v1</code> eller <code>http://cloud.omniroute.online/v1</code>, —limited one models_245 kvote</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
|
+
## 🤔 Hvorfor OmniRoute?
|
|
116
|
+
|
|
117
|
+
**Slutt å kaste bort penger og nå grensene:**
|
|
118
|
+
|
|
119
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Abonnementskvoten utløper ubrukt hver måned
|
|
120
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Takstgrenser stopper deg med midtkoding
|
|
121
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Dyre APIer ($20–50/måned per leverandør)
|
|
122
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Manuell veksling mellom tilbydere
|
|
123
|
+
|
|
124
|
+
**OmniRoute løser dette:**
|
|
125
|
+
|
|
126
|
+
- ✅ **Maksimer abonnementer** - Spor kvote, bruk hver bit før tilbakestilling
|
|
127
|
+
- ✅ **Automatisk fallback** - Abonnement → API-nøkkel → Billig → Gratis, null nedetid
|
|
128
|
+
- ✅ **Multi-konto** - Round-robin mellom kontoer per leverandør
|
|
129
|
+
- ✅ **Universal** - Fungerer med Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, hvilket som helst CLI-verktøy
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 🔄 Hvordan det fungerer
|
|
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
|
+
## ⚡ Hurtigstart
|
|
163
|
+
|
|
164
|
+
**1. Installer globalt:**
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npm install -g omniroute
|
|
168
|
+
omniroute
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
🎉 Dashboard åpner kl. `http://localhost:20128`
|
|
172
|
+
|
|
173
|
+
| Kommando | Beskrivelse |
|
|
174
|
+
| ----------------------- | ---------------------------------- |
|
|
175
|
+
| `omniroute` | Start server (standard port 20128) |
|
|
176
|
+
| `omniroute --port 3000` | Bruk tilpasset port |
|
|
177
|
+
| `omniroute --no-open` | Ikke åpne nettleseren automatisk |
|
|
178
|
+
| `omniroute --help` | Vis hjelp |
|
|
179
|
+
|
|
180
|
+
**2. Koble til en GRATIS leverandør:**
|
|
181
|
+
|
|
182
|
+
Dashboard → Leverandører → Koble til **Claude-kode** eller **Antigravity** → OAuth-pålogging → Ferdig!
|
|
183
|
+
|
|
184
|
+
**3. Bruk i CLI-verktøyet:**
|
|
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 det!** Begynn å kode med GRATIS AI-modeller.
|
|
194
|
+
|
|
195
|
+
**Alternativt – kjør fra kilden:**
|
|
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 er tilgjengelig som et offentlig Docker-bilde på [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
|
208
|
+
|
|
209
|
+
**Rask løp:**
|
|
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
|
+
**Bruke 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
|
+
| Bilde | Tag | Størrelse | Beskrivelse |
|
|
246
|
+
| ------------------------ | -------- | --------- | ----------------------- |
|
|
247
|
+
| `diegosouzapw/omniroute` | `latest` | ~250MB | Siste stabile utgivelse |
|
|
248
|
+
| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Gjeldende versjon |
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 💰 Priser på et øyeblikk
|
|
253
|
+
|
|
254
|
+
| Nivå | Leverandør | Kostnad | Kvote Tilbakestill | Best for |
|
|
255
|
+
| ----------------- | ----------------- | ----------------------------- | ----------------------- | -------------------- |
|
|
256
|
+
| **💳 ABONNEMENT** | Claude Code (Pro) | $20/md | 5t + ukentlig | Allerede abonnert |
|
|
257
|
+
| | Codex (Pluss/Pro) | $20-200/md | 5t + ukentlig | OpenAI-brukere |
|
|
258
|
+
| | Gemini CLI | **GRATIS** | 180K/mnd + 1K/dag | Alle sammen! |
|
|
259
|
+
| | GitHub Copilot | $10-19/md | Månedlig | GitHub-brukere |
|
|
260
|
+
| **🔑 API NØKKEL** | NVIDIA NIM | **GRATIS** (1000 studiepoeng) | Engangs | Gratis tier testing |
|
|
261
|
+
| | DeepSeek | Betal per bruk | Ingen | Beste pris/kvalitet |
|
|
262
|
+
| | Groq | Gratis lag + betalt | Begrenset pris | Ultrarask slutning |
|
|
263
|
+
| | xAI (Grok) | Betal per bruk | Ingen | Grok modeller |
|
|
264
|
+
| | Mistral | Gratis lag + betalt | Begrenset pris | Europeisk AI |
|
|
265
|
+
| | OpenRouter | Betal per bruk | Ingen | 100+ modeller |
|
|
266
|
+
| **💰 BILLIG** | GLM-4.7 | $0,6/1M | Daglig 10:00 | Budsjett backup |
|
|
267
|
+
| | MiniMax M2.1 | $0,2/1M | 5-timers rullende | Billigste alternativ |
|
|
268
|
+
| | Kimi K2 | $9/md leilighet | 10 millioner tokens/mnd | Forutsigbar kostnad |
|
|
269
|
+
| **🆓 GRATIS** | iFlow | $0 | Ubegrenset | 8 modeller gratis |
|
|
270
|
+
| | Qwen | $0 | Ubegrenset | 3 modeller gratis |
|
|
271
|
+
| | Kiro | $0 | Ubegrenset | Claude gratis |
|
|
272
|
+
|
|
273
|
+
**💡 Profftips:** Start med Gemini CLI (180K gratis/måned) + iFlow (ubegrenset gratis) kombinasjon = $0 kostnad!
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## 🎯 Brukssaker
|
|
278
|
+
|
|
279
|
+
### Sak 1: "Jeg har Claude Pro-abonnement"
|
|
280
|
+
|
|
281
|
+
**Problem:** Kvoten utløper ubrukt, satsgrenser under tung koding
|
|
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
|
+
### Tilfelle 2: "Jeg vil ha null kostnad"
|
|
294
|
+
|
|
295
|
+
**Problem:** Har ikke råd til abonnementer, trenger pålitelig AI-koding
|
|
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
|
+
### Tilfelle 3: "Jeg trenger 24/7 koding, ingen avbrudd"
|
|
308
|
+
|
|
309
|
+
**Problem:** Tidsfrister, har ikke råd til nedetid
|
|
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
|
+
### Tilfelle 4: "Jeg vil ha GRATIS AI i OpenClaw"
|
|
323
|
+
|
|
324
|
+
**Problem:** Trenger AI-assistent i meldingsapper, 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
|
+
## 💡 Nøkkelfunksjoner
|
|
339
|
+
|
|
340
|
+
### 🧠 Kjerneruting og intelligens
|
|
341
|
+
|
|
342
|
+
| Funksjon | Hva det gjør |
|
|
343
|
+
| ---------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
344
|
+
| 🎯 **Smart 4-lags fallback** | Automatisk rute: Abonnement → API-nøkkel → Billig → Gratis |
|
|
345
|
+
| 📊 **Sanntidskvotesporing** | Live tokenantall + tilbakestilt nedtelling per leverandør |
|
|
346
|
+
| 🔄 **Formatoversettelse** | OpenAI ↔ Claude ↔ Gemini ↔ Markør ↔ Kiro sømløs + respons sanitization |
|
|
347
|
+
| 👥 **Støtte for flere kontoer** | Flere kontoer per leverandør med intelligent utvalg |
|
|
348
|
+
| 🔄 **Auto Token Refresh** | OAuth-tokens oppdateres automatisk med prøv på nytt |
|
|
349
|
+
| 🎨 **Egendefinerte kombinasjoner** | 6 strategier: fyll først, round-robin, p2c, tilfeldig, minst brukt, kostnadsoptimalisert |
|
|
350
|
+
| 🧩 **Egendefinerte modeller** | Legg til hvilken som helst modell-ID til en hvilken som helst leverandør |
|
|
351
|
+
| 🌐 **Wildcard-ruter** | Ruter `provider/*`-mønstre til enhver leverandør dynamisk |
|
|
352
|
+
| 🧠 **Tenkebudsjett** | Passthrough, auto, egendefinerte og adaptive moduser for resonnerende modeller |
|
|
353
|
+
| 💬 **Systemprompt-injeksjon** | Global systemforespørsel brukt på alle forespørsler |
|
|
354
|
+
| 📄 **Responses API** | Full støtte for OpenAI Responses API (`/v1/responses`) for Codex |
|
|
355
|
+
|
|
356
|
+
### 🎵 Multi-Modal APIer
|
|
357
|
+
|
|
358
|
+
| Funksjon | Hva det gjør |
|
|
359
|
+
| ----------------------- | ------------------------------------------------------ |
|
|
360
|
+
| 🖼️ **Bildegenerering** | `/v1/images/generations` — 4 leverandører, 9+ modeller |
|
|
361
|
+
| 📐 **Innbygging** | `/v1/embeddings` — 6 leverandører, 9+ modeller |
|
|
362
|
+
| 🎤 **Lydtranskripsjon** | `/v1/audio/transcriptions` — Whisper-kompatibel |
|
|
363
|
+
| 🔊 **Tekst-til-tale** | `/v1/audio/speech` — Multi-leverandør lydsyntese |
|
|
364
|
+
| 🛡️ **Moderasjoner** | `/v1/moderations` — Innholdssikkerhetssjekker |
|
|
365
|
+
| 🔀 **Omrangering** | `/v1/rerank` — Rerangering av dokumentrelevans |
|
|
366
|
+
|
|
367
|
+
### 🛡️ Spenst og sikkerhet
|
|
368
|
+
|
|
369
|
+
| Funksjon | Hva det gjør |
|
|
370
|
+
| --------------------------------- | ----------------------------------------------------------------------------- |
|
|
371
|
+
| 🔌 **Circuit Breaker** | Automatisk åpning/lukking per leverandør med konfigurerbare terskler |
|
|
372
|
+
| 🛡️ **Anti-tordenflokk** | Mutex + semaforhastighetsgrense for API-nøkkelleverandører |
|
|
373
|
+
| 🧠 **Semantisk cache** | To-lags cache (signatur + semantisk) reduserer kostnader og ventetid |
|
|
374
|
+
| ⚡ **Be om idempotens** | 5s dedup-vindu for dupliserte forespørsler |
|
|
375
|
+
| 🔒 **TLS-fingeravtrykkspoofing** | Omgå TLS-basert botdeteksjon via wreq-js |
|
|
376
|
+
| 🌐 **IP-filtrering** | Tillatelsesliste/blokkeringsliste for API-tilgangskontroll |
|
|
377
|
+
| 📊 **Redigerbare satsgrenser** | Konfigurerbar RPM, min gap og maks samtidig på systemnivå |
|
|
378
|
+
| 🛡 **API-endepunktbeskyttelse** | Auth-gate + leverandørblokkering for `/models`-endepunktet |
|
|
379
|
+
| 🔒 **Proxy-synlighet** | Fargekodede merker: 🟢 global, 🟡 leverandør, 🔵 per tilkobling med IP-skjerm |
|
|
380
|
+
| 🌐 **3-nivå proxy-konfigurasjon** | Konfigurer proxyer på globalt nivå, per leverandør eller per tilkoblingsnivå |
|
|
381
|
+
|
|
382
|
+
### 📊 Observerbarhet og analyse
|
|
383
|
+
|
|
384
|
+
| Funksjon | Hva det gjør |
|
|
385
|
+
| -------------------------- | ----------------------------------------------------------------------------------- |
|
|
386
|
+
| 📝 **Be om logging** | Feilsøkingsmodus med fullstendige forespørsels-/svarlogger |
|
|
387
|
+
| 💾 **SQLite proxy-logger** | Vedvarende proxy-logger overlever omstart av server |
|
|
388
|
+
| 📊 **Analytics Dashboard** | Recharts-drevet: statistikkkort, modellbruksdiagram, leverandørtabell |
|
|
389
|
+
| 📈 **Fremdriftssporing** | Opt-in SSE-fremdriftshendelser for streaming |
|
|
390
|
+
| 🧪 **LLM-evalueringer** | Gylden sett-testing med 4 kampstrategier |
|
|
391
|
+
| 🔍 **Be om telemetri** | p50/p95/p99 latensaggregering + X-Request-Id-sporing |
|
|
392
|
+
| 📋 **Logger Dashboard** | Samlet side med 4 faner: Forespørselslogger, proxy-logger, revisjonslogger, konsoll |
|
|
393
|
+
| 🖥️ **Konsollloggvisning** | Viser i sanntid i terminalstil med nivåfilter, søk, automatisk rulling |
|
|
394
|
+
| 📑 **Filbasert logging** | Console interceptor fanger opp all utgang til JSON-loggfil med rotasjon |
|
|
395
|
+
| 🏥 **Helse Dashboard** | Systemoppetid, strømbrytertilstander, sperringer, cachestatistikk |
|
|
396
|
+
| 💰 **Kostnadssporing** | Budsjettadministrasjon + priskonfigurasjon per modell |
|
|
397
|
+
|
|
398
|
+
### ☁️ Implementering og synkronisering
|
|
399
|
+
|
|
400
|
+
| Funksjon | Hva det gjør |
|
|
401
|
+
| -------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
402
|
+
| 💾 **Cloud Sync** | Synkroniser konfigurasjon på tvers av enheter via Cloudflare Workers |
|
|
403
|
+
| 🌐 **Distribuer hvor som helst** | Localhost, VPS, Docker, Cloudflare Workers |
|
|
404
|
+
| 🔑 **API Key Management** | Generer, roter og omfang API-nøkler per leverandør |
|
|
405
|
+
| 🧙 **Onboarding Wizard** | 4-trinns veiledet oppsett for førstegangsbrukere |
|
|
406
|
+
| 🔧 **CLI Tools Dashboard** | Ett-klikk konfigurer Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
|
407
|
+
| 🔄 **DB-sikkerhetskopier** | Automatisk sikkerhetskopiering, gjenoppretting, eksport og import for alle innstillinger |
|
|
408
|
+
| 🌐 **Internasjonalisering** | Full i18n med neste-intl — støtte for engelsk + portugisisk (Brasil) |
|
|
409
|
+
| 🌍 **Språkvelger** | Globusikon i overskriften for sanntids språkbytte (🇺🇸/🇧🇷) |
|
|
410
|
+
| 📂 **Tilpasset datakatalog** | `DATA_DIR` env var for å overstyre standard `~/.omniroute` lagringsbane |
|
|
411
|
+
|
|
412
|
+
<details>
|
|
413
|
+
<summary><b>📖 Funksjonsdetaljer</b></summary>
|
|
414
|
+
|
|
415
|
+
### 🎯 Smart 4-lags fallback
|
|
416
|
+
|
|
417
|
+
Lag kombinasjoner med automatisk fallback:
|
|
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
|
+
### 📊 Sanntidskvotesporing
|
|
430
|
+
|
|
431
|
+
- Tokenforbruk per leverandør
|
|
432
|
+
- Tilbakestill nedtellingen (5 timer, daglig, ukentlig)
|
|
433
|
+
- Kostnadsestimat for betalte nivåer
|
|
434
|
+
- Månedlige utgiftsrapporter
|
|
435
|
+
|
|
436
|
+
### 🔄 Formatoversettelse
|
|
437
|
+
|
|
438
|
+
Sømløs oversettelse mellom formater:
|
|
439
|
+
|
|
440
|
+
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI-svar**
|
|
441
|
+
- CLI-verktøyet ditt sender OpenAI-format → OmniRoute oversetter → Leverandøren mottar eget format
|
|
442
|
+
- Fungerer med alle verktøy som støtter tilpassede OpenAI-endepunkter
|
|
443
|
+
- **Responssanering** - Fjerner ikke-standardfelter for streng OpenAI SDK-kompatibilitet
|
|
444
|
+
- **Rollenormalisering** — `developer` → `system` for ikke-OpenAI; `system` → `user` for GLM/ERNIE-modeller
|
|
445
|
+
- **Tenk tag-utvinning** — `<think>` blokker → `reasoning_content` for tenkemodeller
|
|
446
|
+
- **Strukturert utgang** — `json_schema` → Gemini's `responseMimeType`/`responseSchema`
|
|
447
|
+
|
|
448
|
+
### 👥 Støtte for flere kontoer
|
|
449
|
+
|
|
450
|
+
- Legg til flere kontoer per leverandør
|
|
451
|
+
- Auto round-robin eller prioritetsbasert ruting
|
|
452
|
+
- Tilbakeslag til neste konto når en når kvoten
|
|
453
|
+
|
|
454
|
+
### 🔄 Automatisk tokenoppdatering
|
|
455
|
+
|
|
456
|
+
- OAuth-tokens oppdateres automatisk før utløp
|
|
457
|
+
- Ingen manuell re-autentisering nødvendig
|
|
458
|
+
- Sømløs opplevelse på tvers av alle leverandører
|
|
459
|
+
|
|
460
|
+
### 🎨 Egendefinerte kombinasjoner
|
|
461
|
+
|
|
462
|
+
- Lag ubegrensede modellkombinasjoner
|
|
463
|
+
- 6 strategier: fyll-først, round-robin, kraft-av-to-valg, tilfeldig, minst brukt, kostnadsoptimalisert
|
|
464
|
+
- Del kombinasjoner på tvers av enheter med Cloud Sync
|
|
465
|
+
|
|
466
|
+
### 🏥 Helse Dashboard
|
|
467
|
+
|
|
468
|
+
- Systemstatus (oppetid, versjon, minnebruk)
|
|
469
|
+
- Strømbrytertilstander per leverandør (lukket/åpen/halvåpen)
|
|
470
|
+
- Takstgrensestatus og aktive sperringer
|
|
471
|
+
- Signaturbufferstatistikk
|
|
472
|
+
- Latency-telemetri (p50/p95/p99) + hurtigbuffer
|
|
473
|
+
- Tilbakestill helsestatus med ett klikk
|
|
474
|
+
|
|
475
|
+
### 🔧 Oversetter Lekeplass
|
|
476
|
+
|
|
477
|
+
OmniRoute inkluderer en kraftig innebygd oversetterlekeplass med **4 moduser** for feilsøking, testing og overvåking av API-oversettelser:
|
|
478
|
+
|
|
479
|
+
| Modus | Beskrivelse |
|
|
480
|
+
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
481
|
+
| **💻 Lekeplass** | Direkte formatoversettelse – lim inn hvilken som helst API-forespørselstekst og se umiddelbart hvordan OmniRoute oversetter den mellom leverandørformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Inkluderer eksempelmaler og automatisk gjenkjenning av formater. |
|
|
482
|
+
| **💬 Chat Tester** | Send ekte chatteforespørsler gjennom OmniRoute og se hele rundturen: innspillet ditt, den oversatte forespørselen, leverandørens svar og det oversatte svaret tilbake. Uvurderlig for validering av kombinasjonsruting. |
|
|
483
|
+
| **🧪 Testbenk** | Batch-testmodus – definer flere testtilfeller med forskjellige innganger og forventede utganger, kjør dem alle samtidig og sammenlign resultater på tvers av leverandører og modeller. |
|
|
484
|
+
| **📱 Live Monitor** | Sanntidsovervåking av forespørsler – se innkommende forespørsler mens de strømmer gjennom OmniRoute, se formatoversettelser som skjer live, og identifiser problemer umiddelbart. |
|
|
485
|
+
|
|
486
|
+
**Tilgang:** Dashboard → Oversetter (sidefelt)
|
|
487
|
+
|
|
488
|
+
### 💾 Cloud Sync
|
|
489
|
+
|
|
490
|
+
- Synkroniser leverandører, kombinasjoner og innstillinger på tvers av enheter
|
|
491
|
+
- Automatisk bakgrunnssynkronisering
|
|
492
|
+
- Sikker kryptert lagring
|
|
493
|
+
|
|
494
|
+
</details>
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## 📖 Oppsettveiledning
|
|
499
|
+
|
|
500
|
+
<details>
|
|
501
|
+
<summary><b>💳 Abonnementsleverandø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
|
+
**Profftips:** Bruk Opus for komplekse oppgaver, Sonnet for hastighet. OmniRoute sporer kvote 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åned!)
|
|
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
|
+
**Mest verdi:** Enormt gratis nivå! Bruk dette før betalte 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 nøkkelleverandører</b></summary>
|
|
561
|
+
|
|
562
|
+
### NVIDIA NIM (GRATIS 1000 studiepoeng!)
|
|
563
|
+
|
|
564
|
+
1. Registrer deg: [build.nvidia.com](https://build.nvidia.com)
|
|
565
|
+
2. Få gratis API-nøkkel (1000 slutningspoeng inkludert)
|
|
566
|
+
3. Dashboard → Legg til leverandør → NVIDIA NIM:
|
|
567
|
+
- API-nøkkel: `nvapi-your-key`
|
|
568
|
+
|
|
569
|
+
**Modeller:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` og 50+ til
|
|
570
|
+
|
|
571
|
+
**Profftips:** OpenAI-kompatibel API — fungerer sømløst med OmniRoutes formatoversettelse!
|
|
572
|
+
|
|
573
|
+
### DeepSeek
|
|
574
|
+
|
|
575
|
+
1. Registrer deg: [platform.deepseek.com](https://platform.deepseek.com)
|
|
576
|
+
2. Få API-nøkkel
|
|
577
|
+
3. Dashboard → Legg til leverandør → DeepSeek
|
|
578
|
+
|
|
579
|
+
**Modeller:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
|
580
|
+
|
|
581
|
+
### Groq (gratis nivå tilgjengelig!)
|
|
582
|
+
|
|
583
|
+
1. Registrer deg: [console.groq.com](https://console.groq.com)
|
|
584
|
+
2. Få API-nøkkel (gratis nivå inkludert)
|
|
585
|
+
3. Dashboard → Legg til leverandør → Groq
|
|
586
|
+
|
|
587
|
+
**Modeller:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
|
588
|
+
|
|
589
|
+
**Profftips:** Ultrarask slutning — best for sanntidskoding!
|
|
590
|
+
|
|
591
|
+
### OpenRouter (100+ modeller)
|
|
592
|
+
|
|
593
|
+
1. Registrer deg: [openrouter.ai](https://openrouter.ai)
|
|
594
|
+
2. Få API-nøkkel
|
|
595
|
+
3. Dashboard → Legg til leverandør → OpenRouter
|
|
596
|
+
|
|
597
|
+
**Modeller:** Få tilgang til 100+ modeller fra alle store leverandører gjennom én enkelt API-nøkkel.
|
|
598
|
+
|
|
599
|
+
</details>
|
|
600
|
+
|
|
601
|
+
<details>
|
|
602
|
+
<summary><b>💰 Billige leverandører (backup)</b></summary>
|
|
603
|
+
|
|
604
|
+
### GLM-4.7 (Daglig tilbakestilling, $0,6/1M)
|
|
605
|
+
|
|
606
|
+
1. Registrer deg: [Zhipu AI](https://open.bigmodel.cn/)
|
|
607
|
+
2. Få API-nøkkel fra Coding Plan
|
|
608
|
+
3. Dashboard → Legg til API-nøkkel:
|
|
609
|
+
- Leverandør: `glm`
|
|
610
|
+
- API-nøkkel: `your-key`
|
|
611
|
+
|
|
612
|
+
**Bruk:** `glm/glm-4.7`
|
|
613
|
+
|
|
614
|
+
**Profftips:** Coding Plan tilbyr 3× kvote til 1/7 kostnad! Tilbakestill daglig 10:00.
|
|
615
|
+
|
|
616
|
+
### MiniMax M2.1 (5t tilbakestilling, $0,20/1M)
|
|
617
|
+
|
|
618
|
+
1. Registrer deg: [MiniMax](https://www.minimax.io/)
|
|
619
|
+
2. Få API-nøkkel
|
|
620
|
+
3. Dashboard → Legg til API-nøkkel
|
|
621
|
+
|
|
622
|
+
**Bruk:** `minimax/MiniMax-M2.1`
|
|
623
|
+
|
|
624
|
+
**Profftips:** Billigste alternativet for lang kontekst (1M tokens)!
|
|
625
|
+
|
|
626
|
+
### Kimi K2 ($9/mnd leilighet)
|
|
627
|
+
|
|
628
|
+
1. Abonner: [Moonshot AI](https://platform.moonshot.ai/)
|
|
629
|
+
2. Få API-nøkkel
|
|
630
|
+
3. Dashboard → Legg til API-nøkkel
|
|
631
|
+
|
|
632
|
+
**Bruk:** `kimi/kimi-latest`
|
|
633
|
+
|
|
634
|
+
**Profftips:** Fast $9/måned for 10M tokens = $0,90/1M effektiv kostnad!
|
|
635
|
+
|
|
636
|
+
</details>
|
|
637
|
+
|
|
638
|
+
<details>
|
|
639
|
+
<summary><b>🆓 GRATIS Leverandører (Emergency Backup)</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>🎨 Lag kombinasjoner</b></summary>
|
|
684
|
+
|
|
685
|
+
### Eksempel 1: Maksimer abonnement → Billig sikkerhetskopi
|
|
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
|
+
### Eksempel 2: Kun gratis (nullkostnad)
|
|
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-integrasjon</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
|
+
Bruk **CLI Tools**-siden i dashbordet for ett-klikks konfigurasjon, eller rediger `~/.claude/settings.json` manuelt.
|
|
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 – Dashboard (anbefalt):**
|
|
741
|
+
|
|
742
|
+
```
|
|
743
|
+
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
**Alternativ 2 — Manuell:** Rediger `~/.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
|
+
> **Merk:** OpenClaw fungerer bare med lokale OmniRoute. Bruk `127.0.0.1` i stedet for `localhost` for å unngå problemer med IPv6-oppløsning.
|
|
763
|
+
|
|
764
|
+
### Cline / Fortsett / 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
|
+
## 📊 Tilgjengelige modeller
|
|
779
|
+
|
|
780
|
+
<details>
|
|
781
|
+
<summary><b>Se alle tilgjengelige modeller</b></summary>
|
|
782
|
+
|
|
783
|
+
**Claude-kode (`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
|
+
**Kodex (`cx/`)** - Pluss/Proff:
|
|
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 kreditter:
|
|
805
|
+
|
|
806
|
+
- `nvidia/llama-3.3-70b-instruct`
|
|
807
|
+
- `nvidia/mistral-7b-instruct`
|
|
808
|
+
- 50+ flere modeller 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
|
+
- Alle modeller fra [openrouter.ai/models](https://openrouter.ai/models)
|
|
841
|
+
|
|
842
|
+
</details>
|
|
843
|
+
|
|
844
|
+
---
|
|
845
|
+
|
|
846
|
+
## 🧪 Evalueringer (evalueringer)
|
|
847
|
+
|
|
848
|
+
OmniRoute inkluderer et innebygd evalueringsrammeverk for å teste LLM-responskvaliteten mot et gyldent sett. Få tilgang til den via **Analytics → Evals** i dashbordet.
|
|
849
|
+
|
|
850
|
+
### Innebygd gyldent sett
|
|
851
|
+
|
|
852
|
+
Det forhåndsinstallerte "OmniRoute Golden Set" inneholder 10 testcases som dekker:
|
|
853
|
+
|
|
854
|
+
- Hilsen, matematikk, geografi, kodegenerering
|
|
855
|
+
- JSON-formatoverholdelse, oversettelse, markdown
|
|
856
|
+
- Sikkerhetsavslag (skadelig innhold), telling, boolsk logikk
|
|
857
|
+
|
|
858
|
+
### Evalueringsstrategier
|
|
859
|
+
|
|
860
|
+
| Strategi | Beskrivelse | Eksempel |
|
|
861
|
+
| ---------- | --------------------------------------------------------------------- | -------------------------------- |
|
|
862
|
+
| `exact` | Utdata må samsvare nøyaktig med | `"4"` |
|
|
863
|
+
| `contains` | Utdata må inneholde understreng (uavhengig av store og små bokstaver) | `"Paris"` |
|
|
864
|
+
| `regex` | Utdata må samsvare med regulært uttrykksmønster | `"1.*2.*3"` |
|
|
865
|
+
| `custom` | Egendefinert JS-funksjon returnerer true/false | `(output) => output.length > 10` |
|
|
866
|
+
|
|
867
|
+
---
|
|
868
|
+
|
|
869
|
+
## 🔐 OAuth em Servidor Remoto (Ekstern OAuth-oppsett)
|
|
870
|
+
|
|
871
|
+
<a name="oauth-em-servidor-remoto"></a>
|
|
872
|
+
|
|
873
|
+
> **⚠️ VIKTIG for bruk av OmniRoute med VPS/Docker/server-fjernkontroll**
|
|
874
|
+
|
|
875
|
+
### Hva med OAuth gjør Antigravity / Gemini CLI falha em servidores remotos?
|
|
876
|
+
|
|
877
|
+
Os testedores **Antigravity** og **Gemini CLI** usam **Google OAuth 2.0** for autenticação. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pre-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 (eks: `https://omniroute.meuservidor.com`), o Google avviser autenticação com:
|
|
880
|
+
|
|
881
|
+
```
|
|
882
|
+
Error 400: redirect_uri_mismatch
|
|
883
|
+
```
|
|
884
|
+
|
|
885
|
+
### Løsning: Konfigurer OAuth-tilbehør
|
|
886
|
+
|
|
887
|
+
Você precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com en URI for seu service.
|
|
888
|
+
|
|
889
|
+
#### Passo a passo
|
|
890
|
+
|
|
891
|
+
**1. Tilgang til 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
|
+
- Klikk dem **"+ Opprett legitimasjon"** → **"OAuth-klient-ID"**
|
|
898
|
+
- Tipo de aplicativo: **"Nettapplikasjon"**
|
|
899
|
+
- Navn: escolha qualquer nome (eks.: `OmniRoute Remote`)
|
|
900
|
+
|
|
901
|
+
**3. Adicione som autorisert omdirigerings-URI**
|
|
902
|
+
|
|
903
|
+
Ingen campo **"Authorized redirect 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. Salve e copy as credenciais**
|
|
912
|
+
|
|
913
|
+
Após criar, o Google mostrará o **Client ID** e o **Client Secret**.
|
|
914
|
+
|
|
915
|
+
**5. Konfigurer 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 → Leverandører → Antigravity (ou Gemini CLI) → OAuth
|
|
943
|
+
|
|
944
|
+
Agora o Google redirecionará corretamente para `https://seu-servidor.com/callback` e autenticação funcionará.
|
|
945
|
+
|
|
946
|
+
---
|
|
947
|
+
|
|
948
|
+
### Midlertidig midlertidig løsning (som konfigureres på forhånd)
|
|
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 fra autorização til Google
|
|
953
|
+
2. Após você autorizar, o Google tentará redirecionar for `localhost` (que falha no servidor remoto)
|
|
954
|
+
3. **Kopier en URL fullført** da barra de endereço do seu nettleseren (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. Klikk på **"Koble til"**
|
|
957
|
+
|
|
958
|
+
> Este workaround funciona porque or código de autorização na URL é válido independente do redirect ter carregado or não.
|
|
959
|
+
|
|
960
|
+
---
|
|
961
|
+
|
|
962
|
+
## 🐛 Feilsøking
|
|
963
|
+
|
|
964
|
+
<details>
|
|
965
|
+
<summary><b>Klikk for å utvide feilsøkingsveiledningen</b></summary>
|
|
966
|
+
|
|
967
|
+
**«Språkmodellen ga ikke meldinger»**
|
|
968
|
+
|
|
969
|
+
- Leverandørkvoten er oppbrukt → Sjekk dashboardkvotesporing
|
|
970
|
+
- Løsning: Bruk kombinasjonsalternativ eller bytt til et billigere nivå
|
|
971
|
+
|
|
972
|
+
**Satsbegrensning**
|
|
973
|
+
|
|
974
|
+
- Abonnementskvote ut → Fallback til GLM/MiniMax
|
|
975
|
+
- Legg til kombinasjon: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
976
|
+
|
|
977
|
+
**OAuth-token er utløpt**
|
|
978
|
+
|
|
979
|
+
- Automatisk oppdatering av OmniRoute
|
|
980
|
+
- Hvis problemene vedvarer: Dashboard → Leverandør → Koble til på nytt
|
|
981
|
+
|
|
982
|
+
**Høye kostnader**
|
|
983
|
+
|
|
984
|
+
- Sjekk bruksstatistikk i Dashboard → Kostnader
|
|
985
|
+
- Bytt primærmodell til GLM/MiniMax
|
|
986
|
+
- Bruk gratis nivå (Gemini CLI, iFlow) for ikke-kritiske oppgaver
|
|
987
|
+
|
|
988
|
+
**Dashboard åpnes på feil port**
|
|
989
|
+
|
|
990
|
+
- Sett `PORT=20128` og `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
|
991
|
+
|
|
992
|
+
**Skysynkroniseringsfeil**
|
|
993
|
+
|
|
994
|
+
- Bekreft at `BASE_URL` peker på løpeforekomsten din
|
|
995
|
+
- Bekreft `CLOUD_URL` poeng til det forventede skyendepunktet
|
|
996
|
+
- Hold `NEXT_PUBLIC_*` verdier på linje med verdiene på tjenersiden
|
|
997
|
+
|
|
998
|
+
**Første pålogging fungerer ikke**
|
|
999
|
+
|
|
1000
|
+
- Sjekk `INITIAL_PASSWORD` i `.env`
|
|
1001
|
+
- Hvis det ikke er angitt, er reservepassordet `123456`
|
|
1002
|
+
|
|
1003
|
+
**Ingen forespørselslogger**
|
|
1004
|
+
|
|
1005
|
+
- Sett `ENABLE_REQUEST_LOGS=true` i `.env`
|
|
1006
|
+
|
|
1007
|
+
**Test viser «Ugyldig» for OpenAI-kompatible leverandører**
|
|
1008
|
+
|
|
1009
|
+
- Mange leverandører avslører ikke et `/models`-endepunkt
|
|
1010
|
+
- OmniRoute v1.0.6+ inkluderer reservevalidering via chatfullføringer
|
|
1011
|
+
- Sørg for at basis-URL inkluderer suffikset `/v1`
|
|
1012
|
+
|
|
1013
|
+
</details>
|
|
1014
|
+
|
|
1015
|
+
---
|
|
1016
|
+
|
|
1017
|
+
## 🛠️ Tech Stack
|
|
1018
|
+
|
|
1019
|
+
- **Kjøretid**: Node.js 18–22 LTS (⚠️ Node.js 24+ støttes **ikke** — `better-sqlite3` native binærfiler er inkompatible)
|
|
1020
|
+
- **Språk**: TypeScript 5.9 — **100 % TypeScript** på tvers av `src/` og `open-sse/` (v1.0.6)
|
|
1021
|
+
- **Rammeverk**: Next.js 16 + React 19 + Tailwind CSS 4
|
|
1022
|
+
- **Database**: LowDB (JSON) + SQLite (domenetilstand + proxy-logger)
|
|
1023
|
+
- **Streaming**: Server-sendte hendelser (SSE)
|
|
1024
|
+
- **Auth**: OAuth 2.0 (PKCE) + JWT + API-nøkler
|
|
1025
|
+
- **Test**: Node.js-testløper (368+ enhetstester)
|
|
1026
|
+
- **CI/CD**: GitHub-handlinger (automatisk npm-publisering + Docker Hub ved utgivelse)
|
|
1027
|
+
- **Nettsted**: [omniroute.online](https://omniroute.online)
|
|
1028
|
+
- **Pakke**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
|
|
1029
|
+
- **Dokker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
|
|
1030
|
+
- **Resiliens**: Strømbryter, eksponentiell backoff, anti-trdnende flokk, TLS-spoofing
|
|
1031
|
+
|
|
1032
|
+
---
|
|
1033
|
+
|
|
1034
|
+
## 📖 Dokumentasjon
|
|
1035
|
+
|
|
1036
|
+
| Dokument | Beskrivelse |
|
|
1037
|
+
| -------------------------------------------- | ---------------------------------------------------------- |
|
|
1038
|
+
| [User Guide](docs/USER_GUIDE.md) | Leverandører, kombinasjoner, CLI-integrasjon, distribusjon |
|
|
1039
|
+
| [API Reference](docs/API_REFERENCE.md) | Alle endepunkter med eksempler |
|
|
1040
|
+
| [Troubleshooting](docs/TROUBLESHOOTING.md) | Vanlige problemer og løsninger |
|
|
1041
|
+
| [Architecture](docs/ARCHITECTURE.md) | Systemarkitektur og innvendig |
|
|
1042
|
+
| [Contributing](CONTRIBUTING.md) | Utviklingsoppsett og retningslinjer |
|
|
1043
|
+
| [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0-spesifikasjon |
|
|
1044
|
+
| [Security Policy](SECURITY.md) | Sårbarhetsrapportering og sikkerhetspraksis |
|
|
1045
|
+
| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Komplett guide: VM + nginx + Cloudflare-oppsett |
|
|
1046
|
+
| [Features Gallery](docs/FEATURES.md) | Visuell dashbordomvisning med skjermbilder |
|
|
1047
|
+
|
|
1048
|
+
### 📸 Forhåndsvisning av dashbord
|
|
1049
|
+
|
|
1050
|
+
<details>
|
|
1051
|
+
<summary><b>Klikk for å se skjermbilder av dashbordet</b></summary>
|
|
1052
|
+
|
|
1053
|
+
| Side | Skjermbilde |
|
|
1054
|
+
| ----------------- | ------------------------------------------------- |
|
|
1055
|
+
| **Tilbydere** |  |
|
|
1056
|
+
| **Komboer** |  |
|
|
1057
|
+
| **Analyse** |  |
|
|
1058
|
+
| **Helse** |  |
|
|
1059
|
+
| **Oversetter** |  |
|
|
1060
|
+
| **Innstillinger** |  |
|
|
1061
|
+
| **CLI-verktøy** |  |
|
|
1062
|
+
| **Brukslogger** |  |
|
|
1063
|
+
| **Endepunkt** |  |
|
|
1064
|
+
|
|
1065
|
+
</details>
|
|
1066
|
+
|
|
1067
|
+
---
|
|
1068
|
+
|
|
1069
|
+
## 🗺️ Veikart
|
|
1070
|
+
|
|
1071
|
+
OmniRoute har **210+ funksjoner planlagt** på tvers av flere utviklingsfaser. Her er nøkkelområdene:
|
|
1072
|
+
|
|
1073
|
+
| Kategori | Planlagte funksjoner | Høydepunkter |
|
|
1074
|
+
| -------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------- |
|
|
1075
|
+
| 🧠 **Routing og intelligens** | 25+ | Ruting med lavest ventetid, tag-basert ruting, forhåndskontroll av kvoter, valg av P2C-konto |
|
|
1076
|
+
| 🔒 **Sikkerhet og overholdelse** | 20+ | SSRF-herding, tilsløring av legitimasjon, hastighetsgrense per endepunkt, styringsnøkkelomfang |
|
|
1077
|
+
| 📊 **Observerbarhet** | 15+ | OpenTelemetry-integrasjon, kvoteovervåking i sanntid, kostnadssporing per modell |
|
|
1078
|
+
| 🔄 **Tilbyderintegrasjoner** | 20+ | Dynamisk modellregister, leverandørnedkjøling, multi-konto Codex, Copilot-kvoteparsing |
|
|
1079
|
+
| ⚡ **Ytelse** | 15+ | Dobbelt hurtigbufferlag, promptbuffer, svarbuffer, streaming keepalive, batch API |
|
|
1080
|
+
| 🌐 **Økosystem** | 10+ | WebSocket API, config hot-reload, distribuert config store, kommersiell modus |
|
|
1081
|
+
|
|
1082
|
+
### 🔜 Kommer snart
|
|
1083
|
+
|
|
1084
|
+
- 🔗 **OpenCode Integration** — Innebygd leverandørstøtte for OpenCode AI-kodings-IDE
|
|
1085
|
+
- 🔗 **TRAE-integrasjon** — Full støtte for utviklingsrammeverket for TRAE AI
|
|
1086
|
+
- 📦 **Batch API** — Asynkron batchbehandling for bulkforespørsler
|
|
1087
|
+
- 🎯 **Tag-basert ruting** — Ruteforespørsler basert på tilpassede tagger og metadata
|
|
1088
|
+
- 💰 **Laveste kostnadsstrategi** — Velg automatisk den billigste tilgjengelige leverandøren
|
|
1089
|
+
|
|
1090
|
+
> 📝 Full funksjonsspesifikasjoner tilgjengelig i [link](docs/new-features/) (217 detaljerte spesifikasjoner)
|
|
1091
|
+
|
|
1092
|
+
---
|
|
1093
|
+
|
|
1094
|
+
## 📧 Støtte
|
|
1095
|
+
|
|
1096
|
+
> 💬 **Bli med i fellesskapet vårt!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Få hjelp, del tips og hold deg oppdatert.
|
|
1097
|
+
|
|
1098
|
+
- **Nettsted**: [omniroute.online](https://omniroute.online)
|
|
1099
|
+
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
|
1100
|
+
- **Problemer**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
|
1101
|
+
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
|
|
1102
|
+
- **Originalt prosjekt**: [9router by decolua](https://github.com/decolua/9router)
|
|
1103
|
+
|
|
1104
|
+
---
|
|
1105
|
+
|
|
1106
|
+
## 👥 Bidragsytere
|
|
1107
|
+
|
|
1108
|
+
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
|
1109
|
+
|
|
1110
|
+
### Hvordan bidra
|
|
1111
|
+
|
|
1112
|
+
1. Fordel depotet
|
|
1113
|
+
2. Lag din funksjonsgren (`git checkout -b feature/amazing-feature`)
|
|
1114
|
+
3. Bekreft endringene dine (`git commit -m 'Add amazing feature'`)
|
|
1115
|
+
4. Skyv til grenen (`git push origin feature/amazing-feature`)
|
|
1116
|
+
5. Åpne en pull-forespørsel
|
|
1117
|
+
|
|
1118
|
+
Se [CONTRIBUTING.md](CONTRIBUTING.md) for detaljerte retningslinjer.
|
|
1119
|
+
|
|
1120
|
+
### Slipper en ny versjon
|
|
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
|
+
## 📊 Stjernehistorie
|
|
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
|
+
## 🙏 Anerkjennelser
|
|
1142
|
+
|
|
1143
|
+
Spesiell takk til **[9router](https://github.com/decolua/9router)** av **[decolua](https://github.com/decolua)** — det originale prosjektet som inspirerte denne gaffelen. OmniRoute bygger på det utrolige grunnlaget med tilleggsfunksjoner, multimodale APIer og en full TypeScript-omskriving.
|
|
1144
|
+
|
|
1145
|
+
Spesiell takk til **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — den originale Go-implementeringen som inspirerte denne JavaScript-porten.
|
|
1146
|
+
|
|
1147
|
+
---
|
|
1148
|
+
|
|
1149
|
+
## 📄 Lisens
|
|
1150
|
+
|
|
1151
|
+
MIT-lisens - se [LICENSE](LICENSE) for 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 for **modeller av IA GRATUITOS og de baixo custo** com reserve automático.
|
|
1162
|
+
|
|
1163
|
+
_Seu proxy universal de API — et endepunkt, 36+ tester, null nedetid._
|
|
1164
|
+
|
|
1165
|
+
### 🌐 Internacionalização (i18n)
|
|
1166
|
+
|
|
1167
|
+
O dashbordet for OmniRoute støtter **multiplos idiomas**. Atualmente disponível em:
|
|
1168
|
+
|
|
1169
|
+
| Idioma | Kode | Status |
|
|
1170
|
+
| --------------------- | ------- | ----------- |
|
|
1171
|
+
| 🇺🇸 Engelsk | `en` | ✅ Komplett |
|
|
1172
|
+
| 🇧🇷 Português (Brasil) | `pt-BR` | ✅ Komplett |
|
|
1173
|
+
|
|
1174
|
+
**Para trocar o idioma:** Clique no selector de idioma (🇺🇸 EN) no header do dashboard → selection o idioma desejado.
|
|
1175
|
+
|
|
1176
|
+
**Tillegg et nytt uttrykk:**
|
|
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` og `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** — Multiplas-innhold for testing com seleção inteligente
|
|
1206
|
+
- **Cache semântico** — Reduz custos e latência
|
|
1207
|
+
- **OAuth automático** — Tokens renovam automaticamente
|
|
1208
|
+
- **Personlig kombinasjoner** — 6 estratégias de roteamento
|
|
1209
|
+
- **Dashboard komplett** — Monitoramento, logger, analyser, konfigurasjoner
|
|
1210
|
+
- **CLI Tools** — Konfigurer Claude Code, Codex, Cursor, Cline com um clique
|
|
1211
|
+
- **100 % TypeScript** — Código limpo e tipado
|
|
1212
|
+
|
|
1213
|
+
### 📖 Dokumentasjon
|
|
1214
|
+
|
|
1215
|
+
| Documento | Beskrivelse |
|
|
1216
|
+
| ----------------------------------------------- | -------------------------------------------- |
|
|
1217
|
+
| [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, combos, CLI, distribuere |
|
|
1218
|
+
| [Referência da API](docs/API_REFERENCE.md) | Todos os endepunkter med eksempler |
|
|
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) | Oppsett av desenvolvimento og retningslinjer |
|
|
1222
|
+
| [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Fullfør: VM + nginx + Cloudflare |
|
|
1223
|
+
|
|
1224
|
+
### 📧 Støtte
|
|
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
|
+
- **Nettsted**: [omniroute.online](https://omniroute.online)
|
|
1229
|
+
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
|
1230
|
+
- **Problemer**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
|
1231
|
+
|
|
1232
|
+
---
|
|
1233
|
+
|
|
1234
|
+
<div align="center">
|
|
1235
|
+
<sub>Bygget med ❤️ for utviklere som koder 24/7</sub>
|
|
1236
|
+
<br/>
|
|
1237
|
+
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
|
1238
|
+
</div>
|