{"_id":"@dst-justin/relay","_rev":"26-12f719b0f7d3a3ce8ed06d45c3992322","name":"@dst-justin/relay","dist-tags":{"latest":"3.0.0"},"versions":{"2.0.0":{"name":"@dst-justin/relay","version":"2.0.0","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.0.0","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"b496f28ba750fcbf15e0b622c78760501b202ca8","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.0.0.tgz","fileCount":6,"integrity":"sha512-eBH4bMfChV0iQpLttWx5+SElMsqOeQylI0EAgm7AbOMl7hplA/OvSQImtcy9+GXELI45gDB9sSBtxtUeeFMEeA==","signatures":[{"sig":"MEYCIQDMR5NL4ktwnw616KnoA8OHKyFCBviO6P6EwsUi1nTO8gIhANCfK46+ygunaCIIAiINla3HoeZAgZBxY/uTQvYmgm1Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61154},"engines":{"node":">=16"},"gitHead":"b201aa3a35050960f0715392f318061e1384adc6","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\""},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"10.9.3","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.0.0_1782271163089_0.0068846774756718965","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@dst-justin/relay","version":"2.0.1","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.0.1","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"c9b05e6284aa1aa748aa6d9e715b29d5d5bfe68f","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.0.1.tgz","fileCount":6,"integrity":"sha512-G0GUA/BmPmyghaByT5K0I/k77WDRBHjg+FFFuufdQnXt2A9vPDIleylXzYiOKyO/jccZED0gbiEAPOw7ktd3Ag==","signatures":[{"sig":"MEUCIB3tH0aIoQJ0Pkc6aJwK38e8tSF/QqKxVGmc48r4v+CxAiEApHB359FuMHNFjVzZRSlGVuIXVq/gOjzTc+CQ3K0IAZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61640},"engines":{"node":">=16"},"gitHead":"51eb5c551b9528d054ffefaa75ba105e2b61ce96","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\""},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"10.8.2","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.0.1_1782271947324_0.9908363334824442","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@dst-justin/relay","version":"2.0.2","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.0.2","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"13a18755923dd85b33fbcdcd8ed13afdf52ecf34","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.0.2.tgz","fileCount":6,"integrity":"sha512-oUfYLCYIp6rN4DUYrQtOPLEROeChH0RepM9mcsqgDgejyEUaFLzi4zmhS2s5OOsN2lFUqY9aVFJj1W8Zn1DVlA==","signatures":[{"sig":"MEUCIQDTA8vjDRYz3yQwVXCzXB+7/w72wGm/dgsjuxQdwFAdxwIgUhP5rMovYU2XlE6QZ+H9eVj1W8+2cxRtssCTsrEjN38=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61977},"engines":{"node":">=16"},"gitHead":"06dec02b7978baea1d0edfa7192982ae9e2bc967","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\""},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.13.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.0.2_1782272231705_0.3609456903349402","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@dst-justin/relay","version":"2.1.0","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.1.0","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"f92a22baf05961f64e356cd74a5d21bcf44e1925","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.1.0.tgz","fileCount":6,"integrity":"sha512-0JwL5q0n6dqZjzLydkH2e5ZqBV1/PNI37NQNbtNuhqHRDmryx99znaJz64AWAfMzU+Iaaf/yIL7LjMldKe4s8Q==","signatures":[{"sig":"MEYCIQCpKz0IpOoTzEr3L7ZkLNZlYSYnPRz9L3ArFjWR82c1ZQIhAIXvHtw3oy0yBhaSt/6zBlEmSZ+Z+1dDIAUp/4QKg5iQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82569},"engines":{"node":">=16"},"gitHead":"ddc11246ae1c06c46c3f183d77340bdac1e66391","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\""},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.13.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.1.0_1782273318354_0.6496526974171966","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@dst-justin/relay","version":"2.1.1","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.1.1","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"0b59d48f5bfd6bc5da009405bad990be3c16beca","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.1.1.tgz","fileCount":7,"integrity":"sha512-VzqA6GccvbT199hhm6x18HE1zW/A4Q3ZfC02oZK7xua8Ef6CcDj+3Eqh8R/TIOPhMRDt/vWR9gTfVYGiZD6I7w==","signatures":[{"sig":"MEYCIQCqMNtnV6WIDAxy+5DV2IRkxpKMxD+fhTppa8JAzyFD/gIhANLHGdjCnPTAZtW6BcwTr6b96p8WT42xTlqF1N1H0bKc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89684},"engines":{"node":">=16"},"gitHead":"dfcafe22253efba14245e506c059c77dc86c6739","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.13.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.1.1_1782273944638_0.1304614386322811","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@dst-justin/relay","version":"2.1.2","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.1.2","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"6fb2b6e776cbfc8e77657ea56d7d1c68c69c9036","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.1.2.tgz","fileCount":7,"integrity":"sha512-DZ0//WGKGfgHRVMLx8BIUpMOaaRHqRSUXNHzkwEPs2j8BDnkt3LxeFd5x9xSKuAVT+JAqI/WqzPBEAn/spU8iQ==","signatures":[{"sig":"MEQCIG6D5+lZ8VYiaOcZH839LdyWwOC5LrHfHDHGSBSxQJpgAiAERiOUEaCHD2TbGBJpjhT9sYKYjcS3OIg8kI0Auw6FeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92458},"engines":{"node":">=16"},"gitHead":"ba89f417a6017eadac0bd7226d9fefd2e7a32b37","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.13.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.1.2_1782274846783_0.06439562644581653","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@dst-justin/relay","version":"2.1.3","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.1.3","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"9823d48f867603be8a227c215fb604fb258186eb","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.1.3.tgz","fileCount":7,"integrity":"sha512-MpH7IjMkEKe9LWGmw9HLA09ngXrvXRPYCcNhCf9/4QzzJfYR2rHyDYIXZcqBFL6nnPwrw88q2DuFLkruRhZC7g==","signatures":[{"sig":"MEYCIQDlr2S3J5cXeK21q0Rml90EvfmJkkFf2FfaWrbykmEW9QIhAMU/nBgicUe+874SMSXftCuyUDCjhZIoPx6ImSpqBgSR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93498},"engines":{"node":">=16"},"gitHead":"258e3a2b230ea764b693f9aaca4f5e21c34f2c29","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.13.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.1.3_1782275447387_0.20920123339394814","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@dst-justin/relay","version":"2.2.0","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.2.0","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"a38883d68e2104f643d7102a3b73a5152d90e6ae","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.2.0.tgz","fileCount":7,"integrity":"sha512-5Ogfxm1iP4onfX+Gx3jAREcDBoF68PhgWbwJ0Q6O33sSLvpRTw84hvw8mIGBJ7P7Q8pBo8eQ0bxtgevRQS1Ucg==","signatures":[{"sig":"MEQCIGr4lvENQLM5LYQ3/wETZPw5R6abQrkXD4v1DFNILWVQAiBu15beMTBzaXJ6/O9uc+JKZT9B9VOSjqtxMYQ/zCYPRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101627},"engines":{"node":">=16"},"gitHead":"e7d94c30ea5aa040f9785a18da140aeae86d3c6e","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.13.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.2.0_1782623141548_0.10494044824525983","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@dst-justin/relay","version":"2.2.1","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.2.1","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"993e500069a8b71c32dfa0242347eec840f4547e","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.2.1.tgz","fileCount":8,"integrity":"sha512-94/DXnWIo2YtiwQEVHEeJ2VwMkjb8p2nuw17IBqipr/0dDCiT7i7ItbAEulzgBBAdIxpEd0t2tc2qlWI2CI3MQ==","signatures":[{"sig":"MEUCIQCBHBvSUoA3pM7lgONEmLhjQdrGFhirmCZzlgajlSE5qAIgXT2hupSspAKRccCufcw1QplXrsIPapDVI15tGohjqM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103364},"engines":{"node":">=16"},"gitHead":"3b1a0e001d5dce07b74fd627b847bb6fd335b8b1","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"10.9.3","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.2.1_1782634172682_0.5675544131350572","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@dst-justin/relay","version":"2.2.2","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.2.2","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"1a1553b9f5f8f9d30fe348803ae6bc1e2c87f80a","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.2.2.tgz","fileCount":8,"integrity":"sha512-BSqC52BRttZ25qlrzO7APg8eeEgBObzYWFkq7dqdT1MlzSH1WPUX8/MS0V2MilEfMJaz2P56FE4JMJBAyNe7Fw==","signatures":[{"sig":"MEUCIFFE5CoYyGAEsDZ11iV/EqQKWlu0x7G6EHho/VIPSy63AiEArkuVwPxcETY1fBDSANVdjLKgKV4Pyc8afV+CT7rE3pw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104075},"engines":{"node":">=16"},"gitHead":"730538605f67b4826a064801a5a66bec768593c6","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.13.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.2.2_1782635408492_0.0841410082256222","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"@dst-justin/relay","version":"2.2.3","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.2.3","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"b1e3721a88ce461f350cb1cd9612cde41c6653e0","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.2.3.tgz","fileCount":8,"integrity":"sha512-npHC3Za5oHOV9I9sOhM/Nv8xLIve5+5aWu+MY4zzOviad/WiITcTHQZTUaxHF1yNg/EUILcx+/onng4+n0qOEw==","signatures":[{"sig":"MEYCIQCLd424+qnDtGMYlvmSr//S5e1LINwVyrz4C8hvML4LFgIhAPdo20lxysS9lhAXv9bhCmEyfGIOXjsKHruQ/wtmcFAa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104075},"engines":{"node":">=16"},"gitHead":"99f262f23e0b336fb3f03c9c8725ebf864975619","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"10.9.3","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.2.3_1782635485935_0.5862487157119818","host":"s3://npm-registry-packages-npm-production"}},"2.2.4":{"name":"@dst-justin/relay","version":"2.2.4","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.2.4","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"8fd53f1fb5d9f587638ad8d6e27d431a18d50e5f","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.2.4.tgz","fileCount":8,"integrity":"sha512-kyDQizfspmC3VetNrMAbJ3/WVDZ9Hr//15rj6sVAk5DoBMdkIp3/MwpIxqz0hEvRM0x/ePeSCirjBJT0F+bUGw==","signatures":[{"sig":"MEQCIDOa6amvIw5SxC7o2zdtqzyhWSyW34/3IWsAF/B2lpRCAiBbx7qgLuR6zcx+2csipdqzqT7gXAGP6afj/+sud6e2gA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104964},"engines":{"node":">=16"},"gitHead":"62b81f12c14c6730fa709d4e308c5becbbfc980c","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.16.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.2.4_1783142789116_0.4683208069349125","host":"s3://npm-registry-packages-npm-production"}},"2.2.5":{"name":"@dst-justin/relay","version":"2.2.5","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.2.5","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"499f4686b8c5823e2077b4a0766dae50cb0258d6","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.2.5.tgz","fileCount":8,"integrity":"sha512-bOXUnJTyhnBt8jDWU/71aRWhvMDnLsl8khMifnijtdA7dKDOvFAJCRtrwbvSKxSotFrtycmNCEX3ynYQj2qP3g==","signatures":[{"sig":"MEUCIBu2BPtBtTvONyp0mTtRekOFu8AJBbjy7KN5MLLtIqQMAiEA2JbRQ4uVKL/RY+JPGBNt2a6nlDpB2P1cJBxSvhU886s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106139},"engines":{"node":">=16"},"gitHead":"b8d9b08ec77180f1d2b0ad45c0b716f8e9ff26bc","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.16.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.2.5_1783143361068_0.688365552674848","host":"s3://npm-registry-packages-npm-production"}},"2.2.6":{"name":"@dst-justin/relay","version":"2.2.6","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.2.6","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"321b609cf521c81ad9020218c2f12665291d991a","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.2.6.tgz","fileCount":8,"integrity":"sha512-LhejlKDc8uU54w4NayzYtWDj9Hti/7k2UpFpXZqQu9uI/G/Drb4vhdkBEee0cpzcwJqJO+EiI+2fOaV8y9rWDw==","signatures":[{"sig":"MEQCICEj/zq/W84gKA0qJW3tXNyZBs2ATe/OXOUWXJTB5Uj0AiA2IaPolVqhB/eI6icqVUsfruJp5tRWOOnA3Bg2hfEq7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107001},"engines":{"node":">=16"},"gitHead":"c5a0962e9ed28b6da5ccbbbd236cc09b78f13459","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.16.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.2.6_1783144105929_0.10307033094305651","host":"s3://npm-registry-packages-npm-production"}},"2.2.7":{"name":"@dst-justin/relay","version":"2.2.7","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.2.7","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"ce82e142bd39f3199d99b1d6d1249cb21f8ec57e","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.2.7.tgz","fileCount":8,"integrity":"sha512-QYlvCPNTCGmjaw2SL7frhY3SLYEWvd9S2k5ZjeRdnhvS8FA7ur/jLVuNIu62gaQ2Ax1NMSBqhGoAb4u5wL5Puw==","signatures":[{"sig":"MEQCIEkUzD9CE8C7KqUHULaAWcKXpLTkUmKyRXiof7F/jpxFAiBTS7d1P9GCfELp6XR3/TiBlgt+7lU71EFLmSdnxMZ0kA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111660},"engines":{"node":">=16"},"gitHead":"8e0dbfe97ef259aae72373b23fb5afe8556f93c8","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.16.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.2.7_1783182623815_0.6709506201484279","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@dst-justin/relay","version":"2.3.0","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.3.0","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"f0467f9de0a683ad05940a5092c980201b970101","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.3.0.tgz","fileCount":8,"integrity":"sha512-NF9dGAYSEhT3fpXgJzGnk/TC6D03ZHHacq3zN+XBVO/syFxHG6MfKQrgsKBiGTg734iKUqNOjernSvQL+5ehLw==","signatures":[{"sig":"MEYCIQDqUqXO6ABWnY2RpCu86taSodDV10+9v/VsRzuSs3m8DwIhAIuDIhb2XUpXiD8lUoCRz3jkTUoAPCyqfzoilppI2y14","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128308},"engines":{"node":">=16"},"gitHead":"7773506272548d4b9c634304629766287130f0ad","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.16.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.3.0_1783653940995_0.9421316375275643","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@dst-justin/relay","version":"2.3.1","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.3.1","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"60fb9cb8991dc3328725d3c2424a2440f3d79cda","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.3.1.tgz","fileCount":8,"integrity":"sha512-T7n/HHwA848jnZs6QxfBdFnKmWoC8L7Y/JejN7lpVUzv3nH6sH+5TUFJxq9EBi5nYnx6/V/vf0QAahjDPT0agg==","signatures":[{"sig":"MEYCIQC0oBWZJ85esjNK8y44SC/HXGCIU2vHXvzC5k5HMtASLAIhAPoupw4w0neS7RHjBi+UuBqiquGTgXb/c/Vc2cefRdfW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136315},"engines":{"node":">=16"},"gitHead":"93c3fd69fe770f09228e87bc943015de9e9fae71","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.16.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.3.1_1783824003911_0.8520447610917925","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@dst-justin/relay","version":"2.4.0","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.4.0","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"8bf309f9b1dd04ecdd59b5057f02c15afeffbe42","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.4.0.tgz","fileCount":8,"integrity":"sha512-FzGdDu29bwfhedMuahJP8VQwiIRlA1NShrzlnD9pnTDQTMlxny5FqCpHNIieoHpeNWX1U15Qc7uBW4HU+V8Mfg==","signatures":[{"sig":"MEYCIQCExk/5+Gqv3q+i9ixhTB75m+TF46rBq2xsK9BGL6u5+wIhAJLtqotjIWIOpWM4B9V6pjbf7hg16gTtDbCU1lFQM9T2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151634},"engines":{"node":">=16"},"gitHead":"004d443471a6e37268504cadda311df4a6425ff3","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.16.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.4.0_1785000268530_0.11826768621712369","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@dst-justin/relay","version":"2.5.0","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.5.0","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"d66cd31590fe6b108a0037b81b1b84700dc4c0d0","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.5.0.tgz","fileCount":8,"integrity":"sha512-tj+bDd810V8z9x9pTG1lmu8cXWJtPMaMI35kzTic0ucK2NbH/o8y9g9CMn50s17RHBpnFV1CqDyHYmb+4GJVkQ==","signatures":[{"sig":"MEUCIB1bAQUDjoOjgG/pgYHB3zPP1dq4qHLFuyMhUjsd7+biAiEA4GzwIxcZ2q7Qskq4IfA2Jf0VKu5P+KjmjQXApx+7xu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156110},"engines":{"node":">=16"},"gitHead":"a49fb66c5e850a4d3724d39f51349a37d550a47c","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.16.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.5.0_1786505419961_0.7201831223649418","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@dst-justin/relay","version":"2.6.0","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.6.0","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"159a4746baa885cd8dcfbb7e3e6a9399be3ee52f","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.6.0.tgz","fileCount":8,"integrity":"sha512-8I0u6q2I/S6WHwN3EKK6Exe7OqaXRg4TXak0ukxgxsPSCcuGcvdQOALjZ1+J0696d4y8g/yrC4PFxOoEJmo6Sw==","signatures":[{"sig":"MEQCIAPL3gj0uFvPGMJel8ubVjcv5Inc2E5wGW60SqNjUkNGAiBGOX2NNMqYn4M2EEnQgCst93voHnHWY6qgB6fR8CiimQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157652},"engines":{"node":">=16"},"gitHead":"93e74bd6cd611190f6b5c55e5079a3e68bd6f4f9","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.19.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.6.0_1788489696109_0.12846728204246483","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@dst-justin/relay","version":"2.7.0","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.7.0","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"3bc770583e14bbefa5d1ff8d27d5aadbdad9d5b0","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.7.0.tgz","fileCount":8,"integrity":"sha512-x4FS4LaEXr1i6isZOF7J9WlhdYz3PJ2vy4OzhHjEjflX0uKWZlak0iocBfx4BlwcpKyiqFKaF/WN6hmwrQksrw==","signatures":[{"sig":"MEUCIQDa1JSn0i77LnPoBCsJ1MQRAzPW59TgKw4siOJohHlZpQIgFzjVC+rI3BbU5BYG1fsKAwVGHITKGDPyUtJ24oh4tG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158098},"engines":{"node":">=16"},"gitHead":"07d7382994f713de50a0421ad3708b66d56ceb4c","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.17.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.7.0_1788504327160_0.06967971094679082","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"@dst-justin/relay","version":"2.8.0","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.8.0","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"928059bbef7db4cfba12b62ce46ecef5f57881a2","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.8.0.tgz","fileCount":8,"integrity":"sha512-LEmYr0A8+ZWXllSQncS98Un6aHfsD3owWAtxcWbMkbm6/je2pMCHqV36etezL7naVDB9kn3U1E2uGSW8Z9i1zQ==","signatures":[{"sig":"MEUCIGIy/ibwQ/Jdd9yCslF8FJsMV1jsuo003NewGYLAYa1OAiEAlWrNgWc79GQbmJQ/q/FaQAvaW1a1sBJKRmDs+3W4UKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155050},"engines":{"node":">=16"},"gitHead":"850f82f12f792e15233cd857cf077f3291ab7814","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.19.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows, with one-off LiteLLM provider runs targeting Claude Code or Codex CLI","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.8.0_1788664239714_0.9779039710694568","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"@dst-justin/relay","version":"2.9.0","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.9.0","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"4dc51b6c36f914b882ff17d65d810a36df848874","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.9.0.tgz","fileCount":8,"integrity":"sha512-uZ7QP5IMjwA3XT29dwQf+lkQGsL6442TkL2Xs8wtjwksKiagWQIaOEmuzzxfXhPsDh1dSy2/tX6t9rJp+ec6Vw==","signatures":[{"sig":"MEUCIGB1YRTT6ExRlkcAT1DyG2/yu/LD+2dGB/9LB8hMG9BvAiEAjVPrHRfHRIUkPTQM6TtTeRizeJa7/hM4pRbWJ/VER74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164341},"engines":{"node":">=16"},"gitHead":"b40c791cab7ece474119071db8f15f840453dab0","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.19.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows, with one-off LiteLLM provider runs targeting Claude Code or Codex CLI","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.9.0_1788674178521_0.4195329456459964","host":"s3://npm-registry-packages-npm-production"}},"2.9.1":{"name":"@dst-justin/relay","version":"2.9.1","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.9.1","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"2f577a5f83d6b7b66ec0ba3cd32026e0354b2b84","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.9.1.tgz","fileCount":8,"integrity":"sha512-rQ45yg2KLiFV+cTmfN3hMY5xSDXoYDqadQSKPdlmEaVHD1Xvx+EGkKTvfutMD8JxYH7eObulz2H6W46VVMgPkg==","signatures":[{"sig":"MEQCIDWgVKVQwHrItJEgMJtydR0ReMw76LfNVLzvN/3FpedXAiAk3/j2TDApcHGzOfpfDsk2nZSeyQIZB7KmMuZeSM4XVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167320},"engines":{"node":">=16"},"gitHead":"9c70db91c6e25b951d4d10c8d92c15566946f75a","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.19.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows, with one-off LiteLLM provider runs targeting Claude Code or Codex CLI","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.9.1_1788835525070_0.4939044171280764","host":"s3://npm-registry-packages-npm-production"}},"2.9.2":{"name":"@dst-justin/relay","version":"2.9.2","keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","_id":"@dst-justin/relay@2.9.2","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"os":["darwin","linux","win32"],"bin":{"relay":"relay.js"},"dist":{"shasum":"c8e27b207a2560fd2877bc7489f233fc6f0a1bd8","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-2.9.2.tgz","fileCount":8,"integrity":"sha512-G/qrPGiC1UIcZo0C9DsHPQ07LqcdETmq1EwatE8hGIS+8lQloVyPlZNIeNmxqh6obbXsbQAejluuoiffS3jEyw==","signatures":[{"sig":"MEYCIQDBTwkjv5XOZMJtzk21UQq1HkTUOH9kmtEh3tTYZFpi3gIhANaWsFTAJbrebVrgkY4zVd+yIONzYD1Ewi0GcbRGddI/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168016},"engines":{"node":">=16"},"gitHead":"81121a7c45942fe053a83c862c696bfb3ff9fdd5","scripts":{"postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"repository":{"url":"git+https://github.com/darkstar1227/relay.git","type":"git"},"_npmVersion":"11.19.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows, with one-off LiteLLM provider runs targeting Claude Code or Codex CLI","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_2.9.2_1788846308502_0.8985392422502487","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@dst-justin/relay","version":"3.0.0","description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows, with one-off LiteLLM provider runs targeting Claude Code or Codex CLI","bin":{"relay":"relay.js"},"scripts":{"build":"node scripts/build.cjs","build:check":"node scripts/build.cjs --check","build:core":"cargo build --release --locked","test:core-package":"node scripts/core-package.cjs","test:core-pair":"node --test tests/core/pair-install.test.cjs","test":"node scripts/check-syntax.cjs && node --test tests/*.test.cjs","test:core":"node scripts/test-core.cjs","test:package":"node scripts/verify-package.cjs","postinstall":"node -e \"if(process.platform!=='win32'){try{require('fs').chmodSync(require('path').join(__dirname,'relay'),'755')}catch(_){}}\" && node postinstall.js"},"engines":{"node":">=16"},"os":["darwin","linux","win32"],"keywords":["claude","claude-code","anthropic","multi-account","credential"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/darkstar1227/relay.git"},"homepage":"https://github.com/darkstar1227/relay#readme","bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"_id":"@dst-justin/relay@3.0.0","_integrity":"sha512-h2lXClE0tfBrdq1zD0Gd/wvz+cIKCzjAM4O0jcZytncP759R1IwKqIh1e/rPgbVWQX+5HuHwNPPCcNoLY5dzug==","_resolved":"/home/runner/work/relay/relay/dist/dst-justin-relay-3.0.0.tgz","_from":"file:dist/dst-justin-relay-3.0.0.tgz","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-h2lXClE0tfBrdq1zD0Gd/wvz+cIKCzjAM4O0jcZytncP759R1IwKqIh1e/rPgbVWQX+5HuHwNPPCcNoLY5dzug==","shasum":"3a2587bb9e0a935c93abf7f836f2251088587459","tarball":"https://registry.npmjs.org/@dst-justin/relay/-/relay-3.0.0.tgz","fileCount":8,"unpackedSize":177870,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCWz/+/5xdcgmLROV4IwFvRVRVdTHT1nikwJKnFk0HS/wIgDg5t7jQpRZcZrTjHjzg9fBC3F39d6ugrZuGptbz4SNI="}]},"_npmUser":{"name":"dst-justin","email":"justin30303.jl@gmail.com"},"directories":{},"maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/relay_3.0.0_1789102019436_0.34934502814813184"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-24T03:19:22.912Z","modified":"2026-09-11T04:46:59.770Z","2.0.0":"2026-06-24T03:19:23.251Z","2.0.1":"2026-06-24T03:32:27.489Z","2.0.2":"2026-06-24T03:37:11.844Z","2.1.0":"2026-06-24T03:55:18.502Z","2.1.1":"2026-06-24T04:05:44.863Z","2.1.2":"2026-06-24T04:20:46.917Z","2.1.3":"2026-06-24T04:30:47.514Z","2.2.0":"2026-06-28T05:05:41.682Z","2.2.1":"2026-06-28T08:09:32.830Z","2.2.2":"2026-06-28T08:30:08.619Z","2.2.3":"2026-06-28T08:31:26.076Z","2.2.4":"2026-07-04T05:26:29.255Z","2.2.5":"2026-07-04T05:36:01.203Z","2.2.6":"2026-07-04T05:48:26.063Z","2.2.7":"2026-07-04T16:30:23.954Z","2.3.0":"2026-07-10T03:25:41.166Z","2.3.1":"2026-07-12T02:40:04.041Z","2.4.0":"2026-07-25T17:24:28.673Z","2.5.0":"2026-08-12T03:30:20.139Z","2.6.0":"2026-09-04T02:41:36.247Z","2.7.0":"2026-09-04T06:45:27.297Z","2.8.0":"2026-09-06T03:10:39.842Z","2.9.0":"2026-09-06T05:56:18.651Z","2.9.1":"2026-09-08T02:45:25.212Z","2.9.2":"2026-09-08T05:45:08.630Z","3.0.0":"2026-09-11T04:46:59.589Z"},"bugs":{"url":"https://github.com/darkstar1227/relay/issues"},"license":"MIT","homepage":"https://github.com/darkstar1227/relay#readme","keywords":["claude","claude-code","anthropic","multi-account","credential"],"repository":{"type":"git","url":"git+https://github.com/darkstar1227/relay.git"},"description":"Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows, with one-off LiteLLM provider runs targeting Claude Code or Codex CLI","maintainers":[{"name":"dst-justin","email":"justin30303.jl@gmail.com"}],"readme":"<p align=\"center\"><img src=\"assets/banner.png\" alt=\"relay\" width=\"600\"></p>\n\nA lightweight CLI tool for switching between multiple Claude Code accounts instantly.\n\nContributors: `relay` is generated from grouped sources; see [development](docs/development.md), [Rust core progress](docs/development-rust-core.md), and [per-stage SRE reports](docs/reports/sre-stages.md). Rust is currently development opt-in, not the published default.\n\n## Platform Support\n\n| Platform | Credential Storage |\n|----------|--------------------|\n| macOS | Keychain (`Claude Code-credentials`) |\n| Linux / WSL | `~/.claude/.credentials.json` |\n| Windows | `%USERPROFILE%\\.claude\\.credentials.json` |\n\n## Requirements\n\n- [`claude`](https://docs.anthropic.com/en/docs/claude-code) CLI installed\n- macOS / Linux / WSL: `python3` available\n- Windows: PowerShell 5.1+ (built into Windows 10/11)\n\n---\n\n## Installation\n\n### npx (no install required)\n\nRun once without installing anything permanently:\n\n```bash\nnpx @dst-justin/relay install\n```\n\nThis copies the `relay` script to `/usr/local/bin/relay` (or `~/bin/relay` as fallback). After that, use `relay` directly.\n\n---\n\n### npm (global install — recommended)\n\nRequires Node.js 16+. Installs the `relay` command globally:\n\n```bash\nnpm install -g @dst-justin/relay\n```\n\nTo update later:\n\n```bash\nnpm update -g @dst-justin/relay\n# or from inside relay:\nrelay update\n```\n\n---\n\n### macOS / Linux / WSL (manual, no Node.js)\n\n```bash\ngit clone https://github.com/darkstar1227/relay.git\ncd relay\n\n# Make the script executable\nchmod +x relay\n\n# Install (copies script to /usr/local/bin)\n./relay install\n```\n\nThis copies the script to `/usr/local/bin/relay` (falls back to `~/bin/relay` if permissions are restricted).\n\n#### Verify permissions\n\n```bash\nls -l $(which relay)\n# expected: -rwxr-xr-x ... or lrwxr-xr-x ...\n\nls -la ~/.claude-relay/\n# expected: drwx------  ~/.claude-relay/\n# expected: drwx------  ~/.claude-relay/credentials/\n```\n\nIf any permissions are wrong:\n\n```bash\nchmod 700 ~/.claude-relay ~/.claude-relay/credentials\nchmod 600 ~/.claude-relay/credentials/*.json\n```\n\n---\n\n### Windows (CMD / PowerShell, manual)\n\nIf you prefer not to use npm, clone the repo and add it to PATH manually.\n\n```powershell\ngit clone https://github.com/darkstar1227/relay.git\ncd relay\n```\n\n**Add to PATH permanently:**\n\n```powershell\n$dir = (Get-Location).Path\n[Environment]::SetEnvironmentVariable(\n    \"PATH\",\n    \"$([Environment]::GetEnvironmentVariable('PATH','User'));$dir\",\n    \"User\"\n)\n```\n\nRestart your terminal after running this.\n\n**Allow the script to execute (first time only):**\n\n```powershell\nUnblock-File .\\relay.ps1\n```\n\n**Verify:**\n\n```powershell\nrelay help\n```\n\n---\n\n## Quick Start\n\n```bash\n# Add your first account (opens browser — must run outside Claude Code)\nrelay add personal\n\n# Add a second account\nrelay add work\n\n# Switch accounts\nrelay 2        # by index\nrelay work     # by name\n```\n\n## Usage Inside Claude Code\n\nPrefix commands with `!` to run them inline:\n\n| Command | Description |\n|---------|-------------|\n| `!relay` | Account menu with 5-hour usage |\n| `!relay 2` | Switch to account #2 |\n| `!relay work` | Switch to account named \"work\" |\n| `!relay status` | Detailed usage for current account |\n\n## Account Management\n\n| Command | Description |\n|---------|-------------|\n| `relay add <name>` | Add account via browser login |\n| `relay add-force <name>` | Force re-login for existing account |\n| `relay save <name>` | Save current login state as a named account |\n| `relay rename <old> <new>` | Rename an account |\n| `relay list` | Full list with weekly usage |\n| `relay list --no-usage` | List without querying the API |\n| `relay remove <name>` | Delete an account |\n| `relay sessions` | Show all Claude Code sessions |\n| `relay version` | Show current version |\n| `relay update` | Check GitHub releases and update to the latest version |\n| `relay uninstall` | Remove relay and all account data (macOS/Linux only) |\n| `relay autoswitch config` | Interactive setup wizard |\n| `relay autoswitch start` | Install and start background daemon |\n| `relay autoswitch stop` | Stop and remove daemon |\n| `relay autoswitch status` | Daemon state and per-account thresholds |\n| `relay autoswitch log` | Recent auto-switch history |\n| `relay warmup add <account> <HH:MM>` | Schedule an account warmup time |\n| `relay warmup remove <account> [HH:MM]` | Remove one or all warmup times for an account |\n| `relay warmup list` | Show configured warmup schedules |\n| `relay warmup pause` / `relay warmup resume` | Temporarily pause or resume warmups |\n\n## Autoswitch\n\nrelay can automatically switch accounts when a 5-hour usage threshold is hit.\n\n**Setup:**\n\n```bash\nrelay autoswitch config   # interactive wizard\nrelay autoswitch start    # install daemon (launchd / systemd / cron)\nrelay autoswitch status   # verify it's running\n```\n\n**Config file** (`~/.claude-relay/autoswitch.json`):\n\n```json\n{\n  \"order\": [\"work\", \"personal\", \"backup\"],\n  \"thresholds\": { \"work\": 70, \"personal\": 80 },\n  \"poll\": { \"low_minutes\": 10, \"high_minutes\": 2, \"high_threshold\": 50 }\n}\n```\n\n- Only accounts listed in `order` with a `thresholds` entry participate.\n- No config file = autoswitch disabled entirely.\n- Manual switches (`!relay work`) are respected until that account hits its threshold.\n- If all accounts are over threshold, relay switches to the least-used one.\n\n## Warmup\n\nWarmup runs a real, non-interactive `claude -p ping` call to Anthropic's API on your machine in the background at the scheduled time — it does not send your credentials anywhere, and it does not increase your weekly usage cap. It only starts your rolling 5-hour usage window earlier.\n\nUse warmup when you want an account's 5-hour usage window to start before you sit down to work.\n\n```bash\nrelay warmup add <account> <HH:MM>     # e.g. relay warmup add work 06:00\nrelay warmup remove <account> [HH:MM]\nrelay warmup list\nrelay warmup pause\nrelay warmup resume\n```\n\nWarmup requires the autoswitch daemon to be running (`relay autoswitch start`) to actually fire. `relay warmup add` warns if the daemon is not running.\n\n**Config shape** (`~/.claude-relay/autoswitch.json`):\n\n```json\n{\n  \"warmup_enabled\": true,\n  \"warmup\": [\n    { \"account\": \"work\", \"time\": \"06:00\" },\n    { \"account\": \"personal\", \"time\": \"08:30\" }\n  ]\n}\n```\n\n## LiteLLM providers\n\nBeyond subscription accounts, relay can route Claude Code through a [LiteLLM](https://docs.litellm.ai/) proxy — useful for supplementing subscription usage with other model providers.\n\n```bash\nrelay provider add mylitellm --base-url http://localhost:4000 --token sk-your-litellm-key [--model claude-sonnet-4-5] [--discover-models]\nrelay provider list\nrelay provider use mylitellm   # routes every future `claude` launch through it\nrelay provider off             # stop routing, subscription account resumes\nrelay provider remove mylitellm\n```\n\n`--discover-models` lets Claude Code's `/model` picker show every model configured in your LiteLLM proxy's `config.yaml`, switchable live mid-session.\n\nFor a one-off session on a specific account or provider, without touching any global state:\n\n```bash\nrelay run mylitellm -- -p \"say hi\"   # or any claude args\nrelay run work                       # same as relay work, then claude\n```\n\nMinimal LiteLLM `config.yaml`:\n```yaml\nmodel_list:\n  - model_name: claude-sonnet-4-5\n    litellm_params:\n      model: openai/gpt-4o\n      api_key: os.environ/OPENAI_API_KEY\n\ngeneral_settings:\n  master_key: sk-your-litellm-master-key\n```\n\n## How It Works\n\nrelay stores a snapshot of each account's OAuth credentials in `~/.claude-relay/credentials/`. Switching writes the target account's credentials back into the store that Claude Code reads from.\n\nSessions live in `~/.claude/projects/` and are shared across all accounts — after switching, use `claude -c` to resume the last session or `claude --resume <id>` to pick a specific one.\n\n> **Note:** `relay add` must be run in a regular Terminal, not inside Claude Code, because the browser login flow is not available inside an active session.\n\n## Files\n\n```\n~/.claude-relay/\n├── credentials/   # Per-account credential snapshots (chmod 700 on Unix)\n├── meta/          # Per-account email cache\n└── current        # Name of the active account\n```\n\n### Windows-specific files\n\n| File | Purpose |\n|------|---------|\n| `relay.ps1` | Full PowerShell implementation |\n| `relay.cmd` | Thin CMD wrapper — delegates to `relay.ps1` |\n\n\n---\n\n## Changelog\n\n### v2.9.2 — 2026-09-08\n- Fix `relay run <name> --codex` 404ing on every request — Codex's Responses wire API always POSTs `<base_url>/responses`, so relay now appends `/v1` to the provider's `base_url` for Codex runs (unless already present), matching the OpenAI-style convention the gateway expects.\n\n### v2.9.1 — 2026-09-08\n- Add `relay provider codex-models <name> [model1,model2,...]` — stores a rotation list of models for `--codex` runs (no argument shows the current list). Lets one LiteLLM provider serve both Claude Code (via its existing `discover_models`/`model`) and Codex CLI at once.\n- `relay run <name> --codex` now falls back to that rotation list when the provider has no pinned `--model`: each invocation advances to the next model and persists the cursor, instead of hard-erroring.\n\n### v2.9.0 — 2026-09-06\n- Add `relay proxy` (alias `px`): manual-only local process supervisor for a LiteLLM proxy and a user-supplied \"bridge\" command — `init`/`start`/`stop`/`status`/`log`, plus `proxy bridge set-command '<cmd>'`. Never auto-started by the autoswitch daemon or any other relay command; no launchd/systemd registration, so nothing survives reboot without an explicit `relay proxy start` again.\n- `relay proxy init` scaffolds a local LiteLLM config template (including a commented-out example for LiteLLM's own \"ChatGPT Subscription\" provider, with an inline warning that bridging a personal ChatGPT/Codex login this way may violate OpenAI's Terms of Service) — relay does not fill that section in or implement any token-bridging logic itself; the bridge process is entirely user-supplied.\n\n### v2.8.0 — 2026-09-06\n- **Removed** `relay provider use <name>` and `relay provider off` — the global \"always-on\" provider switch (which mutated `${CLAUDE_DIR}/settings.json`) is gone entirely. All provider usage now goes through `relay run <name>`, which never touches global state.\n- Add Codex CLI as an alternate `relay run` exec target: `relay provider add <name> --codex` stores `agent=codex` (requires `--model`; `--discover-models`/`--subagent-model` are ignored with a warning), and `relay run <name> --codex`/`--claude` override the stored agent for a single invocation.\n- Codex runs pass the LiteLLM `base_url`/`model` via `-c` TOML overrides; the auth token is handed to the `codex` process only through a child-process env var, never argv.\n\n### v2.7.0 — 2026-09-04\n- `relay provider add` now turns on gateway model discovery by default (previously required `--discover-models`); opt out with `--no-discover-models`.\n\n### v2.6.0 — 2026-09-04\n- Add `relay run -c`/`--continue`/`-r`/`--resume` — replays the last account/provider `relay run` used in the current directory, so a crashed or Ctrl-C'd one-off provider session can resume without retyping the provider name.\n\n### v2.5.0 — 2026-08-12\n- Add `--subagent-model` to `relay provider add`, storing a `subagent_model` field that `relay provider use`/`relay run` inject as `CLAUDE_CODE_SUBAGENT_MODEL` — lets a LiteLLM provider pin the subagent model independently of the main `ANTHROPIC_MODEL`.\n- `relay provider list` now also shows `subagent_model` when set.\n- Expand `relay help` with every subcommand's flags (provider add's `--base-url`/`--token`/`--model`/`--subagent-model`/`--discover-models`, `list -f`/`--no-usage`, `run -- <args>`, `warmup test`, aliases, etc.)\n\n### v2.4.0 — 2026-07-25\n- Add LiteLLM provider support: `relay provider add/list/use/off/remove` routes Claude Code through a LiteLLM proxy instead of a subscription account, via `${CLAUDE_DIR}/settings.json`'s env block (never touches Keychain/credentials).\n- Add `relay run <name>` for a one-off session pinned to a specific account or provider, independent of any global switch.\n\n### v2.3.1 — 2026-07-12\n- Fix: autoswitch daemon now auto-redeploys and restarts after relay itself is updated — previously the daemon file was only regenerated by `relay autoswitch start`, so an already-running daemon would silently keep running stale code (missing new features and previously-fixed bugs) until manually restarted\n- Fix: `relay reorder` no longer drops accounts omitted from the typed order — they're now appended in their prior relative order instead of being silently removed from autoswitch rotation\n- Fix: autoswitch reorder wizard no longer discards a typed order; supports concatenated digit shorthand (e.g. `231`)\n- Add: standalone `relay reorder` command\n- Fix: lock/warmup auto-default configs, autoswitch daemon auto-default order, and `render_table` all respect the persisted account order file instead of falling back to alphabetical sort\n- Fix: account order file stays in sync on add/save/remove/rename\n\n### v2.3.0 — 2026-07-10\n- Add scheduled warmup: `relay warmup add/remove/list/pause/resume` to pre-warm a 5hr session at set times\n- Daemon warmup engine (`check_warmup`/`do_warmup`) fires scheduled warmups; always pings (`claude -p ping`) on fire rather than skipping when the account looks \"already active\" — an idle-overnight account was silently missing its pre-warm\n- Daemon now records the resolved `claude` binary path at autoswitch start, so it can find it regardless of the daemon's runtime PATH\n- Add warmup health warning to `relay status`\n- Fix: unify the cross-process credential lock across bash and Python — the bash mkdir-based fallback (used on macOS, which lacks `flock(1)`) never actually synchronized against the daemon's `fcntl.flock()`, defeating the lock's purpose; also fixes a TOCTOU race in token refresh where the current-account file was read before the lock was acquired\n- Refactor: atomic JSON writes for the daemon usage cache, preventing corruption from concurrent writes\n\n### v2.2.7 — 2026-07-05\n- `relay lock <name>` / `relay unlock <name>`: lock an account so it won't be cycled back to when over its usage threshold\n- `relay lock` (no args): show locked accounts\n- Autoswitch daemon now auto-enables with default 80% threshold when 2+ accounts exist — no config required\n- Cycling follows `order` sequence; locked+over-threshold accounts are skipped; if all candidates are blocked, stays on current account and notifies\n- Lock badge (🔒) shown in `relay list` and `relay autoswitch status`\n\n### v2.2.6 — 2026-07-04\n- `relay status -f` / `relay status --follow`: live-refresh current account status, same 30-second interval as `relay list -f`\n\n### v2.2.5 — 2026-07-04\n- `relay list -f` / `relay list --follow`: live-refresh mode — clears the screen and redraws the account table every 30 seconds, Ctrl+C to exit\n\n### v2.2.4 — 2026-07-04\n- Fix: `relay switch` from another terminal no longer gets clobbered by a concurrent `relay list` / `!relay` menu run. Root cause: `try_refresh()` in the parallel usage-fetch used a stale snapshot of the current account, causing it to write the old account's refreshed token back to keychain and undo the switch. Now reads `CURRENT_FILE` freshly at write time.\n- Active sessions pick up an account switch on the next message without restarting\n\n### v2.2.3 — 2026-06-28\n- Fix OAuth token refresh: use correct endpoint (`/v1/oauth/token`), required `client_id`, and `anthropic-version: oauth-2025-04-20` header — `relay refresh-all` now works\n\n### v2.2.0 — 2026-06-28\n- Silent OAuth auto-refresh: `relay list` and `relay status` now silently refresh expired tokens using the stored `refreshToken` — no browser login needed for routine expiry\n- Pre-emptive refresh: tokens are refreshed 5 minutes before expiry, not just after\n- Autoswitch daemon now refreshes tokens proactively every 30 minutes and on expiry detection, ensuring the daemon never switches to a dead account\n- New `relay refresh-all` command: silently refreshes all accounts via OAuth in one go\n- Windows (`relay.ps1`): token refresh wired into `Show-Table` usage loop\n\n### v2.1.1 — 2026-06-24\n- Display current version and latest version at the end of `list`, `status`, `relay` (menu), `sessions`, and `help` commands\n- Background version check (24h cache) — non-blocking, never slows down output\n- `relay update` now detects original install method: uses `npm install -g` for npm installs, `git pull` for git clones, and direct GitHub download for bare script copies\n- `npm install -g` post-install script automatically patches `~/.bashrc`, `~/.zshrc`, `~/.profile`, and fish `config.fish` if the npm bin dir is missing from PATH\n\n### v2.1.3 — 2026-06-24\n- `relay autoswitch` with no subcommand: auto-routes to config wizard (first time) or status panel (already configured)\n- Autoswitch status and log panels now show version info and update notice at the bottom\n- Status panel shows available commands inline\n\n### v2.1.2 — 2026-06-24\n- Improve autoswitch config wizard: 3-step flow with numbered account list, space-separated number input for order, visual chain preview (`work → personal → (cycle)`), and summary after save\n- `relay update` now writes the live-fetched version to cache immediately, so display commands reflect the latest version without waiting 24h\n\n### v2.1.0 — 2026-06-24\n- Upgraded GitHub Actions workflow to `actions/checkout@v6` and `actions/setup-node@v6` (Node 24 runtime, removes Node 20 deprecation warning)\n\n### v2.0.2 — 2026-06-23\n- Skip `npm install` during `relay update` when already on the latest version or when version check fails\n\n## License\n\nMIT © [darkstar1227](https://github.com/darkstar1227)\n","readmeFilename":"README.md"}