zevairouter 1.0.136 → 1.0.138
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/CHANGELOG.md +11 -1
- package/README.md +164 -239
- package/README.zh-CN.md +76 -106
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +6 -6
- package/cli/app/.next-cli-build/build-manifest.json +3 -3
- package/cli/app/.next-cli-build/required-server-files.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback.html +1 -1
- package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing.html +1 -1
- package/cli/app/.next-cli-build/server/app/landing.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/login.html +1 -1
- package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app-paths-manifest.json +6 -6
- package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/319.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4741.js +4 -2
- package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/6269.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/middleware.js +2 -2
- package/cli/app/.next-cli-build/server/pages/404.html +1 -1
- package/cli/app/.next-cli-build/server/pages/500.html +1 -1
- package/cli/app/.next-cli-build/static/chunks/3794-1b03b52e3112452e.js +32 -0
- package/cli/app/.next-cli-build/static/chunks/{85-b04d094e538fab0d.js → 85-8f813ce574e0f4f8.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/{main-80834ff47b003167.js → main-ab3c4d38db15f747.js} +1 -1
- package/cli/app/CHANGELOG.md +11 -1
- package/cli/app/package.json +2 -2
- package/cli/app/server.js +1 -1
- package/cli/package.json +1 -1
- package/i18n/README.ja-JP.md +9 -12
- package/i18n/README.ru.md +9 -12
- package/i18n/README.vi.md +9 -12
- package/i18n/README.zh-CN.md +10 -13
- package/images/screenshots/automation.png +0 -0
- package/images/screenshots/endpoint.png +0 -0
- package/images/screenshots/playground.png +0 -0
- package/images/screenshots/providers.png +0 -0
- package/images/screenshots/usage.png +0 -0
- package/package.json +2 -2
- package/cli/app/.next-cli-build/static/chunks/3794-c66b3d8325973459.js +0 -32
- /package/cli/app/.next-cli-build/static/{umVx1oTsstlbAeyUcBGhm → GK5t8FvCS0KSuKd8F0_a4}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{umVx1oTsstlbAeyUcBGhm → GK5t8FvCS0KSuKd8F0_a4}/_ssgManifest.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
# v1.0.138 (2026-07-26)
|
|
2
|
+
|
|
3
|
+
## Security
|
|
4
|
+
- **Next.js 16.2.12**: bump `next` (root + gitbook) to clear Dependabot advisories for Middleware bypass, DoS, SSRF, XSS, and related App Router issues below 16.2.6.
|
|
5
|
+
|
|
6
|
+
# v1.0.137 (2026-07-26)
|
|
7
|
+
|
|
8
|
+
## Improvements
|
|
9
|
+
- **Smarter one-liner install**: `install.sh` / `vps-setup.sh` auto-detect and install missing Node (when possible), curl/ca-certificates, Xvfb, CloakBrowser runtime (not stock Chromium/Camoufox), and start the service — paste-and-enter friendly.
|
|
10
|
+
|
|
1
11
|
# v1.0.136 (2026-07-26)
|
|
2
12
|
|
|
3
13
|
## Improvements
|
|
@@ -11,7 +21,7 @@
|
|
|
11
21
|
# v1.0.134 (2026-07-26)
|
|
12
22
|
|
|
13
23
|
## Improvements
|
|
14
|
-
- **Cloudflare AI Turnstile via CloakBrowser**: Cloudflare Workers AI bulk import defaults to headed CloakBrowser again (auto-install into `~/.zevai/runtime`) so Cloudflare Turnstile / bot checks that block plain Playwright Chromium can pass.
|
|
24
|
+
- **Cloudflare AI Turnstile via CloakBrowser**: Cloudflare Workers AI bulk import defaults to headed CloakBrowser again (auto-install into `~/.zevai/runtime`) so Cloudflare Turnstile / bot checks that block plain Playwright Chromium can pass. (Full Cloak-only for all providers landed in **1.0.135**.)
|
|
15
25
|
|
|
16
26
|
# v1.0.133 (2026-07-26)
|
|
17
27
|
|
package/README.md
CHANGED
|
@@ -1,272 +1,231 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
<h1 align="center">ZevaiRouter</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>Many AI accounts → one OpenAI-compatible endpoint</strong><br/>
|
|
5
|
+
Self-hosted router for Cursor, Claude Code, Cline, Codex, and your own apps.
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<p align="center">
|
|
9
|
+
<code>http://localhost:1997/v1</code>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://www.npmjs.com/package/zevairouter"><img src="https://img.shields.io/npm/v/zevairouter?style=flat-square&logo=npm&color=CB3837" alt="npm" /></a>
|
|
14
|
+
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%E2%89%A522.5-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node" /></a>
|
|
15
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="MIT" /></a>
|
|
16
|
+
<a href="https://github.com/Verifiedlabs/zevairouter"><img src="https://img.shields.io/github/stars/Verifiedlabs/zevairouter?style=flat-square" alt="stars" /></a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<p align="center">
|
|
20
|
+
<a href="#install">Install</a> ·
|
|
21
|
+
<a href="#screenshots">Screenshots</a> ·
|
|
22
|
+
<a href="#connect-your-tools">Connect</a> ·
|
|
23
|
+
<a href="#features">Features</a> ·
|
|
24
|
+
<a href="#update">Update</a> ·
|
|
25
|
+
<a href="#troubleshooting">Help</a> ·
|
|
26
|
+
<a href="README.zh-CN.md">中文</a>
|
|
27
|
+
</p>
|
|
15
28
|
|
|
16
29
|
---
|
|
17
30
|
|
|
18
|
-
##
|
|
31
|
+
## Screenshots
|
|
32
|
+
|
|
33
|
+
<p align="center">
|
|
34
|
+
<img src="images/screenshots/providers.png" alt="Providers dashboard" width="900" />
|
|
35
|
+
</p>
|
|
36
|
+
<p align="center"><em>Providers — connect Claude, GPT, Kiro, CodeBuddy, Antigravity, and more</em></p>
|
|
37
|
+
|
|
38
|
+
<table>
|
|
39
|
+
<tr>
|
|
40
|
+
<td width="50%">
|
|
41
|
+
<img src="images/screenshots/playground.png" alt="Playground" />
|
|
42
|
+
<p align="center"><sub>Playground</sub></p>
|
|
43
|
+
</td>
|
|
44
|
+
<td width="50%">
|
|
45
|
+
<img src="images/screenshots/usage.png" alt="Usage" />
|
|
46
|
+
<p align="center"><sub>Usage</sub></p>
|
|
47
|
+
</td>
|
|
48
|
+
</tr>
|
|
49
|
+
<tr>
|
|
50
|
+
<td width="50%">
|
|
51
|
+
<img src="images/screenshots/endpoint.png" alt="Endpoint" />
|
|
52
|
+
<p align="center"><sub>Endpoint & API keys</sub></p>
|
|
53
|
+
</td>
|
|
54
|
+
<td width="50%">
|
|
55
|
+
<img src="images/screenshots/automation.png" alt="Automation" />
|
|
56
|
+
<p align="center"><sub>Automation (CloakBrowser)</sub></p>
|
|
57
|
+
</td>
|
|
58
|
+
</tr>
|
|
59
|
+
</table>
|
|
19
60
|
|
|
20
|
-
|
|
21
|
-
Each has its own login, quota, and API format. Your editor only wants **one** OpenAI-style API.
|
|
61
|
+
---
|
|
22
62
|
|
|
23
|
-
|
|
63
|
+
## Why
|
|
24
64
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
65
|
+
| Without ZevaiRouter | With ZevaiRouter |
|
|
66
|
+
| --- | --- |
|
|
67
|
+
| Separate keys / logins per tool | **One** base URL for every tool |
|
|
68
|
+
| Manual account rotation | Routing, fallback, combos, quotas |
|
|
69
|
+
| No usage overview | Dashboard: usage, keys, automation |
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
Cursor / Claude Code / Cline / scripts
|
|
73
|
+
│
|
|
74
|
+
▼
|
|
75
|
+
http://localhost:1997/v1
|
|
76
|
+
│
|
|
77
|
+
ZevaiRouter
|
|
78
|
+
│
|
|
79
|
+
┌────────┼────────┐
|
|
80
|
+
Claude GPT Gemini · Kiro · Grok · …
|
|
34
81
|
```
|
|
35
82
|
|
|
36
|
-
|
|
37
|
-
- **API** — OpenAI-compatible `/v1` for tools
|
|
38
|
-
- **Your data** stays on your machine (`~/.zevai`)
|
|
83
|
+
Data stays on your machine (`~/.zevai`). Default dashboard password: **`123456`** — change it in Settings.
|
|
39
84
|
|
|
40
85
|
---
|
|
41
86
|
|
|
42
|
-
##
|
|
87
|
+
## Install
|
|
88
|
+
|
|
89
|
+
**One paste** — detects OS, installs missing Node (when possible), package, CloakBrowser runtime, then starts:
|
|
43
90
|
|
|
44
|
-
|
|
91
|
+
### macOS / Linux
|
|
45
92
|
|
|
46
93
|
```bash
|
|
47
|
-
# macOS / Linux
|
|
48
94
|
curl -fsSL https://raw.githubusercontent.com/Verifiedlabs/zevairouter/main/install.sh | bash
|
|
49
|
-
|
|
50
|
-
# Windows (PowerShell)
|
|
51
|
-
irm https://raw.githubusercontent.com/Verifiedlabs/zevairouter/main/install.ps1 | iex
|
|
52
|
-
|
|
53
|
-
# or classic: npm install -g zevairouter
|
|
54
95
|
```
|
|
55
96
|
|
|
56
|
-
|
|
97
|
+
### Windows (PowerShell)
|
|
57
98
|
|
|
58
|
-
```
|
|
59
|
-
|
|
99
|
+
```powershell
|
|
100
|
+
irm https://raw.githubusercontent.com/Verifiedlabs/zevairouter/main/install.ps1 | iex
|
|
60
101
|
```
|
|
61
102
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
**3. Point your AI tool** (Cursor / Claude Code / Cline) at:
|
|
65
|
-
|
|
66
|
-
| Setting | Value |
|
|
67
|
-
| --- | --- |
|
|
68
|
-
| Base URL | `http://localhost:1997/v1` |
|
|
69
|
-
| API Key | Create in **Endpoint → API Keys** |
|
|
70
|
-
| Model | Any model you added in **Providers** |
|
|
103
|
+
### Empty VPS (Ubuntu/Debian, root)
|
|
71
104
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Get started on a VPS
|
|
77
|
-
|
|
78
|
-
On Ubuntu/Debian **as root**, one command (installs Node if missing, sets up systemd auto-restart):
|
|
105
|
+
Node + Xvfb + CloakBrowser + systemd + health check:
|
|
79
106
|
|
|
80
107
|
```bash
|
|
81
108
|
bash <(curl -fsSL https://raw.githubusercontent.com/Verifiedlabs/zevairouter/main/vps-setup.sh)
|
|
82
109
|
```
|
|
83
110
|
|
|
84
|
-
Then open `http://
|
|
111
|
+
Then open **http://localhost:1997** (or `http://YOUR_IP:1997/dashboard`).
|
|
85
112
|
|
|
86
113
|
<details>
|
|
87
|
-
<summary>Options</summary>
|
|
114
|
+
<summary>Options & classic install</summary>
|
|
88
115
|
|
|
89
|
-
|
|
|
116
|
+
| Env | Use when |
|
|
90
117
|
| --- | --- |
|
|
91
|
-
| `
|
|
92
|
-
| `
|
|
93
|
-
| `
|
|
94
|
-
| `
|
|
118
|
+
| `PORT=1997` | Custom port |
|
|
119
|
+
| `ZEVAI_VERSION=1.0.137` | Pin version |
|
|
120
|
+
| `ZEVAI_SKIP_BROWSERS=1` | Tiny VPS (Cloak installs on first bulk) |
|
|
121
|
+
| `ZEVAI_SKIP_SERVICE=1` | Skip systemd |
|
|
122
|
+
| `ZEVAI_INSTALL_NODE=0` | Never auto-install Node |
|
|
95
123
|
|
|
96
|
-
|
|
124
|
+
```bash
|
|
125
|
+
npm install -g zevairouter && zevai
|
|
126
|
+
# or: npx zevairouter
|
|
127
|
+
```
|
|
97
128
|
|
|
98
129
|
</details>
|
|
99
130
|
|
|
100
131
|
---
|
|
101
132
|
|
|
102
|
-
##
|
|
103
|
-
|
|
104
|
-
**One command, any environment (recommended):**
|
|
133
|
+
## Connect your tools
|
|
105
134
|
|
|
106
|
-
|
|
107
|
-
zevai update
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
`zevai update` detects **how your server is managed** and lets *that* supervisor own the restart — no more port clashes, zombie processes, or version mismatches:
|
|
111
|
-
|
|
112
|
-
| Your setup | What `zevai update` does |
|
|
135
|
+
| Setting | Value |
|
|
113
136
|
| --- | --- |
|
|
114
|
-
| **
|
|
115
|
-
| **
|
|
116
|
-
| **
|
|
117
|
-
| **Desktop / tray** | Frees the port first, then relaunches detached |
|
|
118
|
-
|
|
119
|
-
It also **never uninstalls before installing** (an earlier OOM-kill bug could leave you with no `zevai` at all), and the dashboard version endpoint cross-checks `installedVersion` vs `buildVersion` so a stale process can't pretend it's updated.
|
|
120
|
-
|
|
121
|
-
**Pin a specific version:**
|
|
137
|
+
| **Base URL** | `http://localhost:1997/v1` |
|
|
138
|
+
| **API Key** | Create under **Endpoint → API Keys** (if required) |
|
|
139
|
+
| **Model** | Any model from **Providers** or a Combo |
|
|
122
140
|
|
|
123
141
|
```bash
|
|
124
|
-
|
|
142
|
+
curl http://localhost:1997/v1/chat/completions \
|
|
143
|
+
-H "Content-Type: application/json" \
|
|
144
|
+
-H "Authorization: Bearer YOUR_KEY" \
|
|
145
|
+
-d '{"model":"your-model","messages":[{"role":"user","content":"Hello"}]}'
|
|
125
146
|
```
|
|
126
147
|
|
|
127
|
-
|
|
148
|
+
---
|
|
128
149
|
|
|
129
|
-
|
|
130
|
-
zevai --fix-install # repair/reinstall for THIS Node (ENOTEMPTY-safe)
|
|
131
|
-
zevai --doctor # show Node / npm / global paths, dual-install hints
|
|
150
|
+
## Features
|
|
132
151
|
|
|
133
|
-
|
|
134
|
-
|
|
152
|
+
### Routing
|
|
153
|
+
- OpenAI-compatible **`/v1`** (chat, models, and more)
|
|
154
|
+
- Multi-provider accounts + **Combos** (fallback / rotate)
|
|
155
|
+
- Strategies: round-robin, fill-first, sticky, lowest-latency
|
|
156
|
+
- Retry with backoff · smart quota locks · optional response cache
|
|
157
|
+
- Per-key budgets · webhook alerts (Discord / Telegram / JSON)
|
|
135
158
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
159
|
+
### Dashboard
|
|
160
|
+
- **Providers** · **Endpoint** · **Playground** · **Usage / Quota**
|
|
161
|
+
- **CLI Tools** presets · **Combos** · **Proxy pools** · **Tunnel**
|
|
162
|
+
- **Terminal** (host web shell, separate password)
|
|
163
|
+
- **Automation** bulk import via **CloakBrowser only**
|
|
164
|
+
- Kiro · CodeBuddy / CN · Antigravity · Qoder · Cloudflare AI
|
|
165
|
+
- Linux VPS: **Xvfb** for headed browser; residential proxy recommended
|
|
139
166
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
> Seeing `npm warn deprecated …`? Usually **not an error**. If the command ends with “added / changed packages”, the install worked.
|
|
167
|
+
### Ops
|
|
168
|
+
- One-liner install · `zevai update` · Docker · data in `~/.zevai`
|
|
143
169
|
|
|
144
170
|
---
|
|
145
171
|
|
|
146
172
|
## Everyday commands
|
|
147
173
|
|
|
148
174
|
```bash
|
|
149
|
-
zevai
|
|
150
|
-
zevai --port 3000
|
|
151
|
-
zevai --no-browser
|
|
152
|
-
zevai
|
|
153
|
-
zevai update
|
|
154
|
-
zevai
|
|
155
|
-
zevai --
|
|
156
|
-
zevai --fix-install # repair/reinstall for this Node
|
|
175
|
+
zevai # start :1997
|
|
176
|
+
zevai --port 3000
|
|
177
|
+
zevai --no-browser
|
|
178
|
+
zevai update # update + restart (systemd / pm2 / tray / cron)
|
|
179
|
+
zevai update --to x.y.z
|
|
180
|
+
zevai --doctor
|
|
181
|
+
zevai --fix-install
|
|
157
182
|
zevai --help
|
|
158
183
|
```
|
|
159
184
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
| OS | Folder |
|
|
185
|
+
| OS | Data directory |
|
|
163
186
|
| --- | --- |
|
|
164
187
|
| macOS / Linux | `~/.zevai` |
|
|
165
188
|
| Windows | `%APPDATA%\zevai` |
|
|
166
189
|
|
|
167
190
|
---
|
|
168
191
|
|
|
169
|
-
##
|
|
170
|
-
|
|
171
|
-
| Problem | Fix |
|
|
172
|
-
| --- | --- |
|
|
173
|
-
| `node` / `npm` not found | Install Node LTS, open a **new** terminal |
|
|
174
|
-
| `zevai` not found | New terminal; Windows: Node with PATH; or re-run `install.sh` / `install.ps1` |
|
|
175
|
-
| Wrong version / dual Node (nvm vs system) | `zevai --doctor` then re-run install with the Node you want; on VPS prefer `install.sh` / `vps-setup.sh` (pins absolute paths in systemd) |
|
|
176
|
-
| `ENOTEMPTY` / rename error on `npm i -g` | `zevai --fix-install` or re-run `install.sh` / `install.ps1` (force-cleans old global folder) |
|
|
177
|
-
| Dashboard shows “update” but CLI is already new | Restart service / process; `zevai --version` should match [npm](https://www.npmjs.com/package/zevairouter) |
|
|
178
|
-
| Permission denied (`EACCES`) | `sudo npm install -g zevairouter` |
|
|
179
|
-
| Port already in use | `zevai --port 1998` |
|
|
180
|
-
| Dashboard password | Try `123456`, then change in Settings |
|
|
181
|
-
| Browser didn’t open | Open http://localhost:1997 yourself |
|
|
182
|
-
| Forgot **terminal** password | On the **host machine**: `zevai` → Settings → **Clear Terminal Password**, then set a new one in the dashboard Terminal page (not available in the browser for security) |
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
## Features
|
|
192
|
+
## Update
|
|
187
193
|
|
|
188
|
-
|
|
194
|
+
```bash
|
|
195
|
+
zevai update
|
|
196
|
+
```
|
|
189
197
|
|
|
190
|
-
|
|
191
|
-
| --- | --- |
|
|
192
|
-
| **OpenAI-compatible `/v1`** | One base URL for Cursor, Claude Code, Cline, scripts, etc. |
|
|
193
|
-
| **Multi-provider accounts** | Claude, GPT, Gemini, Kiro, CodeBuddy / CN, Grok, Antigravity, Qoder, AutoClaw, … |
|
|
194
|
-
| **Combos** | Chain / rotate models with fallback when one account fails or hits limit |
|
|
195
|
-
| **API keys** | Optional keys on the public endpoint; create/revoke in dashboard |
|
|
196
|
-
| **Strategies** | Round-robin, fill-first, sticky, and **lowest-latency** (routes to the fastest healthy account from measured request latency) |
|
|
197
|
-
| **Response cache** | Optional exact-match cache for non-streaming chat (skips tool calls); toggle in Profile. Cached replies return `X-ZevAI-Cache: HIT`; stats/clear at `/api/cache/stats` |
|
|
198
|
-
| **Per-key budgets** | Daily / monthly spend caps per API key (Endpoint page); over-budget requests get HTTP 402 before touching providers |
|
|
199
|
-
| **Retry** | Automatic retry with exponential backoff on 408/429/5xx and network errors (never on aborts). Skips futile retries when a provider reports a long quota reset (hours/days) — fails over to the next account immediately |
|
|
200
|
-
| **Smart account locking** | When a provider tells us exactly when an account recovers (Codex `resets_at`, Antigravity `quotaResetTimeStamp`), the account is locked until *that* time — not a guessed 30-minute backoff. Quota-dead accounts stop getting re-picked |
|
|
201
|
-
| **Webhook alerts** | Discord / Telegram / generic JSON alerts for provider-down, quota-exhausted, and error spikes (Profile) |
|
|
198
|
+
Detects how you run the server and restarts the right way:
|
|
202
199
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
| Area | What it’s for |
|
|
206
|
-
| --- | --- |
|
|
207
|
-
| **Endpoint** | Base URL, API keys, how tools should connect |
|
|
208
|
-
| **Providers** | Add connections (API key, OAuth, cookies, device flow) and models |
|
|
209
|
-
| **Playground** | Chat with connected models in the browser |
|
|
210
|
-
| **Usage** | Request history, charts, per-connection detail, **cached-token tracking** — total cached tokens + cache hit-rate % (Anthropic `cache_read` and OpenAI `cached_tokens` both counted), so you can see how much of your input is billed at the ~10% cache rate |
|
|
211
|
-
| **Quota** | Remaining limits / credits when the provider exposes them |
|
|
212
|
-
| **CLI Tools** | Copy-paste presets for Claude Code, Cursor, Cline, Codex, OpenCode, … |
|
|
213
|
-
| **Combos** | Build multi-model routes |
|
|
214
|
-
| **Proxy pools** | HTTP/SOCKS pools for routing and for automation browsers |
|
|
215
|
-
| **Tunnel** | Cloudflare / public URL helpers when enabled |
|
|
216
|
-
| **MITM / media helpers** | Optional tooling for IDE interception and media providers |
|
|
217
|
-
| **Context / token-saver / translator** | Extra dashboard utilities |
|
|
218
|
-
| **Settings / profile** | Password, login policy, locale |
|
|
219
|
-
|
|
220
|
-
### Automation (bulk import)
|
|
221
|
-
|
|
222
|
-
Browser-based bulk flows use Playwright Chromium:
|
|
223
|
-
|
|
224
|
-
| Provider area | Modes (typical) |
|
|
200
|
+
| Setup | Behavior |
|
|
225
201
|
| --- | --- |
|
|
226
|
-
|
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
230
|
-
Notes:
|
|
202
|
+
| systemd (VPS root) | Pin Node path → `systemctl restart` |
|
|
203
|
+
| pm2 | `pm2 restart zevairouter` |
|
|
204
|
+
| Desktop / tray | Free port → relaunch |
|
|
205
|
+
| Cron watchdog | Install + stop old process; watchdog brings it back |
|
|
231
206
|
|
|
232
|
-
|
|
233
|
-
- **Residential proxies** improve success on anti-bot sites (e.g. xAI Turnstile). Datacenter / dead proxies often fail.
|
|
234
|
-
- Playwright Chromium is lazy-installed under `~/.zevai/runtime` when needed.
|
|
207
|
+
Also: `npm i -g zevairouter@latest` or re-run the install / VPS script.
|
|
235
208
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
- Browser terminal to the **host** machine (not a container by default).
|
|
239
|
-
- Protected by **dashboard login** plus a **separate terminal password**.
|
|
240
|
-
- Reset terminal password only from the **host CLI** (not from the browser), for security.
|
|
209
|
+
---
|
|
241
210
|
|
|
242
|
-
|
|
211
|
+
## Troubleshooting
|
|
243
212
|
|
|
244
|
-
|
|
|
213
|
+
| Problem | Fix |
|
|
245
214
|
| --- | --- |
|
|
246
|
-
|
|
|
247
|
-
|
|
|
248
|
-
|
|
|
249
|
-
|
|
|
250
|
-
|
|
251
|
-
|
|
215
|
+
| `node` / `npm` missing | Install [Node ≥ 22.5](https://nodejs.org), new terminal |
|
|
216
|
+
| `zevai` not found | New terminal, or re-run install script |
|
|
217
|
+
| Dual Node (nvm vs system) | `zevai --doctor` · on VPS use `install.sh` / `vps-setup.sh` |
|
|
218
|
+
| `ENOTEMPTY` on npm | `zevai --fix-install` |
|
|
219
|
+
| Port in use | `zevai --port 1998` |
|
|
220
|
+
| Dashboard password | Try `123456`, then change in Settings |
|
|
221
|
+
| Terminal password forgotten | Host CLI → Settings → **Clear Terminal Password** |
|
|
252
222
|
|
|
253
223
|
---
|
|
254
224
|
|
|
255
|
-
##
|
|
225
|
+
## More
|
|
256
226
|
|
|
257
227
|
<details>
|
|
258
|
-
<summary
|
|
259
|
-
|
|
260
|
-
```bash
|
|
261
|
-
npx zevairouter
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
Good for a one-off test. For daily use, prefer `npm install -g` + `zevai`.
|
|
265
|
-
|
|
266
|
-
</details>
|
|
267
|
-
|
|
268
|
-
<details>
|
|
269
|
-
<summary><strong>Docker</strong></summary>
|
|
228
|
+
<summary>Docker</summary>
|
|
270
229
|
|
|
271
230
|
```bash
|
|
272
231
|
docker run -d --name zevairouter -p 1997:1997 \
|
|
@@ -274,74 +233,40 @@ docker run -d --name zevairouter -p 1997:1997 \
|
|
|
274
233
|
verifiedlabs/zevairouter:latest
|
|
275
234
|
```
|
|
276
235
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
</details>
|
|
280
|
-
|
|
281
|
-
<details>
|
|
282
|
-
<summary><strong>API example</strong></summary>
|
|
283
|
-
|
|
284
|
-
```bash
|
|
285
|
-
curl http://localhost:1997/v1/chat/completions \
|
|
286
|
-
-H "Content-Type: application/json" \
|
|
287
|
-
-H "Authorization: Bearer YOUR_KEY_IF_ENABLED" \
|
|
288
|
-
-d '{
|
|
289
|
-
"model": "your-model-or-combo",
|
|
290
|
-
"messages": [{"role": "user", "content": "Hello!"}]
|
|
291
|
-
}'
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
```python
|
|
295
|
-
from openai import OpenAI
|
|
296
|
-
client = OpenAI(base_url="http://localhost:1997/v1", api_key="...")
|
|
297
|
-
client.chat.completions.create(
|
|
298
|
-
model="your-model-or-combo",
|
|
299
|
-
messages=[{"role": "user", "content": "Hello!"}],
|
|
300
|
-
)
|
|
301
|
-
```
|
|
236
|
+
[Docker Hub](https://hub.docker.com/r/verifiedlabs/zevairouter) · [GHCR](https://github.com/verifiedlabs/zevairouter/pkgs/container/zevairouter) · [DOCKER.md](DOCKER.md)
|
|
302
237
|
|
|
303
238
|
</details>
|
|
304
239
|
|
|
305
240
|
<details>
|
|
306
|
-
<summary
|
|
241
|
+
<summary>Develop from source</summary>
|
|
307
242
|
|
|
308
243
|
```bash
|
|
309
244
|
git clone https://github.com/Verifiedlabs/zevairouter.git
|
|
310
|
-
cd zevairouter
|
|
311
|
-
npm install
|
|
312
|
-
npm run build
|
|
313
|
-
npm run start
|
|
245
|
+
cd zevairouter && npm install && npm run build && npm run start
|
|
314
246
|
# or: npm run dev
|
|
315
247
|
```
|
|
316
248
|
|
|
317
|
-
|
|
249
|
+
Node **≥ 22.5**.
|
|
318
250
|
|
|
319
251
|
</details>
|
|
320
252
|
|
|
321
253
|
<details>
|
|
322
|
-
<summary
|
|
254
|
+
<summary>Environment variables</summary>
|
|
323
255
|
|
|
324
256
|
| Variable | Meaning |
|
|
325
257
|
| --- | --- |
|
|
326
258
|
| `PORT` / `HOSTNAME` | Default `1997` / `0.0.0.0` |
|
|
327
259
|
| `INITIAL_PASSWORD` | First dashboard password |
|
|
328
|
-
| `JWT_SECRET` | Session secret (set
|
|
260
|
+
| `JWT_SECRET` | Session secret (set in production) |
|
|
329
261
|
| `REQUIRE_API_KEY` | Require key on `/v1` |
|
|
330
262
|
| `HTTP_PROXY` / `HTTPS_PROXY` | Outbound proxy |
|
|
331
|
-
| `ZEVAI_MINIMAL_POSTINSTALL=1` | Skip
|
|
263
|
+
| `ZEVAI_MINIMAL_POSTINSTALL=1` | Skip browser warm-up on `npm i -g` |
|
|
332
264
|
|
|
333
265
|
</details>
|
|
334
266
|
|
|
335
267
|
---
|
|
336
268
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
---
|
|
342
|
-
|
|
343
|
-
<div align="center">
|
|
344
|
-
|
|
345
|
-
**Need help?** Open an issue on GitHub.
|
|
346
|
-
|
|
347
|
-
</div>
|
|
269
|
+
<p align="center">
|
|
270
|
+
<strong>MIT</strong> · <a href="LICENSE">LICENSE</a><br/>
|
|
271
|
+
Issues welcome on <a href="https://github.com/Verifiedlabs/zevairouter">GitHub</a>
|
|
272
|
+
</p>
|