{"_id":"@rikcodes/teamclaude","_rev":"27-e9cc0aa2331abbf2506ab18ad60e9b74","name":"@rikcodes/teamclaude","dist-tags":{"latest":"1.1.20-rik.17"},"versions":{"1.1.13-rik.1":{"name":"@rikcodes/teamclaude","version":"1.1.13-rik.1","keywords":["claude","anthropic","proxy","load-balancer","multi-account"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.13-rik.1","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"928073a9882cddb176ce0896f28758b6ba92e06f","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.13-rik.1.tgz","fileCount":33,"integrity":"sha512-fMLfPvI4izPlSMWVVb+OM8qySm9Mf2ce+1gjup4uA05B5bwp/PJDd5c5SAqrECAPeaalF7VXfnJ/YhvXko9FBQ==","signatures":[{"sig":"MEQCIHAW7NOvCOmAYzz8L/umIjwAVcmYA9KVWnspf+ihnFOOAiBLDjBs/AfMGCPCa5h8bZFW3X2oAHyLhBhsPDguZjD0xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":485800},"main":"src/index.js","type":"module","_from":"file:rikcodes-teamclaude-1.1.13-rik.1.tgz","engines":{"node":">=20.0.0"},"scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js"},"_npmUser":{"name":"rikbrown","email":"npm@rik.codes"},"_resolved":"/private/var/folders/gb/b4p3sn117k14plm_ckbt9hbm0000gn/T/b24610a424195cc98485431980521f5c/rikcodes-teamclaude-1.1.13-rik.1.tgz","_integrity":"sha512-fMLfPvI4izPlSMWVVb+OM8qySm9Mf2ce+1gjup4uA05B5bwp/PJDd5c5SAqrECAPeaalF7VXfnJ/YhvXko9FBQ==","repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"11.6.2","description":"Multi-account Claude proxy with automatic quota-based rotation","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.13-rik.1_1787930354113_0.6731545738677434","host":"s3://npm-registry-packages-npm-production"}},"1.1.13-rik.2":{"name":"@rikcodes/teamclaude","version":"1.1.13-rik.2","keywords":["claude","anthropic","proxy","load-balancer","multi-account"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.13-rik.2","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"31f595488b69697abf63eb9f13f26df128ebc848","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.13-rik.2.tgz","fileCount":35,"integrity":"sha512-P9CZnuTorAp6ShQHGiij+cLj1Lw2mLxfo4A2LAmoL9BFJbWbWeJ2TQPX+ukUwzA9UVYCmOqH7NMa6s4YaOlCCw==","signatures":[{"sig":"MEUCIQDUaifrxDd+7JEDIZ6XzfPKuOrvABCWDQ6ezDyYaoHAYAIgMBkohJ8GgnoCHps399tYECTuxeEsqaV6O9o5r/WvP0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.13-rik.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":507512},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"36beb5874eea598e599968eb3afe4fc99dd7b6d1","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account Claude proxy with automatic quota-based rotation","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.13-rik.2_1788052996391_0.4043624928923797","host":"s3://npm-registry-packages-npm-production"}},"1.1.13-rik.4":{"name":"@rikcodes/teamclaude","version":"1.1.13-rik.4","keywords":["claude","anthropic","proxy","load-balancer","multi-account"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.13-rik.4","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"ffd02605b8546a0f221cbea650772cf9931b905b","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.13-rik.4.tgz","fileCount":36,"integrity":"sha512-Rqj0UkUdEt90xcb8qMzwLZgmuQyisJNGunRUSvu32gB05STH5MNRAGgcCK9z+QPItfW+QrpdUhXiH1+C5kTdTQ==","signatures":[{"sig":"MEUCIQCWOCcqXVA7n5Z97v/rkDr78+0LbEH28Cf2q3OwCViegwIgcOE95/F0jYVwxvVGIoATuiJUGnTiuSkSzRGGs+iBWXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.13-rik.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":520484},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"a2f82c144df622b9760872919f189b24513313b7","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account Claude proxy with automatic quota-based rotation","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.13-rik.4_1788167051508_0.24654895732219928","host":"s3://npm-registry-packages-npm-production"}},"1.1.13-rik.5":{"name":"@rikcodes/teamclaude","version":"1.1.13-rik.5","keywords":["claude","anthropic","proxy","load-balancer","multi-account"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.13-rik.5","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"0f82a5016ca9ded5f34b906dd8b05a2f6921176b","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.13-rik.5.tgz","fileCount":37,"integrity":"sha512-bKGFKyGhOWbZJWahhzeEHK8sxtvchMbKeKYDCGAQBpvVGV4fY9q1m4WBbQb8w/uLHjh1RX/y06V8knXm+JnRCw==","signatures":[{"sig":"MEYCIQDZ2jwWkPzsnCGlPOl6XCwyAW+cGDHM9ec3KNdpyDf/rAIhAKOcC6AreKZ+gDqpDZotEUgMO92DjLz9yIK9VPrwwXVV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.13-rik.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":576805},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"b1edc4f3afc5141feb82e6706555747bc630b437","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account Claude proxy with automatic quota-based rotation","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.13-rik.5_1788631498249_0.47565585503851304","host":"s3://npm-registry-packages-npm-production"}},"1.1.14-rik.1":{"name":"@rikcodes/teamclaude","version":"1.1.14-rik.1","keywords":["claude","anthropic","proxy","load-balancer","multi-account"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.14-rik.1","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"8fd1d5c59e5f37688f83c36731363959f7a985ba","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.14-rik.1.tgz","fileCount":45,"integrity":"sha512-69m5J71kdRfsJaBqw3bdXeZ/QGCUbdZZdjSmh9hfKj9N4ChbM4dWO7zhu1bj+qmsNGuP7JubFp2UIECBZ6OMjA==","signatures":[{"sig":"MEQCIFYLvS7eoBNP7bBZScMxwYo5LmUyPu9fRmgJqQeS66pIAiANqOQlWqxc2yHqHDRCuotmDGddNl6tHHHan0N2mor8yQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.14-rik.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":761459},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"8507dcba99dc67cf3d474ded51a16611a393afe1","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account Claude proxy with automatic quota-based rotation","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.14-rik.1_1788632751060_0.7166638327406931","host":"s3://npm-registry-packages-npm-production"}},"1.1.14-rik.2":{"name":"@rikcodes/teamclaude","version":"1.1.14-rik.2","keywords":["claude","anthropic","proxy","load-balancer","multi-account"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.14-rik.2","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"bd173cd073045c5547a494047dd7a5e64e15c291","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.14-rik.2.tgz","fileCount":45,"integrity":"sha512-ODZ7UCtk5MKZ2RlrOvIbQF8gbrc/5Yt96Y3QIOFxLwkOBHv9/IYZxFSj1wgg1+v85K01Sn1LqRUbEhFIFba0zA==","signatures":[{"sig":"MEYCIQD2xqI2tsfMU4+VO+Q5FGZkGj7/PrOQHByQQKcgPCRJ1gIhAI1dQMhzdp2kCHjdbaot5DYeesebxComdokyh0uSai9L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.14-rik.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":763642},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"1b9f2fd2592b347972d309dd6d769ea4b939271e","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account Claude proxy with automatic quota-based rotation","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.14-rik.2_1788636086269_0.3105672974458584","host":"s3://npm-registry-packages-npm-production"}},"1.1.15-rik.1":{"name":"@rikcodes/teamclaude","version":"1.1.15-rik.1","keywords":["claude","anthropic","proxy","load-balancer","multi-account"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.15-rik.1","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"25f79a5202ff05919d210fda925f7968b852620a","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.15-rik.1.tgz","fileCount":47,"integrity":"sha512-n47pWffd0nwkj4UjNQsb00vAFaZjljoZY7hcHGww3KsUflBFc+jIBc6jOG+d1V2UvvATndeVmZYbAgvhs8Gryw==","signatures":[{"sig":"MEYCIQDwMoQiHaeo1hxUCVPCycGrY/peU49Gupx3em3t2ZSf+QIhANeWqW5PEbMjtaPXsUU8w6C4FR+g9OOV+03mQFoj/U8d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.15-rik.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":826440},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"99e1623a51e3aa88e4fba4f9e43ce4b46987fd2c","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account Claude proxy with automatic quota-based rotation","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.15-rik.1_1788738907180_0.46348712882411314","host":"s3://npm-registry-packages-npm-production"}},"1.1.19-rik.1":{"name":"@rikcodes/teamclaude","version":"1.1.19-rik.1","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.19-rik.1","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"a13dfb319abe416ede92e5ca15cb9615be4d2539","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.19-rik.1.tgz","fileCount":56,"integrity":"sha512-65y6Fd48s0Gioa06F2SHYsKMoEcXQh5/lsoKOb/Apt0qDB2kz+NyJAJY2FtEvqMkO4ditaKH3gFO8kNkwUnomQ==","signatures":[{"sig":"MEUCIHtpVAOLcYsxl95NBOAxf6isCAgejiUtARw5xINHqqD7AiEAmk3gCSNXdd/U2ta5di7VvnogpMoLIeqYXk+cLcFBjjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEgHRMoiz/yNU8NNl6lcFt3f9B0cv8X3Sxji50KwfnNOAiADENAMygMtqeH+dQQkuY/uQO0ZGUUHrdGhk5/ub8PUhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.19-rik.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1087221},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"ce59f636d4de8894107f5ef2adef5b23f5c6c258","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.19-rik.1_1789131963682_0.07640952089261233","host":"s3://npm-registry-packages-npm-production"}},"1.1.19-rik.2":{"name":"@rikcodes/teamclaude","version":"1.1.19-rik.2","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.19-rik.2","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"952afdbf6a208793be743fa267320b608fa4767a","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.19-rik.2.tgz","fileCount":56,"integrity":"sha512-qlfc/CHIXEqZFi0DPEb3VbjWQ/aQKiDn9+GrKjLx5HThrcfXqcb6lhTb10EZNuOSOs9Ctwg6yEW3/LnZ0JZ+KQ==","signatures":[{"sig":"MEUCIHV2SJe66gL7XryVoXktCsRtXB2E35EQ9Xxas8Klj93MAiEAn97wlvxrDIZnE4k8OqBuJflJispUP8iKh/jHqjyyubw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEx6DllOhQOf28xVQxlAINj7DKghG9txH6hYnws8y9FYAiBxO+2277P6WO0WyG/4RePeM/1+MIkAs21B8sNu17uadw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.19-rik.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1089944},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"d5aae51757ea916951567441d8448404b81ecced","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.19-rik.2_1789139862819_0.4828230169322205","host":"s3://npm-registry-packages-npm-production"}},"1.1.19-rik.3":{"name":"@rikcodes/teamclaude","version":"1.1.19-rik.3","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.19-rik.3","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"63e9235540a345c90c8f0b343790653bbc548290","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.19-rik.3.tgz","fileCount":56,"integrity":"sha512-ioy9Bzz0wdUVnyTwid+ypJ+3turQ1q3jgSk73Ip5EuxjYQlCLlZLNB4+pQ083fss6PU3iWp/bMU9//AADzMnlQ==","signatures":[{"sig":"MEYCIQDL9FBsGDV3bzAcSMyFasVbclM9/dWI0LT/KCntBYoz2AIhAIfOJJIVhdz/HAd0dgawMgKVKEI2VsPK0kqZgM6nVYFJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQClyjf+X2djTKf724ejGaBNPlGnnhAmnZDFkgtxWYsCOwIhAIHaoFCzhurgq2m9dhOHEhKKIMXA5i0DaQQmhXAvrQOu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.19-rik.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1092378},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"a65edd396aa2412cedfc48c115cf3dcbe593fa36","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.19-rik.3_1789220455988_0.07366150838779872","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.1":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.1","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.1","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"b37e569ffcc3c2713ad58bbb0bab2fc8f77e0988","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.1.tgz","fileCount":58,"integrity":"sha512-h1GImxn3k+0QMx0PFat4pZ4bI28FUwQvDirBVL7QJDmSMiQZJT0YJ0CIoFUx+Oa26KhAlkXN8E6j1WmXl0D7ag==","signatures":[{"sig":"MEUCIC8X889Zta6ehtNNwpiVjemYNuHslRAC0EMFX33mfvloAiEAh3wlTPSW/uR1Jv03SGR7dAa3OOIPlTRjMDIamwc/ta8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCbn0BlzwjGBFXjWop5VDWQT52QrVV1lqNlWYZzm0Dl0QIgRNPH4kP06gdwfSRFgiEjwmMoKjmgILJxDwT9OKc6Nhw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1128394},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"4daf2fffbf1d08bd8d1a3f1ceab5ba9157912b16","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.1_1789222285956_0.7985961273027884","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.2":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.2","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.2","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"bd1248877e6d9396a8ff716fe342527d3168ff28","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.2.tgz","fileCount":58,"integrity":"sha512-2ezAOl0J8/UxAKgFMv2m+NfDCGObGTPAH2b/o6Lx4c7K9CgZTwa9ODzCgZ2XzAvUJuv2lB8lYcssafpgCyGadA==","signatures":[{"sig":"MEYCIQCVsvURJlv1Jb01IIHykEzSEn50iIKEbLmJN40itB2buwIhAPVRbSFfnTjKM/IO9ldnZMLa6Ja9x6y1yzsSZZzsoJfv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEwaDeKsv7lwThSsCKHjZAoM4/9LNardhE6YtZraQ029AiEA2Jy5nFzvQpTdj9BDWQlrJpNAGuDlWJZnY/o3F5djbyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1129887},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"55a154a7d5cc8e1f1db6b7098ee2b7a5a94943fe","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.2_1789313103826_0.43200869415464505","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.3":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.3","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.3","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"087096899d713adba9b1e4ccd9dde05e4f42f402","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.3.tgz","fileCount":58,"integrity":"sha512-C6YYmGo8XSaHQY/ySpS+49+t+Re3rkRO+8gDb59JGCn9TkT3A3noWzGeU1WXNL5jHp/abYmpdLP7KhbAzweNCA==","signatures":[{"sig":"MEQCIDke8vOFroPVpYuav7t8GoPHoLWiHf23bpGWQIUcY9s8AiA2jm3ME9cYcVx6nuZrCH7ooe/9FgjoZ3mpuqmUL0841g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCmcCISYuL/xE2u1bLy2Cw7eSf6MpZFNtdQlARbc93d+wIhANZfe99VAyyvikYQWv24cJHxBKCDqF2jqyeIHYH3Mv/j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1143222},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"3e8ab0443d3606d9dc778c2e805d408f8af44a2b","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.3_1789469617818_0.05092093072145554","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.4":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.4","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.4","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"0019768eceea2465eed68b6a61ac98457415fff3","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.4.tgz","fileCount":59,"integrity":"sha512-R0TVZdDlxedOj29slPxrtKgSR7XeRA9YElJB9VL8itb3KMQyLsHhFiHBkZ1da638ocxQHHVeExi8tmbERKwunQ==","signatures":[{"sig":"MEYCIQDqWOlAGbQpfcVRX8GnZTRiIi7t/LPzhnJph4ntqIIKNwIhAJabnedMbNEeSov0WqX8kwutZeoUb95pbv11x7Q+0m3M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDS1l0z1wSugazUE9gCMO6kJR70IKLP6+yV2BzT/ZdfvAiBrCb52gPyZCAtatytzUZnSybmfttEA1ygM8ckQD8cSRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1149685},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"afbf659226464e33f62d1f85ed97cd876e5ceb0d","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.4_1789482470814_0.03518969409447226","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.5":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.5","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.5","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"3f35c1e52deb923a40894549b7a2d582878e4f1b","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.5.tgz","fileCount":59,"integrity":"sha512-62EE1G6I3OmqGVjOOTDP60gdNBOKHR0LqLrWcCWsDa0R0UiN06chjO1NSTzOHpH1XdrmE83i/AUiR6lsKgsJKw==","signatures":[{"sig":"MEYCIQDSvY5cB4cpuYODY7isDpNDrbR7NGzE/fe3heTL48A2EwIhAJCul6pY+QLhfLvLvJXyFs8yaHBOfT/fsdCAwX+nHf2R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD0O/PBMrIG90RWpqX9iAzPmJ525cnecQIBmllkRmbfwgIgMNBqAQiE2dqPpOpiVL7CdizGlPAZd7JGnNcr51uUwS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1152128},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"c42d989d922b207b85fdc2b2f54c6c9c371dda99","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.5_1789505415894_0.12993300996124169","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.6":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.6","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.6","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"fde3c72bbaa6454e35c7e5e2c6028eb05b6690ab","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.6.tgz","fileCount":59,"integrity":"sha512-c4vmGvl9NG1gWoHIqDLrc0ls0H22V+lJ7XwmM9ofKG8GgxwccrwjVnXefjR/Fj6atXT9DTLmZjzpq+8hGQvYIA==","signatures":[{"sig":"MEQCIAUn0jQMCB04Kve//hvPD8RohKSe+AStjoT+Pv9IgCA9AiAsuw7lCInVE8Azo1qePRB/tT+5tUWCu5d/TV+q7T9HOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAimUg86mcMUYDjJzNF5n/0mdNr3iTSaiGy0n6yT1VQpAiEAlReB9If8Sl2PhDV3rT1qWeDhtYZBuqo6TAFUyGwG5Os=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1172671},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"c6a499fce76f1d850045b906de25ded322ee7ebc","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.6_1789506762841_0.2210822146362521","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.7":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.7","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.7","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"e2d8fafdb093a743ddc7d64e08188472760cee16","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.7.tgz","fileCount":59,"integrity":"sha512-67s37qNcLXMVFY5ZuGujo7YtbuWZNvKB2EJzcsbbkQRov0qKEL8B67A6cl7AElTOTi3rPid9ZvdP6DH300zQSg==","signatures":[{"sig":"MEUCIQDgjBgyXBq7OTTsNVXh4JzYnvJQ2qOxy0I1Uxz9dftoawIgVKav2RywuYwrlPGpu/kqmdgPubal5WtrKclqzt0MF6Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDFqVLQQ1vU430TJVanf7DzZRNRSkvEap51dG+X9q4oDAiAMka8gUBZDkUIP7UJO6A1zKdl/LGIZ3H/I95UkDSXCXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1174126},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"42ebcb7e834fe70f13cdf8fab4ff09d37a419712","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.7_1789550557819_0.31858613440425665","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.8":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.8","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.8","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"9a80e1de7b5e9c04c4ff3e9428f03c283b7e5eb7","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.8.tgz","fileCount":59,"integrity":"sha512-1jZnm26ode+XSJQx62Zh0FKqpoObAhfNs8/vobeSRcxCaX7ZIkHLttZ38rchpJvRv+y5hp2IAdYt3uL9Uzb0XQ==","signatures":[{"sig":"MEUCIHR+mtUtqJzLeXzowgJp/MEF638ekh8uRLF+0a9TugHnAiEApOk0ZaYU5j/9fQEdq7qlm7bD+XMmm14u/wGgfgEci4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDbuE7Ei3tiU4L0hrftI2rmLkYGTmmRbVZkbD6d7/wyJAiEAu6RW4w8sBoDlLCNuvI1lpcHfP7svT5HpsbATgIkRcHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1180986},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"6e9e6e698ac74f736465b40ffe61ac0ba1af0529","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.8_1789562689782_0.039712931360788684","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.9":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.9","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.9","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"61bb7587f28f2d2826fe45b3841a895667006b36","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.9.tgz","fileCount":59,"integrity":"sha512-beGsMVWAORwjfnfazwKLfNRGvDPBaL78yyRqI1Mm0oDIgxboKiqMCqXdlQp6CLgYmQvifZPW3geg6hf/fTrCjg==","signatures":[{"sig":"MEQCIFJqGE51lDBz5P/gE42dVfXFpnbtXc8EL7F9kCwAx3rYAiAEROiva00iByS/48S9MIIDDskbRT36TWJV/R7O8qc93w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE9SnQjhrCT/zZO8bfeZZgIivekn3XEATKZNblqMYMeTAiAXK/lq5wAhLhgea45SIxD3fAUFMQgM1ECczG5qQlklgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1182957},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"6a5c8d89728465746a499b806d41f573d80144df","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.9_1789572656955_0.752200076316667","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.10":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.10","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.10","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"6dd84697740a30ac4e154d1cc40df5d32215caa1","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.10.tgz","fileCount":59,"integrity":"sha512-tK/hwSJiPX+EXNz7QpPUV5HpApdzUTe9dZtB3pkTrS8gjY7euXJKiA4I4BlOmieOUFtBdRk8ok2DYLUrpJ2CSw==","signatures":[{"sig":"MEYCIQC9QUH4Y+FaNSn7XOIX6TMbiLFj/lDYlgHHb92mYp8IsAIhAK82pBkU1aqqnj5ZzMulGiawM37cEhfKm+fnh4qutg33","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDdp43Ch+Pht43NxAxHteCTq8pSl/Tvnh45XCuTBzBzjgIgCMK3fl2TaTXSzyAZt9zJ5RTcAXE1Vx6mHiquSw1HKEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1184457},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"1621879412f9468d6ed9c8f46b4478262a6b8dc0","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.10_1789631897641_0.5288279074205982","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.11":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.11","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.11","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"8396de89d162506a8f03b463f326b3aed83e6e4c","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.11.tgz","fileCount":59,"integrity":"sha512-GXSdFayrF6WuW3kbY7bpcaZfEu3Gjhd0NSjMV++NzHZQ1fU1pG4H0JlgomlD8oRq7DXvWrUznmUEB4D+uj3Trg==","signatures":[{"sig":"MEQCID90EOhXjDETkQrNKtcwaCZdbVd4GrzlHSevEP5tnD1VAiBiH13093mBxS2AdKBW5NanTC53ZYtDicsU0Id7VjJzGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDxzIuhEKrM42pxpR1Fgdsx2UxcgI10bY4kK3OnrJItwgIhALDc6SKOxDeTCIcA8diXsMnltqgvP6+zKJHmLYXNUQS/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1188861},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"e2b170a4cd449d025891184c6b68c4d1ce3955c0","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.11_1789636430744_0.44568416810485845","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.12":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.12","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.12","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"1541cabcb12ae3156892fcd21bcbd33a2278b5d1","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.12.tgz","fileCount":61,"integrity":"sha512-cvWtP+EQrTXsmakF69eZWhbO0lDkrx2LtQptl9/x2AWcvE6fGuhDAN5rQwvWLwisSaHD86U2fDK5SPsmZ4zwYA==","signatures":[{"sig":"MEYCIQCGC7KajomePH1Ej1GeNxpWTKwAZZKqjHQxEYdv5VcbQQIhAOoJXxDWY+aPeql+fq2mlD2Q34rYiG6Px0IWiba3MbZF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDXtOQIUxGBbFuAGTHJUI4AReghsV0clc0Jw1Eeg+eNzgIhAKxyw4UXmhvUSj/MkbUSySCinRMRiDpGeaZ4jw3KyyA4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1221914},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"acc19b347dd62830668ca3d418c8aefb0427c9e2","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.12_1789657225056_0.9110399632960295","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.13":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.13","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.13","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"5b3bb9984caa222dcbed45edc97c34c03d05ab48","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.13.tgz","fileCount":61,"integrity":"sha512-e/HlHQKAwse+/WiTGD8xTiJhQEz7aaS0XhL+2JLKnXfmHSnoAk7sB+XSmISW2MnFltD6UJwjj/fp/Lxc0c1OYw==","signatures":[{"sig":"MEUCIEyAwW9dpttMb3NQepUSkEpY8gb/2B56ffWGvqaCEcRyAiEA/YjWqpJcJK50qCR8KJAcp/zwsPSysUMDFUO2g7bwW8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF1XBdq2k/ooaDr12L3pJ0G41CNjj8s5DOyr6aIZlwPnAiEAjLxQv/7d9EqzQqdXva7ZNsTdpFEosTL4gu5LTnzVqpQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1230918},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"eb2b89d4842ac05042e1e74fdf39bead5c40d6b4","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.13_1789675144086_0.7838896062694796","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.14":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.14","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.14","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"1df42a2d7d2fee5462bb364e5a14350ffac09cda","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.14.tgz","fileCount":61,"integrity":"sha512-OQI49gwpIuLwEDIuLYXxXJFXTNhzkKzHu2I4Sxg8bMOmLtmosH2RMx0d1AZbzM+EgATpoFoyBic7Re/XRdxMDQ==","signatures":[{"sig":"MEQCIBl3xMlsiV86ESr225nJZdMGPUfuGh4282lRYJ66AY2KAiAK+6aQIF8CXUDGX8QDaaSbEcez31aBFMhdFwBXWU+XJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGe29SKX7a/CA2E4Vkdjpluo1XPSyDO216KHDIrJHAjJAiEAha4XcQefVW1u2sSAWnYMMfphx6TtJTNEWEmq7vm+Z9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1238968},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"5fea3e3bfccebb6d08dac3ddbe5cc02730e79029","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.14_1789730713443_0.10689048794228384","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.15":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.15","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.15","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"33c2d75be23bb16e0ce8320014d08174906e7794","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.15.tgz","fileCount":62,"integrity":"sha512-PrjxEEZ6FM/19U0y4nHA+ldk93lfHSWN9dG2ykfRi3G7Qj4P+Cb4w5c3vzyIlQqeQxZzYHhfSGDt6VQNaba/aA==","signatures":[{"sig":"MEUCIQDevi5UADwrlTiyvTnCDtZJFuitsZ17ornJ3/m40ZR/VwIgdc8bYr/gGvPQ5tuNaLepfMQdquXWkhGkBRT8SF6zznQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCG6xBszPZg0P3XAydqIOasrP5+WD/itucFLVBujM6ahwIgIEKdMuwyAqY3J7cDJva5W3WWKHpZKEoo8WF8eFlKSIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1271516},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"2401ca73b1c553d0b4d6cbdd1ab211d889d4ed58","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.15_1789820113400_0.6976665138993452","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.16":{"name":"@rikcodes/teamclaude","version":"1.1.20-rik.16","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"license":"MIT","_id":"@rikcodes/teamclaude@1.1.20-rik.16","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"homepage":"https://github.com/rikbrown/teamclaude#readme","bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"bin":{"teamclaude":"src/index.js"},"dist":{"shasum":"b8bcf1f5e7545c84bddd377bad77239275a77d2d","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.16.tgz","fileCount":63,"integrity":"sha512-hGRLky376Xa4uGXl2x79Oytp17cFfxes6MqlUlsAFxGx5wrqPp8xWGFzSOW/GbQCe+OhSySv1Hk6YCU3RFW24Q==","signatures":[{"sig":"MEUCIQDECi1p3mmrOuXGW/OKZzoRlDOtbjE738VydCLPJYp5gAIgW90y4qRaJKSueuAb1LhwtEqnsy3cnKob5KANuOQVRIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDsaIQJN20awr3Kbc5G/wzPlTcYT7JbFxZlwMFS2c8DJgIgBxM97TW3OBUYRXRQoaFnq/J1+xXkR6wxpKmtk9TOQTc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1338122},"main":"src/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"cfeb328b671c8acb3e4272267d7c7200c2ded80d","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"tmp":"tmp/teamclaude_1.1.20-rik.16_1789835167521_0.2505531476906424","host":"s3://npm-registry-packages-npm-production"}},"1.1.20-rik.17":{"_id":"@rikcodes/teamclaude@1.1.20-rik.17","bin":{"teamclaude":"src/index.js"},"bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"dist":{"shasum":"69ad42b9db8233ab50123d3713454f627b22a8ea","tarball":"https://registry.npmjs.org/@rikcodes/teamclaude/-/teamclaude-1.1.20-rik.17.tgz","fileCount":64,"integrity":"sha512-O1s5Rcp9LcEV+zUuceSXQxQuEUlrK12ao8J96Z+OSYuJIg2V/FlD0A6VL58YvFoPSpdAFX74zaIHbOgttDpMAg==","signatures":[{"sig":"MEUCIGxPajDbc39gGG+EuvW7mxTaReZ+YmFqadu6KGqxT0y2AiEA9PRg16+PABV6zH7p8LoOwMDc2QTT5ll8CJJTzXSU7yM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDf8dL281uwua73begrkrfj3YhtgHPBVxmDxap3524+vAiBOnHFcWHl0wy3gfGn4fhXk0qf0H3VfPVGy0E4oWE7SGQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@rikcodes%2fteamclaude@1.1.20-rik.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1374730},"main":"src/index.js","name":"@rikcodes/teamclaude","type":"module","engines":{"node":">=20.0.0"},"gitHead":"769e788aa4d6ca7d29819333333afcfff8e2895c","license":"MIT","scripts":{"lint":"eslint .","test":"node --test --test-timeout=120000","start":"node src/index.js","typecheck":"tsc -p tsconfig.json","typecheck:strict":"node scripts/typecheck-strict.mjs"},"version":"1.1.20-rik.17","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28fe3ba9-a47d-4a56-b648-ff11efe6bb65"}},"homepage":"https://github.com/rikbrown/teamclaude#readme","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"_npmVersion":"12.0.2","description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","directories":{},"maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","typescript":"5.9.2","@types/node":"20.19.43"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/teamclaude_1.1.20-rik.17_1789859101504_0.47036613211268885"}}},"time":{"created":"2026-08-28T15:19:13.972Z","modified":"2026-09-19T23:05:01.937Z","1.1.13-rik.1":"2026-08-28T15:19:14.301Z","1.1.13-rik.2":"2026-08-30T01:23:16.551Z","1.1.13-rik.4":"2026-08-31T09:04:11.624Z","1.1.13-rik.5":"2026-09-05T18:04:58.409Z","1.1.14-rik.1":"2026-09-05T18:25:51.226Z","1.1.14-rik.2":"2026-09-05T19:21:26.432Z","1.1.15-rik.1":"2026-09-06T23:55:07.359Z","1.1.19-rik.1":"2026-09-11T13:06:03.821Z","1.1.19-rik.2":"2026-09-11T15:17:42.900Z","1.1.19-rik.3":"2026-09-12T13:40:56.078Z","1.1.20-rik.1":"2026-09-12T14:11:26.065Z","1.1.20-rik.2":"2026-09-13T15:25:03.931Z","1.1.20-rik.3":"2026-09-15T10:53:37.923Z","1.1.20-rik.4":"2026-09-15T14:27:50.917Z","1.1.20-rik.5":"2026-09-15T20:50:15.995Z","1.1.20-rik.6":"2026-09-15T21:12:42.940Z","1.1.20-rik.7":"2026-09-16T09:22:37.993Z","1.1.20-rik.8":"2026-09-16T12:44:49.932Z","1.1.20-rik.9":"2026-09-16T15:30:57.079Z","1.1.20-rik.10":"2026-09-17T07:58:17.736Z","1.1.20-rik.11":"2026-09-17T09:13:50.853Z","1.1.20-rik.12":"2026-09-17T15:00:25.167Z","1.1.20-rik.13":"2026-09-17T19:59:04.183Z","1.1.20-rik.14":"2026-09-18T11:25:13.579Z","1.1.20-rik.15":"2026-09-19T12:15:13.493Z","1.1.20-rik.16":"2026-09-19T16:26:07.622Z","1.1.20-rik.17":"2026-09-19T23:05:01.623Z"},"bugs":{"url":"https://github.com/rikbrown/teamclaude/issues"},"license":"MIT","homepage":"https://github.com/rikbrown/teamclaude#readme","keywords":["claude","anthropic","claude-code","codex","openai","chatgpt","deepseek","proxy","load-balancer","multi-account","quota","rate-limiting","cli"],"repository":{"url":"git+https://github.com/rikbrown/teamclaude.git","type":"git"},"description":"Multi-account proxy for Claude Code and Codex: pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota","maintainers":[{"name":"rikbrown","email":"npm@rik.codes"}],"readme":"# TeamClaude\n\n> **Fork notice (rikbrown).** This fork adds two features on top of\n> [KarpelesLab/teamclaude](https://github.com/KarpelesLab/teamclaude), currently based on upstream 1.1.20:\n>\n> - **[OpenAI models via a Codex sidecar](docs/openai.md)** (`sidecars` + `customModels`, opt-in):\n>   route `gpt-*` requests through a supervised local translating proxy to a ChatGPT subscription,\n>   under real model names — `/model gpt-5.6-sol` in the picker and typed, correct 272k context\n>   sizing, and dispatchable GPT subagents — while Claude traffic stays on the Claude accounts.\n> - **[Burn-rate projection](docs/quota.md#burn-rate-projection)** (`projection`, on by default): sample each\n>   bucket's consumption over a rolling window and tag every account row with whichever window binds\n>   first — `Ses TTL 38m` when it runs out before it resets, `Wk 22% unspent` when the reset arrives\n>   first and that much expires. A readout only: no selection code reads it.\n>\n> Setup and use of each: [Fork features](#fork-features).\n>\n> Published as [`@rikcodes/teamclaude`](https://www.npmjs.com/package/@rikcodes/teamclaude); self-update\n> tracks that package, so installs of this fork can never be replaced by an upstream release.\n>\n> ```bash\n> npm install -g @rikcodes/teamclaude\n> ```\n>\n> Already have upstream installed globally? Run `npm uninstall -g @karpeleslab/teamclaude` first —\n> both packages provide the `teamclaude` command.\n>\n> Branch: `rik/main`. Everything else matches upstream.\n\n[![CI](https://github.com/rikbrown/teamclaude/actions/workflows/ci.yml/badge.svg?branch=rik/main)](https://github.com/rikbrown/teamclaude/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/@rikcodes/teamclaude.svg)](https://www.npmjs.com/package/@rikcodes/teamclaude)\n[![node](https://img.shields.io/node/v/@rikcodes/teamclaude.svg)](https://nodejs.org)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\nMulti-account proxy for [Claude Code](https://claude.ai/claude-code) and [Codex](https://github.com/openai/codex): it pools Claude Max, ChatGPT/Codex, API-key and third-party backend accounts, and rotates on quota.\n\nIt sits between the coding agent and the provider's API, holds several accounts, and moves to the next one when the current account gets close to its session or weekly limit. The session keeps running instead of stopping on a 429. Claude accounts serve Claude Code, Codex accounts serve the Codex CLI, and both pools share one proxy.\n\n![TeamClaude TUI](screenshots/teamclaude.png)\n\n## Quick start\n\nNode.js 20+ required.\n\n```bash\nnpm install -g @rikcodes/teamclaude\n\nteamclaude login     # browser OAuth, run it once per account\nteamclaude server    # start the proxy, shows the TUI\nteamclaude run       # in another terminal: Claude Code through the proxy\n```\n\nAlready logged into Claude Code? `teamclaude import` takes its credentials instead of a fresh OAuth round. A container image is on GHCR — see [Running in a container](docs/usage.md#running-in-a-container). API keys, and one email holding accounts in several orgs, are covered in [docs/accounts.md](docs/accounts.md).\n\n## What it does\n\n- Rotates to the next account when the 5h session or 7d weekly bucket reaches the threshold (98% by default), preferring the account whose weekly quota resets soonest.\n- Projects each quota window's burn rate against its reset, so a row says `Ses TTL 38m · Wk 22% unspent` instead of leaving you to read it off a bar (`projection`, this fork).\n- Tracks the per-model weekly cap separately, so an account out of Fable quota is skipped for Fable requests and still serves Opus and Sonnet.\n- Tells a spent quota bucket apart from a per-minute rate limit and only rotates on the first one. Rotating on a rate limit would just move the burst to the next account and drop the warm cache, so it paces the same account instead.\n- Paces requests onto a freshly switched account, so a herd of agents failing over at the same instant doesn't throttle it and cascade down the fleet.\n- TUI with quota bars, reset countdowns, activity log, and settings you can change while it runs, including adding and removing accounts.\n- Catches hardcoded `api.anthropic.com` endpoints (the Claude Design MCP, for one) through a local MITM forward proxy, not only what `ANTHROPIC_BASE_URL` covers.\n- Holds the request open until quota resets instead of returning 429 when every account is spent, so an unattended run finishes on its own (`holdSeconds`, off by default).\n- Refreshes OAuth tokens before they expire and writes them back to config. Client refreshes pass through untouched.\n- Pools OpenAI Codex subscriptions alongside Claude accounts (experimental): the Codex CLI is routed through the same proxy, by config or transparently through the MITM proxy, and rotates on its own quota.\n- Takes any Anthropic-compatible API (DeepSeek, GLM) as a low-priority fallback for when the Claude accounts are done.\n- Serves OpenAI models next to Claude ones — a supervised local sidecar translates `gpt-*` requests onto a ChatGPT subscription, with real model names in `/model` and GPT subagents dispatchable from a Claude parent (`sidecars` + `customModels`, this fork).\n- Ships those subagents as a Claude Code plugin: one named agent per model **and effort level**, which the Agent tool's `model` parameter cannot express (`/plugin install rikclaude-agents@rikclaude`, this fork).\n- No dependencies. Node built-ins only.\n\n## Everyday commands\n\n```bash\nteamclaude accounts          # accounts with tier and token status\nteamclaude status            # live proxy status, needs a running server\nteamclaude disable <name>    # pause an account without removing it\nteamclaude priority <name> 1 # rotation order, lower = preferred\nteamclaude alias --install   # make plain `claude` go through the proxy\nteamclaude help              # everything else\n```\n\nFull reference: [docs/usage.md](docs/usage.md).\n\n## Configuration\n\nConfig is at `~/.config/teamclaude.json` (`$XDG_CONFIG_HOME` honoured) and is meant to be hand-editable. A proxy API key is generated on first use. Observed quota goes to a separate `teamclaude.state.json` next to it, safe to delete since quota gets re-learned from traffic.\n\nEvery field, plus environment variables and network tuning: [docs/configuration.md](docs/configuration.md).\n\n## How it works\n\n1. Claude Code talks to the local proxy instead of `api.anthropic.com`.\n2. The proxy picks an eligible account, injects that account's real token, and rewrites `account_uuid` in the body to match.\n3. `anthropic-ratelimit-unified-*` response headers feed the session (5h) and weekly (7d) quota view, which survives a restart.\n4. At the threshold, rotation moves on. On a quota 429 the request is resent on another account, so the client never sees the limit while some account still has headroom.\n5. Expiring tokens, transient network errors and client token refreshes are handled inside the proxy, so none of them interrupt the session.\n\nStep-by-step lifecycle: [docs/routing.md](docs/routing.md#request-lifecycle).\n\n## Fork features\n\nHow to set up and use the features in this fork. Everything else in this README is upstream behaviour.\n\n### OpenAI models via a Codex sidecar\n\nA Claude Code session can use OpenAI models alongside the Claude accounts. They are billed to a ChatGPT Plus/Pro subscription and use their real model names in the same session. TeamClaude does not translate the wire format itself. A local **sidecar** does this: [raine/claude-code-proxy](https://github.com/raine/claude-code-proxy) speaks `/v1/messages` on the front and the Codex Responses API on the back. TeamClaude starts and supervises this process. It sends every `gpt-*` request to the sidecar and keeps every other request on the Claude accounts.\n\n**1. Install the sidecar and log it into your ChatGPT account** (one time):\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/rikbrown/claude-code-proxy/rik/main/scripts/install.sh | bash\nclaude-code-proxy codex auth login\n```\n\nThis installs [rikbrown/claude-code-proxy](https://github.com/rikbrown/claude-code-proxy), a fork of the reference sidecar. Take the fork rather than upstream's Homebrew build: it forwards Codex's quota headers, without which every bar on the account reads `unknown`, and it lets you raise the 60-second header timeout that otherwise kills a long reasoning turn. See [Timeouts](docs/openai.md#timeouts).\n\n**2. Connect it** — add four pieces to `~/.config/teamclaude.json`:\n\n```json\n{\n  \"sidecars\": [\n    { \"name\": \"codex\", \"command\": [\"claude-code-proxy\", \"serve\", \"--no-monitor\", \"--port\", \"18765\"] }\n  ],\n  \"accounts\": [\n    { \"name\": \"codex\", \"type\": \"oauth\", \"accessToken\": \"unused-local-sidecar\",\n      \"upstream\": \"http://127.0.0.1:18765\", \"priority\": 100 }\n  ],\n  \"routes\": [\n    { \"name\": \"codex\", \"match\": [\"gpt-*\"], \"accounts\": [\"codex\"] },\n    { \"name\": \"anthropic\", \"match\": [\"*\"], \"accounts\": [\"your-claude-account\", \"...\"] }\n  ],\n  \"customModels\": [\n    { \"model\": \"gpt-5.6-sol\",   \"label\": \"GPT-5.6 Sol\",   \"contextTokens\": 272000 },\n    { \"model\": \"gpt-5.6-terra\", \"label\": \"GPT-5.6 Terra\", \"contextTokens\": 272000 },\n    { \"model\": \"gpt-5.6-luna\",  \"label\": \"GPT-5.6 Luna\",  \"contextTokens\": 272000 }\n  ]\n}\n```\n\n- `sidecars` — the process that TeamClaude owns. It starts with the server, restarts with backoff after a crash, and stops on shutdown. Its pid, restart count and latest stderr lines are in `teamclaude status --json` under `sidecars`.\n- `accounts` — the sidecar as a [third-party backend account](docs/accounts.md#third-party-backend-accounts). The token is a placeholder because the sidecar uses its own Codex login for authentication. `priority: 100` is the convention for third-party backends. The routes determine what reaches it.\n- `routes` — sends `gpt-*` to the sidecar. **Keep the catch-all `*` route.** Without it, the sidecar joins the exhaustion-fallback pool. A spent Claude fleet would then silently send Claude-model requests to the sidecar, which maps `claude-*` names onto GPT models. With the route, a request can reach a GPT model only when it asks for one by name.\n- `customModels` — the rows that make the models visible to Claude Code (next section).\n\n**3. Restart the server.** `teamclaude status --json` should show the sidecar as `running`. If it enters a crash loop, `stderrTail` explains why — the usual cause is that the sidecar is not logged in.\n\n#### How models get into Claude Code\n\nClaude Code offers only models that it knows, and it does not know `gpt-*`. `customModels` closes this gap. Each row contains a model id that the proxy can serve, an optional picker label and description, and the model's context window.\n\nAt launch, `teamclaude run` — and the `claude` alias, which passes through `run` — gives these rows to Claude Code:\n\n| Row field | Where it ends up |\n| --- | --- |\n| `model`, `label`, `description` | A `/model` picker row under the **real** model id (`--settings`), so `/model gpt-5.6-sol` works picked or typed |\n| `model` | Nothing by default. Set `\"customModelAgents\": true` and each row also becomes a plain subagent named after the model (`--agents`), so \"dispatch a `gpt-5.6-terra` subagent\" works from a Claude parent. Off because those agents pin no effort and outrank every agent file on disk — prefer the effort-pinned [plugin agents](docs/agents.md) |\n| `contextTokens` | `CLAUDE_CODE_MAX_CONTEXT_TOKENS`, set to the largest value across rows, so Claude Code compacts at the real window instead of assuming 200k |\n\nFor tools that spawn `claude` themselves, `teamclaude env` can set only environment variables. It carries the window and `ANTHROPIC_CUSTOM_MODEL_OPTION` for the **first** row. Agents do not depend on either mode: they are read from disk, whether they come from the [`rikclaude-agents` plugin](docs/agents.md) or from a `~/.claude/agents/<name>.md` you write with `model: gpt-5.6-terra` in its frontmatter.\n\nEach request is routed by the model name in its body, so one session can freely mix models: use `claude --model gpt-5.6-sol` for a whole session, `/model gpt-5.6-sol` during a session, or a Claude parent that dispatches a GPT subagent.\n\n**To add a model:**\n\n1. Check that your sidecar build lists it: `curl -s http://127.0.0.1:18765/v1/models`. The sidecar has its own allow-list and rejects any id that it does not know, regardless of the TeamClaude configuration. Upgrade the sidecar if the id is missing.\n2. Add a `customModels` row. Codex publishes the window for each model as `context_window` in `~/.codex/models_cache.json`; copy it to `contextTokens`.\n3. Start a new `teamclaude run` session. The rows are read at launch, so you do not need to restart the server. If you upgraded the sidecar binary, restart the server — or send `SIGTERM` to the sidecar process and let the supervisor restart it with the new binary. The first `SIGTERM` only starts a graceful shutdown, which a request in flight holds open; send it a second time to force the exit.\n\nClaude Code prints one `[claude-code:unrecognized_model]` line to stderr for each custom model. This is expected; suppressing it would lose the correct context window. The quota bars for the sidecar account show `unknown` unless the sidecar forwards Codex's rate-limit headers, which the fork build in step 1 does and upstream's does not — see [Quota](docs/openai.md#quota). Keep the sidecar on loopback.\n\nThe sidecar appears under the account table as a `⚙` line rather than a row because it holds no subscription, is the only account its route can use, and never rotates. The line also shows its supervised process state (`up pid 98018`, or `down (code 1) 3 restarts`), followed by what the sidecar reports about itself while it is up (`2 active 3 errors`, read from its own `/monitor` endpoint; each is omitted at zero, and both are omitted if that endpoint does not answer).\n\n#### Several ChatGPT accounts\n\n> **Read the [terms of service](docs/openai.md#terms-of-service) before setting this up.** OpenAI's Terms of Use prohibit rotating ChatGPT subscriptions past a spent window, and account suspension is a plausible consequence. This is a sharper trade-off than pooling Claude subscriptions because the first-party client lets you switch Claude subscriptions by hand.\n\nOne sidecar holds one ChatGPT login, so GPT requests do not rotate and its quota belongs to a login that TeamClaude does not own. Point the sidecar's **back leg** at TeamClaude so native Codex accounts serve it instead:\n\n```\nClaude Code ──▶ TC /v1/messages (gpt-*) ──▶ sidecar account ──▶ sidecar translates\n            ──▶ TC /backend-api/codex/responses ──▶ ChatGPT account pool ──▶ chatgpt.com\n```\n\nEach hop is classified by its path, and the subscription partition keeps the pools apart: on the way in only the sidecar account is eligible, on the way back only the ChatGPT accounts. One route lists both.\n\n**1. Add the accounts** — run `teamclaude login --codex` once for each one. A Codex login takes its email as its name. Your Anthropic account probably uses the same name, so the Codex name gets a prefix to keep it unambiguous:\n\n```\n$ teamclaude login --codex\nNamed \"codex:you@example.com\" — \"you@example.com\" is already an account on another provider.\n```\n\n**2. Redirect the sidecar** and stub its own login, so TeamClaude supplies the credential instead:\n\n```json\n{ \"name\": \"codex\",\n  \"command\": [\"claude-code-proxy\", \"serve\", \"--no-monitor\", \"--port\", \"18765\"],\n  \"env\": {\n    \"CCP_CODEX_BASE_URL\": \"http://127.0.0.1:3456/backend-api/codex/responses\",\n    \"CCP_CODEX_TRANSPORT\": \"http\"\n  } }\n```\n\n```bash\ncd ~/.config/claude-code-proxy/codex\ncp auth.json auth.json.bak                      # the real login — keep it\necho '{ \"access\": \"delegated-to-teamclaude\", \"refresh\": \"\", \"expires\": 4102444800000 }' > auth.json\n```\n\nThe sidecar refuses to start with an empty store but never refreshes a far-future token, and TeamClaude replaces both the bearer and the account header on the way out. Leave `accountId` unset so none of the sidecar's own identity can leak.\n\n**3. Put them all on the `gpt-*` route**, sidecar included, and give each account a `headersTimeoutMs` — the 120s fleet default is shorter than a long reasoning turn:\n\n```json\n{ \"name\": \"codex\", \"match\": [\"gpt-*\"],\n  \"accounts\": [\"codex\", \"codex:you@example.com\", \"codex:you@work.example\"] }\n```\n\n**4. Restart the server.** A `sidecars[].env` change is read once at startup, so a reload is not enough.\n\nThree details matter:\n\n- **Leave the sidecar account on the route.** It can look removable because it is not a subscription or an account row, but it is the routing target for the way *in*. Without it, every `gpt-*` request fails to find an account while `teamclaude status` shows two healthy ChatGPT accounts on the route.\n- **`CCP_CODEX_TRANSPORT=http` is required.** A WebSocket upgrade is relayed with the caller's own headers and draws no account, so the WebSocket transport cannot be pooled.\n- **Do not reuse a name across providers.** Routes address accounts by name, so a shared name admits both — including the Claude account that cannot serve `gpt-*`, which outranks the sidecar on priority and wins. TeamClaude warns at startup when it sees one.\n\nOne thing differs from the single-account setup: each turn appears **twice** in the activity list, once per hop. Tokens and quota bars both come from the second hop, where the subscription is, so they are booked against the ChatGPT account that served. The sidecar account holds a stub login and spends nothing of its own, so it reads `N req · 0 tok` — booking it as well would double every figure.\n\nFull details, including what happens to quota on each hop: [Several ChatGPT accounts behind one sidecar](docs/openai.md#several-chatgpt-accounts-behind-one-sidecar).\n\n### Burn-rate projection\n\nThis feature is on by default. Each account row shows which window binds first: `Ses TTL 38m` when the session bucket runs out before it resets, or `Wk 22% unspent` when the weekly reset arrives first and that amount of quota expires. This is a readout only; no selection code reads it. Tune or disable it with `projection: { enabled, windowMinutes, wasteFloor }`. Details: [Quota](docs/quota.md#burn-rate-projection).\n\n## Documentation\n\n| Page | Contents |\n| --- | --- |\n| [Accounts](docs/accounts.md) | OAuth login, import, API keys, multiple orgs, Codex accounts, third-party backends |\n| [Usage](docs/usage.md) | Server and TUI, running Claude Code, shell alias, command reference, logging |\n| [Routing](docs/routing.md) | Rotation, the two kinds of 429, storm control, model routes, session spreading, pinning, prompt cache |\n| [Quota](docs/quota.md) | Quota probe, keep-warm, holding on exhaustion |\n| [OpenAI models](docs/openai.md) | Codex sidecar setup, custom model registration, GPT subagents, limitations |\n| [Subagents](docs/agents.md) | The `rikclaude-agents` plugin: effort-pinned agents per model, installing it, seeding it for a team |\n| [Configuration](docs/configuration.md) | Config format, every field, environment variables, network tuning |\n| [Proxy modes](docs/proxy-modes.md) | MITM forward proxy, sx.org residential egress |\n| [Remote host](docs/remote.md) | Running the fleet on an always-on box: reaching it, moving the accounts, service supervision, pointing clients at it |\n| [Compliance](docs/compliance.md) | Terms of service notes |\n\n## Releasing this fork\n\nVersions are `<upstream base>-rik.<n>`, e.g. `1.1.19-rik.1`. The self-updater orders that tail and installs only that shape (`x.y.z` or `x.y.z-rik.N`), so every publish reaches existing installs within a day.\n\n1. Rebase onto the upstream release you want as the base, if any.\n2. Bump `version` in `package.json` and commit.\n3. Push to `rik/main` — the Publish workflow runs the tests, publishes to npm, and cuts a GitHub release.\n\nThe workflow authenticates with npm Trusted Publishing (OIDC), which needs a one-time setup on npmjs.com: `@rikcodes/teamclaude` → Settings → Trusted Publisher → GitHub Actions, owner `rikbrown`, repo `teamclaude`, workflow `publish.yml`. Until that exists, publish by hand:\n\n```bash\npnpm publish --publish-branch rik/main --tag latest --otp=<code>\n```\n\nA prerelease version always needs an explicit `--tag`, and `latest` is the tag the self-updater reads.\n\n## Security\n\nThis repository is a personal fork and is **not** the canonical project. Upstream's canonical sources are unchanged: the [KarpelesLab repository](https://github.com/KarpelesLab/teamclaude) and the [`@karpeleslab/teamclaude`](https://www.npmjs.com/package/@karpeleslab/teamclaude) npm package.\n\nThis fork is distributed as this repository and the [`@rikcodes/teamclaude`](https://www.npmjs.com/package/@rikcodes/teamclaude) npm package, published by `rikbrown`. The separate package name means it can never be installed over the canonical one.\n\nNeither is **ever** distributed as a downloadable binary archive, so be wary of any copy that bundles a `.zip` and tells you to extract and run it. See [SECURITY.md](SECURITY.md) for details and how to report issues.\n\n## Compliance\n\nTeamClaude is a local proxy holding your own credentials and driving your own Claude Code CLI. How that lines up with Anthropic's terms, including the multi-subscription question people ask most, is written up in [docs/compliance.md](docs/compliance.md). Not legal advice.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","readmeFilename":"README.md"}