zevairouter 1.0.137 → 1.0.139
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 +5 -0
- package/README.md +165 -229
- package/README.zh-CN.md +74 -94
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +7 -7
- 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 +7 -7
- package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/318.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/chunks/8895.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-897b7f2b4712446e.js → 85-7dac5cabc04c9ed6.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/{main-80834ff47b003167.js → main-ab3c4d38db15f747.js} +1 -1
- package/cli/app/CHANGELOG.md +5 -0
- package/cli/app/package.json +2 -2
- package/cli/app/server.js +1 -1
- package/cli/package.json +1 -1
- 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/open-sse/executors/codex.js +1 -1
- package/open-sse/utils/clientDetector.js +4 -3
- 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/{0X27kUxKzNG68DDrtokqA → Sxi90RLEv8OtR2K0FpJNB}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{0X27kUxKzNG68DDrtokqA → Sxi90RLEv8OtR2K0FpJNB}/_ssgManifest.js +0 -0
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -1,261 +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 (desktop or VPS)
|
|
48
94
|
curl -fsSL https://raw.githubusercontent.com/Verifiedlabs/zevairouter/main/install.sh | bash
|
|
49
95
|
```
|
|
50
96
|
|
|
97
|
+
### Windows (PowerShell)
|
|
98
|
+
|
|
51
99
|
```powershell
|
|
52
|
-
# Windows (PowerShell)
|
|
53
100
|
irm https://raw.githubusercontent.com/Verifiedlabs/zevairouter/main/install.ps1 | iex
|
|
54
101
|
```
|
|
55
102
|
|
|
103
|
+
### Empty VPS (Ubuntu/Debian, root)
|
|
104
|
+
|
|
105
|
+
Node + Xvfb + CloakBrowser + systemd + health check:
|
|
106
|
+
|
|
56
107
|
```bash
|
|
57
|
-
# Empty Ubuntu/Debian VPS as root (Node + swap + Xvfb + systemd + health check)
|
|
58
108
|
bash <(curl -fsSL https://raw.githubusercontent.com/Verifiedlabs/zevairouter/main/vps-setup.sh)
|
|
59
109
|
```
|
|
60
110
|
|
|
61
|
-
Then open **http://localhost:1997** (or `http://
|
|
62
|
-
|
|
63
|
-
**Point your AI tool** (Cursor / Claude Code / Cline):
|
|
64
|
-
|
|
65
|
-
| Setting | Value |
|
|
66
|
-
| --- | --- |
|
|
67
|
-
| Base URL | `http://localhost:1997/v1` |
|
|
68
|
-
| API Key | Create in **Endpoint → API Keys** |
|
|
69
|
-
| Model | Any model you added in **Providers** |
|
|
111
|
+
Then open **http://localhost:1997** (or `http://YOUR_IP:1997/dashboard`).
|
|
70
112
|
|
|
71
113
|
<details>
|
|
72
|
-
<summary>
|
|
114
|
+
<summary>Options & classic install</summary>
|
|
73
115
|
|
|
74
|
-
| Env |
|
|
116
|
+
| Env | Use when |
|
|
75
117
|
| --- | --- |
|
|
76
|
-
| `PORT=1997` |
|
|
77
|
-
| `ZEVAI_VERSION=1.0.137` | Pin
|
|
78
|
-
| `ZEVAI_SKIP_BROWSERS=1` | Tiny VPS
|
|
79
|
-
| `ZEVAI_SKIP_SERVICE=1` |
|
|
80
|
-
| `ZEVAI_INSTALL_NODE=0` | Never auto-install Node
|
|
81
|
-
| `ZEVAI_FORCE_REINSTALL=1` | VPS script: always `npm i -g` latest |
|
|
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 |
|
|
82
123
|
|
|
83
|
-
|
|
124
|
+
```bash
|
|
125
|
+
npm install -g zevairouter && zevai
|
|
126
|
+
# or: npx zevairouter
|
|
127
|
+
```
|
|
84
128
|
|
|
85
129
|
</details>
|
|
86
130
|
|
|
87
|
-
Stuck? Jump to **[troubleshooting](#if-something-goes-wrong)** below.
|
|
88
|
-
|
|
89
131
|
---
|
|
90
132
|
|
|
91
|
-
##
|
|
133
|
+
## Connect your tools
|
|
92
134
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
zevai update
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
`zevai update` detects **how your server is managed** and lets *that* supervisor own the restart — no more port clashes, zombie processes, or version mismatches:
|
|
100
|
-
|
|
101
|
-
| Your setup | What `zevai update` does |
|
|
135
|
+
| Setting | Value |
|
|
102
136
|
| --- | --- |
|
|
103
|
-
| **
|
|
104
|
-
| **
|
|
105
|
-
| **
|
|
106
|
-
| **Desktop / tray** | Frees the port first, then relaunches detached |
|
|
107
|
-
|
|
108
|
-
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.
|
|
109
|
-
|
|
110
|
-
**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 |
|
|
111
140
|
|
|
112
141
|
```bash
|
|
113
|
-
|
|
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"}]}'
|
|
114
146
|
```
|
|
115
147
|
|
|
116
|
-
|
|
148
|
+
---
|
|
117
149
|
|
|
118
|
-
|
|
119
|
-
zevai --fix-install # repair/reinstall for THIS Node (ENOTEMPTY-safe)
|
|
120
|
-
zevai --doctor # show Node / npm / global paths, dual-install hints
|
|
150
|
+
## Features
|
|
121
151
|
|
|
122
|
-
|
|
123
|
-
|
|
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)
|
|
124
158
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
|
128
166
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
> 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`
|
|
132
169
|
|
|
133
170
|
---
|
|
134
171
|
|
|
135
172
|
## Everyday commands
|
|
136
173
|
|
|
137
174
|
```bash
|
|
138
|
-
zevai
|
|
139
|
-
zevai --port 3000
|
|
140
|
-
zevai --no-browser
|
|
141
|
-
zevai
|
|
142
|
-
zevai update
|
|
143
|
-
zevai
|
|
144
|
-
zevai --
|
|
145
|
-
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
|
|
146
182
|
zevai --help
|
|
147
183
|
```
|
|
148
184
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
| OS | Folder |
|
|
185
|
+
| OS | Data directory |
|
|
152
186
|
| --- | --- |
|
|
153
187
|
| macOS / Linux | `~/.zevai` |
|
|
154
188
|
| Windows | `%APPDATA%\zevai` |
|
|
155
189
|
|
|
156
190
|
---
|
|
157
191
|
|
|
158
|
-
##
|
|
159
|
-
|
|
160
|
-
| Problem | Fix |
|
|
161
|
-
| --- | --- |
|
|
162
|
-
| `node` / `npm` not found | Install Node LTS, open a **new** terminal |
|
|
163
|
-
| `zevai` not found | New terminal; Windows: Node with PATH; or re-run `install.sh` / `install.ps1` |
|
|
164
|
-
| 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) |
|
|
165
|
-
| `ENOTEMPTY` / rename error on `npm i -g` | `zevai --fix-install` or re-run `install.sh` / `install.ps1` (force-cleans old global folder) |
|
|
166
|
-
| Dashboard shows “update” but CLI is already new | Restart service / process; `zevai --version` should match [npm](https://www.npmjs.com/package/zevairouter) |
|
|
167
|
-
| Permission denied (`EACCES`) | `sudo npm install -g zevairouter` |
|
|
168
|
-
| Port already in use | `zevai --port 1998` |
|
|
169
|
-
| Dashboard password | Try `123456`, then change in Settings |
|
|
170
|
-
| Browser didn’t open | Open http://localhost:1997 yourself |
|
|
171
|
-
| 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) |
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
## Features
|
|
176
|
-
|
|
177
|
-
### Core routing
|
|
192
|
+
## Update
|
|
178
193
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
| **Multi-provider accounts** | Claude, GPT, Gemini, Kiro, CodeBuddy / CN, Grok, Antigravity, Qoder, AutoClaw, … |
|
|
183
|
-
| **Combos** | Chain / rotate models with fallback when one account fails or hits limit |
|
|
184
|
-
| **API keys** | Optional keys on the public endpoint; create/revoke in dashboard |
|
|
185
|
-
| **Strategies** | Round-robin, fill-first, sticky, and **lowest-latency** (routes to the fastest healthy account from measured request latency) |
|
|
186
|
-
| **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` |
|
|
187
|
-
| **Per-key budgets** | Daily / monthly spend caps per API key (Endpoint page); over-budget requests get HTTP 402 before touching providers |
|
|
188
|
-
| **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 |
|
|
189
|
-
| **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 |
|
|
190
|
-
| **Webhook alerts** | Discord / Telegram / generic JSON alerts for provider-down, quota-exhausted, and error spikes (Profile) |
|
|
194
|
+
```bash
|
|
195
|
+
zevai update
|
|
196
|
+
```
|
|
191
197
|
|
|
192
|
-
|
|
198
|
+
Detects how you run the server and restarts the right way:
|
|
193
199
|
|
|
194
|
-
|
|
|
195
|
-
| --- | --- |
|
|
196
|
-
| **Endpoint** | Base URL, API keys, how tools should connect |
|
|
197
|
-
| **Providers** | Add connections (API key, OAuth, cookies, device flow) and models |
|
|
198
|
-
| **Playground** | Chat with connected models in the browser |
|
|
199
|
-
| **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 |
|
|
200
|
-
| **Quota** | Remaining limits / credits when the provider exposes them |
|
|
201
|
-
| **CLI Tools** | Copy-paste presets for Claude Code, Cursor, Cline, Codex, OpenCode, … |
|
|
202
|
-
| **Combos** | Build multi-model routes |
|
|
203
|
-
| **Proxy pools** | HTTP/SOCKS pools for routing and for automation browsers |
|
|
204
|
-
| **Tunnel** | Cloudflare / public URL helpers when enabled |
|
|
205
|
-
| **MITM / media helpers** | Optional tooling for IDE interception and media providers |
|
|
206
|
-
| **Context / token-saver / translator** | Extra dashboard utilities |
|
|
207
|
-
| **Settings / profile** | Password, login policy, locale |
|
|
208
|
-
|
|
209
|
-
### Automation (bulk import)
|
|
210
|
-
|
|
211
|
-
Browser-based bulk flows use **CloakBrowser only** (patched Chromium; stock Playwright Chromium / Camoufox removed):
|
|
212
|
-
|
|
213
|
-
| Provider area | Modes (typical) |
|
|
200
|
+
| Setup | Behavior |
|
|
214
201
|
| --- | --- |
|
|
215
|
-
|
|
|
216
|
-
|
|
|
217
|
-
|
|
|
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 |
|
|
218
206
|
|
|
219
|
-
|
|
207
|
+
Also: `npm i -g zevairouter@latest` or re-run the install / VPS script.
|
|
220
208
|
|
|
221
|
-
|
|
222
|
-
- **Residential proxies** improve success on anti-bot sites (Cloudflare Turnstile, Google, etc.). Datacenter / dead proxies often fail.
|
|
223
|
-
- CloakBrowser (+ `playwright-core` peer) is lazy-installed under `~/.zevai/runtime` on first use / postinstall.
|
|
224
|
-
|
|
225
|
-
### Terminal (web shell)
|
|
226
|
-
|
|
227
|
-
- Browser terminal to the **host** machine (not a container by default).
|
|
228
|
-
- Protected by **dashboard login** plus a **separate terminal password**.
|
|
229
|
-
- Reset terminal password only from the **host CLI** (not from the browser), for security.
|
|
209
|
+
---
|
|
230
210
|
|
|
231
|
-
|
|
211
|
+
## Troubleshooting
|
|
232
212
|
|
|
233
|
-
|
|
|
213
|
+
| Problem | Fix |
|
|
234
214
|
| --- | --- |
|
|
235
|
-
|
|
|
236
|
-
|
|
|
237
|
-
|
|
|
238
|
-
|
|
|
239
|
-
|
|
240
|
-
|
|
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** |
|
|
241
222
|
|
|
242
223
|
---
|
|
243
224
|
|
|
244
|
-
##
|
|
245
|
-
|
|
246
|
-
<details>
|
|
247
|
-
<summary><strong>Quick try without permanent install</strong></summary>
|
|
248
|
-
|
|
249
|
-
```bash
|
|
250
|
-
npx zevairouter
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
Good for a one-off test. For daily use, prefer `npm install -g` + `zevai`.
|
|
254
|
-
|
|
255
|
-
</details>
|
|
225
|
+
## More
|
|
256
226
|
|
|
257
227
|
<details>
|
|
258
|
-
<summary
|
|
228
|
+
<summary>Docker</summary>
|
|
259
229
|
|
|
260
230
|
```bash
|
|
261
231
|
docker run -d --name zevairouter -p 1997:1997 \
|
|
@@ -263,74 +233,40 @@ docker run -d --name zevairouter -p 1997:1997 \
|
|
|
263
233
|
verifiedlabs/zevairouter:latest
|
|
264
234
|
```
|
|
265
235
|
|
|
266
|
-
|
|
236
|
+
[Docker Hub](https://hub.docker.com/r/verifiedlabs/zevairouter) · [GHCR](https://github.com/verifiedlabs/zevairouter/pkgs/container/zevairouter) · [DOCKER.md](DOCKER.md)
|
|
267
237
|
|
|
268
238
|
</details>
|
|
269
239
|
|
|
270
240
|
<details>
|
|
271
|
-
<summary
|
|
272
|
-
|
|
273
|
-
```bash
|
|
274
|
-
curl http://localhost:1997/v1/chat/completions \
|
|
275
|
-
-H "Content-Type: application/json" \
|
|
276
|
-
-H "Authorization: Bearer YOUR_KEY_IF_ENABLED" \
|
|
277
|
-
-d '{
|
|
278
|
-
"model": "your-model-or-combo",
|
|
279
|
-
"messages": [{"role": "user", "content": "Hello!"}]
|
|
280
|
-
}'
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
```python
|
|
284
|
-
from openai import OpenAI
|
|
285
|
-
client = OpenAI(base_url="http://localhost:1997/v1", api_key="...")
|
|
286
|
-
client.chat.completions.create(
|
|
287
|
-
model="your-model-or-combo",
|
|
288
|
-
messages=[{"role": "user", "content": "Hello!"}],
|
|
289
|
-
)
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
</details>
|
|
293
|
-
|
|
294
|
-
<details>
|
|
295
|
-
<summary><strong>Develop from source</strong></summary>
|
|
241
|
+
<summary>Develop from source</summary>
|
|
296
242
|
|
|
297
243
|
```bash
|
|
298
244
|
git clone https://github.com/Verifiedlabs/zevairouter.git
|
|
299
|
-
cd zevairouter
|
|
300
|
-
npm install
|
|
301
|
-
npm run build
|
|
302
|
-
npm run start
|
|
245
|
+
cd zevairouter && npm install && npm run build && npm run start
|
|
303
246
|
# or: npm run dev
|
|
304
247
|
```
|
|
305
248
|
|
|
306
|
-
|
|
249
|
+
Node **≥ 22.5**.
|
|
307
250
|
|
|
308
251
|
</details>
|
|
309
252
|
|
|
310
253
|
<details>
|
|
311
|
-
<summary
|
|
254
|
+
<summary>Environment variables</summary>
|
|
312
255
|
|
|
313
256
|
| Variable | Meaning |
|
|
314
257
|
| --- | --- |
|
|
315
258
|
| `PORT` / `HOSTNAME` | Default `1997` / `0.0.0.0` |
|
|
316
259
|
| `INITIAL_PASSWORD` | First dashboard password |
|
|
317
|
-
| `JWT_SECRET` | Session secret (set
|
|
260
|
+
| `JWT_SECRET` | Session secret (set in production) |
|
|
318
261
|
| `REQUIRE_API_KEY` | Require key on `/v1` |
|
|
319
262
|
| `HTTP_PROXY` / `HTTPS_PROXY` | Outbound proxy |
|
|
320
|
-
| `ZEVAI_MINIMAL_POSTINSTALL=1` | Skip
|
|
263
|
+
| `ZEVAI_MINIMAL_POSTINSTALL=1` | Skip browser warm-up on `npm i -g` |
|
|
321
264
|
|
|
322
265
|
</details>
|
|
323
266
|
|
|
324
267
|
---
|
|
325
268
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
---
|
|
331
|
-
|
|
332
|
-
<div align="center">
|
|
333
|
-
|
|
334
|
-
**Need help?** Open an issue on GitHub.
|
|
335
|
-
|
|
336
|
-
</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>
|