@sifxprime/krouter 0.5.162 → 0.5.164
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.md +102 -84
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +11 -11
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +5 -5
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +10 -8
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/environment/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/environment/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/presidio/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/presidio/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +4 -4
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -4
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/zenith/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +5 -5
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/environment.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/environment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/environment.segments/!KGRhc2hib2FyZCk/dashboard/environment/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/environment.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/environment.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/presidio.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/presidio.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/presidio.segments/!KGRhc2hib2FyZCk/dashboard/presidio/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/presidio.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/presidio.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/landing/page.js +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +5 -5
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/login/page.js +1 -1
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +6 -6
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/page.js +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +11 -11
- package/app/.next-cli-build/server/chunks/1450.js +1 -1
- package/app/.next-cli-build/server/chunks/1738.js +2 -2
- package/app/.next-cli-build/server/chunks/2365.js +1 -1
- package/app/.next-cli-build/server/chunks/2722.js +10 -8
- package/app/.next-cli-build/server/chunks/3120.js +31 -0
- package/app/.next-cli-build/server/chunks/412.js +1 -1
- package/app/.next-cli-build/server/chunks/4161.js +1 -1
- package/app/.next-cli-build/server/chunks/4404.js +1 -1
- package/app/.next-cli-build/server/chunks/4632.js +1 -1
- package/app/.next-cli-build/server/chunks/5030.js +1 -1
- package/app/.next-cli-build/server/chunks/5330.js +2 -10
- package/app/.next-cli-build/server/chunks/5470.js +1 -1
- package/app/.next-cli-build/server/chunks/5681.js +1 -1
- package/app/.next-cli-build/server/chunks/5718.js +1 -1
- package/app/.next-cli-build/server/chunks/6108.js +1 -1
- package/app/.next-cli-build/server/chunks/6200.js +1 -1
- package/app/.next-cli-build/server/chunks/6306.js +1 -1
- package/app/.next-cli-build/server/chunks/7341.js +1 -1
- package/app/.next-cli-build/server/chunks/8238.js +1 -1
- package/app/.next-cli-build/server/chunks/8319.js +1 -1
- package/app/.next-cli-build/server/chunks/8590.js +1 -1
- package/app/.next-cli-build/server/chunks/8895.js +2 -2
- package/app/.next-cli-build/server/chunks/9376.js +51 -0
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/app/.next-cli-build/static/chunks/1321-0b5ea2e0d2a8833d.js +1 -0
- package/app/.next-cli-build/static/chunks/5497-71ac1eaeaacd3abb.js +7 -0
- package/app/.next-cli-build/static/chunks/{6069-c4c9124d1c1cc018.js → 6069-cd255683a4a76ed3.js} +15 -13
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-9f11bff3b99c5885.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-c88a929e34f9b002.js +11 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-86eed48d5fdb5988.js +1 -0
- package/app/.next-cli-build/static/chunks/app/{layout-a39bb90fce7728eb.js → layout-3909a5381d71cda6.js} +1 -1
- package/app/.next-cli-build/static/css/{f408a041a2395281.css → 64fc7ce1f4c9684d.css} +1 -1
- package/app/.next-cli-build/static/css/{96a7e44d8ae325d4.css → e8f53fd8cd2766ce.css} +1 -1
- package/app/cli/package.json +1 -1
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next-cli-build/server/chunks/4921.js +0 -1
- package/app/.next-cli-build/server/chunks/7153.js +0 -1
- package/app/.next-cli-build/server/chunks/8361.js +0 -23
- package/app/.next-cli-build/static/chunks/1321-1cd76f0c09008d25.js +0 -1
- package/app/.next-cli-build/static/chunks/5497-8ce793eef3eb912e.js +0 -7
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-0598a87942bb3820.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-1a405c510f10994f.js +0 -11
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-2b35b21c1542b9b8.js +0 -1
- /package/app/.next-cli-build/static/{-JYtyz8OZjeWIc1-TrSED → M98dvtgJ0h4WJXRRd3DBx}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{-JYtyz8OZjeWIc1-TrSED → M98dvtgJ0h4WJXRRd3DBx}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
|
|
4
4
|
# kRouter — Kodelyth AI Infrastructure
|
|
5
5
|
|
|
6
|
-
**The universal AI router that saves 20–40% tokens and
|
|
6
|
+
**The universal AI router that saves 20–40% input tokens and falls back when a provider fails.**
|
|
7
7
|
|
|
8
|
-
Connect Claude Code, Cursor, Antigravity, Kiro, Copilot, Codex, OpenCode, Cline, OpenClaw, and any OpenAI-compatible client to **
|
|
8
|
+
Connect Claude Code, Cursor, Antigravity, Kiro, Copilot, Codex, OpenCode, Cline, OpenClaw, and any OpenAI-compatible client to **95+ AI providers and 100+ models** through one self-hosted endpoint. Route intelligently. Fall back instantly. Save tokens automatically.
|
|
9
9
|
|
|
10
10
|
[](https://www.npmjs.com/package/@sifxprime/krouter)
|
|
11
11
|
[](https://github.com/sifxprime/krouter)
|
|
12
12
|
[](https://krouter.kodelyth.com)
|
|
13
13
|
[](https://github.com/sifxprime/krouter/blob/main/LICENSE)
|
|
14
14
|
|
|
15
|
-
**[
|
|
15
|
+
**[Website & Full Docs — krouter.kodelyth.com](https://krouter.kodelyth.com)**
|
|
16
16
|
|
|
17
|
-
[
|
|
17
|
+
[Quick Start](#quick-start) • [Features](#features) • [Setup](#setup-guide) • [Supported Providers](#supported-providers)
|
|
18
18
|
</div>
|
|
19
19
|
|
|
20
20
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## Quick Start
|
|
26
26
|
|
|
27
27
|
Requires **Node.js 20.9 or newer**.
|
|
28
28
|
|
|
@@ -41,7 +41,7 @@ For safety, the default only works from the machine kRouter is running on — si
|
|
|
41
41
|
on your network are refused until you set your own. Under Docker that includes your own browser, so
|
|
42
42
|
set `INITIAL_PASSWORD` as shown below.
|
|
43
43
|
|
|
44
|
-
Prefer
|
|
44
|
+
Prefer the foreground? Run `krouter` with no flag, and add `-l` to see the server logs.
|
|
45
45
|
|
|
46
46
|
### CLI Options
|
|
47
47
|
|
|
@@ -50,13 +50,18 @@ krouter --help
|
|
|
50
50
|
|
|
51
51
|
Options:
|
|
52
52
|
-p, --port <port> Port to run the server (default: 20128)
|
|
53
|
+
-H, --host <host> Host to bind (default: 0.0.0.0)
|
|
53
54
|
-l, --log Show server logs (default: hidden)
|
|
54
55
|
-t, --tray Run in system tray mode (background)
|
|
55
56
|
--skip-update Skip auto-update check
|
|
56
|
-
-h, --help Show this help
|
|
57
|
+
-h, --help Show this help message
|
|
57
58
|
-v, --version Show version
|
|
58
59
|
```
|
|
59
60
|
|
|
61
|
+
The default host `0.0.0.0` makes kRouter reachable from your network; remote callers still need an API key
|
|
62
|
+
for `/v1/*` and a login for the dashboard. Use `--host 127.0.0.1` to keep it local-only. The `krouter`
|
|
63
|
+
command ignores the `PORT` and `HOSTNAME` environment variables, so set the port and host with these flags.
|
|
64
|
+
|
|
60
65
|
### From Source (Contributors)
|
|
61
66
|
|
|
62
67
|
```bash
|
|
@@ -98,10 +103,10 @@ echo "KROUTER_INITIAL_PASSWORD='$(openssl rand -base64 18)'" > .env && cat .env
|
|
|
98
103
|
docker compose up -d
|
|
99
104
|
```
|
|
100
105
|
|
|
101
|
-
Not using Docker? kRouter has no Python dependency — run the sidecar separately
|
|
102
|
-
|
|
106
|
+
Not using Docker? kRouter has no Python dependency — run the sidecar separately. kRouter looks for it
|
|
107
|
+
at `http://127.0.0.1:5001/redact`; set `SIDECAR_URL` if it runs anywhere else. See the setup guide below.
|
|
103
108
|
|
|
104
|
-
Redaction is **off by default**; enable it from
|
|
109
|
+
Redaction is **off by default**; enable it from the **Presidio** page in the dashboard sidebar.
|
|
105
110
|
|
|
106
111
|
See [docs/REDACTION_SETUP.md](https://github.com/sifxprime/krouter/blob/main/docs/REDACTION_SETUP.md) for full configuration and customization options.
|
|
107
112
|
|
|
@@ -109,32 +114,32 @@ Then open **[http://localhost:20128/dashboard](http://localhost:20128/dashboard)
|
|
|
109
114
|
|
|
110
115
|
---
|
|
111
116
|
|
|
112
|
-
##
|
|
117
|
+
## Why kRouter?
|
|
113
118
|
|
|
114
119
|
Stop wasting money, tokens, and hitting limits:
|
|
115
120
|
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
-
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
+
- Subscription quota expires unused every month
|
|
122
|
+
- Rate limits stop you mid-coding
|
|
123
|
+
- Tool outputs (git diff, grep, ls…) burn tokens fast
|
|
124
|
+
- Paying separately for every provider's API adds up
|
|
125
|
+
- Manually switching between providers
|
|
121
126
|
|
|
122
127
|
**kRouter solves this:**
|
|
123
128
|
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
129
|
+
- **RTK Token Saver** — on by default; compresses tool outputs to save 20–40% of input tokens per request
|
|
130
|
+
- **Zenith routing** — scores each account by success rate, latency and remaining quota, and skips accounts that are cooling down
|
|
131
|
+
- **Multi-account rotation** — round-robin across accounts, with quota tracking for providers that report it
|
|
132
|
+
- **Auto token refresh** — OAuth tokens refresh transparently
|
|
133
|
+
- **Universal client support** — works with OpenAI, Anthropic, Responses, Gemini and Ollama-format clients
|
|
134
|
+
- **MITM interception** — routes Antigravity, GitHub Copilot, Kiro IDE and Claude Desktop through kRouter (not inside Docker)
|
|
130
135
|
|
|
131
136
|
---
|
|
132
137
|
|
|
133
|
-
##
|
|
138
|
+
## How It Works
|
|
134
139
|
|
|
135
140
|
```
|
|
136
141
|
┌─────────────┐
|
|
137
|
-
│ Your CLI │ (Claude Code, Codex, OpenClaw,
|
|
142
|
+
│ Your CLI │ (Claude Code, Codex, OpenClaw, OpenCode, Cline…)
|
|
138
143
|
│ Tool │
|
|
139
144
|
└──────┬──────┘
|
|
140
145
|
│ http://localhost:20128/v1
|
|
@@ -142,7 +147,7 @@ Stop wasting money, tokens, and hitting limits:
|
|
|
142
147
|
┌─────────────────────────────────────────────┐
|
|
143
148
|
│ kRouter (Smart Router) │
|
|
144
149
|
│ • RTK Token Saver (cut tool_result tokens) │
|
|
145
|
-
│ • Zenith
|
|
150
|
+
│ • Zenith account scoring │
|
|
146
151
|
│ • Format translation (OpenAI ↔ Claude) │
|
|
147
152
|
│ • Live quota tracking │
|
|
148
153
|
│ • Auto token refresh │
|
|
@@ -150,45 +155,46 @@ Stop wasting money, tokens, and hitting limits:
|
|
|
150
155
|
│
|
|
151
156
|
├─→ [SUBSCRIPTION] Claude Code · Codex · Copilot · Cursor
|
|
152
157
|
│
|
|
153
|
-
├─→ [FREE TIER] Cloudflare · Vertex · Gemini · Ollama · OpenRouter
|
|
158
|
+
├─→ [FREE TIER] Cloudflare · Vertex · Gemini · Ollama Cloud · OpenRouter
|
|
154
159
|
│
|
|
155
|
-
└─→ [FREE
|
|
160
|
+
└─→ [FREE] Kiro · Gemini CLI · Qoder · OpenCode Free · MiMo Code Free
|
|
156
161
|
```
|
|
157
162
|
|
|
158
|
-
If
|
|
163
|
+
If an account fails or hits a rate limit, kRouter moves to the next account for that provider. Put models from several providers in a combo and it falls back across them in turn — with zero manual intervention.
|
|
159
164
|
|
|
160
165
|
---
|
|
161
166
|
|
|
162
|
-
##
|
|
167
|
+
## PII Redaction with Presidio
|
|
163
168
|
|
|
164
169
|
Optional, and **off by default**. When enabled, kRouter strips personal data — names, emails, phone
|
|
165
170
|
numbers, API keys — from prompts *before* they leave your machine, using Microsoft Presidio as a local
|
|
166
171
|
sidecar (needs Docker or Python). It **fails closed**: if the sidecar is down, times out or errors,
|
|
167
|
-
the request is rejected (`503` / `502`) rather than sent unredacted.
|
|
172
|
+
the request is rejected (`503` / `502`) rather than sent unredacted. It covers the chat, Messages,
|
|
173
|
+
Responses, Ollama and Gemini-format routes; embeddings, audio, images, search and fetch are not redacted.
|
|
168
174
|
|
|
169
175
|
Setup, configuration, custom patterns, testing and troubleshooting: **[docs/REDACTION_SETUP.md](https://github.com/sifxprime/krouter/blob/main/docs/REDACTION_SETUP.md)**.
|
|
170
176
|
|
|
171
|
-
##
|
|
177
|
+
## Features
|
|
172
178
|
|
|
173
179
|
| Feature | What It Does | Why It Matters |
|
|
174
180
|
|---------|--------------|----------------|
|
|
175
|
-
|
|
|
176
|
-
|
|
|
177
|
-
|
|
|
178
|
-
|
|
|
179
|
-
|
|
|
180
|
-
|
|
|
181
|
-
|
|
|
182
|
-
|
|
|
183
|
-
|
|
|
184
|
-
|
|
|
185
|
-
|
|
|
186
|
-
|
|
187
|
-
|
|
181
|
+
| **RTK Token Saver** | Compresses tool outputs (git diff, grep, ls, tree…) in requests. On by default | Save **20–40% input tokens** on requests that carry tool output |
|
|
182
|
+
| **Zenith Routing** | Scores accounts by success rate, latency, remaining quota and priority | Picks the healthiest account; rate-limited accounts cool down instead of being retried |
|
|
183
|
+
| **Smart Fallback** | Combos you build, e.g. Subscription → Free tier → Free | Never stop coding |
|
|
184
|
+
| **Real-Time Quota** | Remaining %, reset countdown, exhaustion badge for providers that report quota | Maximize every subscription |
|
|
185
|
+
| **Format Translation** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro ↔ Vertex | Works with any CLI tool |
|
|
186
|
+
| **Multi-Account** | Multiple accounts per provider with rotation strategies | Load balancing + redundancy |
|
|
187
|
+
| **Auto Token Refresh** | OAuth tokens refresh automatically | No manual re-login |
|
|
188
|
+
| **Custom Combos** | Named model combinations with fallback, round-robin or fusion strategy | Tailor fallback to your workflow |
|
|
189
|
+
| **System Tray** | Runs quietly in background with tray icon | Set-and-forget deployment |
|
|
190
|
+
| **Deploy Anywhere** | Localhost · VPS · Docker · PM2, with remote access through Cloudflare Tunnel or Tailscale | Wherever you need it |
|
|
191
|
+
| **PII Redaction** | Optional, off by default: redacts names, emails, phones and API keys using Microsoft Presidio | Protect privacy before sending to AI providers |
|
|
192
|
+
|
|
193
|
+
**Full feature guide → [krouter.kodelyth.com](https://krouter.kodelyth.com)**
|
|
188
194
|
|
|
189
195
|
---
|
|
190
196
|
|
|
191
|
-
##
|
|
197
|
+
## Supported CLI Tools
|
|
192
198
|
|
|
193
199
|
<div align="center">
|
|
194
200
|
<table>
|
|
@@ -249,29 +255,37 @@ Setup, configuration, custom patterns, testing and troubleshooting: **[docs/REDA
|
|
|
249
255
|
|
|
250
256
|
---
|
|
251
257
|
|
|
252
|
-
##
|
|
258
|
+
## Supported Providers
|
|
259
|
+
|
|
260
|
+
95+ providers in five groups, plus any OpenAI- or Anthropic-compatible endpoint you add yourself.
|
|
261
|
+
|
|
262
|
+
### OAuth (Bring Your Subscription)
|
|
263
|
+
|
|
264
|
+
Claude Code · Antigravity · Codex · GitHub Copilot · Cursor · xAI · Kilo Code · Cline · ClinePass · Grok CLI · Kimchi
|
|
265
|
+
|
|
266
|
+
### Free Tier (with API key)
|
|
253
267
|
|
|
254
|
-
|
|
268
|
+
Cloudflare Workers AI · Vertex AI · Gemini · Ollama Cloud · OpenRouter · BytePlus ModelArk · Atomesus · NVIDIA NIM · Poolside
|
|
255
269
|
|
|
256
|
-
|
|
270
|
+
### Free (account sign-in or no auth)
|
|
257
271
|
|
|
258
|
-
|
|
272
|
+
Kiro AI · Gemini CLI · CodeBuddy CN · Qoder · OpenCode Free · MiMo Code Free
|
|
259
273
|
|
|
260
|
-
|
|
274
|
+
Kiro, Gemini CLI, Qoder, Claude Code, Antigravity, Codex and GitHub Copilot use subscription sessions that are not licensed for proxy use. The dashboard warns before you connect them: the account may be restricted or banned.
|
|
261
275
|
|
|
262
|
-
###
|
|
276
|
+
### API Key Providers (65+)
|
|
263
277
|
|
|
264
|
-
|
|
278
|
+
OpenAI · Anthropic · GLM · Kimi · MiniMax · DeepSeek · Groq · xAI · Mistral · Perplexity · Together AI · Fireworks · Cerebras · Cohere · SiliconFlow · Hyperbolic · Nebius · Chutes · and 45+ more
|
|
265
279
|
|
|
266
|
-
###
|
|
280
|
+
### Browser Session
|
|
267
281
|
|
|
268
|
-
|
|
282
|
+
Grok Web · Perplexity Web (Pro/Max)
|
|
269
283
|
|
|
270
|
-
|
|
284
|
+
**Full provider setup guide → [krouter.kodelyth.com](https://krouter.kodelyth.com)**
|
|
271
285
|
|
|
272
286
|
---
|
|
273
287
|
|
|
274
|
-
##
|
|
288
|
+
## Setup Guide
|
|
275
289
|
|
|
276
290
|
### Step 1 · Install
|
|
277
291
|
|
|
@@ -290,52 +304,56 @@ You'll see a tray icon in your menu bar. Right-click for **Open Dashboard** or *
|
|
|
290
304
|
### Step 3 · Add a Provider
|
|
291
305
|
|
|
292
306
|
1. Open **[http://localhost:20128/dashboard](http://localhost:20128/dashboard)**
|
|
293
|
-
2.
|
|
294
|
-
3. Paste your API key or OAuth login
|
|
295
|
-
4. Click **Test
|
|
307
|
+
2. Go to **Providers**, pick one (Cloudflare Workers AI is a good free start) and click **Add**
|
|
308
|
+
3. Paste your API key or complete the OAuth login
|
|
309
|
+
4. Click **Test** on a model to check it answers
|
|
296
310
|
|
|
297
311
|
### Step 4 · Point Your AI Tool at kRouter
|
|
298
312
|
|
|
299
313
|
```text
|
|
300
314
|
Endpoint: http://localhost:20128/v1
|
|
301
|
-
API Key:
|
|
315
|
+
API Key: a key from Dashboard → Endpoint → API Keys (local callers can skip it)
|
|
302
316
|
Model: kr/claude-sonnet-4.5 (or any provider/model)
|
|
303
317
|
```
|
|
304
318
|
|
|
305
|
-
Works with any OpenAI-compatible client.
|
|
319
|
+
Works with any OpenAI-compatible client. A **Default Key** is created the first time you open the
|
|
320
|
+
Endpoint page. Local requests need no key unless `REQUIRE_API_KEY=true`; requests from other machines
|
|
321
|
+
always do. Cursor is the exception to `localhost`: it sends requests through its own servers, so turn
|
|
322
|
+
on the **Tunnel** on the Endpoint page and use that URL with a key.
|
|
306
323
|
|
|
307
|
-
|
|
324
|
+
**Detailed integration guide (Claude Code, Cursor, Cline, and more) → [krouter.kodelyth.com](https://krouter.kodelyth.com)**
|
|
308
325
|
|
|
309
326
|
---
|
|
310
327
|
|
|
311
|
-
##
|
|
328
|
+
## Environment Variables
|
|
312
329
|
|
|
313
330
|
| Variable | Default | Description |
|
|
314
331
|
|----------|---------|-------------|
|
|
315
|
-
| `PORT` | `20128` | Server port |
|
|
316
|
-
| `HOSTNAME` | `0.0.0.0` | Bind host
|
|
317
|
-
| `DATA_DIR` | `~/.krouter` | Data directory (SQLite, certs, cache) |
|
|
332
|
+
| `PORT` | `20128` | Server port for the Docker image and `node custom-server.js`. The `krouter` command ignores it — use `--port` |
|
|
333
|
+
| `HOSTNAME` | `0.0.0.0` | Bind host for the Docker image and `node custom-server.js`. The `krouter` command ignores it — use `--host 127.0.0.1` for local-only |
|
|
334
|
+
| `DATA_DIR` | `~/.krouter` | Data directory (SQLite, certs, cache). `%APPDATA%\krouter` on Windows |
|
|
335
|
+
| `INITIAL_PASSWORD` | — | First-login dashboard password. Unset, it is `123456`, accepted only from the same machine |
|
|
318
336
|
| `NODE_ENV` | `production` | Runtime mode |
|
|
319
337
|
| `REQUIRE_API_KEY` | `false` | Require a Bearer key on `/v1/*` from **every** caller. Remote callers always need one; this additionally removes the loopback exemption, for shared or multi-user machines |
|
|
320
338
|
| `KROUTER_SKIP_RUNTIME_HEAL` | `false` | Skip the startup npm self-heal of the SQLite/tray runtime (air-gapped or CI machines) |
|
|
321
339
|
| `AUTH_COOKIE_SECURE` | `false` | Force `Secure` cookie (set behind HTTPS reverse proxy) |
|
|
322
|
-
| `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` | — | Outbound proxy config |
|
|
340
|
+
| `HTTP_PROXY` / `HTTPS_PROXY` / `ALL_PROXY` / `NO_PROXY` | — | Outbound proxy config |
|
|
323
341
|
|
|
324
342
|
Full env reference → **[krouter.kodelyth.com](https://krouter.kodelyth.com)**
|
|
325
343
|
|
|
326
344
|
---
|
|
327
345
|
|
|
328
|
-
##
|
|
346
|
+
## Deployment
|
|
329
347
|
|
|
330
348
|
### VPS
|
|
331
349
|
|
|
332
350
|
```bash
|
|
333
351
|
npm install -g @sifxprime/krouter
|
|
334
|
-
|
|
335
|
-
krouter --skip-update
|
|
352
|
+
krouter --skip-update --host 127.0.0.1 --port 20128
|
|
336
353
|
```
|
|
337
354
|
|
|
338
|
-
|
|
355
|
+
Put Nginx or Caddy in front for HTTPS; `--host 127.0.0.1` keeps the port closed to everything but the
|
|
356
|
+
proxy. Or skip the proxy and use the built-in Cloudflare Tunnel or Tailscale from the Endpoint page.
|
|
339
357
|
|
|
340
358
|
### Docker
|
|
341
359
|
|
|
@@ -355,7 +373,7 @@ pm2 startup
|
|
|
355
373
|
|
|
356
374
|
---
|
|
357
375
|
|
|
358
|
-
##
|
|
376
|
+
## API
|
|
359
377
|
|
|
360
378
|
### Chat Completions
|
|
361
379
|
|
|
@@ -382,7 +400,7 @@ Returns every configured provider + custom combo in OpenAI format.
|
|
|
382
400
|
|
|
383
401
|
---
|
|
384
402
|
|
|
385
|
-
##
|
|
403
|
+
## Uninstall
|
|
386
404
|
|
|
387
405
|
```bash
|
|
388
406
|
# Stop kRouter (right-click tray → Quit, or pkill -f krouter)
|
|
@@ -392,23 +410,23 @@ rm -rf ~/.krouter # optional: wipe database + certs
|
|
|
392
410
|
|
|
393
411
|
---
|
|
394
412
|
|
|
395
|
-
##
|
|
413
|
+
## Troubleshooting
|
|
396
414
|
|
|
397
415
|
**"No active credentials for provider"** — Add or reconnect the provider in Dashboard → Providers.
|
|
398
416
|
|
|
399
|
-
**Rate limited** — kRouter
|
|
417
|
+
**Rate limited** — kRouter cools the account down and moves to the next one. To speed it up, add more accounts or configure a combo.
|
|
400
418
|
|
|
401
|
-
**MITM cert errors** —
|
|
419
|
+
**MITM cert errors** — Install or reinstall the root CA from the **MITM** page in the dashboard sidebar (**Install Certificate** / **Reinstall Certificate**).
|
|
402
420
|
|
|
403
|
-
**Dashboard on wrong port** — `PORT
|
|
421
|
+
**Dashboard on wrong port** — the `krouter` command ignores `PORT`; pass the port as a flag: `krouter -t --port 20128`. If another program holds the port, kRouter will not stop it and suggests another one.
|
|
404
422
|
|
|
405
423
|
**Full troubleshooting guide → [krouter.kodelyth.com](https://krouter.kodelyth.com)**
|
|
406
424
|
|
|
407
425
|
---
|
|
408
426
|
|
|
409
|
-
##
|
|
427
|
+
## Tech Stack
|
|
410
428
|
|
|
411
|
-
- **Runtime:** Node.js 20+
|
|
429
|
+
- **Runtime:** Node.js 20.9+
|
|
412
430
|
- **Framework:** Next.js 16
|
|
413
431
|
- **UI:** React 19 + Tailwind CSS 4
|
|
414
432
|
- **Database:** SQLite (better-sqlite3 / node:sqlite / sql.js)
|
|
@@ -417,7 +435,7 @@ rm -rf ~/.krouter # optional: wipe database + certs
|
|
|
417
435
|
|
|
418
436
|
---
|
|
419
437
|
|
|
420
|
-
##
|
|
438
|
+
## Links
|
|
421
439
|
|
|
422
440
|
- **Website:** [krouter.kodelyth.com](https://krouter.kodelyth.com)
|
|
423
441
|
- **GitHub:** [github.com/sifxprime/krouter](https://github.com/sifxprime/krouter)
|
|
@@ -427,18 +445,18 @@ rm -rf ~/.krouter # optional: wipe database + certs
|
|
|
427
445
|
|
|
428
446
|
---
|
|
429
447
|
|
|
430
|
-
##
|
|
448
|
+
## Credits
|
|
431
449
|
|
|
432
|
-
kRouter is a hardened fork of the upstream **[decolua/9router](https://github.com/decolua/9router)**. Huge thanks to [@decolua](https://github.com/decolua) and the 9router contributors for the original project.
|
|
450
|
+
kRouter is a hardened fork of the upstream **[decolua/9router](https://github.com/decolua/9router)**. Huge thanks to [@decolua](https://github.com/decolua) and the 9router contributors for the original project. Star them on GitHub.
|
|
433
451
|
|
|
434
452
|
---
|
|
435
453
|
|
|
436
|
-
##
|
|
454
|
+
## License
|
|
437
455
|
|
|
438
456
|
MIT License — see [LICENSE](https://github.com/sifxprime/krouter/blob/main/LICENSE) for details.
|
|
439
457
|
|
|
440
458
|
---
|
|
441
459
|
|
|
442
460
|
<div align="center">
|
|
443
|
-
<sub>Built
|
|
461
|
+
<sub>Built by <a href="https://krouter.kodelyth.com">Kodelyth AI Infrastructure</a></sub>
|
|
444
462
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
M98dvtgJ0h4WJXRRd3DBx
|
|
@@ -97,21 +97,21 @@
|
|
|
97
97
|
"/api/version/update/route": "/api/version/update",
|
|
98
98
|
"/favicon.ico/route": "/favicon.ico",
|
|
99
99
|
"/manifest.webmanifest/route": "/manifest.webmanifest",
|
|
100
|
-
"/api/auth/login/route": "/api/auth/login",
|
|
101
100
|
"/api/cache/route": "/api/cache",
|
|
102
101
|
"/api/combos/route": "/api/combos",
|
|
102
|
+
"/api/auth/login/route": "/api/auth/login",
|
|
103
103
|
"/api/headroom/extras/route": "/api/headroom/extras",
|
|
104
104
|
"/api/headroom/restart/route": "/api/headroom/restart",
|
|
105
|
-
"/api/headroom/start/route": "/api/headroom/start",
|
|
106
105
|
"/api/headroom/proxy/[...path]/route": "/api/headroom/proxy/[...path]",
|
|
106
|
+
"/api/headroom/start/route": "/api/headroom/start",
|
|
107
107
|
"/api/headroom/status/route": "/api/headroom/status",
|
|
108
108
|
"/api/headroom/stop/route": "/api/headroom/stop",
|
|
109
|
-
"/api/import/route": "/api/import",
|
|
110
109
|
"/api/keys/route": "/api/keys",
|
|
111
110
|
"/api/mcp/[plugin]/message/route": "/api/mcp/[plugin]/message",
|
|
111
|
+
"/api/import/route": "/api/import",
|
|
112
112
|
"/api/mcp/[plugin]/sse/route": "/api/mcp/[plugin]/sse",
|
|
113
|
-
"/api/mitm/cert/route": "/api/mitm/cert",
|
|
114
113
|
"/api/models/alias/route": "/api/models/alias",
|
|
114
|
+
"/api/mitm/cert/route": "/api/mitm/cert",
|
|
115
115
|
"/api/models/custom/route": "/api/models/custom",
|
|
116
116
|
"/api/models/disabled/route": "/api/models/disabled",
|
|
117
117
|
"/api/models/live-by-connection/route": "/api/models/live-by-connection",
|
|
@@ -123,16 +123,16 @@
|
|
|
123
123
|
"/api/providers/health/route": "/api/providers/health",
|
|
124
124
|
"/api/providers/client/route": "/api/providers/client",
|
|
125
125
|
"/api/providers/suggested-models/route": "/api/providers/suggested-models",
|
|
126
|
-
"/api/providers/[id]/models/route": "/api/providers/[id]/models",
|
|
127
126
|
"/api/providers/route": "/api/providers",
|
|
127
|
+
"/api/providers/[id]/models/route": "/api/providers/[id]/models",
|
|
128
128
|
"/api/providers/zenith/log/route": "/api/providers/zenith/log",
|
|
129
129
|
"/api/providers/zenith/route": "/api/providers/zenith",
|
|
130
|
-
"/api/proxy-pools/[id]/route": "/api/proxy-pools/[id]",
|
|
131
130
|
"/api/proxy-pools/[id]/test/route": "/api/proxy-pools/[id]/test",
|
|
131
|
+
"/api/proxy-pools/[id]/route": "/api/proxy-pools/[id]",
|
|
132
132
|
"/api/proxy-pools/cloudflare-deploy/route": "/api/proxy-pools/cloudflare-deploy",
|
|
133
|
+
"/api/proxy-pools/deno-deploy/route": "/api/proxy-pools/deno-deploy",
|
|
133
134
|
"/api/proxy-pools/route": "/api/proxy-pools",
|
|
134
135
|
"/api/pxpipe/health/route": "/api/pxpipe/health",
|
|
135
|
-
"/api/proxy-pools/deno-deploy/route": "/api/proxy-pools/deno-deploy",
|
|
136
136
|
"/api/proxy-pools/vercel-deploy/route": "/api/proxy-pools/vercel-deploy",
|
|
137
137
|
"/api/pxpipe/install/route": "/api/pxpipe/install",
|
|
138
138
|
"/api/pxpipe/logs/route": "/api/pxpipe/logs",
|
|
@@ -144,13 +144,13 @@
|
|
|
144
144
|
"/api/settings/database/route": "/api/settings/database",
|
|
145
145
|
"/api/settings/environment/route": "/api/settings/environment",
|
|
146
146
|
"/api/settings/proxy-test/route": "/api/settings/proxy-test",
|
|
147
|
-
"/api/settings/route": "/api/settings",
|
|
148
147
|
"/api/settings/presidio/route": "/api/settings/presidio",
|
|
148
|
+
"/api/settings/route": "/api/settings",
|
|
149
149
|
"/api/translator/console-logs/stream/route": "/api/translator/console-logs/stream",
|
|
150
150
|
"/api/usage/[connectionId]/route": "/api/usage/[connectionId]",
|
|
151
151
|
"/api/usage/stats/route": "/api/usage/stats",
|
|
152
|
-
"/api/usage/stream/route": "/api/usage/stream",
|
|
153
152
|
"/api/v1/api/chat/route": "/api/v1/api/chat",
|
|
153
|
+
"/api/usage/stream/route": "/api/usage/stream",
|
|
154
154
|
"/api/v1/audio/transcriptions/route": "/api/v1/audio/transcriptions",
|
|
155
155
|
"/api/v1/chat/completions/route": "/api/v1/chat/completions",
|
|
156
156
|
"/api/v1/messages/route": "/api/v1/messages",
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
"/(dashboard)/dashboard/console-log/page": "/dashboard/console-log",
|
|
186
186
|
"/(dashboard)/dashboard/presidio/page": "/dashboard/presidio",
|
|
187
187
|
"/(dashboard)/dashboard/profile/page": "/dashboard/profile",
|
|
188
|
-
"/(dashboard)/dashboard/providers/page": "/dashboard/providers",
|
|
189
188
|
"/(dashboard)/dashboard/providers/[id]/page": "/dashboard/providers/[id]",
|
|
190
|
-
"/(dashboard)/dashboard/proxy-pools/page": "/dashboard/proxy-pools"
|
|
189
|
+
"/(dashboard)/dashboard/proxy-pools/page": "/dashboard/proxy-pools",
|
|
190
|
+
"/(dashboard)/dashboard/providers/page": "/dashboard/providers"
|
|
191
191
|
}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
],
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"lowPriorityFiles": [
|
|
7
|
-
"static
|
|
8
|
-
"static
|
|
7
|
+
"static/M98dvtgJ0h4WJXRRd3DBx/_buildManifest.js",
|
|
8
|
+
"static/M98dvtgJ0h4WJXRRd3DBx/_ssgManifest.js"
|
|
9
9
|
],
|
|
10
10
|
"rootMainFiles": [
|
|
11
11
|
"static/chunks/webpack-53609978799ebbca.js",
|
|
@@ -370,7 +370,7 @@
|
|
|
370
370
|
"routeType": "page",
|
|
371
371
|
"response": "complete",
|
|
372
372
|
"compute": "static",
|
|
373
|
-
"htmlSize":
|
|
373
|
+
"htmlSize": 53354,
|
|
374
374
|
"experimentalBypassFor": [
|
|
375
375
|
{
|
|
376
376
|
"type": "header",
|
|
@@ -566,7 +566,7 @@
|
|
|
566
566
|
"routeType": "page",
|
|
567
567
|
"response": "complete",
|
|
568
568
|
"compute": "static",
|
|
569
|
-
"htmlSize":
|
|
569
|
+
"htmlSize": 49767,
|
|
570
570
|
"experimentalBypassFor": [
|
|
571
571
|
{
|
|
572
572
|
"type": "header",
|
|
@@ -798,8 +798,8 @@
|
|
|
798
798
|
"dynamicRoutes": {},
|
|
799
799
|
"notFoundRoutes": [],
|
|
800
800
|
"preview": {
|
|
801
|
-
"previewModeId": "
|
|
802
|
-
"previewModeSigningKey": "
|
|
803
|
-
"previewModeEncryptionKey": "
|
|
801
|
+
"previewModeId": "cd0c9ff4f0d49a7baaba3d783c45208f",
|
|
802
|
+
"previewModeSigningKey": "413d6637b2e9bcdfd82a5bfcd25097971db59cf11539e29eac7522f4b837750a",
|
|
803
|
+
"previewModeEncryptionKey": "b48ba1ae40519f7752dd36b0b69167879776531867344af55671d4e78d945556"
|
|
804
804
|
}
|
|
805
805
|
}
|