{"_id":"polyrouter","_rev":"40-5ba7be084d7cf0a92830a27fa6f5766d","name":"polyrouter","dist-tags":{"latest":"1.0.40"},"versions":{"1.0.0":{"name":"polyrouter","version":"1.0.0","keywords":["polyrouter","cli","proxy","ai","api"],"license":"MIT","_id":"polyrouter@1.0.0","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"0da96c85d76f7da4116f90a8a1bd7f0f427b2fc4","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.0.tgz","fileCount":3238,"integrity":"sha512-OC8S32aCvsFPmkf9fvakU4mUjHaZdiqnwYztzU8F7Iqb5mW9Ntc4oV1OBBRW48F08s2oly1UANxPXnH2qGcNVw==","signatures":[{"sig":"MEYCIQCpbv7Ci/Qo8quKJKCYrPZOMtrn/3JodmV8lZJYgq98UwIhAOaRs+R876WLq8dBV6gr9knc5ty5+qJEvhBQQqv5/0lu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47692361},"engines":{"node":">=18.0.0"},"gitHead":"55e347e845a7b7d394912dad8e7eefe176135c07","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"PolyRouter CLI - Start and manage PolyRouter server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.9router/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.9router/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.0_1785135852098_0.002276080039239403","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"polyrouter","version":"1.0.1","keywords":["polyrouter","cli","proxy","ai","api"],"license":"MIT","_id":"polyrouter@1.0.1","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"c51ef3f344806a2b476714d77f865308d8922e18","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.1.tgz","fileCount":3235,"integrity":"sha512-t9UIbJZ5LKC1fhIVQxMHSqsKNw06kBrbAZl9Y8w88l/r2hRQovQQuDL5T1g5OtAoTP5T9Yi3BkBUKXgcYtibIg==","signatures":[{"sig":"MEQCIFtUIg8lT54GNMGCO3/wIq31+oEDXy1UXa2oZSxCLOKJAiADPG5J/S7jqdup6t1Ot4k4gTZAAKllImAIJb5RkUbBaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47598980},"engines":{"node":">=18.0.0"},"gitHead":"398f4dbceda6d2d332b5574c4dcfd9ce8a50fd0b","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"PolyRouter CLI - Start and manage PolyRouter server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.9router/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.9router/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.1_1785137445662_0.0615677108701711","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"polyrouter","version":"1.0.2","keywords":["polyrouter","cli","proxy","ai","api"],"license":"MIT","_id":"polyrouter@1.0.2","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"2e50b90be51627dbefac2ba5dc4fab635350f0ae","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.2.tgz","fileCount":3235,"integrity":"sha512-d91li0khP8YcCqQMUuXbDqzonqqO/uZjliLJTiEikKbgRKeRkLAtb9U/Tw6OwWvT5JhpS0vT9zcoFV1S2QTiaQ==","signatures":[{"sig":"MEUCIDIcaXdFcJhSevlCcT+8ISLmpUXK3yA4h8nf1stcOMCNAiEAiMS4Zho1uz+327t+vFCTx3v1X4jqKveMkg3SduCp1MI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47599629},"engines":{"node":">=18.0.0"},"gitHead":"c577ee3118044201e0dc3213e8b3cb9d162660c9","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"PolyRouter CLI - Start and manage PolyRouter server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.9router/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.9router/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.2_1785143639206_0.23437321279859757","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"polyrouter","version":"1.0.3","keywords":["polyrouter","cli","proxy","ai","api"],"license":"UNLICENSED","_id":"polyrouter@1.0.3","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"606b7c6c259866825818c26deb98cffac6d2a587","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.3.tgz","fileCount":3235,"integrity":"sha512-3RhdZyj62eVsjT64ETt8HwsPznewqs4sWeSZNL/he6oBSHSK/RHlkgiJd+Tmr4UBly6+VCeqDevUAf6xg8Oupw==","signatures":[{"sig":"MEQCIHyWqUskyFCs/XtUI3aSK0vDA057ZyzvXJCGwLUC0uHAAiBuaqn4ucaJcPqSx9Mlp12kHZsHjx5C4exFUKkNQ5gUlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47599474},"engines":{"node":">=18.0.0"},"gitHead":"60c47f8af8238028c5a9b9209c297200c5c557d8","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"PolyRouter CLI - Start and manage PolyRouter server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.9router/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.9router/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.3_1785145408398_0.0940018540425529","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"polyrouter","version":"1.0.4","keywords":["polyrouter","cli","proxy","ai","api"],"license":"UNLICENSED","_id":"polyrouter@1.0.4","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"3f1c12f76ea4022ef2b52850bcef42da8f98a2ff","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.4.tgz","fileCount":3236,"integrity":"sha512-Qu/1PdhBiaOqsfx25w8jQrQiXcSDBkhBrw3Uq2YjYnHw7SNJNujqIrAr8Rv/Glc9+N/xxbnrnbokIeNx4kqjJQ==","signatures":[{"sig":"MEYCIQCXV7t7Dy+QsBmR2fLfDLKSbR8Wh4Swrcn9oWv+7yDE7QIhAIwpsrDpDH0isEos+d/l2Wx6iPtceUos6UbIIAWz35qW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47599553},"engines":{"node":">=18.0.0"},"gitHead":"3561b6c31591aa36252d74844c2aee1d726f5e9b","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"PolyRouter CLI - Start and manage PolyRouter server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.9router/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.9router/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.4_1785163164807_0.05403290208937439","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"polyrouter","version":"1.0.5","keywords":["polyrouter","cli","proxy","ai","api"],"license":"UNLICENSED","_id":"polyrouter@1.0.5","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"1d194dbf989b3128b37e4b32483670604e7dda7c","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.5.tgz","fileCount":3236,"integrity":"sha512-Q+vIlymK48FttNp9S22PUABNTUzSvqQYb7C1QQlZ5XV4F0mY7mcMPj9v5KuGccTFmd6pnh62wH0pTdO2aklkZQ==","signatures":[{"sig":"MEUCIQDFB5jsg3pV2Ask8N39AXhE+s5JFZsCFzel+ReYBDxs6AIgTnjR4JC7WVfMbERhkLBw2G/hsjhSedv89ii/d4Ki9TE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47599621},"engines":{"node":">=18.0.0"},"gitHead":"512676e1acadfd1667059e97c5fe3651d8eee40b","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"PolyRouter CLI - Start and manage PolyRouter server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.9router/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.9router/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.5_1785164431882_0.4483854341780156","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"polyrouter","version":"1.0.6","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.6","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"65ca7b2bc2bcb7c23e6b06cff3f363bac791104c","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.6.tgz","fileCount":3237,"integrity":"sha512-0L3ZgedWkSGVLJ9oRNWaIroYCt5ExWVUnkfOPreWeIkp4Y9EDTNdz8ULL0aQ73nJ9tEi6utBrtiqkWPZ2/YYhw==","signatures":[{"sig":"MEUCIG4zEnXuXiQ2QSdLXv21esm6GojvwQY7YmNsoYSZ+7SwAiEA9PkbycpDHPwxEG+yGzCskpLVWSAB0dxPnFqEggZ7eBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47913838},"engines":{"node":">=18.0.0"},"gitHead":"b2633d9f7c883824a831f5fdc541ee89749e707e","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.6_1785436195087_0.8456387194375397","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"polyrouter","version":"1.0.7","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.7","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"16600bca9fa7bbbc1c2581b2f1881634350b1924","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.7.tgz","fileCount":3244,"integrity":"sha512-Y4/RaRpSwcNtdFyyaqHpqI5tRKW22mvwSE4ZpqkKO1XD7eg1J2kSFtF+R+JZst+i3mF4pr/WL7W+0bbKQ4Cr2w==","signatures":[{"sig":"MEQCIBFAAoeC1bNRLMQzOcv/V7++Qh0AzPEx+C/hM0AgIPHVAiAHZ6c+yMyrRx9HFgXcS9bA1LO0uhDrCrfUUd7dvguVTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48043873},"engines":{"node":">=18.0.0"},"gitHead":"8bde3c79d7e14f95dcb1f167ba6b5af24c1f5853","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.7_1785531075214_0.3662404959140204","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"polyrouter","version":"1.0.8","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.8","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"fba45d1f75c8cea166123ba809d0854328540304","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.8.tgz","fileCount":3266,"integrity":"sha512-+DOccyV6yDJJvXeBn/beWTk/wcvFMl7DLPSDOsXJmhmi0z6w2CZVQo2AQWhbX5+m7tJVv8g5gfePV2mCBCGD3w==","signatures":[{"sig":"MEYCIQCfwtWMxD12xOWm3UJk5BCUzn/7m9/uhm5HeYCNdXtKqgIhAMGrfzvXnyKGyXn7LbZUmj3ZP46jLBiXvHwCqAJ2IWX7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48371928},"engines":{"node":">=18.0.0"},"gitHead":"e121b3ec230ddc81b44714a61cbe40992cebe846","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.8_1785586131890_0.7251094574961334","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"polyrouter","version":"1.0.9","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.9","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"b7a02d73937dc86c7574f2c8305e7e24e420c351","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.9.tgz","fileCount":3266,"integrity":"sha512-8EQa9bTdzdg/JeGHrsGomwccC6JE1PYE0T1WB2Q7U881vUqfPUcY2CrJlYeCtnWjQiNpIc5+e3wQH5/N7dSaOg==","signatures":[{"sig":"MEQCIEPb9eDlME4LJKoJHOYnqrD57uCVmg8O5PxVV3ot75tUAiAK0OZcBAqcVPZWVcMwfImteLxu4J2jNI1+yKNl66BiTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48368871},"engines":{"node":">=18.0.0"},"gitHead":"e7b8b015d75d54937ffe64148113d5208e728c24","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.9_1785701480264_0.666209668455181","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"polyrouter","version":"1.0.11","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.11","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"5120a9a2f8ed4a888ab042d9e264440c33da101d","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.11.tgz","fileCount":3219,"integrity":"sha512-I5T/28B6znN1nFA2Ai8WfaFZD8JW7yIu0HrlBPtaxxB4GMjyQTJ6QFYynL4DEaR7vL7//5ndftL6hCO7hfoNTA==","signatures":[{"sig":"MEYCIQDQlOPAQyuk+snDLKA+F0hZJZAw4bC5S4kGHlR5Yg6cIwIhAKUo9pPK1aD6/EJYQB4ZeKqM2t4fhrg+MDiNzklEQczw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49338029},"engines":{"node":">=18.0.0"},"gitHead":"ac94453c50b2a9ef36cf9763138706a0d28c66f9","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.11_1785879052603_0.06506712723055608","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"polyrouter","version":"1.0.12","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.12","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"c2f315c9385149cd0e01ce53726577fee1a6c4ce","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.12.tgz","fileCount":3221,"integrity":"sha512-zdXca4dkR+HAulTKA8jQR9T1bSY1prhicm5AV7+p/4YYGeTH1eY/h+qFOkPixAnSCPNOtUQVKjFzt13+7onChA==","signatures":[{"sig":"MEUCIHxFgNMRcQuTXj9AcqkGdqgjyh1MFTifV54MBqWA8HYkAiEAj5H2HnUAL5xW3S4Q9ZGjUhMUQKWt7Ytn51hp/tn0rXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49350699},"engines":{"node":">=18.0.0"},"gitHead":"ef450b6b20d9b9e8191b1f63a6789b060e7c4f75","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.12_1785953223467_0.6704665741281084","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"polyrouter","version":"1.0.13","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.13","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"74ef79a55f2676b3a6e93c7a5f17c073ed28a3ea","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.13.tgz","fileCount":3222,"integrity":"sha512-nAP2rGapUELbwVpKSGK8tAM/kAbKTG1H2C0hkjLwHEQuTiFw9NHcxMS6Tp3/j630WdQyUGaL2fIiwKh+0ay/tA==","signatures":[{"sig":"MEUCIQDlqg1DIAfEp9nGjipFt98hOClJ+Di9w3a6/D2T/gDI7QIgVx3JuwB6oufkIf0TxC+Qgf/zGhOU6m5lcrIwD/sPHBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49362668},"engines":{"node":">=18.0.0"},"gitHead":"f14a953e5d68611cf6e3951440af519fbb6d434d","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.13_1786111649833_0.17333291968009412","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"polyrouter","version":"1.0.14","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.14","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"98584ac8e56b153e210b9e2cd25649d4758d6ea9","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.14.tgz","fileCount":3243,"integrity":"sha512-s7P5QzHytghAAXKKV2ubq1lDPyvI2Nb9yGlaH/aFvjW6epyxRyAa9XmCTi+LMkHAmcnDIxXRC0A66gBgP1mkNA==","signatures":[{"sig":"MEUCIQDZ9SMWvTkIfGT/HA3jIgGXfF83Xrsag8SwENCSA0bQjgIgOwMzjERjFcQ/zzEkWftepgSCJBd6c7oWDSV4NLoQdq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49599286},"engines":{"node":">=18.0.0"},"gitHead":"612d82fba3240e82b7b238d05a9bc9e6fbae041f","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.1","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.14_1786516367599_0.4780875951893462","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"polyrouter","version":"1.0.15","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.15","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"b91b223a24385cbae1237663f1b7e7093a4215ca","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.15.tgz","fileCount":3251,"integrity":"sha512-t6RixDGpi7EbpSk3laL6rRy9KLWJbX4HKs7BXSiuaf9p92BY9P1DR8FgDaAI13+aXSjyoctXQ70q9zv3zT31fQ==","signatures":[{"sig":"MEUCIBVATibMcDoqF9Fe8JQkdwf2p6lV3U+Ujn4vpEpm+zy+AiEA7+o4Cz6cJISqz8QMCTrJ8YatiJrjbtS4ShPRJHa/bHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49739159},"engines":{"node":">=18.0.0"},"gitHead":"f4ffb15403b934aa371c19b7dd8e538c7d4c0198","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.15_1787279352060_0.69673511358473","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"polyrouter","version":"1.0.16","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.16","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"9181ec80d1e22fe4fab994fcf9f37c0e17225a36","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.16.tgz","fileCount":3251,"integrity":"sha512-NV2wW+Jtdau4m3di22ACLtyO0BmqPQX65okMnchofA4Dz+0A+CDHnW2QE7A858V/TMBbnaDMm0eodTQTd5TEhw==","signatures":[{"sig":"MEUCIEVNY2jLic8WarUvyl4UkM5lUhZsBcGi6f1BEyFT0wiWAiEAhIBpdtFhc43LCr5PGnzBzUQafqumi6qfWFS3AAlKApA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49739074},"engines":{"node":">=18.0.0"},"gitHead":"78327ebab1d1fca11c59c0e94ef8a9d03ce7991d","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.16_1787283665772_0.2902927952546541","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"polyrouter","version":"1.0.17","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.17","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"30686f9cd68bc64b3014b43addf0babbf9c99052","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.17.tgz","fileCount":3346,"integrity":"sha512-IwWRDkO5GJEZ0B2SYuY806T+7zZScv7PHad2yeTWEIun2RClF+62HIv0hPuXDmxaRt03qQJxSxbqTp72Dlb+6A==","signatures":[{"sig":"MEUCIQD4gCviN57OziNVhL1gXAz7dnzhLneguhQ8fj90BwVgOQIgET/jRtm9dlyjcrLQDKz+ynMzVJGPRl44KdJq0QWWDfs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59431346},"engines":{"node":">=18.0.0"},"gitHead":"cbed665160222ab339950018bc5ce7c2ff021f5c","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"11.11.0","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.12.0","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.17_1787466265203_0.4074316238270874","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"polyrouter","version":"1.0.18","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.18","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"0a6d8ba094e479ff538a9765a9ebfb0181e1e9f3","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.18.tgz","fileCount":3335,"integrity":"sha512-nmgbFUxUKTBThAlh6/ktbRfKTdmSx4LTW89VfzBJuKszUVaIPPZUtsxg1INMtcmujEgfwd46zWZpVpPZ1qNC5Q==","signatures":[{"sig":"MEUCIQDVmX0aamYK+D+RGnzzLvHOySvCbfXrvE18N/4763DHmAIgJrtySv1alWwZWtoAt8d1zmmD2Ljf7B3woumV2rBsswk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66778382},"engines":{"node":">=18.0.0"},"gitHead":"b925ae5d2c296a72b5eb8190a8fd10d4cd3559d4","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.18_1788324294574_0.3895258053261803","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"polyrouter","version":"1.0.19","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.19","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"f5109ca92c724540950723de92a5ce857f43bc42","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.19.tgz","fileCount":3335,"integrity":"sha512-RxNTHXcn1R8QBbirzwELp+Owb6kPcys2hwvRAvGRDWZe3+Hx8NUc9KyOCuwu8hF1ymnXdHA8UWWxjFrv8erRkQ==","signatures":[{"sig":"MEQCIHj5UuZsPh3IgciDqSapUh9mFZT09VX/0r2fCPGmJZnNAiBn9VfIL9wUY049AmYqc4ovGetnFGSJroTJJljnHg+R2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66777082},"engines":{"node":">=18.0.0"},"gitHead":"96b487a0a0bbfa214ab4b5f4ebcfafb00793dab6","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.19_1788361175306_0.38013491113169584","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"polyrouter","version":"1.0.20","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.20","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"cee1bf8bea84db8a376e89568ec01b63ecaab777","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.20.tgz","fileCount":3339,"integrity":"sha512-i9dR5Kk9ZM6HvHsT449nRKt3Wv0ilKcyG+fC6EMXGJ3XwOvgF0dWmR0Y0fgYhqL2vfQdvIgOlGHvPdy+9vZc/g==","signatures":[{"sig":"MEQCIEm9PfcoOH6Wzos6zQr9Sd1ANGPRBJvY7+t+fvoyPLpxAiAbLEW7rbHOl2SU1pvEWSzlZgKnS4KXfR9nLK6pG6iH7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66683608},"engines":{"node":">=18.0.0"},"gitHead":"f07ccea7fae9e94c9cfeb3909164b1c3e0f7a466","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.20_1788617658950_0.012919587060526538","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"polyrouter","version":"1.0.21","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.21","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"8cfbba15b73d2da9deedeb3938efd05f99c2de3e","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.21.tgz","fileCount":3339,"integrity":"sha512-9SRx4ydJN/o3OnWK5s4nF901MXe0xrW9N8+I7d+SXe2QpkBlfGiC7W5MfxMGX0XDev0augiSKx0bGzOVM0ApzA==","signatures":[{"sig":"MEYCIQCizPSC/KmiQ3jrCUYpe+Ha1KLsVfPPOYbo4e2NcbT0CAIhAKo/K2lP6048cpz1yGh9leJkoNJB1vIXNte7Dad3Pc6v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66687387},"engines":{"node":">=18.0.0"},"gitHead":"7fa5018c0a83d1aa6d59729fdb3d6c139903ee5f","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.21_1788628864894_0.9662966684916399","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"polyrouter","version":"1.0.22","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.22","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"dff4698445ebd6cdcbe9345b965f6ff24d81b8b3","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.22.tgz","fileCount":4924,"integrity":"sha512-Q+l3G+C5v/KsyX6vqG6dLsA77BuqoJuGZLixjZGcaMGFTGAwxna8sU3qyN/UXPSrHtrID+GIJNY2CCZGjX70Tg==","signatures":[{"sig":"MEQCIAqPHEExUPgYjxt8Hmj+A+R8Ng91WhAF8TYDx0Ov+MGYAiB2bfDsSsEt6B90IsKWAbeQGn23NAF+dHRnhX6bg2pkMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131843570},"engines":{"node":">=18.0.0"},"gitHead":"99d84834f70ba4fe4e6e06020ceb8615aabcb24c","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.22_1788685602493_0.04416624044328055","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"polyrouter","version":"1.0.23","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.23","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"e5c94d478c13735635182666addc01f9f4697322","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.23.tgz","fileCount":4924,"integrity":"sha512-jph7a0O9zJpCoJkbNxeIbyyHnhAQNT8Dn39WnHOHmAif9Zfjd6ww8MfZFH17LcxKSMD56qHhgHlpE2x1IZWofg==","signatures":[{"sig":"MEYCIQCFWPYFUmV0o+dAMYBxamaxL1ci/Gt8gNHwlqlYGFbfjgIhAJUgxg948/SElmvTd3qmcrWEtFEgN9nJEhnIo687Wkp2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131847648},"engines":{"node":">=18.0.0"},"gitHead":"50446073db7c2f400438c853f6a823d5184fdae0","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.23_1788690796831_0.8787572552071474","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"polyrouter","version":"1.0.24","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.24","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"c320225a83abef720d67d502747f84167600061f","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.24.tgz","fileCount":4924,"integrity":"sha512-Je9FtJTC/QN/41YsMAc+CY3GGL4NNhanoYIwVdvqBXG8HpVjKQV8TG4gOmnfoyTPfEtNRPCB06WTdHZL3ruaqw==","signatures":[{"sig":"MEUCICwK5dwV0wDcg7ggJF8PryWNyHZPfEg8k2x6NH5hNxArAiEAukMnYfXFguXzJk1OEcZevYtJlWEbAKH9ssnI/Kf0sEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131848326},"engines":{"node":">=18.0.0"},"gitHead":"88440e7228848c183c272bfdb322781f0a2e3a5a","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.24_1788696168039_0.6037880827896704","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"polyrouter","version":"1.0.25","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.25","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"7e8107308c489350a7f42e258296672bcabeb8c5","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.25.tgz","fileCount":4924,"integrity":"sha512-8gOghQUmUjhIoQVnZA3I6OLFfdQ0Pt2yvfYj9tJkAvB5sFcGlNcWG1osNxjf1Vrz6bjeeSU0q5zqx9s0l5u74Q==","signatures":[{"sig":"MEUCIHOAUiRRSL1ThTeBVI6KgRRJyopk4PR+bnKFmUD0lbP/AiEA6JG2UWV15cjVcaLQxBgYUUqneY1koq9TcL5cD8LpfRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131966731},"engines":{"node":">=18.0.0"},"gitHead":"b4e278f49c720f831c2f58222b9b32b59c072b15","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.25_1788932797636_0.11438065736022218","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"polyrouter","version":"1.0.26","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.26","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"4ee86afdf0b86bc113ef44f80f4f7806e2fe16eb","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.26.tgz","fileCount":4925,"integrity":"sha512-WeWrVXbsSmrAogL5DgDZPCk14AnDvacHbH9fqDu6yd1oXkRqAo8KkuLcDR9yMqWuzPT0pIkhA6kdRKWOB0OTmg==","signatures":[{"sig":"MEYCIQCCdXfKIqk85N4hZpmR6J9SfJT0pr9AEKDJxJsR4GLvagIhAK7w/j1A8suGbWH2iOUw8drzpdt8LtouT3ZdIM0Fed8n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131974468},"engines":{"node":">=18.0.0"},"gitHead":"b0e3d03e4736f978b6a78a153dd9ff7d2fc766df","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.26_1788959395981_0.0716455765316022","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"polyrouter","version":"1.0.27","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.27","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"663ecc92dcacf3ccd12668f22cab7a0832ca5a5e","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.27.tgz","fileCount":4925,"integrity":"sha512-3FPv0570W39ZJsrTgqpchj3bPMrxUHaVpJ9OE8z2MNu6D1N9aKnuYesmjvG45CMa/83h+sMXrnsZYxrx7/516w==","signatures":[{"sig":"MEYCIQCTQo4YprpsN2Iu94CpdqUNd4D3pVv0C4/1jO3hQL5NvwIhAPkIp+h1fcnwT+Eb5gSo3AKoNOwU3t9CK07beP3pu0Uk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132034883},"engines":{"node":">=18.0.0"},"gitHead":"033a2989575dc723ae94554b019ad5bf4167e781","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.27_1788969400603_0.44729066181049926","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"polyrouter","version":"1.0.28","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.28","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"87726ff348d24f4e86d7c67b10a0a7afcdeace4b","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.28.tgz","fileCount":4926,"integrity":"sha512-EtXktMtwexnsrfZ1BpUW5SLFysOen06lZTBVAXj94oyUN1y2Yyul2tl/4NrHnoHKdxgeTDjOagFLRQf946tAMw==","signatures":[{"sig":"MEUCIEJVIDYBMKfrTLeaOlNuI1UnrYUEd4MDoEzBAfKl1aAkAiEAnDivRViVEz+fRAd5JFXifV7CQACCrCvyym2mjYGTBAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130344990},"engines":{"node":">=18.0.0"},"gitHead":"d782bada09b8441841fae62fc907f0720a9cda4b","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.28_1789018992280_0.9487956858147846","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"polyrouter","version":"1.0.29","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.29","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"da34e9b0bdfb73506bd924f0e993fbbce9c0f81a","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.29.tgz","fileCount":4926,"integrity":"sha512-ZEl0H1sPqO4xU1pgRiZgyQQI83x5LVFKlYN6DTK+ktWQwR+idex+YKL0/T3gJvrW7pnsbE9e+OJRdWw8acqu6w==","signatures":[{"sig":"MEQCIHjlx/EEOmdaio0YMZdjnETgvl9MYE6oaln/2+vk+v4/AiByph9avjkqqZej0S21SpWgc2M/xhJOAU5Q+0KcSHQweQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130369285},"engines":{"node":">=18.0.0"},"gitHead":"14e6ac416aefe0d7d30cb7e4e6fdc79c062e9d05","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.29_1789053237395_0.8015043341173946","host":"s3://npm-registry-packages-npm-production"}},"1.0.30":{"name":"polyrouter","version":"1.0.30","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.30","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"30aeac4356ac8639b458816b6a5330310b01ebdf","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.30.tgz","fileCount":4949,"integrity":"sha512-dGZHxrvkxoQ+EHZw4svzIB4wH8hRRGAkxs9BG4X1MMcYcFQvSza/7pxPGsrPVhaG/AsgegatbsDko02BK+NHQQ==","signatures":[{"sig":"MEYCIQDirSBrlJe1Qo8zrvjw+b+DEYV7nUzRF+6e/E4YTUOhHAIhAIKnkFYJ+KlgcA1EnIfLutp1eLLPNSMi3xPvOzBh52cj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131037825},"engines":{"node":">=18.0.0"},"gitHead":"b2af21a81024e7ec793db3948d83d83f88fe52e9","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.30_1789549551234_0.752569457720027","host":"s3://npm-registry-packages-npm-production"}},"1.0.31":{"name":"polyrouter","version":"1.0.31","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.31","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"204a3fd76c88b787b26ccbbe45ba822ef0231641","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.31.tgz","fileCount":4947,"integrity":"sha512-BDNhlacOkhmk878FMA1S84vIlGaibVwXz94oHJRMdijeYAOyFKW6RhVo8ZbFnLcvkmblJzW8Furf4lyrm8h7Vg==","signatures":[{"sig":"MEUCIQCMx3KWuUwT9gvJbY+F73tsvsWd9Hn8CKvCuErShi58RAIgJuSjQMk/RcuBZEWXlfvfFWWkxaIAKTLaAMvwYCDeRcs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIATHcNjvHYAidi+XM3W81apE6fNPHwoDhH2UGOh5rnmBAiEA05wkMg7pXDyf+tIY37oYvA6DNPZ9SPZsKiVrKofUgTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131257197},"engines":{"node":">=18.0.0"},"gitHead":"d60cf08812175d65e6c71a61dd2358bb7a1fa61c","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.31_1789834366069_0.2828592589163985","host":"s3://npm-registry-packages-npm-production"}},"1.0.32":{"name":"polyrouter","version":"1.0.32","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.32","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"34318249cb96df38586f1721e90a545214c59064","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.32.tgz","fileCount":4947,"integrity":"sha512-oKNhZ2wc0kB1ufqSabkoVCpWIYtHZc+aFH87R5lMQTElJUoFOkef089vAzisubwzW8MimlHyxQ145dsSQvMNGQ==","signatures":[{"sig":"MEYCIQDKv0ZHiLSNfA8yLIW8RB+R9V8xzrnxTAr6L1PwfthN7wIhAL1he9sDLKGlHybK/YGegQ2LJf3OAaQrQbR4vmt6uXIa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICf7VpnLfCkF0+uS0aicE6eLZoWG9MGvHh7M7CkUR7tKAiEAqUqBZNBYQlDaU4afV2XEWCrAH2eGBE2X26arOdlfpOg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131257224},"engines":{"node":">=18.0.0"},"gitHead":"bf56e734f840a84c8250dbd40ddc3d5191669c8f","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.32_1789834700281_0.9785143521443542","host":"s3://npm-registry-packages-npm-production"}},"1.0.33":{"name":"polyrouter","version":"1.0.33","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"UNLICENSED","_id":"polyrouter@1.0.33","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"b96ca54bc405b689173e7e779388221cb27d2e7d","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.33.tgz","fileCount":4947,"integrity":"sha512-n3eMPiWA1SlFg6dqgDLNhVRadYCRT8vnsJnGhBOi9HMKVzqNOpobi+MatiWk5FpS73fqeQQIArStjFYMKalcXw==","signatures":[{"sig":"MEYCIQDuhfTW7qObBS3pOyNuhPBGMCyViePjm63iUFALIAQZyAIhAO/hcVjbsStqs6wZR04SCIGMoiuTSERvVmT89MVWjqra","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFaITg/sjknp74FyyRVF6D6BMQdxjhZQaMS1ugtVEvWMAiB9slt3LZ4tTVT0Aiarqlf6ccJgrn/07f28vS7XOG9fhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131265061},"engines":{"node":">=18.0.0"},"gitHead":"22b78d3e0b60dd41d16f91b5f3ccefbfb651ba25","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 40+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.33_1789845001993_0.044771521821577176","host":"s3://npm-registry-packages-npm-production"}},"1.0.35":{"name":"polyrouter","version":"1.0.35","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"MIT","_id":"polyrouter@1.0.35","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"673f34e60b2349881e8af03f98935cef1a1497b9","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.35.tgz","fileCount":4948,"integrity":"sha512-hWDCRoWwAWNeRjJaU2puMUonathk7sQ+m1y4uRXm4i8cPrXoiOViV1GY836zg8FY7oL4HIe0Viz1/dXGfabryg==","signatures":[{"sig":"MEUCIQDH5qfwqSSRl1uV4vczFAvKyFO58YcdY5rp4Y1C7JdHdwIgaBHNjgnc0gyVQ5wOldXplllZ8vf5TRq569Y/1ygr998=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDA4R2Naga+BOca4avegtivnAZwLW4zM55xzce448JXegIgWHIWyH4cU8sZm2WA5qukiPEcr2WxQWZwPM89ta7cDAM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131876628},"engines":{"node":">=18.0.0"},"gitHead":"409ecdb19bc0c718edc8e00abe87291571ec2c2b","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 60+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.35_1789893146691_0.9355318956537699","host":"s3://npm-registry-packages-npm-production"}},"1.0.34":{"name":"polyrouter","version":"1.0.34","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"MIT","_id":"polyrouter@1.0.34","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"73d27134ec067a40c593ad80ed7d79e3e01b4dd4","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.34.tgz","fileCount":4948,"integrity":"sha512-M9QyWt8wNzzpxQEPe8ls13YUjSOorB5PIA1i2do87DMlV/a9Mfw40v0x+NbRebcGnjD00exJ9R6uSfmJOQRVtw==","signatures":[{"sig":"MEYCIQCaXEh0ts7L0Iab9ErWyVRydZTPCJGFM0cNAe43BbT59QIhAJtDZSd6KKtkP0HNlN8XZ1TR7qzZuUuUG0O+gzH6Y76Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDRRTmxnIee3Hp/2pSjkRukscnnyHJYbxicPQu+ixeeDQIgQr5a3ODGAwDVVZlrJZaF6U+VZEl04AO7Jp2c0tMBMys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131876502},"engines":{"node":">=18.0.0"},"gitHead":"83a2a4fa08ce9cd6ebaec49740d7c784b24c2589","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 60+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","readmeFilename":"README.md","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.34_1789893169689_0.02284590861167457","host":"s3://npm-registry-packages-npm-production"}},"1.0.36":{"name":"polyrouter","version":"1.0.36","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"MIT","_id":"polyrouter@1.0.36","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"eb5741ddde72862049719bd4fc293906d0c84b1e","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.36.tgz","fileCount":4948,"integrity":"sha512-7abiwKYOr14j0Hi1OxXggSMvKjJKsCN2afX6kpj0gSEQnioIAdtZvB7LMPyoToeh8yh/4oJX+vpk2ObTeF+heg==","signatures":[{"sig":"MEUCIQCdq9+aHcz2DOaNU+OqYPfIJqkKtNIPScNeSuX1q8M4ggIgL/ySpu2hKBPwhFIMx024O87VIkxetmkjEGZ0W/OEMjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCZW3DdpzEB77zBpqlGBU9mVrFeMFUBpNdfurL2xLJ3UAIhAJjWCrSu2BhiX5uLvRPpO5hL5wcHVjiAILgHqlaFw1g6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131876502},"engines":{"node":">=18.0.0"},"gitHead":"b84520ee53ad4e94633b30e2bde1f1875a671870","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 60+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.36_1789897123386_0.17534931050181357","host":"s3://npm-registry-packages-npm-production"}},"1.0.37":{"name":"polyrouter","version":"1.0.37","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"MIT","_id":"polyrouter@1.0.37","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"ff02cefa8ed92c157537e038874d6d67c10f84c7","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.37.tgz","fileCount":4948,"integrity":"sha512-5y6WXSO7AjK+xg/B6Y8Bli71tqzUCGz43HVEVg/r3LZbGviVf8QCGgJTJkfF2x9zONRvrnlsOsywBowh36Mu/w==","signatures":[{"sig":"MEYCIQDZv7/7+Ur/E3t2HxPtClF8icx5Xv8H7E5Uzs1e8GoMGQIhALVCY/A4ZK7K+77szYLxP36pueWfwiAog/iWlRm+XtTL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDinPYV6XjJ4ky44mNTirptzJthBUOwOjsQDUmNeTsqkQIhANk9jF/bB5hM6Wf6lMGjo+AOdPq+wN+i8uVfPh0+RYOF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131876398},"engines":{"node":">=18.0.0"},"gitHead":"b68247ef923f9a551aae27dc2aaf7b2bc1eb0923","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 60+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.37_1789898953405_0.7309426538486687","host":"s3://npm-registry-packages-npm-production"}},"1.0.38":{"name":"polyrouter","version":"1.0.38","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"MIT","_id":"polyrouter@1.0.38","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"a61e9c343bc38e0244833096d99b3918902ab632","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.38.tgz","fileCount":4957,"integrity":"sha512-/Ky4v2NioPPA8G4XoCMr8UE2wzLJl+tjZnh/bKq/xW03D29XrIjs/zVfkzdSihGZknA0PtDimd/41+hOG8oT5g==","signatures":[{"sig":"MEQCIBYDAyIiXbJY3bwdQGjcvWXjVODhTTM38nNcM6LreJUjAiAg0wVBFPvXq79zBpGAYm0gyWaI5N4XbV05QEnpCUcJ+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDipJusEvaLCHi2ZXEs/YHav4Wxdwsngd1ERvIu0wLdDwIhAJk2YeHYEQ1UtT948K5sP9/6rXrq8bFScLxY24nB8cCl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132607152},"engines":{"node":">=18.0.0"},"gitHead":"e45e307735c119a5f67216304ecc39636bb3f7c7","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 60+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.38_1790080956680_0.6254759148405074","host":"s3://npm-registry-packages-npm-production"}},"1.0.39":{"name":"polyrouter","version":"1.0.39","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"license":"MIT","_id":"polyrouter@1.0.39","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"bin":{"polyrouter":"cli.js"},"dist":{"shasum":"0c56d78a3b86c67e6171ba2f23609324b8a17a2b","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.39.tgz","fileCount":4957,"integrity":"sha512-tt5vl34SPLe9z1rU55d2bRSWw0tBk0goOXsWZ74U+z+f678RpUGb9YUTalRqvR1iLJaXeawhUDZeWBbvf5C8ww==","signatures":[{"sig":"MEUCIQCTQULZMdoLer+Jpe/xEomD7E1Ia+sv2AoxzDkltqi+EAIgEerHi0owQhOM5zEJDNDTCuTYpNzZA7BOgZiMsyJn6bc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCQVywEre8O2Hz5S2BMsCdHByspnFGORQe39w0BUDoWmQIgMNlWFtRMr5ha86H7srVEzTXyC/kojSSnfFwQf9TfzDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132608409},"engines":{"node":">=18.0.0"},"gitHead":"e618385564ac92275a6458523f405a626e55ff86","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 60+ providers","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"tmp":"tmp/polyrouter_1.0.39_1790173682958_0.810637279045098","host":"s3://npm-registry-packages-npm-production"}},"1.0.40":{"_id":"polyrouter@1.0.40","bin":{"polyrouter":"cli.js"},"dist":{"shasum":"b33e0f4e1d2bbd77de82c4b9b1a0265bd48a73d1","tarball":"https://registry.npmjs.org/polyrouter/-/polyrouter-1.0.40.tgz","fileCount":4960,"integrity":"sha512-Awo9OSR2B40ELBZsUxRfM2UMtdb7Mqrq+YfizGp5eoSe7v9MmdwhDL7d+ItYHbDiBgIyDlIruiOSJ24jCZEbCw==","signatures":[{"sig":"MEUCICxFt+JmGKu6XAAVytv/WJ68pIexs7+JcTpqJ+Xh2mSEAiEA0ccb+wsiPdvtZcSOIg++ETnfDxVMxq/aBthZ6pEBUhI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDw3sX+STmj7VMgmlc63jkbRppzZxOxmQw4P6AI/OU9pAIgOgr7Rw4qcmGKRJqcMUMtvdOQzOq75K49/SiRXpk4SoM="}],"unpackedSize":132699711},"name":"polyrouter","engines":{"node":">=18.0.0"},"gitHead":"9dd25cd222857c60d501b37dc02ea1c84a814e39","license":"MIT","scripts":{"dev":"nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js","build":"node scripts/build-cli.js","pack:cli":"npm run build && npm pack --pack-destination ../..","postinstall":"node hooks/postinstall.js","publish:cli":"npm run build && npm publish","prepublishOnly":"npm run build"},"version":"1.0.40","_npmUser":{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"},"keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"_npmVersion":"10.9.8","description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 60+ providers","directories":{},"maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"react":"19.2.1","enquirer":"^2.4.1","react-dom":"19.2.1","node-forge":"^1.3.3","node-machine-id":"^1.1.12"},"_hasShrinkwrap":false,"comment_sqlite":"sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.","comment_systray":"systray2 is NOT bundled here. It is lazy-installed into ~/.polyrouter/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.","devDependencies":{"esbuild":"^0.25.12","nodemon":"^3.1.14"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/polyrouter_1.0.40_1790353309174_0.5478994584869246"}}},"time":{"created":"2026-07-27T07:04:11.901Z","modified":"2026-09-25T16:21:49.907Z","1.0.0":"2026-07-27T07:04:12.490Z","1.0.1":"2026-07-27T07:30:46.052Z","1.0.2":"2026-07-27T09:13:59.527Z","1.0.3":"2026-07-27T09:43:28.764Z","1.0.4":"2026-07-27T14:39:25.177Z","1.0.5":"2026-07-27T15:00:32.263Z","1.0.6":"2026-07-30T18:29:55.475Z","1.0.7":"2026-07-31T20:51:15.610Z","1.0.8":"2026-08-01T12:08:52.339Z","1.0.9":"2026-08-02T20:11:20.728Z","1.0.11":"2026-08-04T21:30:53.024Z","1.0.12":"2026-08-05T18:07:03.844Z","1.0.13":"2026-08-07T14:07:30.248Z","1.0.14":"2026-08-12T06:32:47.937Z","1.0.15":"2026-08-21T02:29:12.438Z","1.0.16":"2026-08-21T03:41:06.140Z","1.0.17":"2026-08-23T06:24:25.563Z","1.0.18":"2026-09-02T04:44:54.966Z","1.0.19":"2026-09-02T14:59:35.677Z","1.0.20":"2026-09-05T14:14:19.410Z","1.0.21":"2026-09-05T17:21:05.269Z","1.0.22":"2026-09-06T09:06:43.079Z","1.0.23":"2026-09-06T10:33:17.417Z","1.0.24":"2026-09-06T12:02:48.629Z","1.0.25":"2026-09-09T05:46:38.283Z","1.0.26":"2026-09-09T13:09:56.591Z","1.0.27":"2026-09-09T15:56:41.198Z","1.0.28":"2026-09-10T05:43:12.907Z","1.0.29":"2026-09-10T15:13:57.968Z","1.0.30":"2026-09-16T09:05:51.981Z","1.0.31":"2026-09-19T16:12:46.635Z","1.0.32":"2026-09-19T16:18:20.816Z","1.0.33":"2026-09-19T19:10:02.645Z","1.0.35":"2026-09-20T08:32:27.198Z","1.0.34":"2026-09-20T08:32:50.324Z","1.0.36":"2026-09-20T09:38:43.950Z","1.0.37":"2026-09-20T10:09:13.948Z","1.0.38":"2026-09-22T12:42:37.197Z","1.0.39":"2026-09-23T14:28:03.477Z","1.0.40":"2026-09-25T16:21:49.718Z"},"license":"MIT","keywords":["polyrouter","ai gateway","ai router","openai compatible","openai api","ai coding tools","llm gateway","llm router","multi provider","oauth","cli"],"description":"Local AI gateway and OpenAI-compatible API router for AI coding tools and 60+ providers","maintainers":[{"name":"hkbulbul","email":"hassanbulbul885@gmail.com"}],"readme":"<div align=\"center\">\n\n  <img src=\"https://github.com/hkbulbul/polyrouter/raw/master/public/polyrouter-logo-white.png\" alt=\"PolyRouter — local AI gateway and OpenAI-compatible API router\" width=\"140\"/>\n\n  # PolyRouter\n\n  **One local endpoint for 60+ AI providers, AI coding tools, and model-fallback workflows.**\n\n  [![npm version](https://img.shields.io/npm/v/polyrouter?color=cb3837&logo=npm)](https://www.npmjs.com/package/polyrouter)\n  [![npm downloads](https://img.shields.io/npm/dm/polyrouter?color=cb3837&logo=npm&label=downloads%2Fmonth)](https://www.npmjs.com/package/polyrouter)\n  [![npm total downloads](https://img.shields.io/npm/dt/polyrouter?color=cb3837&logo=npm&label=total)](https://www.npmjs.com/package/polyrouter)\n  [![GitHub stars](https://img.shields.io/github/stars/hkbulbul/polyrouter?style=flat&logo=github)](https://github.com/hkbulbul/polyrouter/stargazers)\n  [![Discord](https://img.shields.io/badge/Discord-join%20us-5865F2?logo=discord&logoColor=white)](https://discord.gg/c5Sgutjkw)\n  [![Node](https://img.shields.io/node/v/polyrouter?logo=node.js&label=node)](https://www.npmjs.com/package/polyrouter)\n  [![License](https://img.shields.io/badge/license-MIT-green)](./LICENSE)\n\n</div>\n\n---\n\nPolyRouter is a **local AI gateway** for AI coding tools and applications. The CLI starts the PolyRouter dashboard and a single OpenAI-compatible `/v1` API endpoint, then routes requests across your configured AI providers — with format translation, OAuth/API-key connections, multi-account routing, model fallback, token optimization, quota tracking, and local SQLite persistence.\n\n> **Fork notice:** PolyRouter is a fork of [9Router](https://github.com/decolua/9router) — the MIT-licensed local AI router by [decolua](https://github.com/decolua). PolyRouter builds on that foundation with its own routing, provider, and dashboard work.\n\n## Install\n\n```bash\nnpm install -g polyrouter\npolyrouter\n```\n\nOr run it without a global installation:\n\n```bash\nnpx polyrouter\n```\n\nAfter startup:\n\n| What | Where |\n|---|---|\n| Dashboard | `http://localhost:20128/dashboard` |\n| OpenAI-compatible API | `http://localhost:20128/v1` |\n\n## Connect an AI Coding Tool\n\n1. Open the PolyRouter dashboard.\n2. Go to **Providers** and connect an OAuth or API-key provider.\n3. Create or copy an API key from the dashboard.\n4. Configure your AI tool with:\n\n```text\nEndpoint: http://localhost:20128/v1\nAPI key:  your PolyRouter API key\nModel:    a provider model or a custom model combo\n```\n\nWorks with compatible tools such as **Claude Code, Codex, Cursor, Cline, OpenClaw, OpenCode, Continue, Roo Code, Kilo Code, and GitHub Copilot**.\n\n## Supported Providers\n\n60+ providers via OAuth, API keys, and compatible endpoints.\n\n| | | | | |\n|:---:|:---:|:---:|:---:|:---:|\n| <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/openai.png\" alt=\"OpenAI\" width=\"36\"/> <br/> **OpenAI** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/claude.png\" alt=\"Anthropic\" width=\"36\"/> <br/> **Anthropic** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/gemini.png\" alt=\"Gemini\" width=\"36\"/> <br/> **Gemini** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/groq.png\" alt=\"Groq\" width=\"36\"/> <br/> **Groq** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/deepseek.png\" alt=\"DeepSeek\" width=\"36\"/> <br/> **DeepSeek** |\n| <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/xai.png\" alt=\"xAI\" width=\"36\"/> <br/> **xAI** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/mistral.png\" alt=\"Mistral\" width=\"36\"/> <br/> **Mistral** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/perplexity.png\" alt=\"Perplexity\" width=\"36\"/> <br/> **Perplexity** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/together.png\" alt=\"Together AI\" width=\"36\"/> <br/> **Together AI** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/fireworks.png\" alt=\"Fireworks\" width=\"36\"/> <br/> **Fireworks** |\n| <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/cerebras.png\" alt=\"Cerebras\" width=\"36\"/> <br/> **Cerebras** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/cohere.png\" alt=\"Cohere\" width=\"36\"/> <br/> **Cohere** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/nvidia.png\" alt=\"NVIDIA\" width=\"36\"/> <br/> **NVIDIA** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/glm.png\" alt=\"GLM\" width=\"36\"/> <br/> **GLM** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/kimi.png\" alt=\"Kimi\" width=\"36\"/> <br/> **Kimi** |\n| <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/minimax.png\" alt=\"MiniMax\" width=\"36\"/> <br/> **MiniMax** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/openrouter.png\" alt=\"OpenRouter\" width=\"36\"/> <br/> **OpenRouter** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/nebius.png\" alt=\"Nebius\" width=\"36\"/> <br/> **Nebius** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/chutes.png\" alt=\"Chutes\" width=\"36\"/> <br/> **Chutes** | <img src=\"https://raw.githubusercontent.com/hkbulbul/polyrouter/master/public/providers/hyperbolic.png\" alt=\"Hyperbolic\" width=\"36\"/> <br/> **Hyperbolic** |\n\n**Plus OAuth providers:** Claude Code, Codex, GitHub Copilot, Cursor, Antigravity, Kimchi, Qwen, Kiro, iFlow, LongCat, and more.\n\n## Features\n\n- **One endpoint, many providers** — 60+ AI providers through OAuth, API keys, and compatible endpoints\n- **Automatic fallback** — model combos fall back in order when a provider is down or out of quota\n- **Multi-account routing** — multiple provider accounts with round-robin or priority behavior\n- **Format translation** — automatic request/response translation between provider formats\n- **OAuth token refresh** and provider quota monitoring\n- **RTK token optimization** — compresses tool-result payloads before they reach an LLM\n- **Usage tracking** — tokens, cost, provider quotas, and reset times in the dashboard\n- **Local SQLite persistence** — settings and provider configuration stay on your machine\n\n## CLI Options\n\n```bash\npolyrouter                    # Start with default settings\npolyrouter --port 8080        # Use a custom port\npolyrouter --no-browser       # Do not open the dashboard automatically\npolyrouter --skip-update      # Skip the update check\npolyrouter --help             # Show all options\n```\n\n## API Examples\n\n### Chat completions\n\n```bash\ncurl http://localhost:20128/v1/chat/completions \\\n  -H \"Authorization: Bearer YOUR_POLYROUTER_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"your-provider-model-or-combo\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"Hello\"}]\n  }'\n```\n\n### List models\n\n```bash\ncurl http://localhost:20128/v1/models \\\n  -H \"Authorization: Bearer YOUR_POLYROUTER_API_KEY\"\n```\n\n## Updating\n\nStop PolyRouter first, including its tray/background process, then run:\n\n```bash\nnpm install -g polyrouter@latest --prefer-online\npolyrouter\n```\n\n`--prefer-online` asks npm to revalidate registry metadata instead of relying on a stale cache when possible. It does not bypass permissions, file locks, or registry/network failures. On Windows, an `EBUSY` or `EPERM` error means PolyRouter, Node, a terminal, or security software still has files open in npm's global package directory — close the locking process and retry rather than deleting the installation manually.\n\n## Local Data and SQLite\n\nPolyRouter keeps its settings, provider configuration, and SQLite database on the machine that runs the gateway unless you intentionally enable a remote feature.\n\nDefault application-data locations:\n\n- **macOS/Linux:** `~/.polyrouter/`\n- **Windows:** `%APPDATA%\\polyrouter\\`\n\nThe main SQLite database is located at:\n\n```text\n$DATA_DIR/db/data.sqlite\n```\n\nSet the `DATA_DIR` environment variable to use another writable location.\n\n## Documentation and Support\n\n- 📖 [Project README](https://github.com/hkbulbul/polyrouter#readme) — full docs, providers, self-hosting\n- 🐳 [Docker deployment](https://github.com/hkbulbul/polyrouter/blob/master/DOCKER.md)\n- 💬 [Discord](https://discord.gg/c5Sgutjkw) — questions, help, and announcements\n- 🐛 [Issues](https://github.com/hkbulbul/polyrouter/issues)\n\n## Security\n\n- Create a strong dashboard password during first-run setup.\n- Keep the gateway on localhost unless you intentionally configure remote access.\n- Never share API keys, OAuth tokens, local SQLite databases, logs, or the application-data directory.\n- Use HTTPS and a secure reverse proxy for remote deployments.\n\n## License\n\nMIT — see [LICENSE](https://raw.githubusercontent.com/hkbulbul/polyrouter/master/LICENSE).\n\nPolyRouter is a fork of [9Router](https://github.com/decolua/9router) by decolua and contributors, also MIT-licensed — their upstream copyright notice is retained in our LICENSE file as required.\n\nYou are free to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of this software under the MIT terms.\n","readmeFilename":"README.md"}