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.id.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 — Gerbang AI Gratis
|
|
5
|
+
|
|
6
|
+
🌐 **[English](#-omniroute--the-free-ai-gateway)** | **[Português (BR)](#-omniroute--gateway-de-ia-gratuito)**
|
|
7
|
+
|
|
8
|
+
### Jangan pernah berhenti membuat kode. Perutean cerdas ke **model AI GRATIS & berbiaya rendah** dengan fallback otomatis.
|
|
9
|
+
|
|
10
|
+
_Proksi API universal Anda — satu titik akhir, 36+ penyedia, tanpa waktu henti._
|
|
11
|
+
|
|
12
|
+
**Penyelesaian Obrolan • Penyematan • Pembuatan Gambar • Audio • Pemeringkatan Ulang • 100% TypeScript**
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
### 🤖 Penyedia AI gratis untuk agen coding favorit Anda
|
|
17
|
+
|
|
18
|
+
_Hubungkan alat IDE atau CLI apa pun yang didukung AI melalui OmniRoute — gerbang API gratis untuk pengkodean tanpa batas._
|
|
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>📡 Semua agen terhubung melalui <code>http://localhost:20128/v1</code> atau <code>http://cloud.omniroute.online/v1</code> — satu konfigurasi, model tak terbatas, dan kuota</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
|
+
## 🤔 Mengapa OmniRoute?
|
|
116
|
+
|
|
117
|
+
**Berhenti membuang-buang uang dan mencapai batas:**
|
|
118
|
+
|
|
119
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Kuota berlangganan habis tanpa terpakai setiap bulannya
|
|
120
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Batas kecepatan menghentikan Anda di tengah coding
|
|
121
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> API mahal ($20-50/bulan per penyedia)
|
|
122
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Peralihan antar penyedia secara manual
|
|
123
|
+
|
|
124
|
+
**OmniRoute memecahkan masalah ini:**
|
|
125
|
+
|
|
126
|
+
- ✅ **Maksimalkan langganan** - Lacak kuota, gunakan setiap bit sebelum menyetel ulang
|
|
127
|
+
- ✅ **Pengembalian otomatis** - Berlangganan → Kunci API → Murah → Gratis, tanpa downtime
|
|
128
|
+
- ✅ **Multi-akun** - Round-robin antar akun per penyedia
|
|
129
|
+
- ✅ **Universal** - Bekerja dengan Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, alat CLI apa pun
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 🔄 Cara Kerjanya
|
|
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
|
+
## ⚡ Mulai Cepat
|
|
163
|
+
|
|
164
|
+
**1. Instal secara global:**
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npm install -g omniroute
|
|
168
|
+
omniroute
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
🎉 Dasbor terbuka di `http://localhost:20128`
|
|
172
|
+
|
|
173
|
+
| Perintah | Deskripsi |
|
|
174
|
+
| ----------------------- | --------------------------------- |
|
|
175
|
+
| `omniroute` | Mulai server (port default 20128) |
|
|
176
|
+
| `omniroute --port 3000` | Gunakan port khusus |
|
|
177
|
+
| `omniroute --no-open` | Jangan buka otomatis browser |
|
|
178
|
+
| `omniroute --help` | Tampilkan bantuan |
|
|
179
|
+
|
|
180
|
+
**2. Hubungkan penyedia GRATIS:**
|
|
181
|
+
|
|
182
|
+
Dasbor → Penyedia → Hubungkan **Kode Claude** atau **Antigravitasi** → Login OAuth → Selesai!
|
|
183
|
+
|
|
184
|
+
**3. Gunakan di alat CLI Anda:**
|
|
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
|
+
**Selesai!** Mulai coding dengan model AI GRATIS.
|
|
194
|
+
|
|
195
|
+
**Alternatif — dijalankan dari sumber:**
|
|
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
|
+
## 🐳 buruh pelabuhan
|
|
206
|
+
|
|
207
|
+
OmniRoute tersedia sebagai image Docker publik di [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
|
208
|
+
|
|
209
|
+
**Lari cepat:**
|
|
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
|
+
**Dengan file lingkungan:**
|
|
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
|
+
**Menggunakan Docker Tulis:**
|
|
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
|
+
| Gambar | Tandai | Ukuran | Deskripsi |
|
|
246
|
+
| ------------------------ | -------- | ------- | -------------------- |
|
|
247
|
+
| `diegosouzapw/omniroute` | `latest` | ~250 MB | Rilis stabil terbaru |
|
|
248
|
+
| `diegosouzapw/omniroute` | `1.0.3` | ~250 MB | Versi saat ini |
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 💰 Sekilas tentang Harga
|
|
253
|
+
|
|
254
|
+
| Tingkat | Penyedia | Biaya | Reset Kuota | Terbaik Untuk |
|
|
255
|
+
| ------------------- | ----------------- | ------------------------- | ------------------------- | --------------------------- |
|
|
256
|
+
| **💳 BERLANGGANAN** | Kode Claude (Pro) | $20/bln | 5 jam + mingguan | Sudah berlangganan |
|
|
257
|
+
| | Kodeks (Plus/Pro) | $20-200/bln | 5 jam + mingguan | Pengguna OpenAI |
|
|
258
|
+
| | CLI Gemini | **GRATIS** | 180K/bln + 1K/hari | Setiap orang! |
|
|
259
|
+
| | Kopilot GitHub | $10-19/bln | Bulanan | Pengguna GitHub |
|
|
260
|
+
| **🔑 KUNCI API** | NVIDIA NIM | **GRATIS** (1000 sks) | Satu kali | Pengujian tingkat gratis |
|
|
261
|
+
| | Pencarian Dalam | Bayar per penggunaan | Tidak ada | Harga/kualitas terbaik |
|
|
262
|
+
| | Bagus | Tingkat gratis + berbayar | Tarif terbatas | Inferensi ultra-cepat |
|
|
263
|
+
| | xAI (Grok) | Bayar per penggunaan | Tidak ada | Model Grok |
|
|
264
|
+
| | Mistral | Tingkat gratis + berbayar | Tarif terbatas | AI Eropa |
|
|
265
|
+
| | BukaRouter | Bayar per penggunaan | Tidak ada | 100+ model |
|
|
266
|
+
| **💰 MURAH** | GLM-4.7 | $0,6/1 juta | Setiap hari pukul 10 pagi | Cadangan anggaran |
|
|
267
|
+
| | MiniMax M2.1 | $0,2/1 juta | 5 jam bergulir | Pilihan termurah |
|
|
268
|
+
| | Kimi K2 | $9/bln tetap | 10 juta token/bln | Biaya yang dapat diprediksi |
|
|
269
|
+
| **🆓 GRATIS** | iFlow | $0 | Tidak terbatas | 8 model gratis |
|
|
270
|
+
| | Qwen | $0 | Tidak terbatas | 3 model gratis |
|
|
271
|
+
| | Kiro | $0 | Tidak terbatas | Claude gratis |
|
|
272
|
+
|
|
273
|
+
**💡 Kiat Pro:** Mulai dengan Gemini CLI (gratis 180 ribu/bulan) + kombo iFlow (gratis tanpa batas) = biaya $0!
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## 🎯 Kasus Penggunaan
|
|
278
|
+
|
|
279
|
+
### Kasus 1: "Saya berlangganan Claude Pro"
|
|
280
|
+
|
|
281
|
+
**Masalah:** Kuota habis tanpa terpakai, batas kecepatan selama coding berat
|
|
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
|
+
### Kasus 2: "Saya ingin tanpa biaya"
|
|
294
|
+
|
|
295
|
+
**Masalah:** Tidak mampu berlangganan, memerlukan pengkodean AI yang andal
|
|
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
|
+
### Kasus 3: "Saya memerlukan pengkodean 24/7, tanpa gangguan"
|
|
308
|
+
|
|
309
|
+
**Masalah:** Tenggat waktu, tidak mampu membayar downtime
|
|
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
|
+
### Kasus 4: "Saya ingin AI GRATIS di OpenClaw"
|
|
323
|
+
|
|
324
|
+
**Masalah:** Membutuhkan asisten AI dalam aplikasi perpesanan, sepenuhnya 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
|
+
## 💡 Fitur Utama
|
|
339
|
+
|
|
340
|
+
### 🧠 Perutean & Kecerdasan Inti
|
|
341
|
+
|
|
342
|
+
| Fitur | Apa Fungsinya |
|
|
343
|
+
| ------------------------------------ | ---------------------------------------------------------------------------------- |
|
|
344
|
+
| 🎯 **Pengembalian 4 Tingkat Cerdas** | Rute otomatis: Berlangganan → Kunci API → Murah → Gratis |
|
|
345
|
+
| 📊 **Pelacakan Kuota Waktu Nyata** | Jumlah token langsung + setel ulang hitungan mundur per penyedia |
|
|
346
|
+
| 🔄 **Terjemahan Format** | OpenAI ↔ Claude ↔ Gemini ↔ Kursor ↔ Kiro mulus + sanitasi respons |
|
|
347
|
+
| 👥 **Dukungan Multi-Akun** | Banyak akun per penyedia dengan pilihan cerdas |
|
|
348
|
+
| 🔄 **Penyegaran Token Otomatis** | Token OAuth disegarkan secara otomatis dengan coba lagi |
|
|
349
|
+
| 🎨 **Kombo Khusus** | 6 strategi: isi dulu, round-robin, p2c, acak, paling jarang digunakan, hemat biaya |
|
|
350
|
+
| 🧩 **Model Khusus** | Tambahkan ID model apa pun ke penyedia mana pun |
|
|
351
|
+
| 🌐 **Router Wildcard** | Rutekan pola `provider/*` ke penyedia mana pun secara dinamis |
|
|
352
|
+
| 🧠 **Memikirkan Anggaran** | Mode passthrough, otomatis, kustom, dan adaptif untuk model penalaran |
|
|
353
|
+
| 💬 **Injeksi Perintah Sistem** | Perintah sistem global diterapkan di semua permintaan |
|
|
354
|
+
| 📄 **API Respons** | Dukungan penuh OpenAI Responses API (`/v1/responses`) untuk Codex |
|
|
355
|
+
|
|
356
|
+
### 🎵 API Multi-Modal
|
|
357
|
+
|
|
358
|
+
| Fitur | Apa Fungsinya |
|
|
359
|
+
| -------------------------- | ------------------------------------------------------ |
|
|
360
|
+
| 🖼️ **Pembuatan Gambar** | `/v1/images/generations` — 4 penyedia, 9+ model |
|
|
361
|
+
| 📐 **Sematan** | `/v1/embeddings` — 6 penyedia, 9+ model |
|
|
362
|
+
| 🎤 **Transkripsi Audio** | `/v1/audio/transcriptions` — Kompatibel dengan bisikan |
|
|
363
|
+
| 🔊 **Teks-ke-Ucapan** | `/v1/audio/speech` — Sintesis audio multi-penyedia |
|
|
364
|
+
| 🛡️ **Moderasi** | `/v1/moderations` — Pemeriksaan keamanan konten |
|
|
365
|
+
| 🔀 **Pemeringkatan Ulang** | `/v1/rerank` — Pemeringkatan ulang relevansi dokumen |
|
|
366
|
+
|
|
367
|
+
### 🛡️ Ketahanan & Keamanan
|
|
368
|
+
|
|
369
|
+
| Fitur | Apa Fungsinya |
|
|
370
|
+
| ------------------------------------ | ------------------------------------------------------------------------------------------ |
|
|
371
|
+
| 🔌 **Pemutus Arus** | Buka/tutup otomatis per penyedia dengan ambang batas yang dapat dikonfigurasi |
|
|
372
|
+
| 🛡️ **Kawanan Anti Guntur** | Batas kecepatan mutex + semaphore untuk penyedia kunci API |
|
|
373
|
+
| 🧠 **Cache Semantik** | Cache dua tingkat (tanda tangan + semantik) mengurangi biaya & latensi |
|
|
374
|
+
| ⚡ **Minta Idempotensi** | Jendela dedup 5 detik untuk permintaan duplikat |
|
|
375
|
+
| 🔒 **Spoofing Sidik Jari TLS** | Lewati deteksi bot berbasis TLS melalui wreq-js |
|
|
376
|
+
| 🌐 **Pemfilteran IP** | Daftar yang diizinkan/daftar blokir untuk kontrol akses API |
|
|
377
|
+
| 📊 **Batas Tarif yang Dapat Diedit** | RPM yang dapat dikonfigurasi, celah minimum, dan maks secara bersamaan pada tingkat sistem |
|
|
378
|
+
| 🛡 **Perlindungan Titik Akhir API** | Gerbang autentikasi + pemblokiran penyedia untuk titik akhir `/models` |
|
|
379
|
+
| 🔒 **Visibilitas Proksi** | Lencana berkode warna: 🟢 global, 🟡 penyedia, 🔵 per koneksi dengan tampilan IP |
|
|
380
|
+
| 🌐 **Konfigurasi Proksi 3 Tingkat** | Konfigurasikan proxy di tingkat global, per penyedia, atau per koneksi |
|
|
381
|
+
|
|
382
|
+
### 📊 Observabilitas & Analisis
|
|
383
|
+
|
|
384
|
+
| Fitur | Apa Fungsinya |
|
|
385
|
+
| ---------------------------- | ------------------------------------------------------------------------------- |
|
|
386
|
+
| 📝 **Permintaan Pencatatan** | Mode debug dengan log permintaan/respons lengkap |
|
|
387
|
+
| 💾 **Log Proksi SQLite** | Log proksi persisten bertahan saat server dimulai ulang |
|
|
388
|
+
| 📊 **Dasbor Analitik** | Didukung grafik ulang: kartu stat, bagan penggunaan model, tabel penyedia |
|
|
389
|
+
| 📈 **Pelacakan Kemajuan** | Ikut serta dalam acara kemajuan SSE untuk streaming |
|
|
390
|
+
| 🧪 **Evaluasi LLM** | Pengujian set emas dengan 4 strategi pertandingan |
|
|
391
|
+
| 🔍 **Permintaan Telemetri** | agregasi latensi p50/p95/p99 + penelusuran X-Request-Id |
|
|
392
|
+
| 📋 **Dasbor Log** | Halaman 4 tab terpadu: Log Permintaan, Log Proksi, Log Audit, Konsol |
|
|
393
|
+
| 🖥️ **Penampil Log Konsol** | Penampil gaya terminal real-time dengan filter level, pencarian, gulir otomatis |
|
|
394
|
+
| 📑 **Logging Berbasis File** | Pencegat konsol menangkap semua output ke file log JSON dengan rotasi |
|
|
395
|
+
| 🏥 **Dasbor Kesehatan** | Waktu aktif sistem, status pemutus sirkuit, penguncian, statistik cache |
|
|
396
|
+
| 💰 **Pelacakan Biaya** | Manajemen anggaran + konfigurasi harga per model |
|
|
397
|
+
|
|
398
|
+
### ☁️ Penerapan & Sinkronisasi
|
|
399
|
+
|
|
400
|
+
| Fitur | Apa Fungsinya |
|
|
401
|
+
| ---------------------------- | ---------------------------------------------------------------------------- |
|
|
402
|
+
| 💾 **Sinkronisasi Cloud** | Sinkronkan konfigurasi antar perangkat melalui Cloudflare Workers |
|
|
403
|
+
| 🌐 **Terapkan Di Mana Saja** | Localhost, VPS, Docker, Pekerja Cloudflare |
|
|
404
|
+
| 🔑 **Manajemen Kunci API** | Menghasilkan, memutar, dan mencakup kunci API per penyedia |
|
|
405
|
+
| 🧙 **Wizard Orientasi** | Penyiapan terpandu 4 langkah untuk pengguna pertama kali |
|
|
406
|
+
| 🔧 **Dasbor Alat CLI** | Konfigurasikan sekali klik Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
|
407
|
+
| 🔄 **Cadangan DB** | Pencadangan, pemulihan, ekspor & impor otomatis untuk semua pengaturan |
|
|
408
|
+
| 🌐 **Internasionalisasi** | I18n lengkap dengan next-intl — Dukungan Inggris + Portugis (Brasil) |
|
|
409
|
+
| 🌍 **Pemilih Bahasa** | Ikon bola dunia di header untuk peralihan bahasa secara real-time (🇮🇩/🇧🇷) |
|
|
410
|
+
| 📂 **Direktori Data Khusus** | `DATA_DIR` env var untuk mengganti jalur penyimpanan `~/.omniroute` default |
|
|
411
|
+
|
|
412
|
+
<details>
|
|
413
|
+
<summary><b>📖 Detail Fitur</b></summary>
|
|
414
|
+
|
|
415
|
+
### 🎯 Penggantian 4 Tingkat yang Cerdas
|
|
416
|
+
|
|
417
|
+
Buat kombo dengan fallback otomatis:
|
|
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
|
+
### 📊 Pelacakan Kuota Waktu Nyata
|
|
430
|
+
|
|
431
|
+
- Konsumsi token per penyedia
|
|
432
|
+
- Atur ulang hitungan mundur (5 jam, harian, mingguan)
|
|
433
|
+
- Estimasi biaya untuk tingkatan berbayar
|
|
434
|
+
- Laporan pengeluaran bulanan
|
|
435
|
+
|
|
436
|
+
### 🔄 Format Terjemahan
|
|
437
|
+
|
|
438
|
+
Terjemahan mulus antar format:
|
|
439
|
+
|
|
440
|
+
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **Respon OpenAI**
|
|
441
|
+
- Alat CLI Anda mengirimkan format OpenAI → OmniRoute menerjemahkan → Penyedia menerima format asli
|
|
442
|
+
- Bekerja dengan alat apa pun yang mendukung titik akhir OpenAI khusus
|
|
443
|
+
- **Sanitasi respons** — Menghapus kolom non-standar untuk kompatibilitas OpenAI SDK yang ketat
|
|
444
|
+
- **Normalisasi peran** — `developer` → `system` untuk non-OpenAI; `system` → `user` untuk model GLM/ERNIE
|
|
445
|
+
- **Think tag ekstraksi** — `<think>` blok → `reasoning_content` untuk model berpikir
|
|
446
|
+
- **Keluaran terstruktur** — `json_schema` → `responseMimeType`/`responseSchema` Gemini
|
|
447
|
+
|
|
448
|
+
### 👥 Dukungan Multi-Akun
|
|
449
|
+
|
|
450
|
+
- Tambahkan beberapa akun per penyedia
|
|
451
|
+
- Perutean otomatis round-robin atau berbasis prioritas
|
|
452
|
+
- Penggantian ke akun berikutnya ketika ada yang mencapai kuota
|
|
453
|
+
|
|
454
|
+
### 🔄 Penyegaran Token Otomatis
|
|
455
|
+
|
|
456
|
+
- Token OAuth secara otomatis disegarkan sebelum masa berlakunya habis
|
|
457
|
+
- Tidak diperlukan otentikasi ulang manual
|
|
458
|
+
- Pengalaman mulus di semua penyedia
|
|
459
|
+
|
|
460
|
+
### 🎨 Kombo Khusus
|
|
461
|
+
|
|
462
|
+
- Buat kombinasi model tanpa batas
|
|
463
|
+
- 6 strategi: isi pertama, round-robin, kekuatan dua pilihan, acak, paling jarang digunakan, hemat biaya
|
|
464
|
+
- Bagikan kombo di seluruh perangkat dengan Cloud Sync
|
|
465
|
+
|
|
466
|
+
### 🏥 Dasbor Kesehatan
|
|
467
|
+
|
|
468
|
+
- Status sistem (waktu aktif, versi, penggunaan memori)
|
|
469
|
+
- Status pemutus sirkuit per penyedia (Tertutup/Terbuka/Setengah Terbuka)
|
|
470
|
+
- Status batas tarif dan penguncian aktif
|
|
471
|
+
- Statistik cache tanda tangan
|
|
472
|
+
- Telemetri latensi (p50/p95/p99) + cache cepat
|
|
473
|
+
- Atur ulang status kesehatan dengan satu klik
|
|
474
|
+
|
|
475
|
+
### 🔧 Taman Bermain Penerjemah
|
|
476
|
+
|
|
477
|
+
OmniRoute menyertakan Taman Bermain Penerjemah bawaan yang canggih dengan **4 mode** untuk melakukan debug, menguji, dan memantau terjemahan API:
|
|
478
|
+
|
|
479
|
+
| Modus | Deskripsi |
|
|
480
|
+
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
481
|
+
| **💻 Taman bermain** | Terjemahan format langsung — tempelkan isi permintaan API apa pun dan langsung lihat bagaimana OmniRoute menerjemahkannya antar format penyedia (OpenAI ↔ Claude ↔ Gemini ↔ Responses API). Termasuk contoh templat dan deteksi otomatis format. |
|
|
482
|
+
| **💬 Penguji Obrolan** | Kirim permintaan obrolan nyata melalui OmniRoute dan lihat perjalanan pulang pergi selengkapnya: masukan Anda, permintaan yang diterjemahkan, respons penyedia, dan respons yang diterjemahkan kembali. Sangat berharga untuk memvalidasi perutean kombo. |
|
|
483
|
+
| **🧪 Bangku Tes** | Mode pengujian batch — tentukan beberapa kasus pengujian dengan masukan berbeda dan keluaran yang diharapkan, jalankan semuanya sekaligus, dan bandingkan hasilnya di seluruh penyedia dan model. |
|
|
484
|
+
| **📱 Monitor Langsung** | Pemantauan permintaan waktu nyata — perhatikan permintaan masuk saat mengalir melalui OmniRoute, lihat terjemahan format yang terjadi secara langsung, dan identifikasi masalah secara instan. |
|
|
485
|
+
|
|
486
|
+
**Akses:** Dasbor → Penerjemah (bilah samping)
|
|
487
|
+
|
|
488
|
+
### 💾 Sinkronisasi Awan
|
|
489
|
+
|
|
490
|
+
- Sinkronisasi penyedia, kombo, dan pengaturan di seluruh perangkat
|
|
491
|
+
- Sinkronisasi latar belakang otomatis
|
|
492
|
+
- Penyimpanan terenkripsi yang aman
|
|
493
|
+
|
|
494
|
+
</details>
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## 📖 Panduan Pengaturan
|
|
499
|
+
|
|
500
|
+
<details>
|
|
501
|
+
<summary><b>💳 Penyedia Langganan</b></summary>
|
|
502
|
+
|
|
503
|
+
### Kode Claude (Pro/Maks)
|
|
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
|
+
**Kiat Pro:** Gunakan Opus untuk tugas kompleks, Soneta untuk kecepatan. OmniRoute melacak kuota per model!
|
|
517
|
+
|
|
518
|
+
### Kodeks OpenAI (Plus/Pro)
|
|
519
|
+
|
|
520
|
+
```bash
|
|
521
|
+
Dashboard → Providers → Connect Codex
|
|
522
|
+
→ OAuth login (port 1455)
|
|
523
|
+
→ 5-hour + weekly reset
|
|
524
|
+
|
|
525
|
+
Models:
|
|
526
|
+
cx/gpt-5.2-codex
|
|
527
|
+
cx/gpt-5.1-codex-max
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Gemini CLI (GRATIS 180K/bulan!)
|
|
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
|
+
**Nilai Terbaik:** Tingkat gratis yang sangat besar! Gunakan ini sebelum tingkatan berbayar.
|
|
543
|
+
|
|
544
|
+
### Kopilot GitHub
|
|
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>🔑 Penyedia Kunci API</b></summary>
|
|
561
|
+
|
|
562
|
+
### NVIDIA NIM (GRATIS 1000 kredit!)
|
|
563
|
+
|
|
564
|
+
1. Daftar: [build.nvidia.com](https://build.nvidia.com)
|
|
565
|
+
2. Dapatkan kunci API gratis (termasuk 1000 kredit inferensi)
|
|
566
|
+
3. Dasbor → Tambah Penyedia → NVIDIA NIM:
|
|
567
|
+
- Kunci API: `nvapi-your-key`
|
|
568
|
+
|
|
569
|
+
**Model:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, dan 50+ lainnya
|
|
570
|
+
|
|
571
|
+
**Kiat Pro:** API yang kompatibel dengan OpenAI — bekerja secara lancar dengan terjemahan format OmniRoute!
|
|
572
|
+
|
|
573
|
+
### Pencarian Dalam
|
|
574
|
+
|
|
575
|
+
1. Daftar: [platform.deepseek.com](https://platform.deepseek.com)
|
|
576
|
+
2. Dapatkan kunci API
|
|
577
|
+
3. Dasbor → Tambah Penyedia → DeepSeek
|
|
578
|
+
|
|
579
|
+
**Model:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
|
580
|
+
|
|
581
|
+
### Groq (Tersedia Tingkat Gratis!)
|
|
582
|
+
|
|
583
|
+
1. Daftar: [console.groq.com](https://console.groq.com)
|
|
584
|
+
2. Dapatkan kunci API (termasuk tingkat gratis)
|
|
585
|
+
3. Dasbor → Tambah Penyedia → Groq
|
|
586
|
+
|
|
587
|
+
**Model:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
|
588
|
+
|
|
589
|
+
**Kiat Pro:** Inferensi ultra-cepat — terbaik untuk pengkodean waktu nyata!
|
|
590
|
+
|
|
591
|
+
### OpenRouter (100+ Model)
|
|
592
|
+
|
|
593
|
+
1. Daftar: [openrouter.ai](https://openrouter.ai)
|
|
594
|
+
2. Dapatkan kunci API
|
|
595
|
+
3. Dasbor → Tambah Penyedia → OpenRouter
|
|
596
|
+
|
|
597
|
+
**Model:** Akses 100+ model dari semua penyedia utama melalui satu kunci API.
|
|
598
|
+
|
|
599
|
+
</details>
|
|
600
|
+
|
|
601
|
+
<details>
|
|
602
|
+
<summary><b>💰 Penyedia Murah (Cadangan)</b></summary>
|
|
603
|
+
|
|
604
|
+
### GLM-4.7 (Reset harian, $0,6/1 juta)
|
|
605
|
+
|
|
606
|
+
1. Daftar: [Zhipu AI](https://open.bigmodel.cn/)
|
|
607
|
+
2. Dapatkan kunci API dari Coding Plan
|
|
608
|
+
3. Dasbor → Tambahkan Kunci API:
|
|
609
|
+
- Penyedia: `glm`
|
|
610
|
+
- Kunci API: `your-key`
|
|
611
|
+
|
|
612
|
+
**Gunakan:** `glm/glm-4.7`
|
|
613
|
+
|
|
614
|
+
**Tips Pro:** Paket Coding menawarkan 3× kuota dengan biaya 1/7! Reset setiap hari pukul 10.00.
|
|
615
|
+
|
|
616
|
+
### MiniMax M2.1 (reset 5 jam, $0,20/1 juta)
|
|
617
|
+
|
|
618
|
+
1. Daftar: [MiniMax](https://www.minimax.io/)
|
|
619
|
+
2. Dapatkan kunci API
|
|
620
|
+
3. Dasbor → Tambahkan Kunci API
|
|
621
|
+
|
|
622
|
+
**Gunakan:** `minimax/MiniMax-M2.1`
|
|
623
|
+
|
|
624
|
+
**Kiat Pro:** Opsi termurah untuk konteks panjang (1 juta token)!
|
|
625
|
+
|
|
626
|
+
### Kimi K2 ($9/bulan tetap)
|
|
627
|
+
|
|
628
|
+
1. Berlangganan: [Moonshot AI](https://platform.moonshot.ai/)
|
|
629
|
+
2. Dapatkan kunci API
|
|
630
|
+
3. Dasbor → Tambahkan Kunci API
|
|
631
|
+
|
|
632
|
+
**Gunakan:** `kimi/kimi-latest`
|
|
633
|
+
|
|
634
|
+
**Kiat Pro:** Memperbaiki $9/bulan untuk 10 juta token = biaya efektif $0,90/1 juta!
|
|
635
|
+
|
|
636
|
+
</details>
|
|
637
|
+
|
|
638
|
+
<details>
|
|
639
|
+
<summary><b>🆓 Penyedia GRATIS (Cadangan Darurat)</b></summary>
|
|
640
|
+
|
|
641
|
+
### iFlow (8 model GRATIS)
|
|
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 model GRATIS)
|
|
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 GRATIS)
|
|
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>🎨 Buat Kombo</b></summary>
|
|
684
|
+
|
|
685
|
+
### Contoh 1: Maksimalkan Langganan → Cadangan Murah
|
|
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
|
+
### Contoh 2: Gratis Saja (Tanpa Biaya)
|
|
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>🔧 Integrasi CLI</b></summary>
|
|
715
|
+
|
|
716
|
+
### IDE Kursor
|
|
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
|
+
### Kode Claude
|
|
726
|
+
|
|
727
|
+
Gunakan halaman **Alat CLI** di dasbor untuk konfigurasi sekali klik, atau edit `~/.claude/settings.json` secara manual.
|
|
728
|
+
|
|
729
|
+
### Kodeks 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
|
+
### Buka Cakar
|
|
739
|
+
|
|
740
|
+
**Opsi 1 — Dasbor (disarankan):**
|
|
741
|
+
|
|
742
|
+
```
|
|
743
|
+
Dashboard → CLI Tools → OpenClaw → Select Model → Apply
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
**Opsi 2 — Panduan:** Sunting `~/.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
|
+
> **Catatan:** OpenClaw hanya berfungsi dengan OmniRoute lokal. Gunakan `127.0.0.1` alih-alih `localhost` untuk menghindari masalah resolusi IPv6.
|
|
763
|
+
|
|
764
|
+
### Cline / Lanjutkan / 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
|
+
## 📊 Model yang Tersedia
|
|
779
|
+
|
|
780
|
+
<details>
|
|
781
|
+
<summary><b>Lihat semua model yang tersedia</b></summary>
|
|
782
|
+
|
|
783
|
+
**Kode Claude (`cc/`)** - Pro/Maks:
|
|
784
|
+
|
|
785
|
+
- `cc/claude-opus-4-6`
|
|
786
|
+
- `cc/claude-sonnet-4-5-20250929`
|
|
787
|
+
- `cc/claude-haiku-4-5-20251001`
|
|
788
|
+
|
|
789
|
+
**Kodeks (`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
|
+
**Copilot GitHub (`gh/`)**:
|
|
800
|
+
|
|
801
|
+
- `gh/gpt-5`
|
|
802
|
+
- `gh/claude-4.5-sonnet`
|
|
803
|
+
|
|
804
|
+
**NVIDIA NIM (`nvidia/`)** - Kredit GRATIS:
|
|
805
|
+
|
|
806
|
+
- `nvidia/llama-3.3-70b-instruct`
|
|
807
|
+
- `nvidia/mistral-7b-instruct`
|
|
808
|
+
- 50+ model lainnya di [build.nvidia.com](https://build.nvidia.com)
|
|
809
|
+
|
|
810
|
+
**GLM (`glm/`)** - $0,6/1 juta:
|
|
811
|
+
|
|
812
|
+
- `glm/glm-4.7`
|
|
813
|
+
|
|
814
|
+
**MiniMax (`minimax/`)** - $0,2/1 juta:
|
|
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+ model:
|
|
837
|
+
|
|
838
|
+
- `or/anthropic/claude-4-sonnet`
|
|
839
|
+
- `or/google/gemini-2.5-pro`
|
|
840
|
+
- Model apa pun dari [openrouter.ai/models](https://openrouter.ai/models)
|
|
841
|
+
|
|
842
|
+
</details>
|
|
843
|
+
|
|
844
|
+
---
|
|
845
|
+
|
|
846
|
+
## 🧪 Evaluasi (Eval)
|
|
847
|
+
|
|
848
|
+
OmniRoute menyertakan kerangka evaluasi bawaan untuk menguji kualitas respons LLM terhadap rangkaian emas. Akses melalui **Analytics → Evals** di dasbor.
|
|
849
|
+
|
|
850
|
+
### Set Emas Bawaan
|
|
851
|
+
|
|
852
|
+
"OmniRoute Golden Set" yang dimuat sebelumnya berisi 10 kasus uji yang meliputi:
|
|
853
|
+
|
|
854
|
+
- Salam, matematika, geografi, pembuatan kode
|
|
855
|
+
- Kepatuhan format JSON, terjemahan, penurunan harga
|
|
856
|
+
- Penolakan keamanan (konten berbahaya), penghitungan, logika boolean
|
|
857
|
+
|
|
858
|
+
### Strategi Evaluasi
|
|
859
|
+
|
|
860
|
+
| Strategi | Deskripsi | Contoh |
|
|
861
|
+
| ---------- | ------------------------------------------------------------ | -------------------------------- |
|
|
862
|
+
| `exact` | Output harus sama persis | `"4"` |
|
|
863
|
+
| `contains` | Output harus berisi substring (tidak peka huruf besar-kecil) | `"Paris"` |
|
|
864
|
+
| `regex` | Output harus sesuai dengan pola regex | `"1.*2.*3"` |
|
|
865
|
+
| `custom` | Fungsi JS khusus mengembalikan benar/salah | `(output) => output.length > 10` |
|
|
866
|
+
|
|
867
|
+
---
|
|
868
|
+
|
|
869
|
+
## 🔐 OAuth em Servidor Remoto (Pengaturan OAuth Jarak Jauh)
|
|
870
|
+
|
|
871
|
+
<a name="oauth-em-servidor-remoto"></a>
|
|
872
|
+
|
|
873
|
+
> **⚠️ PENTING bagi pengguna dengan OmniRoute pada VPS/Docker/server jarak jauh**
|
|
874
|
+
|
|
875
|
+
### Mengapa OAuth melakukan Antigravity / Gemini CLI gagal dalam layanan jarak jauh?
|
|
876
|
+
|
|
877
|
+
Pembuktiannya **Antigravitasi** dan **Gemini CLI** digunakan **Google OAuth 2.0** untuk autentikasi. Google meminta agar `redirect_uri` menggunakan OAuth yang terus berubah, jadi **exatamente** adalah URI yang sudah ada sebelumnya di Google Cloud Console yang dapat diterapkan.
|
|
878
|
+
|
|
879
|
+
Karena kredensial OAuth yang diberikan pada OmniRoute adalah kadastrada **apenas untuk `localhost`**. Ketika Anda mengakses OmniRoute dari server jarak jauh (misal: `https://omniroute.meuservidor.com`), atau Google meminta autenticação com:
|
|
880
|
+
|
|
881
|
+
```
|
|
882
|
+
Error 400: redirect_uri_mismatch
|
|
883
|
+
```
|
|
884
|
+
|
|
885
|
+
### Solusi: Konfigurasikan akun OAuth Anda
|
|
886
|
+
|
|
887
|
+
Anda perlu membuat **ID Klien OAuth 2.0** di Google Cloud Console dengan URI di server Anda.
|
|
888
|
+
|
|
889
|
+
#### Lewati dulu
|
|
890
|
+
|
|
891
|
+
**1. Mengakses Google Cloud Console**
|
|
892
|
+
|
|
893
|
+
Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
|
|
894
|
+
|
|
895
|
+
**2. Inilah ID Klien OAuth 2.0 yang baru**
|
|
896
|
+
|
|
897
|
+
- Klik pada **"+ Buat Kredensial"** → **"ID klien OAuth"**
|
|
898
|
+
- Tip aplikasi: **"Aplikasi web"**
|
|
899
|
+
- Nama: nama escolha qualquer (misal: `OmniRoute Remote`)
|
|
900
|
+
|
|
901
|
+
**3. Tambahan sebagai URI Pengalihan Resmi**
|
|
902
|
+
|
|
903
|
+
Selain itu **"URI pengalihan resmi"**, tambahan:
|
|
904
|
+
|
|
905
|
+
```
|
|
906
|
+
https://seu-servidor.com/callback
|
|
907
|
+
```
|
|
908
|
+
|
|
909
|
+
> Pengganti `seu-servidor.com` pelo domínio atau IP ke server Anda (termasuk port yang diperlukan, misal: `http://45.33.32.156:20128/callback`).
|
|
910
|
+
|
|
911
|
+
**4. Salep dan salin sebagai kredensial**
|
|
912
|
+
|
|
913
|
+
Kemudian, Google menampilkan **ID Klien** dan **Rahasia Klien**.
|
|
914
|
+
|
|
915
|
+
**5. Konfigurasikan sebagai variáveis de ambiente**
|
|
916
|
+
|
|
917
|
+
Di `.env` (atau berbagai lingkungan di 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. Memulai kembali 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. Mari kita sambungkan lagi**
|
|
941
|
+
|
|
942
|
+
Dasbor → Penyedia → Antigravitasi (atau Gemini CLI) → OAuth
|
|
943
|
+
|
|
944
|
+
Sekarang o Google dialihkan langsung ke `https://seu-servidor.com/callback` dan autentikasi berfungsi.
|
|
945
|
+
|
|
946
|
+
---
|
|
947
|
+
|
|
948
|
+
### Solusi sementara (sem configurar credenciais próprias)
|
|
949
|
+
|
|
950
|
+
Jika Anda tidak ingin membuat kredensial pribadi sekarang, Anda mungkin dapat menggunakan fluks **panduan URL**:
|
|
951
|
+
|
|
952
|
+
1. O OmniRoute membuka URL autoriza dari Google
|
|
953
|
+
2. Setelah Anda autorizar, Google mengarahkan pengalihan ke `localhost` (yang gagal pada server jarak jauh)
|
|
954
|
+
3. **Salin URL lengkap** dari bilah akhir browser Anda (meskipun halaman tidak dimuat)
|
|
955
|
+
4. Gunakan URL ini karena tidak ada modal koneksi ke OmniRoute
|
|
956
|
+
5. Klik pada **"Hubungkan"**
|
|
957
|
+
|
|
958
|
+
> Solusi ini berfungsi karena kode otorisasi pada URL valid secara independen untuk mengarahkan ulang ke akun atau tidak.
|
|
959
|
+
|
|
960
|
+
---
|
|
961
|
+
|
|
962
|
+
## 🐛 Pemecahan masalah
|
|
963
|
+
|
|
964
|
+
<details>
|
|
965
|
+
<summary><b>Klik untuk memperluas panduan pemecahan masalah</b></summary>
|
|
966
|
+
|
|
967
|
+
**"Model bahasa tidak memberikan pesan"**
|
|
968
|
+
|
|
969
|
+
- Kuota penyedia habis → Periksa dashboard pelacak kuota
|
|
970
|
+
- Solusi: Gunakan combo fallback atau beralih ke tier yang lebih murah
|
|
971
|
+
|
|
972
|
+
**Pembatasan tarif**
|
|
973
|
+
|
|
974
|
+
- Kuota berlangganan habis → Penggantian ke GLM/MiniMax
|
|
975
|
+
- Tambahkan kombo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
976
|
+
|
|
977
|
+
**Token OAuth kedaluwarsa**
|
|
978
|
+
|
|
979
|
+
- Disegarkan secara otomatis oleh OmniRoute
|
|
980
|
+
- Jika masalah terus berlanjut: Dasbor → Penyedia → Sambungkan kembali
|
|
981
|
+
|
|
982
|
+
**Biaya tinggi**
|
|
983
|
+
|
|
984
|
+
- Periksa statistik penggunaan di Dashboard → Biaya
|
|
985
|
+
- Ganti model utama ke GLM/MiniMax
|
|
986
|
+
- Gunakan tingkat gratis (Gemini CLI, iFlow) untuk tugas-tugas yang tidak penting
|
|
987
|
+
|
|
988
|
+
**Dasbor terbuka pada port yang salah**
|
|
989
|
+
|
|
990
|
+
- Tetapkan `PORT=20128` dan `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
|
991
|
+
|
|
992
|
+
**Kesalahan sinkronisasi cloud**
|
|
993
|
+
|
|
994
|
+
- Verifikasi `BASE_URL` poin ke instance Anda yang sedang berjalan
|
|
995
|
+
- Verifikasi `CLOUD_URL` poin ke titik akhir cloud yang Anda harapkan
|
|
996
|
+
- Jaga agar nilai `NEXT_PUBLIC_*` selaras dengan nilai sisi server
|
|
997
|
+
|
|
998
|
+
**Login pertama tidak berfungsi**
|
|
999
|
+
|
|
1000
|
+
- Periksa `INITIAL_PASSWORD` di `.env`
|
|
1001
|
+
- Jika tidak disetel, kata sandi cadangan adalah `123456`
|
|
1002
|
+
|
|
1003
|
+
**Tidak ada log permintaan**
|
|
1004
|
+
|
|
1005
|
+
- Tetapkan `ENABLE_REQUEST_LOGS=true` di `.env`
|
|
1006
|
+
|
|
1007
|
+
**Tes koneksi menunjukkan "Tidak Valid" untuk penyedia yang kompatibel dengan OpenAI**
|
|
1008
|
+
|
|
1009
|
+
- Banyak penyedia tidak mengekspos titik akhir `/models`
|
|
1010
|
+
- OmniRoute v1.0.6+ menyertakan validasi fallback melalui penyelesaian obrolan
|
|
1011
|
+
- Pastikan URL dasar menyertakan akhiran `/v1`
|
|
1012
|
+
|
|
1013
|
+
</details>
|
|
1014
|
+
|
|
1015
|
+
---
|
|
1016
|
+
|
|
1017
|
+
## 🛠️ Tumpukan Teknologi
|
|
1018
|
+
|
|
1019
|
+
- **Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+ **tidak didukung** — `better-sqlite3` biner asli tidak kompatibel)
|
|
1020
|
+
- **Bahasa**: TypeScript 5.9 — **100% TypeScript** di `src/` dan `open-sse/` (v1.0.6)
|
|
1021
|
+
- **Kerangka Kerja**: Next.js 16 + React 19 + Tailwind CSS 4
|
|
1022
|
+
- **Database**: LowDB (JSON) + SQLite (status domain + log proksi)
|
|
1023
|
+
- **Streaming**: Peristiwa Terkirim Server (SSE)
|
|
1024
|
+
- **Auth**: OAuth 2.0 (PKCE) + JWT + Kunci API
|
|
1025
|
+
- **Pengujian**: pelari pengujian Node.js (368+ pengujian unit)
|
|
1026
|
+
- **CI/CD**: Tindakan GitHub (publikasi npm otomatis + Docker Hub saat dirilis)
|
|
1027
|
+
- **Situs Web**: [omniroute.online](https://omniroute.online)
|
|
1028
|
+
- **Paket**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
|
|
1029
|
+
- **Pekerja Pelabuhan**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
|
|
1030
|
+
- **Ketahanan**: Pemutus sirkuit, kemunduran eksponensial, kawanan anti-guntur, spoofing TLS
|
|
1031
|
+
|
|
1032
|
+
---
|
|
1033
|
+
|
|
1034
|
+
## 📖 Dokumentasi
|
|
1035
|
+
|
|
1036
|
+
| Dokumen | Deskripsi |
|
|
1037
|
+
| -------------------------------------------- | --------------------------------------------------- |
|
|
1038
|
+
| [User Guide](docs/USER_GUIDE.md) | Penyedia, kombo, integrasi CLI, penerapan |
|
|
1039
|
+
| [API Reference](docs/API_REFERENCE.md) | Semua titik akhir dengan contoh |
|
|
1040
|
+
| [Troubleshooting](docs/TROUBLESHOOTING.md) | Masalah umum dan solusinya |
|
|
1041
|
+
| [Architecture](docs/ARCHITECTURE.md) | Arsitektur sistem dan internal |
|
|
1042
|
+
| [Contributing](CONTRIBUTING.md) | Pengaturan dan pedoman pengembangan |
|
|
1043
|
+
| [OpenAPI Spec](docs/openapi.yaml) | Spesifikasi OpenAPI 3.0 |
|
|
1044
|
+
| [Security Policy](SECURITY.md) | Pelaporan kerentanan dan praktik keamanan |
|
|
1045
|
+
| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Panduan lengkap: VM + nginx + Pengaturan Cloudflare |
|
|
1046
|
+
| [Features Gallery](docs/FEATURES.md) | Tur dasbor visual dengan tangkapan layar |
|
|
1047
|
+
|
|
1048
|
+
### 📸 Pratinjau Dasbor
|
|
1049
|
+
|
|
1050
|
+
<details>
|
|
1051
|
+
<summary><b>Klik untuk melihat tangkapan layar dasbor</b></summary>
|
|
1052
|
+
|
|
1053
|
+
| Halaman | Tangkapan layar |
|
|
1054
|
+
| ------------------ | ------------------------------------------------- |
|
|
1055
|
+
| **Penyedia** |  |
|
|
1056
|
+
| **Kombo** |  |
|
|
1057
|
+
| **Analitik** |  |
|
|
1058
|
+
| **Kesehatan** |  |
|
|
1059
|
+
| **Penerjemah** |  |
|
|
1060
|
+
| **Pengaturan** |  |
|
|
1061
|
+
| **Alat CLI** |  |
|
|
1062
|
+
| **Log Penggunaan** |  |
|
|
1063
|
+
| **Titik Akhir** |  |
|
|
1064
|
+
|
|
1065
|
+
</details>
|
|
1066
|
+
|
|
1067
|
+
---
|
|
1068
|
+
|
|
1069
|
+
## 🗺️ Peta Jalan
|
|
1070
|
+
|
|
1071
|
+
OmniRoute memiliki **210+ fitur yang direncanakan** di berbagai fase pengembangan. Berikut adalah bidang-bidang utamanya:
|
|
1072
|
+
|
|
1073
|
+
| Kategori | Fitur yang Direncanakan | Sorotan |
|
|
1074
|
+
| ---------------------------- | ----------------------- | --------------------------------------------------------------------------------------------------- |
|
|
1075
|
+
| 🧠 **Perutean & Kecerdasan** | 25+ | Perutean latensi terendah, perutean berbasis tag, preflight kuota, pemilihan akun P2C |
|
|
1076
|
+
| 🔒 **Keamanan & Kepatuhan** | 20+ | Pengerasan SSRF, penyelubungan kredensial, batas tarif per titik akhir, pelingkupan kunci manajemen |
|
|
1077
|
+
| 📊 **Kemampuan Observasi** | 15+ | Integrasi OpenTelemetry, pemantauan kuota waktu nyata, pelacakan biaya per model |
|
|
1078
|
+
| 🔄 **Integrasi Penyedia** | 20+ | Registri model dinamis, cooldown penyedia, Codex multi-akun, penguraian kuota Salinan |
|
|
1079
|
+
| ⚡ **Kinerja** | 15+ | Lapisan cache ganda, cache cepat, cache respons, streaming keepalive, API batch |
|
|
1080
|
+
| 🌐 **Ekosistem** | 10+ | WebSocket API, konfigurasi hot-reload, penyimpanan konfigurasi terdistribusi, mode komersial |
|
|
1081
|
+
|
|
1082
|
+
### 🔜 Segera Hadir
|
|
1083
|
+
|
|
1084
|
+
- 🔗 **Integrasi OpenCode** — Dukungan penyedia asli untuk IDE pengkodean AI OpenCode
|
|
1085
|
+
- 🔗 **Integrasi TRAE** — Dukungan penuh untuk kerangka pengembangan AI TRAE
|
|
1086
|
+
- 📦 **Batch API** — Pemrosesan batch asinkron untuk permintaan massal
|
|
1087
|
+
- 🎯 **Perutean Berbasis Tag** — Merutekan permintaan berdasarkan tag dan metadata khusus
|
|
1088
|
+
- 💰 **Strategi Biaya Terendah** — Secara otomatis memilih penyedia termurah yang tersedia
|
|
1089
|
+
|
|
1090
|
+
> 📝 Spesifikasi fitur lengkap tersedia di [link](docs/new-features/) (217 spesifikasi detail)
|
|
1091
|
+
|
|
1092
|
+
---
|
|
1093
|
+
|
|
1094
|
+
## 📧 Dukungan
|
|
1095
|
+
|
|
1096
|
+
> 💬 **Bergabunglah dengan komunitas kami!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Dapatkan bantuan, berbagi kiat, dan dapatkan informasi terbaru.
|
|
1097
|
+
|
|
1098
|
+
- **Situs Web**: [omniroute.online](https://omniroute.online)
|
|
1099
|
+
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
|
1100
|
+
- **Masalah**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
|
1101
|
+
- **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
|
|
1102
|
+
- **Proyek Asli**: [9router by decolua](https://github.com/decolua/9router)
|
|
1103
|
+
|
|
1104
|
+
---
|
|
1105
|
+
|
|
1106
|
+
## 👥 Kontributor
|
|
1107
|
+
|
|
1108
|
+
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
|
1109
|
+
|
|
1110
|
+
### Cara Berkontribusi
|
|
1111
|
+
|
|
1112
|
+
1. Cabangkan repositori
|
|
1113
|
+
2. Buat cabang fitur Anda (`git checkout -b feature/amazing-feature`)
|
|
1114
|
+
3. Komit perubahan Anda (`git commit -m 'Add amazing feature'`)
|
|
1115
|
+
4. Dorong ke cabang (`git push origin feature/amazing-feature`)
|
|
1116
|
+
5. Buka Permintaan Tarik
|
|
1117
|
+
|
|
1118
|
+
Lihat [CONTRIBUTING.md](CONTRIBUTING.md) untuk panduan detailnya.
|
|
1119
|
+
|
|
1120
|
+
### Merilis Versi Baru
|
|
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
|
+
## 📊 Sejarah Bintang
|
|
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
|
+
## 🙏 Ucapan Terima Kasih
|
|
1142
|
+
|
|
1143
|
+
Terima kasih khusus kepada **[9router](https://github.com/decolua/9router)** oleh **[decolua](https://github.com/decolua)** — proyek asli yang menginspirasi fork ini. OmniRoute dibangun di atas fondasi luar biasa tersebut dengan fitur tambahan, API multi-modal, dan penulisan ulang TypeScript lengkap.
|
|
1144
|
+
|
|
1145
|
+
Terima kasih khusus kepada **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — implementasi Go asli yang menginspirasi port JavaScript ini.
|
|
1146
|
+
|
|
1147
|
+
---
|
|
1148
|
+
|
|
1149
|
+
## 📄 Lisensi
|
|
1150
|
+
|
|
1151
|
+
Lisensi MIT - lihat [LICENSE](LICENSE) untuk detailnya.
|
|
1152
|
+
|
|
1153
|
+
---
|
|
1154
|
+
|
|
1155
|
+
---
|
|
1156
|
+
|
|
1157
|
+
## 🇧🇷 OmniRoute — Gerbang IA Gratis
|
|
1158
|
+
|
|
1159
|
+
<a name="-omniroute--gateway-de-ia-gratuito"></a>
|
|
1160
|
+
|
|
1161
|
+
### Tidak ada kode apa pun. Roteamento cerdas untuk **model IA GRATIS dan hak istimewa** dengan fallback otomatis.
|
|
1162
|
+
|
|
1163
|
+
_Proksi universal API — um titik akhir, 36+ bukti, tanpa waktu henti._
|
|
1164
|
+
|
|
1165
|
+
### 🌐 Internasionalisasi (i18n)
|
|
1166
|
+
|
|
1167
|
+
Pada dasbor, lakukan OmniRoute mendukung **beberapa idiom**. Saat ini kami telah membagikannya:
|
|
1168
|
+
|
|
1169
|
+
| Idiom | Kode | Status |
|
|
1170
|
+
| --------------------- | ------- | ---------- |
|
|
1171
|
+
| 🇮🇩 Bahasa Inggris | `en` | ✅ Lengkap |
|
|
1172
|
+
| 🇧🇷 Português (Brasil) | `pt-BR` | ✅ Lengkap |
|
|
1173
|
+
|
|
1174
|
+
**Untuk trocar o idioma:** Klik no selector de idioma (🇮🇩 EN) no header do dashboard → pilih idioma yang diinginkan.
|
|
1175
|
+
|
|
1176
|
+
**Untuk menambahkan idiom baru:**
|
|
1177
|
+
|
|
1178
|
+
1. Teriak `src/i18n/messages/{codigo}.json` berdasarkan `en.json`
|
|
1179
|
+
2. Tambahan kode pada `src/i18n/config.ts` → `LOCALES` dan `LANGUAGES`
|
|
1180
|
+
3. Memulai kembali server
|
|
1181
|
+
|
|
1182
|
+
### ⚡ Mulai Cepat
|
|
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
|
+
### 🐳 buruh pelabuhan
|
|
1195
|
+
|
|
1196
|
+
```bash
|
|
1197
|
+
docker run -d --name omniroute -p 20128:20128 diegosouzapw/omniroute:latest
|
|
1198
|
+
```
|
|
1199
|
+
|
|
1200
|
+
### 🔑 Prinsip Fungsionalidades
|
|
1201
|
+
|
|
1202
|
+
- **36+ bukti IA** — Claude, GPT, Gemini, Llama, Qwen, DeepSeek, dan lainnya
|
|
1203
|
+
- **Roteamento inteligente** — Penggantian otomatis ke seluruh bukti
|
|
1204
|
+
- **Penulisan format** — OpenAI ↔ Claude ↔ Gemini secara otomatis
|
|
1205
|
+
- **Multi-konta** — Multi-konta berdasarkan pilihan yang cerdas
|
|
1206
|
+
- **Cache semântico** — Memulihkan biaya dan latensi
|
|
1207
|
+
- **OAuth otomatis** — Token diperbarui secara otomatis
|
|
1208
|
+
- **Kombo yang dipersonalisasi** — 6 strategi roteamento
|
|
1209
|
+
- **Dasbor lengkap** — Monitor, log, analisis, konfigurasi
|
|
1210
|
+
- **Alat CLI** — Konfigurasikan Kode Claude, Codex, Kursor, Cline com um klik
|
|
1211
|
+
- **100% TypeScript** — Kode limpo dan tipado
|
|
1212
|
+
|
|
1213
|
+
### 📖 Dokumentasi
|
|
1214
|
+
|
|
1215
|
+
| Dokumen | Deskripsi |
|
|
1216
|
+
| ----------------------------------------------- | ---------------------------------------- |
|
|
1217
|
+
| [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, kombo, CLI, terapkan |
|
|
1218
|
+
| [Referência da API](docs/API_REFERENCE.md) | Semua titik akhir dengan contoh |
|
|
1219
|
+
| [Solução de Problemas](docs/TROUBLESHOOTING.md) | Masalah Umum dan Solusi |
|
|
1220
|
+
| [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura dan internal dalam sistem |
|
|
1221
|
+
| [Contribuição](CONTRIBUTING.md) | Menyiapkan pedoman desenvolvimento |
|
|
1222
|
+
| [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Panduan lengkap: VM + nginx + Cloudflare |
|
|
1223
|
+
|
|
1224
|
+
### 📧 Dukungan
|
|
1225
|
+
|
|
1226
|
+
> 💬 **Entre to a comunidade!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Ban dúvidas, compartilhe dicas dan fique aktualizado.
|
|
1227
|
+
|
|
1228
|
+
- **Situs Web**: [omniroute.online](https://omniroute.online)
|
|
1229
|
+
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
|
1230
|
+
- **Masalah**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
|
1231
|
+
|
|
1232
|
+
---
|
|
1233
|
+
|
|
1234
|
+
<div align="center">
|
|
1235
|
+
<sub>Dibangun dengan ❤️ untuk pengembang yang membuat kode 24/7</sub>
|
|
1236
|
+
<br/>
|
|
1237
|
+
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
|
1238
|
+
</div>
|