omniroute 0.8.8 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +995 -0
- package/README.es.md +995 -0
- package/README.fr.md +995 -0
- package/README.it.md +995 -0
- package/README.md +694 -72
- package/README.pt-BR.md +995 -0
- package/README.ru.md +995 -0
- package/README.zh-CN.md +995 -0
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +21 -21
- 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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +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/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 +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route_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 +2 -2
- package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route_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/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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +2 -2
- package/app/.next/server/app/callback.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.html +1 -1
- package/app/.next/server/app/dashboard/analytics.rsc +4 -4
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/analytics.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +4 -4
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +4 -4
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.html +1 -1
- package/app/.next/server/app/dashboard/costs.rsc +4 -4
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +4 -4
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.html +1 -1
- package/app/.next/server/app/dashboard/health.rsc +4 -4
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/limits.html +2 -2
- package/app/.next/server/app/dashboard/limits.rsc +4 -4
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.html +1 -1
- package/app/.next/server/app/dashboard/onboarding.rsc +3 -3
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +3 -3
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.html +1 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +4 -4
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.html +1 -1
- package/app/.next/server/app/dashboard/providers.rsc +4 -4
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +3 -3
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.html +1 -1
- package/app/.next/server/app/dashboard/settings.rsc +4 -4
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.html +2 -2
- package/app/.next/server/app/dashboard/translator.rsc +4 -4
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +4 -4
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/docs/page.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs.html +1 -1
- package/app/.next/server/app/docs.rsc +2 -2
- package/app/.next/server/app/docs.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/docs.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden.html +1 -1
- package/app/.next/server/app/forbidden.rsc +2 -2
- package/app/.next/server/app/forbidden.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/forbidden.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password.html +1 -1
- package/app/.next/server/app/forgot-password.rsc +3 -3
- package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +2 -2
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +2 -2
- package/app/.next/server/app/landing.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +3 -3
- package/app/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy.html +1 -1
- package/app/.next/server/app/privacy.rsc +2 -2
- package/app/.next/server/app/privacy.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/privacy.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/privacy.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms.html +1 -1
- package/app/.next/server/app/terms.rsc +2 -2
- package/app/.next/server/app/terms.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/terms.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/terms.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
- package/app/.next/server/app-paths-manifest.json +21 -21
- package/app/.next/server/chunks/5583.js +1 -1
- package/app/.next/server/chunks/8369.js +1 -1
- package/app/.next/server/chunks/9824.js +1 -1
- package/app/.next/server/pages/404.html +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/{5846-b70d10291438712b.js → 5846-0541241939d8c7e3.js} +1 -1
- package/app/.next/static/chunks/{993-d43d3ceef35b3300.js → 993-b74bac8c882e8d1a.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{page-3ac21c16bcfde2e4.js → page-038687bc5d2c3bb5.js} +1 -1
- package/app/package.json +1 -1
- package/app/public/providers/ironclaw.png +0 -0
- package/app/public/providers/nanobot.png +0 -0
- package/app/public/providers/opencode.svg +18 -0
- package/app/public/providers/picoclaw.jpg +0 -0
- package/app/public/providers/zeroclaw.png +0 -0
- package/package.json +1 -1
- /package/app/.next/static/{xW2ax6VohvDsTIIwd1zWK → 8ACUE6hz9uxBNe_Q_ZH6y}/_buildManifest.js +0 -0
- /package/app/.next/static/{xW2ax6VohvDsTIIwd1zWK → 8ACUE6hz9uxBNe_Q_ZH6y}/_ssgManifest.js +0 -0
package/README.ru.md
ADDED
|
@@ -0,0 +1,995 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
|
|
3
|
+
|
|
4
|
+
# 🚀 OmniRoute — Бесплатный AI Gateway
|
|
5
|
+
|
|
6
|
+
### Никогда не прекращайте программировать. Умная маршрутизация к **БЕСПЛАТНЫМ и дешёвым AI-моделям** с автоматическим fallback.
|
|
7
|
+
|
|
8
|
+
_Ваш универсальный API-прокси — одна точка доступа, 36+ провайдеров, нулевой простой._
|
|
9
|
+
|
|
10
|
+
**Chat Completions • Embeddings • Генерация изображений • Аудио • Reranking • 100% TypeScript**
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
### 🤖 Бесплатный AI-провайдер для ваших любимых агентов программирования
|
|
15
|
+
|
|
16
|
+
_Подключайте любую IDE или CLI-инструмент с AI через OmniRoute — бесплатный API gateway для неограниченного программирования._
|
|
17
|
+
|
|
18
|
+
<table>
|
|
19
|
+
<tr>
|
|
20
|
+
<td align="center" width="110">
|
|
21
|
+
<a href="https://github.com/cline/cline">
|
|
22
|
+
<img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
|
|
23
|
+
<b>OpenClaw</b>
|
|
24
|
+
</a><br/>
|
|
25
|
+
<sub>⭐ 205K</sub>
|
|
26
|
+
</td>
|
|
27
|
+
<td align="center" width="110">
|
|
28
|
+
<a href="https://github.com/HKUDS/nanobot">
|
|
29
|
+
<img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
|
|
30
|
+
<b>NanoBot</b>
|
|
31
|
+
</a><br/>
|
|
32
|
+
<sub>⭐ 20.9K</sub>
|
|
33
|
+
</td>
|
|
34
|
+
<td align="center" width="110">
|
|
35
|
+
<a href="https://github.com/sipeed/picoclaw">
|
|
36
|
+
<img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
|
|
37
|
+
<b>PicoClaw</b>
|
|
38
|
+
</a><br/>
|
|
39
|
+
<sub>⭐ 14.6K</sub>
|
|
40
|
+
</td>
|
|
41
|
+
<td align="center" width="110">
|
|
42
|
+
<a href="https://github.com/zeroclaw-labs/zeroclaw">
|
|
43
|
+
<img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
|
|
44
|
+
<b>ZeroClaw</b>
|
|
45
|
+
</a><br/>
|
|
46
|
+
<sub>⭐ 9.9K</sub>
|
|
47
|
+
</td>
|
|
48
|
+
<td align="center" width="110">
|
|
49
|
+
<a href="https://github.com/nearai/ironclaw">
|
|
50
|
+
<img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
|
|
51
|
+
<b>IronClaw</b>
|
|
52
|
+
</a><br/>
|
|
53
|
+
<sub>⭐ 2.1K</sub>
|
|
54
|
+
</td>
|
|
55
|
+
</tr>
|
|
56
|
+
<tr>
|
|
57
|
+
<td align="center" width="110">
|
|
58
|
+
<a href="https://github.com/anomalyco/opencode">
|
|
59
|
+
<img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
|
|
60
|
+
<b>OpenCode</b>
|
|
61
|
+
</a><br/>
|
|
62
|
+
<sub>⭐ 106K</sub>
|
|
63
|
+
</td>
|
|
64
|
+
<td align="center" width="110">
|
|
65
|
+
<a href="https://github.com/openai/codex">
|
|
66
|
+
<img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
|
|
67
|
+
<b>Codex CLI</b>
|
|
68
|
+
</a><br/>
|
|
69
|
+
<sub>⭐ 60.8K</sub>
|
|
70
|
+
</td>
|
|
71
|
+
<td align="center" width="110">
|
|
72
|
+
<a href="https://github.com/anthropics/claude-code">
|
|
73
|
+
<img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
|
|
74
|
+
<b>Claude Code</b>
|
|
75
|
+
</a><br/>
|
|
76
|
+
<sub>⭐ 67.3K</sub>
|
|
77
|
+
</td>
|
|
78
|
+
<td align="center" width="110">
|
|
79
|
+
<a href="https://github.com/google-gemini/gemini-cli">
|
|
80
|
+
<img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
|
|
81
|
+
<b>Gemini CLI</b>
|
|
82
|
+
</a><br/>
|
|
83
|
+
<sub>⭐ 94.7K</sub>
|
|
84
|
+
</td>
|
|
85
|
+
<td align="center" width="110">
|
|
86
|
+
<a href="https://github.com/Kilo-Org/kilocode">
|
|
87
|
+
<img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
|
|
88
|
+
<b>Kilo Code</b>
|
|
89
|
+
</a><br/>
|
|
90
|
+
<sub>⭐ 15.5K</sub>
|
|
91
|
+
</td>
|
|
92
|
+
</tr>
|
|
93
|
+
</table>
|
|
94
|
+
|
|
95
|
+
<sub>📡 Все агенты подключаются через <code>http://localhost:20128/v1</code> или <code>http://cloud.omniroute.online/v1</code> — одна конфигурация, неограниченные модели и квота</sub>
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
[](https://www.npmjs.com/package/omniroute)
|
|
100
|
+
[](https://hub.docker.com/r/diegosouzapw/omniroute)
|
|
101
|
+
[](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
|
|
102
|
+
[](https://omniroute.online)
|
|
103
|
+
|
|
104
|
+
[🌐 Сайт](https://omniroute.online) • [🚀 Быстрый старт](#-быстрый-старт) • [💡 Функции](#-основные-функции) • [📖 Документация](#-документация) • [💰 Цены](#-обзор-цен)
|
|
105
|
+
|
|
106
|
+
🌐 **Доступно на:** [English](README.md) | [Português](README.pt-BR.md) | [Español](README.es.md) | [Русский](README.ru.md) | [中文](README.zh-CN.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Italiano](README.it.md)
|
|
107
|
+
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 🤔 Почему OmniRoute?
|
|
113
|
+
|
|
114
|
+
**Перестаньте тратить деньги и упираться в лимиты:**
|
|
115
|
+
|
|
116
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Квота подписки истекает неиспользованной каждый месяц
|
|
117
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Лимиты скорости останавливают вас посреди программирования
|
|
118
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Дорогие API ($20-50/месяц за провайдера)
|
|
119
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Ручное переключение между провайдерами
|
|
120
|
+
|
|
121
|
+
**OmniRoute решает это:**
|
|
122
|
+
|
|
123
|
+
- ✅ **Максимизируйте подписки** — Отслеживайте квоты, используйте всё до сброса
|
|
124
|
+
- ✅ **Автоматический fallback** — Подписка → API Key → Дешёвый → Бесплатный, нулевой простой
|
|
125
|
+
- ✅ **Мульти-аккаунт** — Round-robin между аккаунтами каждого провайдера
|
|
126
|
+
- ✅ **Универсальный** — Работает с Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, любым CLI-инструментом
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 🔄 Как это работает
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
┌─────────────┐
|
|
134
|
+
│ Ваш CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
|
135
|
+
│ Tool │
|
|
136
|
+
└──────┬──────┘
|
|
137
|
+
│ http://localhost:20128/v1
|
|
138
|
+
↓
|
|
139
|
+
┌─────────────────────────────────────────┐
|
|
140
|
+
│ OmniRoute (Умный маршрутизатор) │
|
|
141
|
+
│ • Трансляция формата (OpenAI ↔ Claude) │
|
|
142
|
+
│ • Отслеживание квот + Embeddings + Изображения │
|
|
143
|
+
│ • Автообновление токенов │
|
|
144
|
+
└──────┬──────────────────────────────────┘
|
|
145
|
+
│
|
|
146
|
+
├─→ [Tier 1: ПОДПИСКА] Claude Code, Codex, Gemini CLI
|
|
147
|
+
│ ↓ квота исчерпана
|
|
148
|
+
├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM и др.
|
|
149
|
+
│ ↓ лимит бюджета
|
|
150
|
+
├─→ [Tier 3: ДЕШЁВЫЙ] GLM ($0.6/1M), MiniMax ($0.2/1M)
|
|
151
|
+
│ ↓ лимит бюджета
|
|
152
|
+
└─→ [Tier 4: БЕСПЛАТНЫЙ] iFlow, Qwen, Kiro (неограниченно)
|
|
153
|
+
|
|
154
|
+
Результат: Никогда не прекращайте программировать, минимальные затраты
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## ⚡ Быстрый старт
|
|
160
|
+
|
|
161
|
+
**1. Установите глобально:**
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm install -g omniroute
|
|
165
|
+
omniroute
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
🎉 Dashboard открывается на `http://localhost:20128`
|
|
169
|
+
|
|
170
|
+
| Команда | Описание |
|
|
171
|
+
| ----------------------- | ------------------------------------------ |
|
|
172
|
+
| `omniroute` | Запустить сервер (порт по умолчанию 20128) |
|
|
173
|
+
| `omniroute --port 3000` | Использовать другой порт |
|
|
174
|
+
| `omniroute --no-open` | Не открывать браузер автоматически |
|
|
175
|
+
| `omniroute --help` | Показать справку |
|
|
176
|
+
|
|
177
|
+
**2. Подключите БЕСПЛАТНОГО провайдера:**
|
|
178
|
+
|
|
179
|
+
Dashboard → Провайдеры → Подключить **Claude Code** или **Antigravity** → OAuth вход → Готово!
|
|
180
|
+
|
|
181
|
+
**3. Используйте в CLI-инструменте:**
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Настройки:
|
|
185
|
+
Endpoint: http://localhost:20128/v1
|
|
186
|
+
API Key: [скопируйте из dashboard]
|
|
187
|
+
Model: if/kimi-k2-thinking
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Готово!** Начните программировать с БЕСПЛАТНЫМИ AI-моделями.
|
|
191
|
+
|
|
192
|
+
**Альтернатива — запуск из исходного кода:**
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
cp .env.example .env
|
|
196
|
+
npm install
|
|
197
|
+
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 🐳 Docker
|
|
203
|
+
|
|
204
|
+
OmniRoute доступен как публичный Docker-образ на [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
|
205
|
+
|
|
206
|
+
**Быстрый запуск:**
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
docker run -d \
|
|
210
|
+
--name omniroute \
|
|
211
|
+
--restart unless-stopped \
|
|
212
|
+
-p 20128:20128 \
|
|
213
|
+
-v omniroute-data:/app/data \
|
|
214
|
+
diegosouzapw/omniroute:latest
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**С файлом окружения:**
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Скопируйте и отредактируйте .env
|
|
221
|
+
cp .env.example .env
|
|
222
|
+
|
|
223
|
+
docker run -d \
|
|
224
|
+
--name omniroute \
|
|
225
|
+
--restart unless-stopped \
|
|
226
|
+
--env-file .env \
|
|
227
|
+
-p 20128:20128 \
|
|
228
|
+
-v omniroute-data:/app/data \
|
|
229
|
+
diegosouzapw/omniroute:latest
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Используя Docker Compose:**
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Базовый профиль (без CLI-инструментов)
|
|
236
|
+
docker compose --profile base up -d
|
|
237
|
+
|
|
238
|
+
# CLI-профиль (Claude Code, Codex, OpenClaw встроены)
|
|
239
|
+
docker compose --profile cli up -d
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
| Образ | Тег | Размер | Описание |
|
|
243
|
+
| ------------------------ | -------- | ------ | -------------------------- |
|
|
244
|
+
| `diegosouzapw/omniroute` | `latest` | ~250MB | Последний стабильный релиз |
|
|
245
|
+
| `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Текущая версия |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 💰 Обзор цен
|
|
250
|
+
|
|
251
|
+
| Tier | Провайдер | Стоимость | Сброс квоты | Лучше всего для |
|
|
252
|
+
| ----------------- | ----------------- | ----------------------------- | ------------------ | -------------------------------- |
|
|
253
|
+
| **💳 ПОДПИСКА** | Claude Code (Pro) | $20/мес | 5ч + еженедельно | Уже подписан |
|
|
254
|
+
| | Codex (Plus/Pro) | $20-200/мес | 5ч + еженедельно | Пользователи OpenAI |
|
|
255
|
+
| | Gemini CLI | **БЕСПЛАТНО** | 180K/мес + 1K/день | Все! |
|
|
256
|
+
| | GitHub Copilot | $10-19/мес | Ежемесячно | Пользователи GitHub |
|
|
257
|
+
| **🔑 API KEY** | NVIDIA NIM | **БЕСПЛАТНО** (1000 кредитов) | Одноразово | Бесплатное тестирование |
|
|
258
|
+
| | DeepSeek | По использованию | Нет | Лучшее соотношение цена/качество |
|
|
259
|
+
| | Groq | Беспл. уровень + платный | Ограничено | Сверхбыстрый вывод |
|
|
260
|
+
| | xAI (Grok) | По использованию | Нет | Модели Grok |
|
|
261
|
+
| | Mistral | Беспл. уровень + платный | Ограничено | Европейский AI |
|
|
262
|
+
| | OpenRouter | По использованию | Нет | 100+ моделей |
|
|
263
|
+
| **💰 ДЕШЁВЫЙ** | GLM-4.7 | $0.6/1M | Ежедневно 10ч | Бюджетный бэкап |
|
|
264
|
+
| | MiniMax M2.1 | $0.2/1M | 5ч ротация | Самый дешёвый вариант |
|
|
265
|
+
| | Kimi K2 | $9/мес фикс | 10M токенов/мес | Предсказуемая цена |
|
|
266
|
+
| **🆓 БЕСПЛАТНЫЙ** | iFlow | $0 | Неограниченно | 8 бесплатных моделей |
|
|
267
|
+
| | Qwen | $0 | Неограниченно | 3 бесплатные модели |
|
|
268
|
+
| | Kiro | $0 | Неограниченно | Claude бесплатно |
|
|
269
|
+
|
|
270
|
+
**💡 Совет:** Начните с Gemini CLI (180K бесплатно/мес) + iFlow (неограниченно бесплатно) = $0!
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 🎯 Сценарии использования
|
|
275
|
+
|
|
276
|
+
### Сценарий 1: «У меня подписка Claude Pro»
|
|
277
|
+
|
|
278
|
+
**Проблема:** Квота истекает неиспользованной, лимиты скорости во время интенсивного программирования
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
Combo: "maximize-claude"
|
|
282
|
+
1. cc/claude-opus-4-6 (используйте подписку полностью)
|
|
283
|
+
2. glm/glm-4.7 (дешёвый бэкап при исчерпании квоты)
|
|
284
|
+
3. if/kimi-k2-thinking (бесплатный аварийный fallback)
|
|
285
|
+
|
|
286
|
+
Месячная стоимость: $20 (подписка) + ~$5 (бэкап) = $25 итого
|
|
287
|
+
vs. $20 + упирание в лимиты = разочарование
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Сценарий 2: «Хочу нулевую стоимость»
|
|
291
|
+
|
|
292
|
+
**Проблема:** Не может позволить подписки, нужен надёжный AI для программирования
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
Combo: "free-forever"
|
|
296
|
+
1. gc/gemini-3-flash (180K бесплатно/мес)
|
|
297
|
+
2. if/kimi-k2-thinking (неограниченно бесплатно)
|
|
298
|
+
3. qw/qwen3-coder-plus (неограниченно бесплатно)
|
|
299
|
+
|
|
300
|
+
Месячная стоимость: $0
|
|
301
|
+
Качество: Модели готовые к продакшену
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Сценарий 3: «Мне нужно программировать 24/7, без перерывов»
|
|
305
|
+
|
|
306
|
+
**Проблема:** Дедлайны, не может позволить простой
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
Combo: "always-on"
|
|
310
|
+
1. cc/claude-opus-4-6 (лучшее качество)
|
|
311
|
+
2. cx/gpt-5.2-codex (вторая подписка)
|
|
312
|
+
3. glm/glm-4.7 (дешёвый, ежедневный сброс)
|
|
313
|
+
4. minimax/MiniMax-M2.1 (самый дешёвый, сброс 5ч)
|
|
314
|
+
5. if/kimi-k2-thinking (бесплатно неограниченно)
|
|
315
|
+
|
|
316
|
+
Результат: 5 уровней fallback = нулевой простой
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Сценарий 4: «Хочу БЕСПЛАТНЫЙ AI в OpenClaw»
|
|
320
|
+
|
|
321
|
+
**Проблема:** Нужен AI-ассистент в мессенджерах, полностью бесплатно
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
Combo: "openclaw-free"
|
|
325
|
+
1. if/glm-4.7 (неограниченно бесплатно)
|
|
326
|
+
2. if/minimax-m2.1 (неограниченно бесплатно)
|
|
327
|
+
3. if/kimi-k2-thinking (неограниченно бесплатно)
|
|
328
|
+
|
|
329
|
+
Месячная стоимость: $0
|
|
330
|
+
Доступ через: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 💡 Основные функции
|
|
336
|
+
|
|
337
|
+
### 🧠 Маршрутизация и интеллект
|
|
338
|
+
|
|
339
|
+
| Функция | Что делает |
|
|
340
|
+
| ------------------------------------------- | ----------------------------------------------------------------------------- |
|
|
341
|
+
| 🎯 **Умный 4-уровневый Fallback** | Авто-маршрутизация: Подписка → API Key → Дешёвый → Бесплатный |
|
|
342
|
+
| 📊 **Отслеживание квот в реальном времени** | Счётчик токенов в реальном времени + обратный отсчёт до сброса |
|
|
343
|
+
| 🔄 **Трансляция формата** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro бесшовно |
|
|
344
|
+
| 👥 **Мульти-аккаунт** | Несколько аккаунтов на провайдера с интеллектуальным выбором |
|
|
345
|
+
| 🔄 **Автообновление токенов** | OAuth-токены обновляются автоматически с повторами |
|
|
346
|
+
| 🎨 **Пользовательские комбо** | 6 стратегий: fill-first, round-robin, p2c, random, least-used, cost-optimized |
|
|
347
|
+
| 🧩 **Пользовательские модели** | Добавьте любой ID модели к любому провайдеру |
|
|
348
|
+
| 🌐 **Wildcard-маршрутизатор** | Маршрутизируйте паттерны `provider/*` к любому провайдеру динамически |
|
|
349
|
+
| 🧠 **Бюджет рассуждений** | Режимы passthrough, auto, custom и adaptive для моделей рассуждений |
|
|
350
|
+
| 💬 **Инъекция System Prompt** | Глобальный system prompt для всех запросов |
|
|
351
|
+
| 📄 **API Responses** | Полная поддержка OpenAI Responses API (`/v1/responses`) для Codex |
|
|
352
|
+
|
|
353
|
+
### 🎵 Мультимодальные API
|
|
354
|
+
|
|
355
|
+
| Функция | Что делает |
|
|
356
|
+
| ---------------------------- | --------------------------------------------------- |
|
|
357
|
+
| 🖼️ **Генерация изображений** | `/v1/images/generations` — 4 провайдера, 9+ моделей |
|
|
358
|
+
| 📐 **Embeddings** | `/v1/embeddings` — 6 провайдеров, 9+ моделей |
|
|
359
|
+
| 🎤 **Транскрипция аудио** | `/v1/audio/transcriptions` — Совместимо с Whisper |
|
|
360
|
+
| 🔊 **Текст в речь** | `/v1/audio/speech` — Мульти-провайдерный синтез |
|
|
361
|
+
| 🛡️ **Модерация** | `/v1/moderations` — Проверки безопасности контента |
|
|
362
|
+
| 🔀 **Reranking** | `/v1/rerank` — Переранжирование релевантности |
|
|
363
|
+
|
|
364
|
+
### 🛡️ Устойчивость и безопасность
|
|
365
|
+
|
|
366
|
+
| Функция | Что делает |
|
|
367
|
+
| -------------------------------- | -------------------------------------------------------------- |
|
|
368
|
+
| 🔌 **Circuit Breaker** | Авто-открытие/закрытие по провайдеру с настраиваемыми порогами |
|
|
369
|
+
| 🛡️ **Anti-Thundering Herd** | Mutex + семафор для API key провайдеров |
|
|
370
|
+
| 🧠 **Семантический кеш** | Двухуровневый кеш (сигнатура + семантика) снижает стоимость |
|
|
371
|
+
| ⚡ **Идемпотентность запросов** | 5с окно дедупликации для дублирующихся запросов |
|
|
372
|
+
| 🔒 **Спуфинг TLS Fingerprint** | Обход обнаружения ботов через wreq-js |
|
|
373
|
+
| 🌐 **Фильтрация IP** | Allowlist/blocklist для контроля доступа к API |
|
|
374
|
+
| 📊 **Настраиваемые Rate Limits** | Настраиваемые RPM, минимальный интервал, макс. конкуррентность |
|
|
375
|
+
|
|
376
|
+
### 📊 Наблюдаемость и аналитика
|
|
377
|
+
|
|
378
|
+
| Функция | Что делает |
|
|
379
|
+
| ----------------------------- | ------------------------------------------------------------------------ |
|
|
380
|
+
| 📝 **Логи запросов** | Режим debug с полными логами запросов/ответов |
|
|
381
|
+
| 💾 **Логи SQLite** | Постоянные proxy-логи переживают перезапуски |
|
|
382
|
+
| 📊 **Dashboard аналитики** | Recharts: карточки статистики, график использования, таблица провайдеров |
|
|
383
|
+
| 📈 **Отслеживание прогресса** | Opt-in SSE-события прогресса для стриминга |
|
|
384
|
+
| 🧪 **Оценки LLM** | Тестирование с golden set и 4 стратегиями сравнения |
|
|
385
|
+
| 🔍 **Телеметрия запросов** | Агрегация латентности p50/p95/p99 + трекинг X-Request-Id |
|
|
386
|
+
| 📋 **Логи + Квоты** | Отдельные страницы для просмотра логов и отслеживания квот |
|
|
387
|
+
| 🏥 **Dashboard здоровья** | Uptime, состояния circuit breaker, блокировки, статистика кеша |
|
|
388
|
+
| 💰 **Отслеживание стоимости** | Управление бюджетом + настройка цен по моделям |
|
|
389
|
+
|
|
390
|
+
### ☁️ Деплой и синхронизация
|
|
391
|
+
|
|
392
|
+
| Функция | Что делает |
|
|
393
|
+
| -------------------------- | --------------------------------------------------------------------------- |
|
|
394
|
+
| 💾 **Cloud Sync** | Синхронизация настроек между устройствами через Cloudflare Workers |
|
|
395
|
+
| 🌐 **Деплой куда угодно** | Localhost, VPS, Docker, Cloudflare Workers |
|
|
396
|
+
| 🔑 **Управление API Keys** | Генерация, ротация и настройка scope API keys по провайдерам |
|
|
397
|
+
| 🧙 **Мастер настройки** | 4-шаговая настройка для новых пользователей |
|
|
398
|
+
| 🔧 **Dashboard CLI Tools** | Настройка в один клик для Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
|
399
|
+
| 🔄 **Бэкапы БД** | Автоматическое резервное копирование и восстановление всех настроек |
|
|
400
|
+
|
|
401
|
+
<details>
|
|
402
|
+
<summary><b>📖 Подробности функций</b></summary>
|
|
403
|
+
|
|
404
|
+
### 🎯 Умный 4-уровневый Fallback
|
|
405
|
+
|
|
406
|
+
Создавайте комбо с автоматическим fallback:
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
Combo: "my-coding-stack"
|
|
410
|
+
1. cc/claude-opus-4-6 (ваша подписка)
|
|
411
|
+
2. nvidia/llama-3.3-70b (бесплатный NVIDIA API)
|
|
412
|
+
3. glm/glm-4.7 (дешёвый бэкап, $0.6/1M)
|
|
413
|
+
4. if/kimi-k2-thinking (бесплатный fallback)
|
|
414
|
+
|
|
415
|
+
→ Автоматически переключается при исчерпании квоты или ошибках
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### 📊 Отслеживание квот в реальном времени
|
|
419
|
+
|
|
420
|
+
- Потребление токенов по провайдерам
|
|
421
|
+
- Обратный отсчёт до сброса (5 часов, ежедневно, еженедельно)
|
|
422
|
+
- Оценка стоимости для платных уровней
|
|
423
|
+
- Ежемесячные отчёты о расходах
|
|
424
|
+
|
|
425
|
+
### 🔄 Трансляция формата
|
|
426
|
+
|
|
427
|
+
Бесшовная трансляция между форматами:
|
|
428
|
+
|
|
429
|
+
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
|
|
430
|
+
- Ваш CLI отправляет формат OpenAI → OmniRoute транслирует → Провайдер получает нативный формат
|
|
431
|
+
- Работает с любым инструментом, поддерживающим пользовательские OpenAI endpoints
|
|
432
|
+
|
|
433
|
+
### 👥 Мульти-аккаунт
|
|
434
|
+
|
|
435
|
+
- Добавляйте несколько аккаунтов на провайдера
|
|
436
|
+
- Автоматический round-robin или маршрутизация по приоритету
|
|
437
|
+
- Fallback на следующий аккаунт при исчерпании квоты
|
|
438
|
+
|
|
439
|
+
### 🔄 Автообновление токенов
|
|
440
|
+
|
|
441
|
+
- OAuth-токены обновляются автоматически до истечения
|
|
442
|
+
- Без необходимости ручной повторной аутентификации
|
|
443
|
+
- Бесшовный опыт по всем провайдерам
|
|
444
|
+
|
|
445
|
+
### 🎨 Пользовательские комбо
|
|
446
|
+
|
|
447
|
+
- Создавайте неограниченные комбинации моделей
|
|
448
|
+
- 6 стратегий: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
|
|
449
|
+
- Делитесь комбо между устройствами с Cloud Sync
|
|
450
|
+
|
|
451
|
+
### 🏥 Dashboard здоровья
|
|
452
|
+
|
|
453
|
+
- Статус системы (uptime, версия, использование памяти)
|
|
454
|
+
- Состояния circuit breaker по провайдерам (Closed/Open/Half-Open)
|
|
455
|
+
- Статус rate limit и активные блокировки
|
|
456
|
+
- Статистика кеша сигнатур
|
|
457
|
+
- Телеметрия латентности (p50/p95/p99) + кеш промптов
|
|
458
|
+
- Сброс состояния здоровья одним кликом
|
|
459
|
+
|
|
460
|
+
### 🔧 Playground транслятора
|
|
461
|
+
|
|
462
|
+
- Отладка, тестирование и визуализация трансляции форматов API
|
|
463
|
+
- Отправляйте запросы и смотрите, как OmniRoute транслирует между форматами провайдеров
|
|
464
|
+
- Бесценно для устранения проблем интеграции
|
|
465
|
+
|
|
466
|
+
### 💾 Cloud Sync
|
|
467
|
+
|
|
468
|
+
- Синхронизация провайдеров, комбо и настроек между устройствами
|
|
469
|
+
- Автоматическая фоновая синхронизация
|
|
470
|
+
- Безопасное шифрованное хранилище
|
|
471
|
+
|
|
472
|
+
</details>
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## 📖 Руководство по настройке
|
|
477
|
+
|
|
478
|
+
<details>
|
|
479
|
+
<summary><b>💳 Провайдеры по подписке</b></summary>
|
|
480
|
+
|
|
481
|
+
### Claude Code (Pro/Max)
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
Dashboard → Провайдеры → Подключить Claude Code
|
|
485
|
+
→ OAuth вход → Автообновление токенов
|
|
486
|
+
→ Отслеживание квоты 5ч + еженедельно
|
|
487
|
+
|
|
488
|
+
Модели:
|
|
489
|
+
cc/claude-opus-4-6
|
|
490
|
+
cc/claude-sonnet-4-5-20250929
|
|
491
|
+
cc/claude-haiku-4-5-20251001
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Совет:** Используйте Opus для сложных задач, Sonnet для скорости. OmniRoute отслеживает квоту по моделям!
|
|
495
|
+
|
|
496
|
+
### OpenAI Codex (Plus/Pro)
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
Dashboard → Провайдеры → Подключить Codex
|
|
500
|
+
→ OAuth вход (порт 1455)
|
|
501
|
+
→ Сброс 5ч + еженедельно
|
|
502
|
+
|
|
503
|
+
Модели:
|
|
504
|
+
cx/gpt-5.2-codex
|
|
505
|
+
cx/gpt-5.1-codex-max
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Gemini CLI (БЕСПЛАТНО 180K/мес!)
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
Dashboard → Провайдеры → Подключить Gemini CLI
|
|
512
|
+
→ Google OAuth
|
|
513
|
+
→ 180K completions/мес + 1K/день
|
|
514
|
+
|
|
515
|
+
Модели:
|
|
516
|
+
gc/gemini-3-flash-preview
|
|
517
|
+
gc/gemini-2.5-pro
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
**Лучшая ценность:** Огромный бесплатный уровень! Используйте перед платными.
|
|
521
|
+
|
|
522
|
+
### GitHub Copilot
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
Dashboard → Провайдеры → Подключить GitHub
|
|
526
|
+
→ OAuth через GitHub
|
|
527
|
+
→ Ежемесячный сброс (1-е число)
|
|
528
|
+
|
|
529
|
+
Модели:
|
|
530
|
+
gh/gpt-5
|
|
531
|
+
gh/claude-4.5-sonnet
|
|
532
|
+
gh/gemini-3-pro
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
</details>
|
|
536
|
+
|
|
537
|
+
<details>
|
|
538
|
+
<summary><b>🔑 Провайдеры по API Key</b></summary>
|
|
539
|
+
|
|
540
|
+
### NVIDIA NIM (БЕСПЛАТНО 1000 кредитов!)
|
|
541
|
+
|
|
542
|
+
1. Регистрация: [build.nvidia.com](https://build.nvidia.com)
|
|
543
|
+
2. Получите бесплатный API key (1000 кредитов включены)
|
|
544
|
+
3. Dashboard → Добавить провайдера → NVIDIA NIM:
|
|
545
|
+
- API Key: `nvapi-your-key`
|
|
546
|
+
|
|
547
|
+
**Модели:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` и 50+ других
|
|
548
|
+
|
|
549
|
+
**Совет:** OpenAI-совместимый API — работает идеально с трансляцией форматов OmniRoute!
|
|
550
|
+
|
|
551
|
+
### DeepSeek
|
|
552
|
+
|
|
553
|
+
1. Регистрация: [platform.deepseek.com](https://platform.deepseek.com)
|
|
554
|
+
2. Получите API key
|
|
555
|
+
3. Dashboard → Добавить провайдера → DeepSeek
|
|
556
|
+
|
|
557
|
+
**Модели:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
|
558
|
+
|
|
559
|
+
### Groq (Бесплатный уровень доступен!)
|
|
560
|
+
|
|
561
|
+
1. Регистрация: [console.groq.com](https://console.groq.com)
|
|
562
|
+
2. Получите API key (бесплатный уровень включён)
|
|
563
|
+
3. Dashboard → Добавить провайдера → Groq
|
|
564
|
+
|
|
565
|
+
**Модели:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
|
566
|
+
|
|
567
|
+
**Совет:** Сверхбыстрый вывод — лучший для программирования в реальном времени!
|
|
568
|
+
|
|
569
|
+
### OpenRouter (100+ моделей)
|
|
570
|
+
|
|
571
|
+
1. Регистрация: [openrouter.ai](https://openrouter.ai)
|
|
572
|
+
2. Получите API key
|
|
573
|
+
3. Dashboard → Добавить провайдера → OpenRouter
|
|
574
|
+
|
|
575
|
+
**Модели:** Доступ к 100+ моделям от всех основных провайдеров через один API key.
|
|
576
|
+
|
|
577
|
+
</details>
|
|
578
|
+
|
|
579
|
+
<details>
|
|
580
|
+
<summary><b>💰 Дешёвые провайдеры (Бэкап)</b></summary>
|
|
581
|
+
|
|
582
|
+
### GLM-4.7 (Ежедневный сброс, $0.6/1M)
|
|
583
|
+
|
|
584
|
+
1. Регистрация: [Zhipu AI](https://open.bigmodel.cn/)
|
|
585
|
+
2. Получите API key из Coding Plan
|
|
586
|
+
3. Dashboard → Добавить API Key:
|
|
587
|
+
- Провайдер: `glm`
|
|
588
|
+
- API Key: `your-key`
|
|
589
|
+
|
|
590
|
+
**Используйте:** `glm/glm-4.7`
|
|
591
|
+
|
|
592
|
+
**Совет:** Coding Plan предлагает 3× квоту по цене 1/7! Ежедневный сброс в 10:00.
|
|
593
|
+
|
|
594
|
+
### MiniMax M2.1 (Сброс 5ч, $0.20/1M)
|
|
595
|
+
|
|
596
|
+
1. Регистрация: [MiniMax](https://www.minimax.io/)
|
|
597
|
+
2. Получите API key
|
|
598
|
+
3. Dashboard → Добавить API Key
|
|
599
|
+
|
|
600
|
+
**Используйте:** `minimax/MiniMax-M2.1`
|
|
601
|
+
|
|
602
|
+
**Совет:** Самый дешёвый вариант для длинного контекста (1M токенов)!
|
|
603
|
+
|
|
604
|
+
### Kimi K2 ($9/мес фикс)
|
|
605
|
+
|
|
606
|
+
1. Подпишитесь: [Moonshot AI](https://platform.moonshot.ai/)
|
|
607
|
+
2. Получите API key
|
|
608
|
+
3. Dashboard → Добавить API Key
|
|
609
|
+
|
|
610
|
+
**Используйте:** `kimi/kimi-latest`
|
|
611
|
+
|
|
612
|
+
**Совет:** Фикс $9/мес за 10M токенов = $0.90/1M эффективная стоимость!
|
|
613
|
+
|
|
614
|
+
</details>
|
|
615
|
+
|
|
616
|
+
<details>
|
|
617
|
+
<summary><b>🆓 БЕСПЛАТНЫЕ провайдеры (Аварийный бэкап)</b></summary>
|
|
618
|
+
|
|
619
|
+
### iFlow (8 БЕСПЛАТНЫХ моделей)
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
Dashboard → Подключить iFlow
|
|
623
|
+
→ OAuth вход iFlow
|
|
624
|
+
→ Неограниченное использование
|
|
625
|
+
|
|
626
|
+
Модели:
|
|
627
|
+
if/kimi-k2-thinking
|
|
628
|
+
if/qwen3-coder-plus
|
|
629
|
+
if/glm-4.7
|
|
630
|
+
if/minimax-m2
|
|
631
|
+
if/deepseek-r1
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
### Qwen (3 БЕСПЛАТНЫЕ модели)
|
|
635
|
+
|
|
636
|
+
```bash
|
|
637
|
+
Dashboard → Подключить Qwen
|
|
638
|
+
→ Авторизация по коду устройства
|
|
639
|
+
→ Неограниченное использование
|
|
640
|
+
|
|
641
|
+
Модели:
|
|
642
|
+
qw/qwen3-coder-plus
|
|
643
|
+
qw/qwen3-coder-flash
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
### Kiro (Claude БЕСПЛАТНО)
|
|
647
|
+
|
|
648
|
+
```bash
|
|
649
|
+
Dashboard → Подключить Kiro
|
|
650
|
+
→ AWS Builder ID или Google/GitHub
|
|
651
|
+
→ Неограниченное использование
|
|
652
|
+
|
|
653
|
+
Модели:
|
|
654
|
+
kr/claude-sonnet-4.5
|
|
655
|
+
kr/claude-haiku-4.5
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
</details>
|
|
659
|
+
|
|
660
|
+
<details>
|
|
661
|
+
<summary><b>🎨 Создание комбо</b></summary>
|
|
662
|
+
|
|
663
|
+
### Пример 1: Максимизация подписки → Дешёвый бэкап
|
|
664
|
+
|
|
665
|
+
```
|
|
666
|
+
Dashboard → Комбо → Создать новое
|
|
667
|
+
|
|
668
|
+
Название: premium-coding
|
|
669
|
+
Модели:
|
|
670
|
+
1. cc/claude-opus-4-6 (Основная подписка)
|
|
671
|
+
2. glm/glm-4.7 (Дешёвый бэкап, $0.6/1M)
|
|
672
|
+
3. minimax/MiniMax-M2.1 (Самый дешёвый fallback, $0.20/1M)
|
|
673
|
+
|
|
674
|
+
Используйте в CLI: premium-coding
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
### Пример 2: Только бесплатные (Нулевая стоимость)
|
|
678
|
+
|
|
679
|
+
```
|
|
680
|
+
Название: free-combo
|
|
681
|
+
Модели:
|
|
682
|
+
1. gc/gemini-3-flash-preview (180K бесплатно/мес)
|
|
683
|
+
2. if/kimi-k2-thinking (неограниченно)
|
|
684
|
+
3. qw/qwen3-coder-plus (неограниченно)
|
|
685
|
+
|
|
686
|
+
Стоимость: $0 навсегда!
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
</details>
|
|
690
|
+
|
|
691
|
+
<details>
|
|
692
|
+
<summary><b>🔧 Интеграция с CLI</b></summary>
|
|
693
|
+
|
|
694
|
+
### Cursor IDE
|
|
695
|
+
|
|
696
|
+
```
|
|
697
|
+
Настройки → Модели → Расширенные:
|
|
698
|
+
OpenAI API Base URL: http://localhost:20128/v1
|
|
699
|
+
OpenAI API Key: [из dashboard OmniRoute]
|
|
700
|
+
Model: cc/claude-opus-4-6
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
### Claude Code
|
|
704
|
+
|
|
705
|
+
Используйте страницу **CLI Tools** в dashboard для настройки в один клик, или редактируйте `~/.claude/settings.json` вручную.
|
|
706
|
+
|
|
707
|
+
### Codex CLI
|
|
708
|
+
|
|
709
|
+
```bash
|
|
710
|
+
export OPENAI_BASE_URL="http://localhost:20128"
|
|
711
|
+
export OPENAI_API_KEY="your-omniroute-api-key"
|
|
712
|
+
|
|
713
|
+
codex "your prompt"
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
### OpenClaw
|
|
717
|
+
|
|
718
|
+
**Вариант 1 — Dashboard (рекомендуется):**
|
|
719
|
+
|
|
720
|
+
```
|
|
721
|
+
Dashboard → CLI Tools → OpenClaw → Выбрать модель → Применить
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
**Вариант 2 — Вручную:** Редактируйте `~/.openclaw/openclaw.json`:
|
|
725
|
+
|
|
726
|
+
```json
|
|
727
|
+
{
|
|
728
|
+
"models": {
|
|
729
|
+
"providers": {
|
|
730
|
+
"omniroute": {
|
|
731
|
+
"baseUrl": "http://127.0.0.1:20128/v1",
|
|
732
|
+
"apiKey": "sk_omniroute",
|
|
733
|
+
"api": "openai-completions"
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
> **Примечание:** OpenClaw работает только с локальным OmniRoute. Используйте `127.0.0.1` вместо `localhost` для избежания проблем с IPv6.
|
|
741
|
+
|
|
742
|
+
### Cline / Continue / RooCode
|
|
743
|
+
|
|
744
|
+
```
|
|
745
|
+
Настройки → Конфигурация API:
|
|
746
|
+
Провайдер: OpenAI Compatible
|
|
747
|
+
Base URL: http://localhost:20128/v1
|
|
748
|
+
API Key: [из dashboard OmniRoute]
|
|
749
|
+
Model: if/kimi-k2-thinking
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
</details>
|
|
753
|
+
|
|
754
|
+
---
|
|
755
|
+
|
|
756
|
+
## 📊 Доступные модели
|
|
757
|
+
|
|
758
|
+
<details>
|
|
759
|
+
<summary><b>Посмотреть все доступные модели</b></summary>
|
|
760
|
+
|
|
761
|
+
**Claude Code (`cc/`)** - Pro/Max:
|
|
762
|
+
|
|
763
|
+
- `cc/claude-opus-4-6`
|
|
764
|
+
- `cc/claude-sonnet-4-5-20250929`
|
|
765
|
+
- `cc/claude-haiku-4-5-20251001`
|
|
766
|
+
|
|
767
|
+
**Codex (`cx/`)** - Plus/Pro:
|
|
768
|
+
|
|
769
|
+
- `cx/gpt-5.2-codex`
|
|
770
|
+
- `cx/gpt-5.1-codex-max`
|
|
771
|
+
|
|
772
|
+
**Gemini CLI (`gc/`)** - БЕСПЛАТНО:
|
|
773
|
+
|
|
774
|
+
- `gc/gemini-3-flash-preview`
|
|
775
|
+
- `gc/gemini-2.5-pro`
|
|
776
|
+
|
|
777
|
+
**GitHub Copilot (`gh/`)**:
|
|
778
|
+
|
|
779
|
+
- `gh/gpt-5`
|
|
780
|
+
- `gh/claude-4.5-sonnet`
|
|
781
|
+
|
|
782
|
+
**NVIDIA NIM (`nvidia/`)** - БЕСПЛАТНЫЕ кредиты:
|
|
783
|
+
|
|
784
|
+
- `nvidia/llama-3.3-70b-instruct`
|
|
785
|
+
- `nvidia/mistral-7b-instruct`
|
|
786
|
+
- 50+ моделей на [build.nvidia.com](https://build.nvidia.com)
|
|
787
|
+
|
|
788
|
+
**GLM (`glm/`)** - $0.6/1M:
|
|
789
|
+
|
|
790
|
+
- `glm/glm-4.7`
|
|
791
|
+
|
|
792
|
+
**MiniMax (`minimax/`)** - $0.2/1M:
|
|
793
|
+
|
|
794
|
+
- `minimax/MiniMax-M2.1`
|
|
795
|
+
|
|
796
|
+
**iFlow (`if/`)** - БЕСПЛАТНО:
|
|
797
|
+
|
|
798
|
+
- `if/kimi-k2-thinking`
|
|
799
|
+
- `if/qwen3-coder-plus`
|
|
800
|
+
- `if/deepseek-r1`
|
|
801
|
+
- `if/glm-4.7`
|
|
802
|
+
- `if/minimax-m2`
|
|
803
|
+
|
|
804
|
+
**Qwen (`qw/`)** - БЕСПЛАТНО:
|
|
805
|
+
|
|
806
|
+
- `qw/qwen3-coder-plus`
|
|
807
|
+
- `qw/qwen3-coder-flash`
|
|
808
|
+
|
|
809
|
+
**Kiro (`kr/`)** - БЕСПЛАТНО:
|
|
810
|
+
|
|
811
|
+
- `kr/claude-sonnet-4.5`
|
|
812
|
+
- `kr/claude-haiku-4.5`
|
|
813
|
+
|
|
814
|
+
**OpenRouter (`or/`)** - 100+ моделей:
|
|
815
|
+
|
|
816
|
+
- `or/anthropic/claude-4-sonnet`
|
|
817
|
+
- `or/google/gemini-2.5-pro`
|
|
818
|
+
- Любая модель с [openrouter.ai/models](https://openrouter.ai/models)
|
|
819
|
+
|
|
820
|
+
</details>
|
|
821
|
+
|
|
822
|
+
---
|
|
823
|
+
|
|
824
|
+
## 🧪 Оценки (Evals)
|
|
825
|
+
|
|
826
|
+
OmniRoute включает встроенный фреймворк оценки для тестирования качества ответов LLM по golden set. Доступ через **Analytics → Evals** в dashboard.
|
|
827
|
+
|
|
828
|
+
### Встроенный Golden Set
|
|
829
|
+
|
|
830
|
+
Предзагруженный «OmniRoute Golden Set» содержит 10 тестов:
|
|
831
|
+
|
|
832
|
+
- Приветствия, математика, география, генерация кода
|
|
833
|
+
- Соответствие формату JSON, перевод, markdown
|
|
834
|
+
- Отказ от небезопасного контента, подсчёт, булева логика
|
|
835
|
+
|
|
836
|
+
### Стратегии оценки
|
|
837
|
+
|
|
838
|
+
| Стратегия | Описание | Пример |
|
|
839
|
+
| ---------- | ----------------------------------------------------- | -------------------------------- |
|
|
840
|
+
| `exact` | Вывод должен совпадать точно | `"4"` |
|
|
841
|
+
| `contains` | Вывод должен содержать подстроку (без учёта регистра) | `"Paris"` |
|
|
842
|
+
| `regex` | Вывод должен соответствовать regex-паттерну | `"1.*2.*3"` |
|
|
843
|
+
| `custom` | Пользовательская JS-функция возвращает true/false | `(output) => output.length > 10` |
|
|
844
|
+
|
|
845
|
+
---
|
|
846
|
+
|
|
847
|
+
## 🐛 Устранение неполадок
|
|
848
|
+
|
|
849
|
+
<details>
|
|
850
|
+
<summary><b>Нажмите для раскрытия руководства</b></summary>
|
|
851
|
+
|
|
852
|
+
**«Language model did not provide messages»**
|
|
853
|
+
|
|
854
|
+
- Квота провайдера исчерпана → Проверьте трекер квот в dashboard
|
|
855
|
+
- Решение: Используйте комбо с fallback или переключитесь на более дешёвый уровень
|
|
856
|
+
|
|
857
|
+
**Rate limiting**
|
|
858
|
+
|
|
859
|
+
- Квота подписки исчерпана → Fallback на GLM/MiniMax
|
|
860
|
+
- Добавьте комбо: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
861
|
+
|
|
862
|
+
**OAuth-токен истёк**
|
|
863
|
+
|
|
864
|
+
- Обновляется автоматически OmniRoute
|
|
865
|
+
- Если проблема сохраняется: Dashboard → Провайдер → Переподключить
|
|
866
|
+
|
|
867
|
+
**Высокие расходы**
|
|
868
|
+
|
|
869
|
+
- Проверьте статистику в Dashboard → Расходы
|
|
870
|
+
- Переключите основную модель на GLM/MiniMax
|
|
871
|
+
- Используйте бесплатный уровень (Gemini CLI, iFlow) для некритичных задач
|
|
872
|
+
|
|
873
|
+
**Dashboard открывается на неправильном порту**
|
|
874
|
+
|
|
875
|
+
- Установите `PORT=20128` и `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
|
876
|
+
|
|
877
|
+
**Ошибки cloud sync**
|
|
878
|
+
|
|
879
|
+
- Проверьте что `BASE_URL` указывает на ваш запущенный экземпляр
|
|
880
|
+
- Проверьте что `CLOUD_URL` указывает на правильный облачный endpoint
|
|
881
|
+
- Держите значения `NEXT_PUBLIC_*` синхронизированными с серверными значениями
|
|
882
|
+
|
|
883
|
+
**Первый вход не работает**
|
|
884
|
+
|
|
885
|
+
- Проверьте `INITIAL_PASSWORD` в `.env`
|
|
886
|
+
- Если не задан, пароль по умолчанию `123456`
|
|
887
|
+
|
|
888
|
+
**Нет логов запросов**
|
|
889
|
+
|
|
890
|
+
- Установите `ENABLE_REQUEST_LOGS=true` в `.env`
|
|
891
|
+
|
|
892
|
+
**Тест подключения показывает «Invalid» для OpenAI-совместимых провайдеров**
|
|
893
|
+
|
|
894
|
+
- Многие провайдеры не предоставляют endpoint `/models`
|
|
895
|
+
- OmniRoute v0.9.0+ включает fallback-валидацию через chat completions
|
|
896
|
+
- Убедитесь что base URL содержит суффикс `/v1`
|
|
897
|
+
|
|
898
|
+
</details>
|
|
899
|
+
|
|
900
|
+
---
|
|
901
|
+
|
|
902
|
+
## 🛠️ Технологический стек
|
|
903
|
+
|
|
904
|
+
- **Runtime**: Node.js 20+
|
|
905
|
+
- **Язык**: TypeScript 5.9 — **100% TypeScript** в `src/` и `open-sse/` (v0.9.0)
|
|
906
|
+
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
|
|
907
|
+
- **База данных**: LowDB (JSON) + SQLite (состояние домена + proxy-логи)
|
|
908
|
+
- **Стриминг**: Server-Sent Events (SSE)
|
|
909
|
+
- **Аутентификация**: OAuth 2.0 (PKCE) + JWT + API Keys
|
|
910
|
+
- **Тестирование**: Node.js test runner (368+ юнит-тестов)
|
|
911
|
+
- **CI/CD**: GitHub Actions (авто-публикация npm + Docker Hub при релизе)
|
|
912
|
+
- **Сайт**: [omniroute.online](https://omniroute.online)
|
|
913
|
+
- **Пакет**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
|
|
914
|
+
- **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
|
|
915
|
+
- **Устойчивость**: Circuit breaker, экспоненциальный backoff, anti-thundering herd, TLS-спуфинг
|
|
916
|
+
|
|
917
|
+
---
|
|
918
|
+
|
|
919
|
+
## 📖 Документация
|
|
920
|
+
|
|
921
|
+
| Документ | Описание |
|
|
922
|
+
| ----------------------------------------------- | ------------------------------------------------ |
|
|
923
|
+
| [Руководство пользователя](docs/USER_GUIDE.md) | Провайдеры, комбо, интеграция CLI, деплой |
|
|
924
|
+
| [Справка API](docs/API_REFERENCE.md) | Все endpoints с примерами |
|
|
925
|
+
| [Устранение неполадок](docs/TROUBLESHOOTING.md) | Частые проблемы и решения |
|
|
926
|
+
| [Архитектура](docs/ARCHITECTURE.md) | Архитектура системы и внутреннее устройство |
|
|
927
|
+
| [Как внести вклад](CONTRIBUTING.md) | Настройка разработки и руководящие принципы |
|
|
928
|
+
| [Спецификация OpenAPI](docs/openapi.yaml) | Спецификация OpenAPI 3.0 |
|
|
929
|
+
| [Политика безопасности](SECURITY.md) | Сообщение об уязвимостях и практики безопасности |
|
|
930
|
+
|
|
931
|
+
---
|
|
932
|
+
|
|
933
|
+
## 📧 Поддержка
|
|
934
|
+
|
|
935
|
+
- **Сайт**: [omniroute.online](https://omniroute.online)
|
|
936
|
+
- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
|
|
937
|
+
- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
|
|
938
|
+
- **Оригинальный проект**: [9router от decolua](https://github.com/decolua/9router)
|
|
939
|
+
|
|
940
|
+
---
|
|
941
|
+
|
|
942
|
+
## 👥 Участники
|
|
943
|
+
|
|
944
|
+
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
|
945
|
+
|
|
946
|
+
### Как внести вклад
|
|
947
|
+
|
|
948
|
+
1. Сделайте fork репозитория
|
|
949
|
+
2. Создайте ветку функции (`git checkout -b feature/amazing-feature`)
|
|
950
|
+
3. Зафиксируйте изменения (`git commit -m 'Add amazing feature'`)
|
|
951
|
+
4. Отправьте в ветку (`git push origin feature/amazing-feature`)
|
|
952
|
+
5. Откройте Pull Request
|
|
953
|
+
|
|
954
|
+
См. [CONTRIBUTING.md](CONTRIBUTING.md) для подробных рекомендаций.
|
|
955
|
+
|
|
956
|
+
### Выпуск новой версии
|
|
957
|
+
|
|
958
|
+
```bash
|
|
959
|
+
# Создайте релиз — публикация в npm происходит автоматически
|
|
960
|
+
gh release create v0.9.0 --title "v0.9.0" --generate-notes
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
---
|
|
964
|
+
|
|
965
|
+
## 📊 История звёзд
|
|
966
|
+
|
|
967
|
+
<a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
|
|
968
|
+
<picture>
|
|
969
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
|
|
970
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
|
|
971
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
|
|
972
|
+
</picture>
|
|
973
|
+
</a>
|
|
974
|
+
|
|
975
|
+
---
|
|
976
|
+
|
|
977
|
+
## 🙏 Благодарности
|
|
978
|
+
|
|
979
|
+
Особая благодарность **[9router](https://github.com/decolua/9router)** от **[decolua](https://github.com/decolua)** — оригинальному проекту, вдохновившему этот форк. OmniRoute строится на этом невероятном фундаменте с дополнительными функциями, мультимодальными API и полной переписью на TypeScript.
|
|
980
|
+
|
|
981
|
+
Особая благодарность **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — оригинальной реализации на Go, вдохновившей этот порт на JavaScript.
|
|
982
|
+
|
|
983
|
+
---
|
|
984
|
+
|
|
985
|
+
## 📄 Лицензия
|
|
986
|
+
|
|
987
|
+
Лицензия MIT — см. [LICENSE](LICENSE) для подробностей.
|
|
988
|
+
|
|
989
|
+
---
|
|
990
|
+
|
|
991
|
+
<div align="center">
|
|
992
|
+
<sub>Сделано с ❤️ для разработчиков, которые программируют 24/7</sub>
|
|
993
|
+
<br/>
|
|
994
|
+
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
|
995
|
+
</div>
|