omniroute 0.8.5 → 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 +725 -101
- 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 +25 -24
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +27 -3
- package/app/.next/routes-manifest.json +6 -0
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
- 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/cli-tools/page.js +5 -5
- 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 +1 -1
- 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 +1 -1
- 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 -0
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -0
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -0
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +2 -2
- 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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +3 -3
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- 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 +2 -2
- 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 +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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 +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +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.js.nft.json +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.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route.js.nft.json +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.js +1 -1
- package/app/.next/server/app/api/evals/route.js.nft.json +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.js +2 -2
- 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 +2 -2
- 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.js +2 -2
- 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.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.js +2 -2
- 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 +3 -3
- package/app/.next/server/app/callback.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
- 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 +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.html +1 -1
- package/app/.next/server/app/dashboard/costs.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.html +1 -1
- package/app/.next/server/app/dashboard/health.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/limits.html +2 -0
- package/app/.next/server/app/dashboard/limits.meta +17 -0
- package/app/.next/server/app/dashboard/limits.rsc +24 -0
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +9 -0
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +4 -0
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +4 -0
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -0
- package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +24 -0
- package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +6 -0
- package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +9 -0
- package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +5 -0
- package/app/.next/server/app/dashboard/onboarding.html +1 -1
- package/app/.next/server/app/dashboard/onboarding.rsc +4 -4
- 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 +4 -4
- package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +4 -4
- 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 +4 -4
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.html +1 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.html +1 -1
- package/app/.next/server/app/dashboard/providers.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
- 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 +4 -4
- 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 +3 -3
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.html +1 -1
- package/app/.next/server/app/dashboard/settings.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.html +2 -2
- package/app/.next/server/app/dashboard/translator.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/app/.next/server/app/docs.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/docs.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/app/.next/server/app/forbidden.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/forbidden.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +2 -2
- 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.js +1 -1
- 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/forgot-password.html +1 -1
- package/app/.next/server/app/forgot-password.rsc +4 -4
- package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/app/.next/server/app/landing.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
- 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.js +1 -1
- 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/login.html +1 -1
- package/app/.next/server/app/login.rsc +4 -4
- package/app/.next/server/app/login.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/app/.next/server/app/privacy.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/privacy.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/privacy.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/app/.next/server/app/terms.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/terms.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/terms.segments/_tree.segment.rsc +2 -2
- 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 +25 -24
- package/app/.next/server/chunks/1020.js +1 -1
- package/app/.next/server/chunks/239.js +2 -2
- package/app/.next/server/chunks/2620.js +2 -2
- package/app/.next/server/chunks/4277.js +1 -0
- package/app/.next/server/chunks/438.js +1 -0
- package/app/.next/server/chunks/5583.js +1 -1
- package/app/.next/server/chunks/7669.js +2 -2
- 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/8ACUE6hz9uxBNe_Q_ZH6y/_buildManifest.js +1 -0
- package/app/.next/static/chunks/1149-fefe7f95f0e9842f.js +1 -0
- package/app/.next/static/chunks/{5846-2708fad522c4092b.js → 5846-0541241939d8c7e3.js} +1 -1
- package/app/.next/static/chunks/{993-6be0cd05a02eb09b.js → 993-b74bac8c882e8d1a.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-74ac2092c2a6b3dc.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-918d5f38d5cdbbc2.js +15 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-2cf4a7b419667452.js → page-421e732016c49ee4.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-6913ad5d715dcc3f.js → page-9495b294cfe54d73.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/{page-a446f6fd8dc64f29.js → page-623e54048b5d4f69.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-58ea3e55f475ea7b.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/{usage/page-8e19076a0d9227ca.js → limits/page-3b7083be8adedc57.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-3c840eaf6d7cd77d.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-26ec85a0bf8624f2.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-521cffebf9da74b1.js → page-200bed170f9ee2b0.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-627628d3588d56d0.js → page-98c6b97d0c195a2c.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-038687bc5d2c3bb5.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-c3cbea97c4f3a3b3.js → page-efca884c20a509a4.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-51a813eac9d71eed.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/{layout-c498dd9c790d0115.js → layout-cf710bbfb7c3ba11.js} +1 -1
- package/app/.next/static/chunks/app/forgot-password/{page-3682163d66078655.js → page-373672767bb0aae4.js} +1 -1
- package/app/.next/static/chunks/app/login/{page-319adaa570f7cef2.js → page-8a9aa887783f2370.js} +1 -1
- package/app/.next/static/css/1c99dc691f001331.css +1 -0
- 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/server/chunks/2951.js +0 -1
- package/app/.next/static/4zh9cgkOJsay7eUxfk-tb/_buildManifest.js +0 -1
- package/app/.next/static/chunks/7013-718042994c9127fa.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-a7a7e3485f278504.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-1c6897612e762e03.js +0 -15
- package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-d3f501b59334c3d5.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-7312e2dd8b5feff0.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-a9c594cf56c3465e.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-ae5e43ea2a576094.js +0 -1
- package/app/.next/static/css/c08bd521c418658c.css +0 -1
- /package/app/.next/static/{4zh9cgkOJsay7eUxfk-tb → 8ACUE6hz9uxBNe_Q_ZH6y}/_ssgManifest.js +0 -0
package/README.de.md
ADDED
|
@@ -0,0 +1,995 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
|
|
3
|
+
|
|
4
|
+
# 🚀 OmniRoute — Das kostenlose AI-Gateway
|
|
5
|
+
|
|
6
|
+
### Höre nie auf zu programmieren. Intelligentes Routing zu **KOSTENLOSEN und günstigen KI-Modellen** mit automatischem Fallback.
|
|
7
|
+
|
|
8
|
+
_Dein universeller API-Proxy — ein Endpoint, 36+ Anbieter, null Ausfallzeit._
|
|
9
|
+
|
|
10
|
+
**Chat Completions • Embeddings • Bildgenerierung • Audio • Reranking • 100% TypeScript**
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
### 🤖 Kostenloser KI-Anbieter für deine Lieblings-Coding-Agenten
|
|
15
|
+
|
|
16
|
+
_Verbinde jedes KI-gesteuerte IDE- oder CLI-Tool über OmniRoute — kostenloses API-Gateway für unbegrenztes Programmieren._
|
|
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>📡 Alle Agenten verbinden sich über <code>http://localhost:20128/v1</code> oder <code>http://cloud.omniroute.online/v1</code> — eine Konfiguration, unbegrenzte Modelle und Kontingent</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
|
+
[🌐 Website](https://omniroute.online) • [🚀 Schnellstart](#-schnellstart) • [💡 Funktionen](#-hauptfunktionen) • [📖 Doku](#-dokumentation) • [💰 Preise](#-preisübersicht)
|
|
105
|
+
|
|
106
|
+
🌐 **Verfügbar in:** [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
|
+
## 🤔 Warum OmniRoute?
|
|
113
|
+
|
|
114
|
+
**Hör auf, Geld zu verschwenden und an Limits zu stoßen:**
|
|
115
|
+
|
|
116
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Abo-Kontingent verfällt jeden Monat ungenutzt
|
|
117
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Rate-Limits stoppen dich mitten beim Programmieren
|
|
118
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Teure APIs ($20-50/Monat pro Anbieter)
|
|
119
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Manuelles Wechseln zwischen Anbietern
|
|
120
|
+
|
|
121
|
+
**OmniRoute löst das:**
|
|
122
|
+
|
|
123
|
+
- ✅ **Abos maximieren** — Kontingente tracken, alles vor dem Reset nutzen
|
|
124
|
+
- ✅ **Automatischer Fallback** — Abo → API Key → Günstig → Kostenlos, null Ausfallzeit
|
|
125
|
+
- ✅ **Multi-Account** — Round-Robin zwischen Konten pro Anbieter
|
|
126
|
+
- ✅ **Universal** — Funktioniert mit Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, jedem CLI-Tool
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 🔄 So funktioniert's
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
┌─────────────┐
|
|
134
|
+
│ Dein CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
|
135
|
+
│ Tool │
|
|
136
|
+
└──────┬──────┘
|
|
137
|
+
│ http://localhost:20128/v1
|
|
138
|
+
↓
|
|
139
|
+
┌─────────────────────────────────────────┐
|
|
140
|
+
│ OmniRoute (Smart Router) │
|
|
141
|
+
│ • Format-Übersetzung (OpenAI ↔ Claude) │
|
|
142
|
+
│ • Kontingent-Tracking + Embeddings + Bilder │
|
|
143
|
+
│ • Automatische Token-Erneuerung │
|
|
144
|
+
└──────┬──────────────────────────────────┘
|
|
145
|
+
│
|
|
146
|
+
├─→ [Tier 1: ABO] Claude Code, Codex, Gemini CLI
|
|
147
|
+
│ ↓ Kontingent erschöpft
|
|
148
|
+
├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM usw.
|
|
149
|
+
│ ↓ Budget-Limit
|
|
150
|
+
├─→ [Tier 3: GÜNSTIG] GLM ($0.6/1M), MiniMax ($0.2/1M)
|
|
151
|
+
│ ↓ Budget-Limit
|
|
152
|
+
└─→ [Tier 4: KOSTENLOS] iFlow, Qwen, Kiro (unbegrenzt)
|
|
153
|
+
|
|
154
|
+
Ergebnis: Nie aufhören zu programmieren, minimale Kosten
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## ⚡ Schnellstart
|
|
160
|
+
|
|
161
|
+
**1. Global installieren:**
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm install -g omniroute
|
|
165
|
+
omniroute
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
🎉 Das Dashboard öffnet sich unter `http://localhost:20128`
|
|
169
|
+
|
|
170
|
+
| Befehl | Beschreibung |
|
|
171
|
+
| ----------------------- | ----------------------------------- |
|
|
172
|
+
| `omniroute` | Server starten (Standardport 20128) |
|
|
173
|
+
| `omniroute --port 3000` | Benutzerdefinierten Port verwenden |
|
|
174
|
+
| `omniroute --no-open` | Browser nicht automatisch öffnen |
|
|
175
|
+
| `omniroute --help` | Hilfe anzeigen |
|
|
176
|
+
|
|
177
|
+
**2. KOSTENLOSEN Anbieter verbinden:**
|
|
178
|
+
|
|
179
|
+
Dashboard → Anbieter → **Claude Code** oder **Antigravity** verbinden → OAuth Login → Fertig!
|
|
180
|
+
|
|
181
|
+
**3. In deinem CLI-Tool verwenden:**
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Einstellungen:
|
|
185
|
+
Endpoint: http://localhost:20128/v1
|
|
186
|
+
API Key: [vom Dashboard kopieren]
|
|
187
|
+
Model: if/kimi-k2-thinking
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Das war's!** Beginne mit KOSTENLOSEN KI-Modellen zu programmieren.
|
|
191
|
+
|
|
192
|
+
**Alternative — aus Quellcode ausführen:**
|
|
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 ist als öffentliches Docker-Image auf [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute) verfügbar.
|
|
205
|
+
|
|
206
|
+
**Schnellstart:**
|
|
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
|
+
**Mit Umgebungsdatei:**
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# .env kopieren und bearbeiten
|
|
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
|
+
**Mit Docker Compose:**
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Basisprofil (ohne CLI-Tools)
|
|
236
|
+
docker compose --profile base up -d
|
|
237
|
+
|
|
238
|
+
# CLI-Profil (Claude Code, Codex, OpenClaw integriert)
|
|
239
|
+
docker compose --profile cli up -d
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
| Image | Tag | Größe | Beschreibung |
|
|
243
|
+
| ------------------------ | -------- | ------ | ------------------------ |
|
|
244
|
+
| `diegosouzapw/omniroute` | `latest` | ~250MB | Letztes stabiles Release |
|
|
245
|
+
| `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Aktuelle Version |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 💰 Preisübersicht
|
|
250
|
+
|
|
251
|
+
| Tier | Anbieter | Kosten | Kontingent-Reset | Am besten für |
|
|
252
|
+
| ---------------- | ----------------- | ---------------------------- | ------------------- | ----------------------- |
|
|
253
|
+
| **💳 ABO** | Claude Code (Pro) | $20/Monat | 5h + wöchentlich | Bereits abonniert |
|
|
254
|
+
| | Codex (Plus/Pro) | $20-200/Monat | 5h + wöchentlich | OpenAI-Nutzer |
|
|
255
|
+
| | Gemini CLI | **KOSTENLOS** | 180K/Monat + 1K/Tag | Alle! |
|
|
256
|
+
| | GitHub Copilot | $10-19/Monat | Monatlich | GitHub-Nutzer |
|
|
257
|
+
| **🔑 API KEY** | NVIDIA NIM | **KOSTENLOS** (1000 Credits) | Einmalig | Kostenloses Testen |
|
|
258
|
+
| | DeepSeek | Nach Verbrauch | Keiner | Bestes Preis-Leistung |
|
|
259
|
+
| | Groq | Gratis-Stufe + bezahlt | Begrenzt | Ultra-schnelle Inferenz |
|
|
260
|
+
| | xAI (Grok) | Nach Verbrauch | Keiner | Grok-Modelle |
|
|
261
|
+
| | Mistral | Gratis-Stufe + bezahlt | Begrenzt | Europäische KI |
|
|
262
|
+
| | OpenRouter | Nach Verbrauch | Keiner | 100+ Modelle |
|
|
263
|
+
| **💰 GÜNSTIG** | GLM-4.7 | $0.6/1M | Täglich 10h | Budget-Backup |
|
|
264
|
+
| | MiniMax M2.1 | $0.2/1M | 5h rotierend | Günstigste Option |
|
|
265
|
+
| | Kimi K2 | $9/Monat fest | 10M Token/Monat | Vorhersagbare Kosten |
|
|
266
|
+
| **🆓 KOSTENLOS** | iFlow | $0 | Unbegrenzt | 8 kostenlose Modelle |
|
|
267
|
+
| | Qwen | $0 | Unbegrenzt | 3 kostenlose Modelle |
|
|
268
|
+
| | Kiro | $0 | Unbegrenzt | Kostenloses Claude |
|
|
269
|
+
|
|
270
|
+
**💡 Profi-Tipp:** Starte mit Gemini CLI (180K gratis/Monat) + iFlow (unbegrenzt gratis) = $0 Kosten!
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 🎯 Anwendungsfälle
|
|
275
|
+
|
|
276
|
+
### Fall 1: „Ich habe ein Claude Pro Abo"
|
|
277
|
+
|
|
278
|
+
**Problem:** Kontingent verfällt ungenutzt, Rate-Limits während intensivem Programmieren
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
Combo: "maximize-claude"
|
|
282
|
+
1. cc/claude-opus-4-6 (Abo voll ausnutzen)
|
|
283
|
+
2. glm/glm-4.7 (günstiges Backup bei erschöpftem Kontingent)
|
|
284
|
+
3. if/kimi-k2-thinking (kostenloser Notfall-Fallback)
|
|
285
|
+
|
|
286
|
+
Monatliche Kosten: $20 (Abo) + ~$5 (Backup) = $25 gesamt
|
|
287
|
+
vs. $20 + an Limits stoßen = Frustration
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Fall 2: „Ich will null Kosten"
|
|
291
|
+
|
|
292
|
+
**Problem:** Kann sich Abos nicht leisten, braucht zuverlässige KI zum Programmieren
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
Combo: "free-forever"
|
|
296
|
+
1. gc/gemini-3-flash (180K gratis/Monat)
|
|
297
|
+
2. if/kimi-k2-thinking (unbegrenzt gratis)
|
|
298
|
+
3. qw/qwen3-coder-plus (unbegrenzt gratis)
|
|
299
|
+
|
|
300
|
+
Monatliche Kosten: $0
|
|
301
|
+
Qualität: Produktionsreife Modelle
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Fall 3: „Ich muss 24/7 programmieren, ohne Unterbrechungen"
|
|
305
|
+
|
|
306
|
+
**Problem:** Enge Deadlines, kann sich keine Ausfallzeit leisten
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
Combo: "always-on"
|
|
310
|
+
1. cc/claude-opus-4-6 (beste Qualität)
|
|
311
|
+
2. cx/gpt-5.2-codex (zweites Abo)
|
|
312
|
+
3. glm/glm-4.7 (günstig, täglicher Reset)
|
|
313
|
+
4. minimax/MiniMax-M2.1 (günstigste, 5h Reset)
|
|
314
|
+
5. if/kimi-k2-thinking (unbegrenzt kostenlos)
|
|
315
|
+
|
|
316
|
+
Ergebnis: 5 Fallback-Ebenen = null Ausfallzeit
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Fall 4: „Ich will KOSTENLOSE KI in OpenClaw"
|
|
320
|
+
|
|
321
|
+
**Problem:** Braucht KI-Assistenz in Messaging-Apps, komplett kostenlos
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
Combo: "openclaw-free"
|
|
325
|
+
1. if/glm-4.7 (unbegrenzt kostenlos)
|
|
326
|
+
2. if/minimax-m2.1 (unbegrenzt kostenlos)
|
|
327
|
+
3. if/kimi-k2-thinking (unbegrenzt kostenlos)
|
|
328
|
+
|
|
329
|
+
Monatliche Kosten: $0
|
|
330
|
+
Zugang über: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 💡 Hauptfunktionen
|
|
336
|
+
|
|
337
|
+
### 🧠 Routing & Intelligenz
|
|
338
|
+
|
|
339
|
+
| Funktion | Was es macht |
|
|
340
|
+
| ------------------------------------ | ------------------------------------------------------------------------------ |
|
|
341
|
+
| 🎯 **Intelligenter 4-Tier-Fallback** | Auto-Routing: Abo → API Key → Günstig → Kostenlos |
|
|
342
|
+
| 📊 **Echtzeit-Kontingent-Tracking** | Live Token-Zählung + Reset-Countdown pro Anbieter |
|
|
343
|
+
| 🔄 **Format-Übersetzung** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro nahtlos |
|
|
344
|
+
| 👥 **Multi-Account-Unterstützung** | Mehrere Konten pro Anbieter mit intelligenter Auswahl |
|
|
345
|
+
| 🔄 **Auto-Token-Erneuerung** | OAuth-Token werden automatisch mit Wiederholungen erneuert |
|
|
346
|
+
| 🎨 **Benutzerdefinierte Combos** | 6 Strategien: fill-first, round-robin, p2c, random, least-used, cost-optimized |
|
|
347
|
+
| 🧩 **Benutzerdefinierte Modelle** | Jede Modell-ID zu jedem Anbieter hinzufügen |
|
|
348
|
+
| 🌐 **Wildcard-Router** | `provider/*` Muster dynamisch an jeden Anbieter routen |
|
|
349
|
+
| 🧠 **Reasoning-Budget** | Passthrough, auto, custom und adaptive Modi für Reasoning-Modelle |
|
|
350
|
+
| 💬 **System Prompt Injection** | Globaler System Prompt für alle Anfragen |
|
|
351
|
+
| 📄 **API Responses** | Volle Unterstützung der OpenAI Responses API (`/v1/responses`) für Codex |
|
|
352
|
+
|
|
353
|
+
### 🎵 Multi-Modale APIs
|
|
354
|
+
|
|
355
|
+
| Funktion | Was es macht |
|
|
356
|
+
| -------------------------- | ------------------------------------------------- |
|
|
357
|
+
| 🖼️ **Bildgenerierung** | `/v1/images/generations` — 4 Anbieter, 9+ Modelle |
|
|
358
|
+
| 📐 **Embeddings** | `/v1/embeddings` — 6 Anbieter, 9+ Modelle |
|
|
359
|
+
| 🎤 **Audio-Transkription** | `/v1/audio/transcriptions` — Whisper-kompatibel |
|
|
360
|
+
| 🔊 **Text-zu-Sprache** | `/v1/audio/speech` — Multi-Anbieter Audiosynthese |
|
|
361
|
+
| 🛡️ **Moderationen** | `/v1/moderations` — Sicherheitsüberprüfungen |
|
|
362
|
+
| 🔀 **Reranking** | `/v1/rerank` — Dokumenten-Relevanz-Neuordnung |
|
|
363
|
+
|
|
364
|
+
### 🛡️ Resilienz & Sicherheit
|
|
365
|
+
|
|
366
|
+
| Funktion | Was es macht |
|
|
367
|
+
| ------------------------------- | -------------------------------------------------------------------- |
|
|
368
|
+
| 🔌 **Circuit Breaker** | Auto-Öffnung/-Schließung pro Anbieter mit konfigurierbaren Schwellen |
|
|
369
|
+
| 🛡️ **Anti-Thundering Herd** | Mutex + Semaphor Rate-Limit für API-Key-Anbieter |
|
|
370
|
+
| 🧠 **Semantischer Cache** | Zwei-Ebenen-Cache (Signatur + Semantik) senkt Kosten und Latenz |
|
|
371
|
+
| ⚡ **Anfrage-Idempotenz** | 5s Dedup-Fenster für doppelte Anfragen |
|
|
372
|
+
| 🔒 **TLS-Fingerprint-Spoofing** | Bot-Erkennung umgehen via wreq-js |
|
|
373
|
+
| 🌐 **IP-Filterung** | Allowlist/Blocklist für API-Zugriffskontrolle |
|
|
374
|
+
| 📊 **Editierbare Rate-Limits** | Konfigurierbare RPM, minimaler Abstand, max. Konkurrenz |
|
|
375
|
+
|
|
376
|
+
### 📊 Observability & Analytics
|
|
377
|
+
|
|
378
|
+
| Funktion | Was es macht |
|
|
379
|
+
| ---------------------------- | -------------------------------------------------------------- |
|
|
380
|
+
| 📝 **Anfrage-Logs** | Debug-Modus mit vollständigen Request/Response-Logs |
|
|
381
|
+
| 💾 **SQLite-Logs** | Persistente Proxy-Logs überleben Neustarts |
|
|
382
|
+
| 📊 **Analytics-Dashboard** | Recharts: Statistik-Karten, Nutzungsdiagramm, Anbieter-Tabelle |
|
|
383
|
+
| 📈 **Fortschritts-Tracking** | Opt-in SSE-Fortschrittsereignisse für Streaming |
|
|
384
|
+
| 🧪 **LLM-Evaluierungen** | Testen mit Golden Set und 4 Match-Strategien |
|
|
385
|
+
| 🔍 **Anfrage-Telemetrie** | p50/p95/p99 Latenz-Aggregation + X-Request-Id Tracking |
|
|
386
|
+
| 📋 **Logs + Kontingente** | Dedizierte Seiten für Log-Browsing und Kontingent-Tracking |
|
|
387
|
+
| 🏥 **Health Dashboard** | Uptime, Circuit-Breaker-Status, Lockouts, Cache-Statistiken |
|
|
388
|
+
| 💰 **Kosten-Tracking** | Budget-Management + Preiseinstellung pro Modell |
|
|
389
|
+
|
|
390
|
+
### ☁️ Deployment & Sync
|
|
391
|
+
|
|
392
|
+
| Funktion | Was es macht |
|
|
393
|
+
| -------------------------- | ----------------------------------------------------------------------------- |
|
|
394
|
+
| 💾 **Cloud Sync** | Einstellungen zwischen Geräten via Cloudflare Workers synchronisieren |
|
|
395
|
+
| 🌐 **Überall deployen** | Localhost, VPS, Docker, Cloudflare Workers |
|
|
396
|
+
| 🔑 **API-Key-Verwaltung** | API-Keys pro Anbieter generieren, rotieren und einschränken |
|
|
397
|
+
| 🧙 **Setup-Assistent** | 4-Schritte geführtes Setup für neue Nutzer |
|
|
398
|
+
| 🔧 **CLI Tools Dashboard** | Ein-Klick-Konfiguration für Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
|
399
|
+
| 🔄 **DB-Backups** | Automatisches Backup und Wiederherstellung aller Einstellungen |
|
|
400
|
+
|
|
401
|
+
<details>
|
|
402
|
+
<summary><b>📖 Funktionsdetails</b></summary>
|
|
403
|
+
|
|
404
|
+
### 🎯 Intelligenter 4-Tier-Fallback
|
|
405
|
+
|
|
406
|
+
Erstelle Combos mit automatischem Fallback:
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
Combo: "my-coding-stack"
|
|
410
|
+
1. cc/claude-opus-4-6 (dein Abo)
|
|
411
|
+
2. nvidia/llama-3.3-70b (kostenlose NVIDIA API)
|
|
412
|
+
3. glm/glm-4.7 (günstiges Backup, $0.6/1M)
|
|
413
|
+
4. if/kimi-k2-thinking (kostenloser Fallback)
|
|
414
|
+
|
|
415
|
+
→ Wechselt automatisch bei erschöpftem Kontingent oder Fehlern
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### 📊 Echtzeit-Kontingent-Tracking
|
|
419
|
+
|
|
420
|
+
- Token-Verbrauch pro Anbieter
|
|
421
|
+
- Reset-Countdown (5 Stunden, täglich, wöchentlich)
|
|
422
|
+
- Kostenabschätzung für bezahlte Stufen
|
|
423
|
+
- Monatliche Ausgabenberichte
|
|
424
|
+
|
|
425
|
+
### 🔄 Format-Übersetzung
|
|
426
|
+
|
|
427
|
+
Nahtlose Übersetzung zwischen Formaten:
|
|
428
|
+
|
|
429
|
+
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
|
|
430
|
+
- Dein CLI sendet OpenAI-Format → OmniRoute übersetzt → Anbieter empfängt natives Format
|
|
431
|
+
- Funktioniert mit jedem Tool, das benutzerdefinierte OpenAI-Endpoints unterstützt
|
|
432
|
+
|
|
433
|
+
### 👥 Multi-Account-Unterstützung
|
|
434
|
+
|
|
435
|
+
- Mehrere Konten pro Anbieter hinzufügen
|
|
436
|
+
- Automatisches Round-Robin oder prioritätsbasiertes Routing
|
|
437
|
+
- Fallback zum nächsten Konto bei Kontingent-Erschöpfung
|
|
438
|
+
|
|
439
|
+
### 🔄 Auto-Token-Erneuerung
|
|
440
|
+
|
|
441
|
+
- OAuth-Token werden automatisch vor Ablauf erneuert
|
|
442
|
+
- Keine manuelle Neuauthentifizierung nötig
|
|
443
|
+
- Nahtlose Erfahrung über alle Anbieter
|
|
444
|
+
|
|
445
|
+
### 🎨 Benutzerdefinierte Combos
|
|
446
|
+
|
|
447
|
+
- Unbegrenzte Modell-Kombinationen erstellen
|
|
448
|
+
- 6 Strategien: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
|
|
449
|
+
- Combos zwischen Geräten mit Cloud Sync teilen
|
|
450
|
+
|
|
451
|
+
### 🏥 Health Dashboard
|
|
452
|
+
|
|
453
|
+
- Systemstatus (Uptime, Version, Speichernutzung)
|
|
454
|
+
- Circuit-Breaker-Status pro Anbieter (Closed/Open/Half-Open)
|
|
455
|
+
- Rate-Limit-Status und aktive Lockouts
|
|
456
|
+
- Signatur-Cache-Statistiken
|
|
457
|
+
- Latenz-Telemetrie (p50/p95/p99) + Prompt-Cache
|
|
458
|
+
- Gesundheitsstatus mit einem Klick zurücksetzen
|
|
459
|
+
|
|
460
|
+
### 🔧 Übersetzer-Playground
|
|
461
|
+
|
|
462
|
+
- Debug, Test und Visualisierung von API-Format-Übersetzungen
|
|
463
|
+
- Anfragen senden und sehen, wie OmniRoute zwischen Anbieter-Formaten übersetzt
|
|
464
|
+
- Unschätzbar für Integrationsprobleme
|
|
465
|
+
|
|
466
|
+
### 💾 Cloud Sync
|
|
467
|
+
|
|
468
|
+
- Anbieter, Combos und Einstellungen zwischen Geräten synchronisieren
|
|
469
|
+
- Automatische Hintergrundsynchronisierung
|
|
470
|
+
- Sichere verschlüsselte Speicherung
|
|
471
|
+
|
|
472
|
+
</details>
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## 📖 Einrichtungsanleitung
|
|
477
|
+
|
|
478
|
+
<details>
|
|
479
|
+
<summary><b>💳 Abo-Anbieter</b></summary>
|
|
480
|
+
|
|
481
|
+
### Claude Code (Pro/Max)
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
Dashboard → Anbieter → Claude Code verbinden
|
|
485
|
+
→ OAuth Login → Automatische Token-Erneuerung
|
|
486
|
+
→ 5h + wöchentliches Kontingent-Tracking
|
|
487
|
+
|
|
488
|
+
Modelle:
|
|
489
|
+
cc/claude-opus-4-6
|
|
490
|
+
cc/claude-sonnet-4-5-20250929
|
|
491
|
+
cc/claude-haiku-4-5-20251001
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Profi-Tipp:** Opus für komplexe Aufgaben, Sonnet für Geschwindigkeit. OmniRoute trackt Kontingent pro Modell!
|
|
495
|
+
|
|
496
|
+
### OpenAI Codex (Plus/Pro)
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
Dashboard → Anbieter → Codex verbinden
|
|
500
|
+
→ OAuth Login (Port 1455)
|
|
501
|
+
→ 5h + wöchentlicher Reset
|
|
502
|
+
|
|
503
|
+
Modelle:
|
|
504
|
+
cx/gpt-5.2-codex
|
|
505
|
+
cx/gpt-5.1-codex-max
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Gemini CLI (KOSTENLOS 180K/Monat!)
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
Dashboard → Anbieter → Gemini CLI verbinden
|
|
512
|
+
→ Google OAuth
|
|
513
|
+
→ 180K Completions/Monat + 1K/Tag
|
|
514
|
+
|
|
515
|
+
Modelle:
|
|
516
|
+
gc/gemini-3-flash-preview
|
|
517
|
+
gc/gemini-2.5-pro
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
**Bester Wert:** Riesiger Gratis-Tarif! Vor bezahlten Stufen nutzen.
|
|
521
|
+
|
|
522
|
+
### GitHub Copilot
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
Dashboard → Anbieter → GitHub verbinden
|
|
526
|
+
→ OAuth via GitHub
|
|
527
|
+
→ Monatlicher Reset (1. des Monats)
|
|
528
|
+
|
|
529
|
+
Modelle:
|
|
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-Anbieter</b></summary>
|
|
539
|
+
|
|
540
|
+
### NVIDIA NIM (KOSTENLOS 1000 Credits!)
|
|
541
|
+
|
|
542
|
+
1. Registrieren: [build.nvidia.com](https://build.nvidia.com)
|
|
543
|
+
2. Kostenlosen API-Key holen (1000 Inferenz-Credits inklusive)
|
|
544
|
+
3. Dashboard → Anbieter hinzufügen → NVIDIA NIM:
|
|
545
|
+
- API Key: `nvapi-your-key`
|
|
546
|
+
|
|
547
|
+
**Modelle:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` und 50+ weitere
|
|
548
|
+
|
|
549
|
+
**Profi-Tipp:** OpenAI-kompatible API — funktioniert perfekt mit OmniRoutes Format-Übersetzung!
|
|
550
|
+
|
|
551
|
+
### DeepSeek
|
|
552
|
+
|
|
553
|
+
1. Registrieren: [platform.deepseek.com](https://platform.deepseek.com)
|
|
554
|
+
2. API-Key holen
|
|
555
|
+
3. Dashboard → Anbieter hinzufügen → DeepSeek
|
|
556
|
+
|
|
557
|
+
**Modelle:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
|
558
|
+
|
|
559
|
+
### Groq (Gratis-Stufe verfügbar!)
|
|
560
|
+
|
|
561
|
+
1. Registrieren: [console.groq.com](https://console.groq.com)
|
|
562
|
+
2. API-Key holen (Gratis-Stufe inklusive)
|
|
563
|
+
3. Dashboard → Anbieter hinzufügen → Groq
|
|
564
|
+
|
|
565
|
+
**Modelle:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
|
566
|
+
|
|
567
|
+
**Profi-Tipp:** Ultra-schnelle Inferenz — am besten für Echtzeit-Programmierung!
|
|
568
|
+
|
|
569
|
+
### OpenRouter (100+ Modelle)
|
|
570
|
+
|
|
571
|
+
1. Registrieren: [openrouter.ai](https://openrouter.ai)
|
|
572
|
+
2. API-Key holen
|
|
573
|
+
3. Dashboard → Anbieter hinzufügen → OpenRouter
|
|
574
|
+
|
|
575
|
+
**Modelle:** Zugang zu 100+ Modellen aller großen Anbieter über einen einzigen API-Key.
|
|
576
|
+
|
|
577
|
+
</details>
|
|
578
|
+
|
|
579
|
+
<details>
|
|
580
|
+
<summary><b>💰 Günstige Anbieter (Backup)</b></summary>
|
|
581
|
+
|
|
582
|
+
### GLM-4.7 (Täglicher Reset, $0.6/1M)
|
|
583
|
+
|
|
584
|
+
1. Registrieren: [Zhipu AI](https://open.bigmodel.cn/)
|
|
585
|
+
2. API-Key aus dem Coding Plan holen
|
|
586
|
+
3. Dashboard → API Key hinzufügen:
|
|
587
|
+
- Anbieter: `glm`
|
|
588
|
+
- API Key: `your-key`
|
|
589
|
+
|
|
590
|
+
**Nutze:** `glm/glm-4.7`
|
|
591
|
+
|
|
592
|
+
**Profi-Tipp:** Der Coding Plan bietet 3× Kontingent zu 1/7 der Kosten! Täglicher Reset um 10:00.
|
|
593
|
+
|
|
594
|
+
### MiniMax M2.1 (5h Reset, $0.20/1M)
|
|
595
|
+
|
|
596
|
+
1. Registrieren: [MiniMax](https://www.minimax.io/)
|
|
597
|
+
2. API-Key holen
|
|
598
|
+
3. Dashboard → API Key hinzufügen
|
|
599
|
+
|
|
600
|
+
**Nutze:** `minimax/MiniMax-M2.1`
|
|
601
|
+
|
|
602
|
+
**Profi-Tipp:** Günstigste Option für langen Kontext (1M Token)!
|
|
603
|
+
|
|
604
|
+
### Kimi K2 ($9/Monat fest)
|
|
605
|
+
|
|
606
|
+
1. Abonnieren: [Moonshot AI](https://platform.moonshot.ai/)
|
|
607
|
+
2. API-Key holen
|
|
608
|
+
3. Dashboard → API Key hinzufügen
|
|
609
|
+
|
|
610
|
+
**Nutze:** `kimi/kimi-latest`
|
|
611
|
+
|
|
612
|
+
**Profi-Tipp:** Feste $9/Monat für 10M Token = $0.90/1M effektive Kosten!
|
|
613
|
+
|
|
614
|
+
</details>
|
|
615
|
+
|
|
616
|
+
<details>
|
|
617
|
+
<summary><b>🆓 KOSTENLOSE Anbieter (Notfall-Backup)</b></summary>
|
|
618
|
+
|
|
619
|
+
### iFlow (8 KOSTENLOSE Modelle)
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
Dashboard → iFlow verbinden
|
|
623
|
+
→ iFlow OAuth Login
|
|
624
|
+
→ Unbegrenzte Nutzung
|
|
625
|
+
|
|
626
|
+
Modelle:
|
|
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 KOSTENLOSE Modelle)
|
|
635
|
+
|
|
636
|
+
```bash
|
|
637
|
+
Dashboard → Qwen verbinden
|
|
638
|
+
→ Geräte-Code-Autorisierung
|
|
639
|
+
→ Unbegrenzte Nutzung
|
|
640
|
+
|
|
641
|
+
Modelle:
|
|
642
|
+
qw/qwen3-coder-plus
|
|
643
|
+
qw/qwen3-coder-flash
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
### Kiro (Kostenloses Claude)
|
|
647
|
+
|
|
648
|
+
```bash
|
|
649
|
+
Dashboard → Kiro verbinden
|
|
650
|
+
→ AWS Builder ID oder Google/GitHub
|
|
651
|
+
→ Unbegrenzte Nutzung
|
|
652
|
+
|
|
653
|
+
Modelle:
|
|
654
|
+
kr/claude-sonnet-4.5
|
|
655
|
+
kr/claude-haiku-4.5
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
</details>
|
|
659
|
+
|
|
660
|
+
<details>
|
|
661
|
+
<summary><b>🎨 Combos erstellen</b></summary>
|
|
662
|
+
|
|
663
|
+
### Beispiel 1: Abo maximieren → Günstiges Backup
|
|
664
|
+
|
|
665
|
+
```
|
|
666
|
+
Dashboard → Combos → Neues erstellen
|
|
667
|
+
|
|
668
|
+
Name: premium-coding
|
|
669
|
+
Modelle:
|
|
670
|
+
1. cc/claude-opus-4-6 (Primäres Abo)
|
|
671
|
+
2. glm/glm-4.7 (Günstiges Backup, $0.6/1M)
|
|
672
|
+
3. minimax/MiniMax-M2.1 (Günstigster Fallback, $0.20/1M)
|
|
673
|
+
|
|
674
|
+
Im CLI nutzen: premium-coding
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
### Beispiel 2: Nur Kostenlos (Null Kosten)
|
|
678
|
+
|
|
679
|
+
```
|
|
680
|
+
Name: free-combo
|
|
681
|
+
Modelle:
|
|
682
|
+
1. gc/gemini-3-flash-preview (180K gratis/Monat)
|
|
683
|
+
2. if/kimi-k2-thinking (unbegrenzt)
|
|
684
|
+
3. qw/qwen3-coder-plus (unbegrenzt)
|
|
685
|
+
|
|
686
|
+
Kosten: Für immer $0!
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
</details>
|
|
690
|
+
|
|
691
|
+
<details>
|
|
692
|
+
<summary><b>🔧 CLI-Integration</b></summary>
|
|
693
|
+
|
|
694
|
+
### Cursor IDE
|
|
695
|
+
|
|
696
|
+
```
|
|
697
|
+
Einstellungen → Modelle → Erweitert:
|
|
698
|
+
OpenAI API Base URL: http://localhost:20128/v1
|
|
699
|
+
OpenAI API Key: [aus OmniRoute Dashboard]
|
|
700
|
+
Model: cc/claude-opus-4-6
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
### Claude Code
|
|
704
|
+
|
|
705
|
+
Nutze die **CLI Tools** Seite im Dashboard für Ein-Klick-Konfiguration, oder bearbeite `~/.claude/settings.json` manuell.
|
|
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
|
+
**Option 1 — Dashboard (empfohlen):**
|
|
719
|
+
|
|
720
|
+
```
|
|
721
|
+
Dashboard → CLI Tools → OpenClaw → Modell wählen → Anwenden
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
**Option 2 — Manuell:** `~/.openclaw/openclaw.json` bearbeiten:
|
|
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
|
+
> **Hinweis:** OpenClaw funktioniert nur mit lokalem OmniRoute. Verwende `127.0.0.1` statt `localhost` um IPv6-Auflösungsprobleme zu vermeiden.
|
|
741
|
+
|
|
742
|
+
### Cline / Continue / RooCode
|
|
743
|
+
|
|
744
|
+
```
|
|
745
|
+
Einstellungen → API-Konfiguration:
|
|
746
|
+
Anbieter: OpenAI Compatible
|
|
747
|
+
Base URL: http://localhost:20128/v1
|
|
748
|
+
API Key: [aus OmniRoute Dashboard]
|
|
749
|
+
Model: if/kimi-k2-thinking
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
</details>
|
|
753
|
+
|
|
754
|
+
---
|
|
755
|
+
|
|
756
|
+
## 📊 Verfügbare Modelle
|
|
757
|
+
|
|
758
|
+
<details>
|
|
759
|
+
<summary><b>Alle verfügbaren Modelle anzeigen</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/`)** - KOSTENLOS:
|
|
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/`)** - KOSTENLOSE Credits:
|
|
783
|
+
|
|
784
|
+
- `nvidia/llama-3.3-70b-instruct`
|
|
785
|
+
- `nvidia/mistral-7b-instruct`
|
|
786
|
+
- 50+ weitere Modelle auf [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/`)** - KOSTENLOS:
|
|
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/`)** - KOSTENLOS:
|
|
805
|
+
|
|
806
|
+
- `qw/qwen3-coder-plus`
|
|
807
|
+
- `qw/qwen3-coder-flash`
|
|
808
|
+
|
|
809
|
+
**Kiro (`kr/`)** - KOSTENLOS:
|
|
810
|
+
|
|
811
|
+
- `kr/claude-sonnet-4.5`
|
|
812
|
+
- `kr/claude-haiku-4.5`
|
|
813
|
+
|
|
814
|
+
**OpenRouter (`or/`)** - 100+ Modelle:
|
|
815
|
+
|
|
816
|
+
- `or/anthropic/claude-4-sonnet`
|
|
817
|
+
- `or/google/gemini-2.5-pro`
|
|
818
|
+
- Jedes Modell von [openrouter.ai/models](https://openrouter.ai/models)
|
|
819
|
+
|
|
820
|
+
</details>
|
|
821
|
+
|
|
822
|
+
---
|
|
823
|
+
|
|
824
|
+
## 🧪 Evaluierungen (Evals)
|
|
825
|
+
|
|
826
|
+
OmniRoute enthält ein integriertes Evaluierungs-Framework zum Testen der LLM-Antwortqualität gegen ein Golden Set. Zugang über **Analytics → Evals** im Dashboard.
|
|
827
|
+
|
|
828
|
+
### Integriertes Golden Set
|
|
829
|
+
|
|
830
|
+
Das vorgeladene „OmniRoute Golden Set" enthält 10 Testfälle:
|
|
831
|
+
|
|
832
|
+
- Begrüßungen, Mathematik, Geographie, Code-Generierung
|
|
833
|
+
- JSON-Formatkonformität, Übersetzung, Markdown
|
|
834
|
+
- Sicherheitsablehnung (schädlicher Inhalt), Zählung, Boolesche Logik
|
|
835
|
+
|
|
836
|
+
### Evaluierungsstrategien
|
|
837
|
+
|
|
838
|
+
| Strategie | Beschreibung | Beispiel |
|
|
839
|
+
| ---------- | ---------------------------------------------------------- | -------------------------------- |
|
|
840
|
+
| `exact` | Ausgabe muss exakt übereinstimmen | `"4"` |
|
|
841
|
+
| `contains` | Ausgabe muss Teilzeichenfolge enthalten (case-insensitive) | `"Paris"` |
|
|
842
|
+
| `regex` | Ausgabe muss Regex-Muster entsprechen | `"1.*2.*3"` |
|
|
843
|
+
| `custom` | Benutzerdefinierte JS-Funktion gibt true/false zurück | `(output) => output.length > 10` |
|
|
844
|
+
|
|
845
|
+
---
|
|
846
|
+
|
|
847
|
+
## 🐛 Fehlerbehebung
|
|
848
|
+
|
|
849
|
+
<details>
|
|
850
|
+
<summary><b>Klicke zum Erweitern der Fehlerbehebungsanleitung</b></summary>
|
|
851
|
+
|
|
852
|
+
**„Language model did not provide messages"**
|
|
853
|
+
|
|
854
|
+
- Anbieter-Kontingent erschöpft → Kontingent-Tracker im Dashboard prüfen
|
|
855
|
+
- Lösung: Combo mit Fallback nutzen oder zu günstigerer Stufe wechseln
|
|
856
|
+
|
|
857
|
+
**Rate Limiting**
|
|
858
|
+
|
|
859
|
+
- Abo-Kontingent erschöpft → Fallback zu GLM/MiniMax
|
|
860
|
+
- Combo hinzufügen: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
861
|
+
|
|
862
|
+
**OAuth-Token abgelaufen**
|
|
863
|
+
|
|
864
|
+
- Wird automatisch von OmniRoute erneuert
|
|
865
|
+
- Falls Problem bestehen bleibt: Dashboard → Anbieter → Neu verbinden
|
|
866
|
+
|
|
867
|
+
**Hohe Kosten**
|
|
868
|
+
|
|
869
|
+
- Nutzungsstatistiken unter Dashboard → Kosten prüfen
|
|
870
|
+
- Primärmodell auf GLM/MiniMax umstellen
|
|
871
|
+
- Gratis-Stufe (Gemini CLI, iFlow) für unkritische Aufgaben nutzen
|
|
872
|
+
|
|
873
|
+
**Dashboard öffnet sich auf falschem Port**
|
|
874
|
+
|
|
875
|
+
- `PORT=20128` und `NEXT_PUBLIC_BASE_URL=http://localhost:20128` setzen
|
|
876
|
+
|
|
877
|
+
**Cloud-Sync-Fehler**
|
|
878
|
+
|
|
879
|
+
- Prüfe dass `BASE_URL` auf deine laufende Instanz zeigt
|
|
880
|
+
- Prüfe dass `CLOUD_URL` auf den erwarteten Cloud-Endpoint zeigt
|
|
881
|
+
- `NEXT_PUBLIC_*` Werte mit Serverwerten synchron halten
|
|
882
|
+
|
|
883
|
+
**Erster Login funktioniert nicht**
|
|
884
|
+
|
|
885
|
+
- `INITIAL_PASSWORD` in `.env` prüfen
|
|
886
|
+
- Falls nicht gesetzt, Standard-Passwort ist `123456`
|
|
887
|
+
|
|
888
|
+
**Keine Anfrage-Logs**
|
|
889
|
+
|
|
890
|
+
- `ENABLE_REQUEST_LOGS=true` in `.env` setzen
|
|
891
|
+
|
|
892
|
+
**Verbindungstest zeigt „Invalid" für OpenAI-kompatible Anbieter**
|
|
893
|
+
|
|
894
|
+
- Viele Anbieter stellen den `/models` Endpoint nicht bereit
|
|
895
|
+
- OmniRoute v0.9.0+ enthält Fallback-Validierung via Chat Completions
|
|
896
|
+
- Stelle sicher, dass die Base URL den `/v1` Suffix enthält
|
|
897
|
+
|
|
898
|
+
</details>
|
|
899
|
+
|
|
900
|
+
---
|
|
901
|
+
|
|
902
|
+
## 🛠️ Technologie-Stack
|
|
903
|
+
|
|
904
|
+
- **Runtime**: Node.js 20+
|
|
905
|
+
- **Sprache**: TypeScript 5.9 — **100% TypeScript** in `src/` und `open-sse/` (v0.9.0)
|
|
906
|
+
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
|
|
907
|
+
- **Datenbank**: LowDB (JSON) + SQLite (Domain-Status + Proxy-Logs)
|
|
908
|
+
- **Streaming**: Server-Sent Events (SSE)
|
|
909
|
+
- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
|
|
910
|
+
- **Testing**: Node.js Test Runner (368+ Unit-Tests)
|
|
911
|
+
- **CI/CD**: GitHub Actions (automatische npm + Docker Hub Veröffentlichung bei Release)
|
|
912
|
+
- **Website**: [omniroute.online](https://omniroute.online)
|
|
913
|
+
- **Paket**: [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
|
+
- **Resilienz**: Circuit Breaker, exponentieller Backoff, Anti-Thundering Herd, TLS-Spoofing
|
|
916
|
+
|
|
917
|
+
---
|
|
918
|
+
|
|
919
|
+
## 📖 Dokumentation
|
|
920
|
+
|
|
921
|
+
| Dokument | Beschreibung |
|
|
922
|
+
| ------------------------------------------ | ---------------------------------------------- |
|
|
923
|
+
| [Benutzerhandbuch](docs/USER_GUIDE.md) | Anbieter, Combos, CLI-Integration, Deploy |
|
|
924
|
+
| [API-Referenz](docs/API_REFERENCE.md) | Alle Endpoints mit Beispielen |
|
|
925
|
+
| [Fehlerbehebung](docs/TROUBLESHOOTING.md) | Häufige Probleme und Lösungen |
|
|
926
|
+
| [Architektur](docs/ARCHITECTURE.md) | Systemarchitektur und Interna |
|
|
927
|
+
| [Mitwirken](CONTRIBUTING.md) | Entwicklungs-Setup und Richtlinien |
|
|
928
|
+
| [OpenAPI-Spezifikation](docs/openapi.yaml) | OpenAPI 3.0 Spezifikation |
|
|
929
|
+
| [Sicherheitsrichtlinie](SECURITY.md) | Schwachstellen melden und Sicherheitspraktiken |
|
|
930
|
+
|
|
931
|
+
---
|
|
932
|
+
|
|
933
|
+
## 📧 Support
|
|
934
|
+
|
|
935
|
+
- **Website**: [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
|
+
- **Originalprojekt**: [9router von decolua](https://github.com/decolua/9router)
|
|
939
|
+
|
|
940
|
+
---
|
|
941
|
+
|
|
942
|
+
## 👥 Mitwirkende
|
|
943
|
+
|
|
944
|
+
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
|
945
|
+
|
|
946
|
+
### Wie du mitwirken kannst
|
|
947
|
+
|
|
948
|
+
1. Repository forken
|
|
949
|
+
2. Feature-Branch erstellen (`git checkout -b feature/amazing-feature`)
|
|
950
|
+
3. Änderungen committen (`git commit -m 'Add amazing feature'`)
|
|
951
|
+
4. Branch pushen (`git push origin feature/amazing-feature`)
|
|
952
|
+
5. Pull Request öffnen
|
|
953
|
+
|
|
954
|
+
Siehe [CONTRIBUTING.md](CONTRIBUTING.md) für detaillierte Richtlinien.
|
|
955
|
+
|
|
956
|
+
### Neue Version veröffentlichen
|
|
957
|
+
|
|
958
|
+
```bash
|
|
959
|
+
# Release erstellen — npm-Veröffentlichung erfolgt automatisch
|
|
960
|
+
gh release create v0.9.0 --title "v0.9.0" --generate-notes
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
---
|
|
964
|
+
|
|
965
|
+
## 📊 Star-Verlauf
|
|
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
|
+
## 🙏 Danksagungen
|
|
978
|
+
|
|
979
|
+
Besonderer Dank an **[9router](https://github.com/decolua/9router)** von **[decolua](https://github.com/decolua)** — das Originalprojekt, das diesen Fork inspiriert hat. OmniRoute baut auf diesem unglaublichen Fundament auf mit zusätzlichen Funktionen, Multi-Modalen APIs und einem vollständigen TypeScript-Rewrite.
|
|
980
|
+
|
|
981
|
+
Besonderer Dank an **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — die ursprüngliche Go-Implementierung, die diese JavaScript-Portierung inspiriert hat.
|
|
982
|
+
|
|
983
|
+
---
|
|
984
|
+
|
|
985
|
+
## 📄 Lizenz
|
|
986
|
+
|
|
987
|
+
MIT-Lizenz — siehe [LICENSE](LICENSE) für Details.
|
|
988
|
+
|
|
989
|
+
---
|
|
990
|
+
|
|
991
|
+
<div align="center">
|
|
992
|
+
<sub>Mit ❤️ gemacht für Entwickler, die 24/7 programmieren</sub>
|
|
993
|
+
<br/>
|
|
994
|
+
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
|
995
|
+
</div>
|