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.es.md
ADDED
|
@@ -0,0 +1,995 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="./images/omniroute.png" alt="OmniRoute Dashboard" width="800"/>
|
|
3
|
+
|
|
4
|
+
# 🚀 OmniRoute — El Gateway de IA Gratuito
|
|
5
|
+
|
|
6
|
+
### Nunca dejes de programar. Enrutamiento inteligente hacia **modelos de IA GRATUITOS y económicos** con fallback automático.
|
|
7
|
+
|
|
8
|
+
_Tu proxy de API universal — un endpoint, 36+ proveedores, cero tiempo de inactividad._
|
|
9
|
+
|
|
10
|
+
**Chat Completions • Embeddings • Generación de Imágenes • Audio • Reranking • 100% TypeScript**
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
### 🤖 Proveedor de IA Gratuito para tus agentes de programación favoritos
|
|
15
|
+
|
|
16
|
+
_Conecta cualquier IDE o herramienta CLI con IA a través de OmniRoute — gateway de API gratuito para programación ilimitada._
|
|
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>📡 Todos los agentes se conectan vía <code>http://localhost:20128/v1</code> o <code>http://cloud.omniroute.online/v1</code> — una configuración, modelos y cuota ilimitados</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) • [🚀 Inicio Rápido](#-inicio-rápido) • [💡 Características](#-características-principales) • [📖 Docs](#-documentación) • [💰 Precios](#-precios-resumidos)
|
|
105
|
+
|
|
106
|
+
🌐 **Disponible en:** [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
|
+
## 🤔 ¿Por qué OmniRoute?
|
|
113
|
+
|
|
114
|
+
**Deja de desperdiciar dinero y chocar con límites:**
|
|
115
|
+
|
|
116
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> La cuota de suscripción expira sin usar cada mes
|
|
117
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Los límites de tasa te detienen en medio de la programación
|
|
118
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> APIs caras ($20-50/mes por proveedor)
|
|
119
|
+
- <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Cambiar manualmente entre proveedores
|
|
120
|
+
|
|
121
|
+
**OmniRoute resuelve esto:**
|
|
122
|
+
|
|
123
|
+
- ✅ **Maximiza suscripciones** - Rastrea cuotas, usa cada bit antes del reset
|
|
124
|
+
- ✅ **Fallback automático** - Suscripción → API Key → Barato → Gratuito, cero tiempo de inactividad
|
|
125
|
+
- ✅ **Multi-cuenta** - Round-robin entre cuentas por proveedor
|
|
126
|
+
- ✅ **Universal** - Funciona con Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, cualquier herramienta CLI
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 🔄 Cómo Funciona
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
┌─────────────┐
|
|
134
|
+
│ Tu CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
|
135
|
+
│ Tool │
|
|
136
|
+
└──────┬──────┘
|
|
137
|
+
│ http://localhost:20128/v1
|
|
138
|
+
↓
|
|
139
|
+
┌─────────────────────────────────────────┐
|
|
140
|
+
│ OmniRoute (Enrutador Inteligente) │
|
|
141
|
+
│ • Traducción de formato (OpenAI ↔ Claude) │
|
|
142
|
+
│ • Rastreo de cuota + Embeddings + Imágenes │
|
|
143
|
+
│ • Renovación automática de tokens │
|
|
144
|
+
└──────┬──────────────────────────────────┘
|
|
145
|
+
│
|
|
146
|
+
├─→ [Tier 1: SUSCRIPCIÓN] Claude Code, Codex, Gemini CLI
|
|
147
|
+
│ ↓ cuota agotada
|
|
148
|
+
├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
|
|
149
|
+
│ ↓ límite de presupuesto
|
|
150
|
+
├─→ [Tier 3: BARATO] GLM ($0.6/1M), MiniMax ($0.2/1M)
|
|
151
|
+
│ ↓ límite de presupuesto
|
|
152
|
+
└─→ [Tier 4: GRATUITO] iFlow, Qwen, Kiro (ilimitado)
|
|
153
|
+
|
|
154
|
+
Resultado: Nunca dejes de programar, costo mínimo
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## ⚡ Inicio Rápido
|
|
160
|
+
|
|
161
|
+
**1. Instala globalmente:**
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm install -g omniroute
|
|
165
|
+
omniroute
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
🎉 El Dashboard se abre en `http://localhost:20128`
|
|
169
|
+
|
|
170
|
+
| Comando | Descripción |
|
|
171
|
+
| ----------------------- | ---------------------------------------------- |
|
|
172
|
+
| `omniroute` | Iniciar servidor (puerto predeterminado 20128) |
|
|
173
|
+
| `omniroute --port 3000` | Usar puerto personalizado |
|
|
174
|
+
| `omniroute --no-open` | No abrir navegador automáticamente |
|
|
175
|
+
| `omniroute --help` | Mostrar ayuda |
|
|
176
|
+
|
|
177
|
+
**2. Conecta un proveedor GRATUITO:**
|
|
178
|
+
|
|
179
|
+
Dashboard → Proveedores → Conectar **Claude Code** o **Antigravity** → Login OAuth → ¡Listo!
|
|
180
|
+
|
|
181
|
+
**3. Usa en tu herramienta CLI:**
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Configuración:
|
|
185
|
+
Endpoint: http://localhost:20128/v1
|
|
186
|
+
API Key: [copiar del dashboard]
|
|
187
|
+
Model: if/kimi-k2-thinking
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**¡Eso es todo!** Comienza a programar con modelos de IA GRATUITOS.
|
|
191
|
+
|
|
192
|
+
**Alternativa — ejecutar desde código fuente:**
|
|
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 está disponible como imagen Docker pública en [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
|
|
205
|
+
|
|
206
|
+
**Ejecución rápida:**
|
|
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
|
+
**Con archivo de entorno:**
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Copia y edita el .env primero
|
|
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
|
+
**Usando Docker Compose:**
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Perfil base (sin herramientas CLI)
|
|
236
|
+
docker compose --profile base up -d
|
|
237
|
+
|
|
238
|
+
# Perfil CLI (Claude Code, Codex, OpenClaw integrados)
|
|
239
|
+
docker compose --profile cli up -d
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
| Imagen | Tag | Tamaño | Descripción |
|
|
243
|
+
| ------------------------ | -------- | ------ | ---------------------- |
|
|
244
|
+
| `diegosouzapw/omniroute` | `latest` | ~250MB | Última versión estable |
|
|
245
|
+
| `diegosouzapw/omniroute` | `0.9.0` | ~250MB | Versión actual |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 💰 Precios Resumidos
|
|
250
|
+
|
|
251
|
+
| Tier | Proveedor | Costo | Reset de Cuota | Mejor Para |
|
|
252
|
+
| ------------------ | ----------------- | ---------------------------- | ----------------- | ----------------------- |
|
|
253
|
+
| **💳 SUSCRIPCIÓN** | Claude Code (Pro) | $20/mes | 5h + semanal | Ya suscrito |
|
|
254
|
+
| | Codex (Plus/Pro) | $20-200/mes | 5h + semanal | Usuarios OpenAI |
|
|
255
|
+
| | Gemini CLI | **GRATUITO** | 180K/mes + 1K/día | ¡Todos! |
|
|
256
|
+
| | GitHub Copilot | $10-19/mes | Mensual | Usuarios GitHub |
|
|
257
|
+
| **🔑 API KEY** | NVIDIA NIM | **GRATUITO** (1000 créditos) | Único | Pruebas gratuitas |
|
|
258
|
+
| | DeepSeek | Por uso | Ninguno | Mejor precio/calidad |
|
|
259
|
+
| | Groq | Tier gratuito + pago | Limitado | Inferencia ultra-rápida |
|
|
260
|
+
| | xAI (Grok) | Por uso | Ninguno | Modelos Grok |
|
|
261
|
+
| | Mistral | Tier gratuito + pago | Limitado | IA Europea |
|
|
262
|
+
| | OpenRouter | Por uso | Ninguno | 100+ modelos |
|
|
263
|
+
| **💰 BARATO** | GLM-4.7 | $0.6/1M | Diario 10h | Respaldo económico |
|
|
264
|
+
| | MiniMax M2.1 | $0.2/1M | Rotativo 5h | Opción más barata |
|
|
265
|
+
| | Kimi K2 | $9/mes fijo | 10M tokens/mes | Costo predecible |
|
|
266
|
+
| **🆓 GRATUITO** | iFlow | $0 | Ilimitado | 8 modelos gratuitos |
|
|
267
|
+
| | Qwen | $0 | Ilimitado | 3 modelos gratuitos |
|
|
268
|
+
| | Kiro | $0 | Ilimitado | Claude gratuito |
|
|
269
|
+
|
|
270
|
+
**💡 Consejo Pro:** ¡Comienza con Gemini CLI (180K gratis/mes) + iFlow (ilimitado gratis) = $0 de costo!
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 🎯 Casos de Uso
|
|
275
|
+
|
|
276
|
+
### Caso 1: "Tengo suscripción Claude Pro"
|
|
277
|
+
|
|
278
|
+
**Problema:** La cuota expira sin usar, límites de tasa durante programación intensa
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
Combo: "maximize-claude"
|
|
282
|
+
1. cc/claude-opus-4-6 (usar suscripción al máximo)
|
|
283
|
+
2. glm/glm-4.7 (respaldo barato cuando la cuota se agota)
|
|
284
|
+
3. if/kimi-k2-thinking (fallback de emergencia gratuito)
|
|
285
|
+
|
|
286
|
+
Costo mensual: $20 (suscripción) + ~$5 (respaldo) = $25 total
|
|
287
|
+
vs. $20 + chocar con límites = frustración
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Caso 2: "Quiero costo cero"
|
|
291
|
+
|
|
292
|
+
**Problema:** No puede pagar suscripciones, necesita IA confiable para programar
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
Combo: "free-forever"
|
|
296
|
+
1. gc/gemini-3-flash (180K gratis/mes)
|
|
297
|
+
2. if/kimi-k2-thinking (ilimitado gratis)
|
|
298
|
+
3. qw/qwen3-coder-plus (ilimitado gratis)
|
|
299
|
+
|
|
300
|
+
Costo mensual: $0
|
|
301
|
+
Calidad: Modelos listos para producción
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Caso 3: "Necesito programar 24/7, sin interrupciones"
|
|
305
|
+
|
|
306
|
+
**Problema:** Plazos ajustados, no puede permitirse tiempo de inactividad
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
Combo: "always-on"
|
|
310
|
+
1. cc/claude-opus-4-6 (mejor calidad)
|
|
311
|
+
2. cx/gpt-5.2-codex (segunda suscripción)
|
|
312
|
+
3. glm/glm-4.7 (barato, reset diario)
|
|
313
|
+
4. minimax/MiniMax-M2.1 (más barato, reset 5h)
|
|
314
|
+
5. if/kimi-k2-thinking (gratuito ilimitado)
|
|
315
|
+
|
|
316
|
+
Resultado: 5 capas de fallback = cero tiempo de inactividad
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Caso 4: "Quiero IA GRATUITA en OpenClaw"
|
|
320
|
+
|
|
321
|
+
**Problema:** Necesita asistente de IA en apps de mensajería, completamente gratuito
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
Combo: "openclaw-free"
|
|
325
|
+
1. if/glm-4.7 (ilimitado gratis)
|
|
326
|
+
2. if/minimax-m2.1 (ilimitado gratis)
|
|
327
|
+
3. if/kimi-k2-thinking (ilimitado gratis)
|
|
328
|
+
|
|
329
|
+
Costo mensual: $0
|
|
330
|
+
Acceso vía: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 💡 Características Principales
|
|
336
|
+
|
|
337
|
+
### 🧠 Enrutamiento e Inteligencia
|
|
338
|
+
|
|
339
|
+
| Característica | Qué Hace |
|
|
340
|
+
| -------------------------------------- | ------------------------------------------------------------------------------- |
|
|
341
|
+
| 🎯 **Fallback Inteligente 4 Tiers** | Auto-enrutamiento: Suscripción → API Key → Barato → Gratuito |
|
|
342
|
+
| 📊 **Rastreo de Cuota en Tiempo Real** | Conteo de tokens en vivo + countdown de reset por proveedor |
|
|
343
|
+
| 🔄 **Traducción de Formato** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro transparente |
|
|
344
|
+
| 👥 **Soporte Multi-Cuenta** | Múltiples cuentas por proveedor con selección inteligente |
|
|
345
|
+
| 🔄 **Renovación Automática de Token** | Tokens OAuth se renuevan automáticamente con reintentos |
|
|
346
|
+
| 🎨 **Combos Personalizados** | 6 estrategias: fill-first, round-robin, p2c, random, least-used, cost-optimized |
|
|
347
|
+
| 🧩 **Modelos Personalizados** | Agrega cualquier ID de modelo a cualquier proveedor |
|
|
348
|
+
| 🌐 **Enrutador Wildcard** | Enruta patrones `provider/*` a cualquier proveedor dinámicamente |
|
|
349
|
+
| 🧠 **Presupuesto de Razonamiento** | Modos passthrough, auto, custom y adaptativo para modelos de razonamiento |
|
|
350
|
+
| 💬 **Inyección de System Prompt** | System prompt global aplicado en todas las solicitudes |
|
|
351
|
+
| 📄 **API Responses** | Soporte completo de la API Responses de OpenAI (`/v1/responses`) para Codex |
|
|
352
|
+
|
|
353
|
+
### 🎵 APIs Multi-Modal
|
|
354
|
+
|
|
355
|
+
| Característica | Qué Hace |
|
|
356
|
+
| ----------------------------- | ------------------------------------------------------ |
|
|
357
|
+
| 🖼️ **Generación de Imágenes** | `/v1/images/generations` — 4 proveedores, 9+ modelos |
|
|
358
|
+
| 📐 **Embeddings** | `/v1/embeddings` — 6 proveedores, 9+ modelos |
|
|
359
|
+
| 🎤 **Transcripción de Audio** | `/v1/audio/transcriptions` — Compatible con Whisper |
|
|
360
|
+
| 🔊 **Texto a Voz** | `/v1/audio/speech` — Síntesis de audio multi-proveedor |
|
|
361
|
+
| 🛡️ **Moderaciones** | `/v1/moderations` — Verificaciones de seguridad |
|
|
362
|
+
| 🔀 **Reranking** | `/v1/rerank` — Reranking de relevancia de documentos |
|
|
363
|
+
|
|
364
|
+
### 🛡️ Resiliencia y Seguridad
|
|
365
|
+
|
|
366
|
+
| Característica | Qué Hace |
|
|
367
|
+
| ---------------------------------- | ---------------------------------------------------------------- |
|
|
368
|
+
| 🔌 **Circuit Breaker** | Auto-apertura/cierre por proveedor con umbrales configurables |
|
|
369
|
+
| 🛡️ **Anti-Thundering Herd** | Mutex + semáforo rate-limit para proveedores con API key |
|
|
370
|
+
| 🧠 **Caché Semántico** | Caché de dos niveles (firma + semántico) reduce costo y latencia |
|
|
371
|
+
| ⚡ **Idempotencia de Solicitud** | Ventana de dedup de 5s para solicitudes duplicadas |
|
|
372
|
+
| 🔒 **Spoofing de Fingerprint TLS** | Bypass de detección de bot vía TLS con wreq-js |
|
|
373
|
+
| 🌐 **Filtrado de IP** | Allowlist/blocklist para control de acceso a la API |
|
|
374
|
+
| 📊 **Rate Limits Editables** | RPM, gap mínimo y concurrencia máxima configurables |
|
|
375
|
+
|
|
376
|
+
### 📊 Observabilidad y Analytics
|
|
377
|
+
|
|
378
|
+
| Característica | Qué Hace |
|
|
379
|
+
| ------------------------------ | --------------------------------------------------------------------- |
|
|
380
|
+
| 📝 **Logs de Solicitud** | Modo debug con logs completos de request/response |
|
|
381
|
+
| 💾 **Logs SQLite** | Logs de proxy persistentes sobreviven a reinicios |
|
|
382
|
+
| 📊 **Dashboard de Analytics** | Recharts: cards de estadísticas, gráfico de uso, tabla de proveedores |
|
|
383
|
+
| 📈 **Rastreo de Progreso** | Eventos de progreso SSE opt-in para streaming |
|
|
384
|
+
| 🧪 **Evaluaciones de LLM** | Pruebas con conjunto golden y 4 estrategias de match |
|
|
385
|
+
| 🔍 **Telemetría de Solicitud** | Agregación de latencia p50/p95/p99 + rastreo X-Request-Id |
|
|
386
|
+
| 📋 **Logs + Cuotas** | Páginas dedicadas para navegación de logs y rastreo de cuotas |
|
|
387
|
+
| 🏥 **Dashboard de Salud** | Uptime, estados de circuit breaker, lockouts, stats de caché |
|
|
388
|
+
| 💰 **Rastreo de Costos** | Gestión de presupuesto + configuración de precios por modelo |
|
|
389
|
+
|
|
390
|
+
### ☁️ Deploy y Sincronización
|
|
391
|
+
|
|
392
|
+
| Característica | Qué Hace |
|
|
393
|
+
| --------------------------------- | ------------------------------------------------------------------------------- |
|
|
394
|
+
| 💾 **Cloud Sync** | Sincroniza configuraciones entre dispositivos vía Cloudflare Workers |
|
|
395
|
+
| 🌐 **Deploy en Cualquier Lugar** | Localhost, VPS, Docker, Cloudflare Workers |
|
|
396
|
+
| 🔑 **Gestión de API Keys** | Genera, rota y define alcance de API keys por proveedor |
|
|
397
|
+
| 🧙 **Asistente de Configuración** | Setup guiado en 4 pasos para nuevos usuarios |
|
|
398
|
+
| 🔧 **Dashboard CLI Tools** | Configuración en un clic para Claude, Codex, Cline, OpenClaw, Kilo, Antigravity |
|
|
399
|
+
| 🔄 **Backups de DB** | Backup y restauración automáticos de todas las configuraciones |
|
|
400
|
+
|
|
401
|
+
<details>
|
|
402
|
+
<summary><b>📖 Detalles de Características</b></summary>
|
|
403
|
+
|
|
404
|
+
### 🎯 Fallback Inteligente 4 Tiers
|
|
405
|
+
|
|
406
|
+
Crea combos con fallback automático:
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
Combo: "my-coding-stack"
|
|
410
|
+
1. cc/claude-opus-4-6 (tu suscripción)
|
|
411
|
+
2. nvidia/llama-3.3-70b (API NVIDIA gratuita)
|
|
412
|
+
3. glm/glm-4.7 (respaldo barato, $0.6/1M)
|
|
413
|
+
4. if/kimi-k2-thinking (fallback gratuito)
|
|
414
|
+
|
|
415
|
+
→ Cambia automáticamente cuando la cuota se agota o ocurren errores
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### 📊 Rastreo de Cuota en Tiempo Real
|
|
419
|
+
|
|
420
|
+
- Consumo de tokens por proveedor
|
|
421
|
+
- Countdown de reset (5 horas, diario, semanal)
|
|
422
|
+
- Estimación de costo para tiers pagos
|
|
423
|
+
- Reportes de gastos mensuales
|
|
424
|
+
|
|
425
|
+
### 🔄 Traducción de Formato
|
|
426
|
+
|
|
427
|
+
Traducción transparente entre formatos:
|
|
428
|
+
|
|
429
|
+
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
|
|
430
|
+
- Tu herramienta CLI envía formato OpenAI → OmniRoute traduce → El proveedor recibe formato nativo
|
|
431
|
+
- Funciona con cualquier herramienta que soporte endpoints OpenAI personalizados
|
|
432
|
+
|
|
433
|
+
### 👥 Soporte Multi-Cuenta
|
|
434
|
+
|
|
435
|
+
- Agrega múltiples cuentas por proveedor
|
|
436
|
+
- Round-robin automático o enrutamiento por prioridad
|
|
437
|
+
- Fallback a la siguiente cuenta cuando una alcanza la cuota
|
|
438
|
+
|
|
439
|
+
### 🔄 Renovación Automática de Token
|
|
440
|
+
|
|
441
|
+
- Los tokens OAuth se renuevan automáticamente antes de expirar
|
|
442
|
+
- Sin necesidad de re-autenticación manual
|
|
443
|
+
- Experiencia transparente en todos los proveedores
|
|
444
|
+
|
|
445
|
+
### 🎨 Combos Personalizados
|
|
446
|
+
|
|
447
|
+
- Crea combinaciones ilimitadas de modelos
|
|
448
|
+
- 6 estrategias: fill-first, round-robin, power-of-two-choices, random, least-used, cost-optimized
|
|
449
|
+
- Comparte combos entre dispositivos con Cloud Sync
|
|
450
|
+
|
|
451
|
+
### 🏥 Dashboard de Salud
|
|
452
|
+
|
|
453
|
+
- Estado del sistema (uptime, versión, uso de memoria)
|
|
454
|
+
- Estados de circuit breaker por proveedor (Closed/Open/Half-Open)
|
|
455
|
+
- Estado de rate limit y lockouts activos
|
|
456
|
+
- Estadísticas de caché de firma
|
|
457
|
+
- Telemetría de latencia (p50/p95/p99) + caché de prompt
|
|
458
|
+
- Reset de salud con un clic
|
|
459
|
+
|
|
460
|
+
### 🔧 Playground del Traductor
|
|
461
|
+
|
|
462
|
+
- Debug, prueba y visualiza traducciones de formato de API
|
|
463
|
+
- Envía solicitudes y ve cómo OmniRoute traduce entre formatos de proveedores
|
|
464
|
+
- Invaluable para troubleshooting de problemas de integración
|
|
465
|
+
|
|
466
|
+
### 💾 Cloud Sync
|
|
467
|
+
|
|
468
|
+
- Sincroniza proveedores, combos y configuraciones entre dispositivos
|
|
469
|
+
- Sincronización automática en segundo plano
|
|
470
|
+
- Almacenamiento cifrado seguro
|
|
471
|
+
|
|
472
|
+
</details>
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## 📖 Guía de Configuración
|
|
477
|
+
|
|
478
|
+
<details>
|
|
479
|
+
<summary><b>💳 Proveedores por Suscripción</b></summary>
|
|
480
|
+
|
|
481
|
+
### Claude Code (Pro/Max)
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
Dashboard → Proveedores → Conectar Claude Code
|
|
485
|
+
→ Login OAuth → Renovación automática de token
|
|
486
|
+
→ Rastreo de cuota 5h + semanal
|
|
487
|
+
|
|
488
|
+
Modelos:
|
|
489
|
+
cc/claude-opus-4-6
|
|
490
|
+
cc/claude-sonnet-4-5-20250929
|
|
491
|
+
cc/claude-haiku-4-5-20251001
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Consejo Pro:** Usa Opus para tareas complejas, Sonnet para velocidad. ¡OmniRoute rastrea cuota por modelo!
|
|
495
|
+
|
|
496
|
+
### OpenAI Codex (Plus/Pro)
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
Dashboard → Proveedores → Conectar Codex
|
|
500
|
+
→ Login OAuth (puerto 1455)
|
|
501
|
+
→ Reset 5h + semanal
|
|
502
|
+
|
|
503
|
+
Modelos:
|
|
504
|
+
cx/gpt-5.2-codex
|
|
505
|
+
cx/gpt-5.1-codex-max
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Gemini CLI (¡GRATUITO 180K/mes!)
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
Dashboard → Proveedores → Conectar Gemini CLI
|
|
512
|
+
→ Google OAuth
|
|
513
|
+
→ 180K completions/mes + 1K/día
|
|
514
|
+
|
|
515
|
+
Modelos:
|
|
516
|
+
gc/gemini-3-flash-preview
|
|
517
|
+
gc/gemini-2.5-pro
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
**Mejor Valor:** ¡Tier gratuito enorme! Úsalo antes de los tiers pagos.
|
|
521
|
+
|
|
522
|
+
### GitHub Copilot
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
Dashboard → Proveedores → Conectar GitHub
|
|
526
|
+
→ OAuth vía GitHub
|
|
527
|
+
→ Reset mensual (1ro del mes)
|
|
528
|
+
|
|
529
|
+
Modelos:
|
|
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>🔑 Proveedores por API Key</b></summary>
|
|
539
|
+
|
|
540
|
+
### NVIDIA NIM (¡GRATUITO 1000 créditos!)
|
|
541
|
+
|
|
542
|
+
1. Regístrate: [build.nvidia.com](https://build.nvidia.com)
|
|
543
|
+
2. Obtén API key gratuita (1000 créditos de inferencia incluidos)
|
|
544
|
+
3. Dashboard → Agregar Proveedor → NVIDIA NIM:
|
|
545
|
+
- API Key: `nvapi-your-key`
|
|
546
|
+
|
|
547
|
+
**Modelos:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct`, y 50+ más
|
|
548
|
+
|
|
549
|
+
**Consejo Pro:** ¡API compatible con OpenAI — funciona perfectamente con la traducción de formato de OmniRoute!
|
|
550
|
+
|
|
551
|
+
### DeepSeek
|
|
552
|
+
|
|
553
|
+
1. Regístrate: [platform.deepseek.com](https://platform.deepseek.com)
|
|
554
|
+
2. Obtén API key
|
|
555
|
+
3. Dashboard → Agregar Proveedor → DeepSeek
|
|
556
|
+
|
|
557
|
+
**Modelos:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
|
|
558
|
+
|
|
559
|
+
### Groq (¡Tier Gratuito Disponible!)
|
|
560
|
+
|
|
561
|
+
1. Regístrate: [console.groq.com](https://console.groq.com)
|
|
562
|
+
2. Obtén API key (tier gratuito incluido)
|
|
563
|
+
3. Dashboard → Agregar Proveedor → Groq
|
|
564
|
+
|
|
565
|
+
**Modelos:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
|
|
566
|
+
|
|
567
|
+
**Consejo Pro:** ¡Inferencia ultra-rápida — mejor para programación en tiempo real!
|
|
568
|
+
|
|
569
|
+
### OpenRouter (100+ Modelos)
|
|
570
|
+
|
|
571
|
+
1. Regístrate: [openrouter.ai](https://openrouter.ai)
|
|
572
|
+
2. Obtén API key
|
|
573
|
+
3. Dashboard → Agregar Proveedor → OpenRouter
|
|
574
|
+
|
|
575
|
+
**Modelos:** Accede a 100+ modelos de todos los principales proveedores a través de una única API key.
|
|
576
|
+
|
|
577
|
+
</details>
|
|
578
|
+
|
|
579
|
+
<details>
|
|
580
|
+
<summary><b>💰 Proveedores Baratos (Respaldo)</b></summary>
|
|
581
|
+
|
|
582
|
+
### GLM-4.7 (Reset diario, $0.6/1M)
|
|
583
|
+
|
|
584
|
+
1. Regístrate: [Zhipu AI](https://open.bigmodel.cn/)
|
|
585
|
+
2. Obtén API key del Plan Coding
|
|
586
|
+
3. Dashboard → Agregar API Key:
|
|
587
|
+
- Proveedor: `glm`
|
|
588
|
+
- API Key: `your-key`
|
|
589
|
+
|
|
590
|
+
**Usa:** `glm/glm-4.7`
|
|
591
|
+
|
|
592
|
+
**Consejo Pro:** ¡El Plan Coding ofrece 3× cuota a 1/7 del costo! Reset diario 10:00 AM.
|
|
593
|
+
|
|
594
|
+
### MiniMax M2.1 (Reset 5h, $0.20/1M)
|
|
595
|
+
|
|
596
|
+
1. Regístrate: [MiniMax](https://www.minimax.io/)
|
|
597
|
+
2. Obtén API key
|
|
598
|
+
3. Dashboard → Agregar API Key
|
|
599
|
+
|
|
600
|
+
**Usa:** `minimax/MiniMax-M2.1`
|
|
601
|
+
|
|
602
|
+
**Consejo Pro:** ¡Opción más barata para contexto largo (1M tokens)!
|
|
603
|
+
|
|
604
|
+
### Kimi K2 ($9/mes fijo)
|
|
605
|
+
|
|
606
|
+
1. Suscríbete: [Moonshot AI](https://platform.moonshot.ai/)
|
|
607
|
+
2. Obtén API key
|
|
608
|
+
3. Dashboard → Agregar API Key
|
|
609
|
+
|
|
610
|
+
**Usa:** `kimi/kimi-latest`
|
|
611
|
+
|
|
612
|
+
**Consejo Pro:** ¡$9/mes fijo por 10M tokens = $0.90/1M de costo efectivo!
|
|
613
|
+
|
|
614
|
+
</details>
|
|
615
|
+
|
|
616
|
+
<details>
|
|
617
|
+
<summary><b>🆓 Proveedores GRATUITOS (Respaldo de Emergencia)</b></summary>
|
|
618
|
+
|
|
619
|
+
### iFlow (8 modelos GRATUITOS)
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
Dashboard → Conectar iFlow
|
|
623
|
+
→ Login OAuth iFlow
|
|
624
|
+
→ Uso ilimitado
|
|
625
|
+
|
|
626
|
+
Modelos:
|
|
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 modelos GRATUITOS)
|
|
635
|
+
|
|
636
|
+
```bash
|
|
637
|
+
Dashboard → Conectar Qwen
|
|
638
|
+
→ Autorización por código de dispositivo
|
|
639
|
+
→ Uso ilimitado
|
|
640
|
+
|
|
641
|
+
Modelos:
|
|
642
|
+
qw/qwen3-coder-plus
|
|
643
|
+
qw/qwen3-coder-flash
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
### Kiro (Claude GRATUITO)
|
|
647
|
+
|
|
648
|
+
```bash
|
|
649
|
+
Dashboard → Conectar Kiro
|
|
650
|
+
→ AWS Builder ID o Google/GitHub
|
|
651
|
+
→ Uso ilimitado
|
|
652
|
+
|
|
653
|
+
Modelos:
|
|
654
|
+
kr/claude-sonnet-4.5
|
|
655
|
+
kr/claude-haiku-4.5
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
</details>
|
|
659
|
+
|
|
660
|
+
<details>
|
|
661
|
+
<summary><b>🎨 Crear Combos</b></summary>
|
|
662
|
+
|
|
663
|
+
### Ejemplo 1: Maximizar Suscripción → Respaldo Barato
|
|
664
|
+
|
|
665
|
+
```
|
|
666
|
+
Dashboard → Combos → Crear Nuevo
|
|
667
|
+
|
|
668
|
+
Nombre: premium-coding
|
|
669
|
+
Modelos:
|
|
670
|
+
1. cc/claude-opus-4-6 (Suscripción primaria)
|
|
671
|
+
2. glm/glm-4.7 (Respaldo barato, $0.6/1M)
|
|
672
|
+
3. minimax/MiniMax-M2.1 (Fallback más barato, $0.20/1M)
|
|
673
|
+
|
|
674
|
+
Usa en CLI: premium-coding
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
### Ejemplo 2: Solo Gratuito (Costo Cero)
|
|
678
|
+
|
|
679
|
+
```
|
|
680
|
+
Nombre: free-combo
|
|
681
|
+
Modelos:
|
|
682
|
+
1. gc/gemini-3-flash-preview (180K gratis/mes)
|
|
683
|
+
2. if/kimi-k2-thinking (ilimitado)
|
|
684
|
+
3. qw/qwen3-coder-plus (ilimitado)
|
|
685
|
+
|
|
686
|
+
Costo: ¡$0 para siempre!
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
</details>
|
|
690
|
+
|
|
691
|
+
<details>
|
|
692
|
+
<summary><b>🔧 Integración CLI</b></summary>
|
|
693
|
+
|
|
694
|
+
### Cursor IDE
|
|
695
|
+
|
|
696
|
+
```
|
|
697
|
+
Configuración → Modelos → Avanzado:
|
|
698
|
+
OpenAI API Base URL: http://localhost:20128/v1
|
|
699
|
+
OpenAI API Key: [del dashboard OmniRoute]
|
|
700
|
+
Model: cc/claude-opus-4-6
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
### Claude Code
|
|
704
|
+
|
|
705
|
+
Usa la página **CLI Tools** en el dashboard para configuración en un clic, o edita `~/.claude/settings.json` manualmente.
|
|
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
|
+
**Opción 1 — Dashboard (recomendado):**
|
|
719
|
+
|
|
720
|
+
```
|
|
721
|
+
Dashboard → CLI Tools → OpenClaw → Seleccionar Modelo → Aplicar
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
**Opción 2 — Manual:** Edita `~/.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
|
+
> **Nota:** OpenClaw solo funciona con OmniRoute local. Usa `127.0.0.1` en lugar de `localhost` para evitar problemas de resolución IPv6.
|
|
741
|
+
|
|
742
|
+
### Cline / Continue / RooCode
|
|
743
|
+
|
|
744
|
+
```
|
|
745
|
+
Configuración → Configuración de API:
|
|
746
|
+
Proveedor: OpenAI Compatible
|
|
747
|
+
Base URL: http://localhost:20128/v1
|
|
748
|
+
API Key: [del dashboard OmniRoute]
|
|
749
|
+
Model: if/kimi-k2-thinking
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
</details>
|
|
753
|
+
|
|
754
|
+
---
|
|
755
|
+
|
|
756
|
+
## 📊 Modelos Disponibles
|
|
757
|
+
|
|
758
|
+
<details>
|
|
759
|
+
<summary><b>Ver todos los modelos disponibles</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/`)** - GRATUITO:
|
|
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/`)** - Créditos GRATUITOS:
|
|
783
|
+
|
|
784
|
+
- `nvidia/llama-3.3-70b-instruct`
|
|
785
|
+
- `nvidia/mistral-7b-instruct`
|
|
786
|
+
- 50+ más modelos en [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/`)** - GRATUITO:
|
|
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/`)** - GRATUITO:
|
|
805
|
+
|
|
806
|
+
- `qw/qwen3-coder-plus`
|
|
807
|
+
- `qw/qwen3-coder-flash`
|
|
808
|
+
|
|
809
|
+
**Kiro (`kr/`)** - GRATUITO:
|
|
810
|
+
|
|
811
|
+
- `kr/claude-sonnet-4.5`
|
|
812
|
+
- `kr/claude-haiku-4.5`
|
|
813
|
+
|
|
814
|
+
**OpenRouter (`or/`)** - 100+ modelos:
|
|
815
|
+
|
|
816
|
+
- `or/anthropic/claude-4-sonnet`
|
|
817
|
+
- `or/google/gemini-2.5-pro`
|
|
818
|
+
- Cualquier modelo de [openrouter.ai/models](https://openrouter.ai/models)
|
|
819
|
+
|
|
820
|
+
</details>
|
|
821
|
+
|
|
822
|
+
---
|
|
823
|
+
|
|
824
|
+
## 🧪 Evaluaciones (Evals)
|
|
825
|
+
|
|
826
|
+
OmniRoute incluye un framework de evaluación integrado para probar la calidad de respuestas de LLM contra un conjunto golden. Accede vía **Analytics → Evals** en el dashboard.
|
|
827
|
+
|
|
828
|
+
### Conjunto Golden Integrado
|
|
829
|
+
|
|
830
|
+
El "OmniRoute Golden Set" precargado contiene 10 casos de prueba que cubren:
|
|
831
|
+
|
|
832
|
+
- Saludos, matemáticas, geografía, generación de código
|
|
833
|
+
- Conformidad de formato JSON, traducción, markdown
|
|
834
|
+
- Rechazo de seguridad (contenido dañino), conteo, lógica booleana
|
|
835
|
+
|
|
836
|
+
### Estrategias de Evaluación
|
|
837
|
+
|
|
838
|
+
| Estrategia | Descripción | Ejemplo |
|
|
839
|
+
| ---------- | ---------------------------------------------------- | -------------------------------- |
|
|
840
|
+
| `exact` | La salida debe coincidir exactamente | `"4"` |
|
|
841
|
+
| `contains` | La salida debe contener subcadena (case-insensitive) | `"Paris"` |
|
|
842
|
+
| `regex` | La salida debe coincidir con el patrón regex | `"1.*2.*3"` |
|
|
843
|
+
| `custom` | Función JS personalizada retorna true/false | `(output) => output.length > 10` |
|
|
844
|
+
|
|
845
|
+
---
|
|
846
|
+
|
|
847
|
+
## 🐛 Solución de Problemas
|
|
848
|
+
|
|
849
|
+
<details>
|
|
850
|
+
<summary><b>Haz clic para expandir la guía de solución de problemas</b></summary>
|
|
851
|
+
|
|
852
|
+
**"Language model did not provide messages"**
|
|
853
|
+
|
|
854
|
+
- Cuota del proveedor agotada → Verifica el rastreador de cuota en el dashboard
|
|
855
|
+
- Solución: Usa combo con fallback o cambia a tier más barato
|
|
856
|
+
|
|
857
|
+
**Rate limiting**
|
|
858
|
+
|
|
859
|
+
- Cuota de suscripción agotada → Fallback a GLM/MiniMax
|
|
860
|
+
- Agrega combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
861
|
+
|
|
862
|
+
**Token OAuth expirado**
|
|
863
|
+
|
|
864
|
+
- Renovado automáticamente por OmniRoute
|
|
865
|
+
- Si persiste: Dashboard → Proveedor → Reconectar
|
|
866
|
+
|
|
867
|
+
**Costos altos**
|
|
868
|
+
|
|
869
|
+
- Verifica estadísticas de uso en Dashboard → Costos
|
|
870
|
+
- Cambia modelo primario a GLM/MiniMax
|
|
871
|
+
- Usa tier gratuito (Gemini CLI, iFlow) para tareas no críticas
|
|
872
|
+
|
|
873
|
+
**Dashboard se abre en el puerto equivocado**
|
|
874
|
+
|
|
875
|
+
- Establece `PORT=20128` y `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
|
|
876
|
+
|
|
877
|
+
**Errores de cloud sync**
|
|
878
|
+
|
|
879
|
+
- Verifica que `BASE_URL` apunte a tu instancia en ejecución
|
|
880
|
+
- Verifica que `CLOUD_URL` apunte a tu endpoint cloud esperado
|
|
881
|
+
- Mantén los valores `NEXT_PUBLIC_*` alineados con los valores del servidor
|
|
882
|
+
|
|
883
|
+
**Primer login no funciona**
|
|
884
|
+
|
|
885
|
+
- Verifica `INITIAL_PASSWORD` en `.env`
|
|
886
|
+
- Si no está definido, la contraseña predeterminada es `123456`
|
|
887
|
+
|
|
888
|
+
**Sin logs de solicitud**
|
|
889
|
+
|
|
890
|
+
- Establece `ENABLE_REQUEST_LOGS=true` en `.env`
|
|
891
|
+
|
|
892
|
+
**Prueba de conexión muestra "Invalid" para proveedores compatibles con OpenAI**
|
|
893
|
+
|
|
894
|
+
- Muchos proveedores no exponen el endpoint `/models`
|
|
895
|
+
- OmniRoute v0.9.0+ incluye validación vía chat completions como fallback
|
|
896
|
+
- Asegúrate de que la URL base incluya el sufijo `/v1`
|
|
897
|
+
|
|
898
|
+
</details>
|
|
899
|
+
|
|
900
|
+
---
|
|
901
|
+
|
|
902
|
+
## 🛠️ Stack Tecnológico
|
|
903
|
+
|
|
904
|
+
- **Runtime**: Node.js 20+
|
|
905
|
+
- **Lenguaje**: TypeScript 5.9 — **100% TypeScript** en `src/` y `open-sse/` (v0.9.0)
|
|
906
|
+
- **Framework**: Next.js 16 + React 19 + Tailwind CSS 4
|
|
907
|
+
- **Base de Datos**: LowDB (JSON) + SQLite (estado del dominio + logs de proxy)
|
|
908
|
+
- **Streaming**: Server-Sent Events (SSE)
|
|
909
|
+
- **Auth**: OAuth 2.0 (PKCE) + JWT + API Keys
|
|
910
|
+
- **Testing**: Node.js test runner (368+ tests unitarios)
|
|
911
|
+
- **CI/CD**: GitHub Actions (publicación automática npm + Docker Hub en release)
|
|
912
|
+
- **Website**: [omniroute.online](https://omniroute.online)
|
|
913
|
+
- **Paquete**: [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
|
+
- **Resiliencia**: Circuit breaker, backoff exponencial, anti-thundering herd, spoofing TLS
|
|
916
|
+
|
|
917
|
+
---
|
|
918
|
+
|
|
919
|
+
## 📖 Documentación
|
|
920
|
+
|
|
921
|
+
| Documento | Descripción |
|
|
922
|
+
| ------------------------------------------------ | -------------------------------------------------- |
|
|
923
|
+
| [Guía del Usuario](docs/USER_GUIDE.md) | Proveedores, combos, integración CLI, deploy |
|
|
924
|
+
| [Referencia de API](docs/API_REFERENCE.md) | Todos los endpoints con ejemplos |
|
|
925
|
+
| [Solución de Problemas](docs/TROUBLESHOOTING.md) | Problemas comunes y soluciones |
|
|
926
|
+
| [Arquitectura](docs/ARCHITECTURE.md) | Arquitectura del sistema e internos |
|
|
927
|
+
| [Contribuir](CONTRIBUTING.md) | Setup de desarrollo y directrices |
|
|
928
|
+
| [Spec OpenAPI](docs/openapi.yaml) | Especificación OpenAPI 3.0 |
|
|
929
|
+
| [Política de Seguridad](SECURITY.md) | Reportar vulnerabilidades y prácticas de seguridad |
|
|
930
|
+
|
|
931
|
+
---
|
|
932
|
+
|
|
933
|
+
## 📧 Soporte
|
|
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
|
+
- **Proyecto Original**: [9router por decolua](https://github.com/decolua/9router)
|
|
939
|
+
|
|
940
|
+
---
|
|
941
|
+
|
|
942
|
+
## 👥 Contribuidores
|
|
943
|
+
|
|
944
|
+
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
|
|
945
|
+
|
|
946
|
+
### Cómo Contribuir
|
|
947
|
+
|
|
948
|
+
1. Haz fork del repositorio
|
|
949
|
+
2. Crea tu rama de funcionalidad (`git checkout -b feature/amazing-feature`)
|
|
950
|
+
3. Haz commit de tus cambios (`git commit -m 'Add amazing feature'`)
|
|
951
|
+
4. Haz push a la rama (`git push origin feature/amazing-feature`)
|
|
952
|
+
5. Abre un Pull Request
|
|
953
|
+
|
|
954
|
+
Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para directrices detalladas.
|
|
955
|
+
|
|
956
|
+
### Lanzar una Nueva Versión
|
|
957
|
+
|
|
958
|
+
```bash
|
|
959
|
+
# Crea un release — la publicación en npm ocurre automáticamente
|
|
960
|
+
gh release create v0.9.0 --title "v0.9.0" --generate-notes
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
---
|
|
964
|
+
|
|
965
|
+
## 📊 Historial de Stars
|
|
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
|
+
## 🙏 Agradecimientos
|
|
978
|
+
|
|
979
|
+
Agradecimiento especial a **[9router](https://github.com/decolua/9router)** por **[decolua](https://github.com/decolua)** — el proyecto original que inspiró este fork. OmniRoute se construye sobre esa increíble base con características adicionales, APIs multi-modal y una reescritura completa en TypeScript.
|
|
980
|
+
|
|
981
|
+
Agradecimiento especial a **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — la implementación original en Go que inspiró esta adaptación a JavaScript.
|
|
982
|
+
|
|
983
|
+
---
|
|
984
|
+
|
|
985
|
+
## 📄 Licencia
|
|
986
|
+
|
|
987
|
+
Licencia MIT - consulta [LICENSE](LICENSE) para detalles.
|
|
988
|
+
|
|
989
|
+
---
|
|
990
|
+
|
|
991
|
+
<div align="center">
|
|
992
|
+
<sub>Hecho con ❤️ para desarrolladores que programan 24/7</sub>
|
|
993
|
+
<br/>
|
|
994
|
+
<sub><a href="https://omniroute.online">omniroute.online</a></sub>
|
|
995
|
+
</div>
|