{"_id":"@booplex/bpx-council","_rev":"14-1bc42724185a0196e119753f1c91f2f9","name":"@booplex/bpx-council","dist-tags":{"latest":"2.1.0"},"versions":{"0.0.0":{"name":"@booplex/bpx-council","version":"0.0.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@0.0.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"b69bb52376b4d35b57dbf107d6da1cc957491ffa","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-0.0.0.tgz","fileCount":17,"integrity":"sha512-TdI9KEJ6P1jFW6jg2wRv90qv250vovqlpQuYUx2uFEUaSKuklI14cPvxq7+uqjLDwnIlkcuv/IcA6Wqvl3JXzg==","signatures":[{"sig":"MEUCIEijklC/Npa9jbpJdSDr8hnlmZDCmwnq6QdQRPTHu+LhAiEA2LNpiKzN7mfCVAAm9bB9mctKiNYyKwsNzaEMxQwm3kM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28389},"type":"module","gitHead":"81bfd5f452cb46182097aca53904b343d2949a96","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc"},"_npmUser":{"name":"gabelu","email":"gabi.florea@gmail.com"},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"10.9.4","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_0.0.0_1784414968631_0.829564108366122","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@booplex/bpx-council","version":"1.0.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.0.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"0bf7fd33718c11b2d2f854bab24edfab303c5140","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.0.0.tgz","fileCount":23,"integrity":"sha512-bMCk7RIWcb0iy7ppQRQbAFnGjrO/wNz0S/zvDX7c20XtqyjzR8DxoGFMlz15r9mCJI6+CTe5ErlCTWRUGLm6Og==","signatures":[{"sig":"MEYCIQCj7usIstN3eKCXdj48YEjltrYKcydbiPxU9Zn6zEZ5lgIhANeMN0KvcQmmi6G+8D6nsY6rcYbN1urMl8w0SFd+zFIk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53536},"type":"module","gitHead":"1e04f8e404c3d524b04d3552588ba8c2ac740b80","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc"},"_npmUser":{"name":"gabelu","email":"gabi.florea@gmail.com"},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"10.9.4","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.0.0_1784478635332_0.60153821813753","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@booplex/bpx-council","version":"1.1.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.1.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"7848a73171d7503a61ec9730f2af4478c260b49d","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.1.0.tgz","fileCount":25,"integrity":"sha512-+lBNEXEG7oPKwsQR1yJ+8vCwgm72NeoPl+6E8kC/SKDO+btHk92NN86FOsD9/V+jWg1Fr/ixiag968ND0u+pjg==","signatures":[{"sig":"MEQCIBS1eZ/U6gB4guc7RVGAOrULAkBm9iZNv0/ng2GMI3d+AiBPRClWLSh+WXFuQ2D25prCeJ7ZrngsL36MXW3znlmD/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":67809},"type":"module","gitHead":"c02ca8dbe31f75677319970b3347c6ea859d4fe9","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.16.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.1.0_1784628663755_0.21746985428423504","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@booplex/bpx-council","version":"1.2.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.2.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"ebbc499a5bba1aa8924098c19ef23effd6498537","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.2.0.tgz","fileCount":33,"integrity":"sha512-jOaQ+MJvHE3VXpeAE55fa+wFa2GL05pUm3npZgIv+x3yhm+lARxS4e2bxtu1k1twyL6XmQGoOaHJJj2GmRsliQ==","signatures":[{"sig":"MEYCIQCxGFcYT9jU/dSJ2VYFwZ6NyDZgvgE6bVCiX9l2fGNRAgIhAKC7CfRPEXOylCRtnil5vht9zL3PjUYJosgE/J/4k5C0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":138851},"type":"module","gitHead":"430dc9661b661da265da35716bc8fa347e522b05","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.16.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.2.0_1784714174310_0.08830284172046388","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@booplex/bpx-council","version":"1.3.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.3.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"b1f38ddb2342eb232af8303518c8acc502660d20","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.3.0.tgz","fileCount":38,"integrity":"sha512-Z/DppGV+7pc4zdp71k7ipiRjF+beGBnjGHKrPh4d7XhM5T08uTTJHfHuaxWpilbt7jLzOapJM/pljX0tIz2WZw==","signatures":[{"sig":"MEQCIE20sMQkZUxhMvCPk0ZW4rH5rKNRsHz0KjCla+m/0u/UAiAqdQ826Z/N79kYTk4oTJT0h04LnHEsldMaqtmy6h7LcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":156530},"type":"module","gitHead":"ea309ca1604575a707344936692b627212dfcb79","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.16.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.3.0_1784728435297_0.8122653301003169","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@booplex/bpx-council","version":"1.4.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.4.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"0a169dff977d1e9c0698351f8f49b56b4f651f6c","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.4.0.tgz","fileCount":40,"integrity":"sha512-+jbHQJXKPojgPf4SerrNnE5rERsMkRGFJDk4QEKBnaqqmXYcU9DByDqTIcmKZKjtuDTxft+cxi7qloqOaU7hFw==","signatures":[{"sig":"MEUCIQDO1fRoMTxYZXEJIsNoJnvM2gO1KwL2XfOp7ehexkFbBgIgVXZUC9DxX3oCQVnBvXMq7NeqaU2/uYlyLgymHYlIAZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":166029},"type":"module","gitHead":"719e56a22f2b666320bfb4c7295c8aca11dd4cc8","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.16.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.4.0_1784732553317_0.8067349551109322","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@booplex/bpx-council","version":"1.5.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.5.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"94191e22f31743c72940929c53d28ba6f84a3476","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.5.0.tgz","fileCount":42,"integrity":"sha512-Y/PULJro7/gY3jnEJRNPP0ZQdTYuVC9sz6TOpd80jPek7WB4q3J6X6Wu+iwXCA7NPe8Ymf+QgaI1FyYxGlosBQ==","signatures":[{"sig":"MEUCIGRTgewz4jogxc1+LMMjdHtJDB/dR1b2XH8WP4+YBdeTAiEAwxKlCQFH/jtFtODRVayANSB4yPH4Gp61txRuRiSOFw0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":169602},"type":"module","gitHead":"abcb6549edebfcc8fd8b44e278fcb4979d2e383b","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.16.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.5.0_1784735809371_0.2554220554550175","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@booplex/bpx-council","version":"1.6.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.6.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"a8536cd12c28c8e2bafc798e52127a5855e63b93","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.6.0.tgz","fileCount":54,"integrity":"sha512-dhWEhXu2GBiP77d05llxIpe7AZDqTyFbvntZbbIs3CnKXe0s1Ekm2T0HF52xEBDdxgPCakf0ZufR2KX55CoKPQ==","signatures":[{"sig":"MEYCIQCyyxVN8nB4qgCwXIjHQyrMePEqflKliiXi7blKK1U/JgIhAOJ9p3XSpuSU4HIyTi26ZOyff6bA3NNI+ZMRC6BzgKsb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":234060},"type":"module","gitHead":"1364d534689ef6002d3edef0fbe2fc73fce5d599","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.16.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.6.0_1785692968905_0.2126061820135947","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@booplex/bpx-council","version":"1.6.1","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.6.1","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"7bcea7d21d92c1d8c339c1f2dd6e071cbb11571f","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.6.1.tgz","fileCount":60,"integrity":"sha512-HU17vX4gpLM3edwuM1bstsj+eX6BZukfvi7JreS4ZG3rLa20Y65s8Dq4ykbgLEUPM4DR6gI4/PUk14BYBtOCKw==","signatures":[{"sig":"MEUCIGvN6PZwacG6BC6a9S0b3/WWksFTqQA93dB75mTcYGseAiEAuPFzQ55RuaEvSN+h/vojFFxQ84xeIqkKCIWgmZNfKWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":256460},"type":"module","gitHead":"9b4e26e2e5a039e4389ca567050c7bd470a42210","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.16.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.6.1_1785792763283_0.6824280978165762","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@booplex/bpx-council","version":"1.7.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.7.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"97fb1af16342becd2d7482340f1ea7f5fe6ac4e1","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.7.0.tgz","fileCount":60,"integrity":"sha512-8cFpxGKReXKWCz6BtBuTVoDSQqDM5N5hxTHRuhFoDHDyal4Ee1ZRoqMlG5UgJlbRZOz9NOpwuQJ8AnYUj1XuuQ==","signatures":[{"sig":"MEQCIAkm4bmowD3qKreV8O5mAaVhrG0zQnzMhh5m+7RIJXVDAiBcMMWR2ltLtSbbG7Ek+n8EhubkNQmSJEFNrkssgK8SLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":266489},"type":"module","gitHead":"5404c6d538281b0990eabe5008f4be3bdd7587f1","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.16.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.7.0_1785794384029_0.4401800650769503","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@booplex/bpx-council","version":"1.8.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.8.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"bf9b85f5ebb1f86b860c5eee5316d03b7b2ddf26","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.8.0.tgz","fileCount":62,"integrity":"sha512-P59nzV0x+PYXnqGMZtkWd7IWDx3HfdIAxAg/Y2g0SFdce2bXna1YP9A62r2gZQGTH3jn4z/YoO92KwnCYF+Kgw==","signatures":[{"sig":"MEQCIGr530+Pm+7xN2Yte/rW9VeSAntXYZOpiKTxjdBP7H7dAiALd6zhCPkDUmYu6jvZeIXlPtOrQX0n09OIeOXYtR6HVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":283635},"type":"module","gitHead":"aceb4a2d5534eddc6cf21e71613939a5ae04c2bb","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.16.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.8.0_1785795799239_0.06152387382412394","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@booplex/bpx-council","version":"1.9.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@1.9.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"0321ea50c2f2ac267dbaaf3493295796f2ba5cf2","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-1.9.0.tgz","fileCount":62,"integrity":"sha512-FBvVqRovsTdkv0JGnhlLdC6kbIpuVkgE7ayJ2ALiAUgjJV4K7Xz3zLXpNHArYXwMlv6a8biZeEbS5G69a3UiLQ==","signatures":[{"sig":"MEUCIQDkQkdLjahNLpdLk4sBS2aSi+nhJREgYdVkcGQMZfbWTAIgZxcmUtnt7I0vlsGo/SGcZT5piU2VzVq/7eaH7Zy2Bm0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":292013},"type":"module","gitHead":"bc5ce9484b8fc2c852aee458d43a96ff5df5e0e7","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.16.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_1.9.0_1786269053301_0.10692676291574355","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@booplex/bpx-council","version":"2.0.0","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"author":{"name":"gabelul"},"license":"MIT","_id":"@booplex/bpx-council@2.0.0","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"homepage":"https://github.com/gabelul/bpx-council#readme","bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"bin":{"bpx-council":"dist/index.js"},"dist":{"shasum":"7a3329dcb226ad742d61252b002c92f0825cc75e","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-2.0.0.tgz","fileCount":75,"integrity":"sha512-pbUiFir6va1k7Oqk7aZXsRxYoO/zVC58rUp4RSygXhMBAIf4AX/jcKBnht8UdoOwafMaRJ3S8ElgB2kVPvHsGg==","signatures":[{"sig":"MEUCIQDL2ukagNECl6fyo8UGIywGmK8/dw83QKWI+EfQuFbSKgIgCOvIAyPlyOyKN/yjgJhn3VdSs8qI9BuuRbhs4SqtDu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICKT+dtftoitpsdWtimjwzW4pokIgU3wHSRr4Ow+ZJeXAiEA79DZ1k6DozuPjAfKsmZm0ghbk9yvdgl80I51D1DPFVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":408458},"type":"module","gitHead":"a986c7e1876fec8c46eee492c8ef67fdb77ccb74","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.19.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bpx-council_2.0.0_1790252430321_0.8661870181232807","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"_id":"@booplex/bpx-council@2.1.0","bin":{"bpx-council":"dist/index.js"},"bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"dist":{"shasum":"d22e7688652abe06a466ef7cf53b1ae52b8c1e36","tarball":"https://registry.npmjs.org/@booplex/bpx-council/-/bpx-council-2.1.0.tgz","fileCount":79,"integrity":"sha512-2Ol7E41Yt1jYHvkGMB7aGObm+WFgjaJBGU+bsoUJvP8fBEavrbTsdkgaLolWtnWrGQoh4CXn2ZYdlyzd0o6Ztw==","signatures":[{"sig":"MEQCIAtewJGBfL0kwPnPeFm3nG/E01ODWhhQVppKTsKh81VkAiAV8djyCYi6BBgNrq3OXWAvifsWWs35ZfNfvM3xaHCBJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD4adQaMBDZwlqwZ0wRjTGk6FZFadw7C0t8ArB5mGaSrAIgGd/q6veuAeEnhMTuCaf8SMycNfsFbKN4hCkPvS3wyi0="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@booplex%2fbpx-council@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":433264},"name":"@booplex/bpx-council","type":"module","author":{"name":"gabelul"},"gitHead":"2a5f63e754ba9203d49691ebfaa571b5ce310461","license":"MIT","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","postinstall":"node scripts/postinstall.mjs"},"version":"2.1.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"5ba6554a-8420-42d7-b9c5-fbf89bf8ee1f"}},"homepage":"https://github.com/gabelul/bpx-council#readme","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"_npmVersion":"11.19.0","description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","directories":{},"maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bpx-council_2.1.0_1791045686905_0.31164854710918033"}}},"time":{"created":"2026-07-18T22:49:28.523Z","modified":"2026-10-03T16:41:27.372Z","0.0.0":"2026-07-18T22:49:28.754Z","1.0.0":"2026-07-19T16:30:35.462Z","1.1.0":"2026-07-21T10:11:03.895Z","1.2.0":"2026-07-22T09:56:14.455Z","1.3.0":"2026-07-22T13:53:55.440Z","1.4.0":"2026-07-22T15:02:33.562Z","1.5.0":"2026-07-22T15:56:49.568Z","1.6.0":"2026-08-02T17:49:29.039Z","1.6.1":"2026-08-03T21:32:43.464Z","1.7.0":"2026-08-03T21:59:44.185Z","1.8.0":"2026-08-03T22:23:19.385Z","1.9.0":"2026-08-09T09:50:53.447Z","2.0.0":"2026-09-24T12:20:30.430Z","2.1.0":"2026-10-03T16:41:26.985Z"},"bugs":{"url":"https://github.com/gabelul/bpx-council/issues"},"author":{"name":"gabelul"},"license":"MIT","homepage":"https://github.com/gabelul/bpx-council#readme","keywords":["cli","ai","advisor","council","multi-model","consensus","coding-agent","claude-code","codex","cursor"],"repository":{"url":"git+https://github.com/gabelul/bpx-council.git","type":"git"},"description":"A portable multi-model council CLI — one advisor or a whole debating council, usable from any coding agent (Claude Code, Codex, Cursor, pi).","maintainers":[{"name":"gabelu","email":"gabi.florea@gmail.com"}],"readme":"# bpx-council\n\nMulti-model second opinions for coding agents.\n\nYour agent runs on a fast, cheap model most of the time — right, most of the\ntime. The exceptions are the handful of calls that decide how the thing turns\nout: the architecture, the \"should I even build this,\" the bug it's been\ncircling for an hour. `bpx-council` puts a stronger model on those. Or three\ndifferent ones, arguing.\n\n## What it looks like\n\nReal output, unedited. One question, three models, each with a stance:\n\n```bash\nbpx-council --mode council --backends codex,claude,opencode \\\n  \"Our test suite takes 40 minutes and it's blocking deploys. Parallelize\n   across more CI runners, or delete slow integration tests we suspect\n   are redundant?\"\n```\n\n```\n── council: architect→codex, critic→claude, simplifier→opencode\n```\n\n> ### architect [for] · codex\n> Parallelize the suite across more CI runners now. Do not delete\n> suspected-redundant integration tests as the primary fix. A 40-minute deploy\n> gate is an infrastructure throughput problem first. […] Split tests into\n> deterministic shards using historical timing, targeting 8–12 minutes per\n> shard. Balance by measured duration, not test count.\n>\n> ### critic [against] · claude\n> **Parallelization is a treadmill with a floor you haven't measured.**\n> Amdahl's law eats this alive. If one integration test file takes 11 minutes,\n> sharding across 20 runners gets you an 11-minute suite, not a 2-minute one.\n> […] \"We suspect are redundant\" is not evidence, and the failure mode is\n> invisible. Delete a test, ship for six months, eat a production incident —\n> nobody ever traces that back to the deletion.\n>\n> **Both proposals are answers to \"make the number smaller.\" Neither is an\n> answer to \"stop the number from gating deploys.\"**\n>\n> ### Verdict\n> Don't delete suspected-redundant integration tests, and don't make runner\n> sharding the first move. […] My call: **take the critic's pipeline change\n> first, then selectively optimize and shard.**\n\nTwo models, two genuinely different instincts. One optimises the pipeline, the\nother rejects the question. That's the part you can't get from one model asked\nthree times.\n\n**[Full transcript →](docs/examples/council-three-models.md)** (including the\nthird member dying mid-run, and the council shipping without it.)\n\n## Install\n\nSigned into Codex or Claude CLI? Both can run without an API key. Codex runs\nin a read-only sandbox but can still read project files; Claude's preset disables\ntools. Anthropic HTTP works with `ANTHROPIC_API_KEY`. Other agent CLIs aren't\nauto-selected: choose one explicitly only if you trust its local configuration.\n\n```bash\nnpx @booplex/bpx-council \"Is this auth flow sane?\"\n```\n\nNo CLI on your PATH? `ANTHROPIC_API_KEY` enables Anthropic HTTP. OpenAI HTTP\nisn't implemented yet; `OPENAI_API_KEY` alone won't select it. Once you like it:\n\n```bash\nnpm install -g @booplex/bpx-council\nbpx-council install     # teach your coding agent it exists (see below)\n```\n\nThe `install` step is deliberately separate, because nothing should write into\nyour editor config on an `npm install`. If you skip it, the first time you run `bpx-council`\nin a real terminal it'll offer to set that up for you, once.\n\n## Modes\n\n```bash\n# Solo — one strong second opinion (default). Seconds.\nbpx-council \"Is this auth flow sane?\"\n\n# Pipe in context\ngit diff HEAD~3 | bpx-council --question \"Review this diff for correctness\"\n\n# Council — three personas in parallel, then a synthesized verdict\nbpx-council --mode council \"Architecture: monolith or microservices?\"\n\n# Debate — advocate vs critic over sequential rounds, then a verdict\nbpx-council --mode debate --rounds 2 \"Rewrite the parser, or patch it?\"\n\n# Gut check — terse. \"Does this smell off?\"\nbpx-council --mode gut-check \"We're storing sessions in localStorage\"\n```\n\nSolo and gut-check return in seconds. Council and debate take a few minutes,\nbecause they're running several models against each other. That's the point.\nProgress goes to stderr, so `> out.md` still captures clean output.\n\n## Going multi-model\n\nCouncil runs three personas: architect (for), critic (against), simplifier\n(neutral). By default they all share one backend, so you get three stances from\none model. Useful and cheap, but it isn't multi-model.\n\nAssign different backends and it is:\n\n```bash\nbpx-council --mode council --backends codex,claude \"Should we ship this?\"\n```\n\nBackends map to personas in roster order. Fewer specs than members is fine; extra\nspecs fail before any call. For each member, precedence is positional `--backends`,\nthen saved `council.backends` by persona name, then Solo. Each verdict is labelled\nwith its persona and model, so you can see who argued what.\n\nPin a model per persona with `backend:model`:\n\n```bash\nbpx-council --mode council \\\n  --backends codex:gpt-5.6-sol,anthropic:claude-opus-4-8,claude \\\n  \"Should we ship this?\"\n```\n\nThe synthesizer can use a fourth backend. Debate's advocate, critic and\nsynthesizer can each have their own too:\n\n```bash\nbpx-council --mode council --backends codex,claude,opencode \\\n  --synthesizer codex:gpt-5.6-sol \"Should we ship this?\"\nbpx-council --mode debate --advocate codex:gpt-5.6-sol \\\n  --critic claude:opus --synthesizer codex \"Rewrite or patch?\"\n```\n\nOr save the choices in `~/.bpx-council.json`, by hand or through the wizard:\n\n```json\n{\n  \"defaultMode\": \"debate\",\n  \"council\": {\n    \"backends\": { \"architect\": \"codex:gpt-5.6-sol\", \"critic\": \"anthropic:claude-opus-4-8\" },\n    \"synthesizer\": \"codex:gpt-5.6-sol\"\n  },\n  \"debate\": {\n    \"advocate\": \"codex:gpt-5.6-sol\",\n    \"critic\": \"claude:opus\",\n    \"synthesizer\": \"codex\"\n  }\n}\n```\n\nCouncil's default roster stays architect, critic, simplifier. To change it, edit\ntrusted global config (or an explicit trusted `--config` file):\n\n```json\n{\n  \"personas\": {\n    \"reviewer\": { \"stance\": \"against\", \"systemPrompt\": \"Review deployment risks. Name specific failure modes.\" }\n  },\n  \"council\": {\n    \"members\": [\"architect\", \"reviewer\"],\n    \"backends\": { \"reviewer\": \"claude\" }\n  },\n  \"gutCheck\": { \"backend\": \"anthropic:claude-opus-4-8\", \"maxOutputTokens\": 96 }\n}\n```\n\n`personas` defines or replaces named prompts (stance: `for`, `against`, or\n`neutral`); definitions merge by name across trusted layers. `council.members`\nis an ordered, atomic list (1–8 unique safe names). Prompts must be nonblank\nand at most 8,000 characters. Define up to 16 persona entries. Gut-check\nuses explicit `--backend` first, then `gutCheck.backend`, then Solo; `null`\nresets it to Solo. `maxOutputTokens` (1–4096) sets Anthropic HTTP `max_tokens`.\nFor a CLI route, it's only a prompt request, not a hard limit or billing cap.\nFindings are never cut after generation. The settings hub edits gut-check routes\nand output tokens. Change persona prompts and the Council roster in the JSON file.\n\nEach seat uses its explicit flag, then its saved spec, then the shared Solo\nbackend. `--backend` and `--model` change that fallback, not pinned seats.\nOmit a seat to inherit Solo; in a project config, use `null` to reset a seat\nassigned globally. In settings, choose **Inherit Advisor** to write `null`;\nEscape leaves the current choice alone. Without `--mode`, the saved `defaultMode` runs; an\nexplicit `--mode solo` still forces Solo. If synthesis fails after Council\nmembers answer, their verdicts still print, but the CLI exits nonzero; no\nverdict is claimed.\n\n## Steering the advisor\n\nFour things you can change about who answers and how: the backend, its model,\nhow hard it thinks, and what you hand it.\n\n### Backend and model\n\nWhich tool answers, and which model it runs.\n\n```bash\n# Use codex as the advisor (its own configured model)\nbpx-council --backend codex \"Is this auth flow sane?\"\n\n# ...on a specific model — passed straight to codex's --model\nbpx-council --backend codex --model gpt-5.6-sol \"Is this auth flow sane?\"\n\n# claude CLI on Opus\nbpx-council --backend claude --model claude-opus-4-8 \"...\"\n\n# Anthropic over HTTP (needs ANTHROPIC_API_KEY), explicit model\nbpx-council --backend anthropic --model claude-opus-4-8 \"...\"\n```\n\n`--model` works for both kinds: HTTP backends target that model directly, and\nCLI backends get it injected as their own model flag, in whatever position that\nparticular tool wants it. Leave it off and the CLI uses whatever it's already\nconfigured for, which is usually what you want, since it tracks its own latest\nwithout you maintaining a version string. `--model` also reads\n`BPX_COUNCIL_MODEL` / `ANTHROPIC_MODEL` from the env.\n\n### How hard it thinks\n\nSome backends expose a reasoning-effort dial. `--effort` sets it:\n\n```bash\nbpx-council --backend codex --effort max \"Is this migration plan sound?\"\nbpx-council --backend claude --effort low \"Quick sanity check on this regex\"\n```\n\nPin it per backend with `@level`. That's where the council gets interesting:\ndifferent stances at different depths.\n\n```bash\nbpx-council --mode council \\\n  --backends codex:gpt-5.6-sol@max,claude@high,codex:gpt-5.4-mini@low \\\n  \"Rewrite the parser, or patch it?\"\n```\n\nAn expensive architect, a cheap simplifier. Same idea as assigning models, one\nlevel down.\n\n**Which levels are valid depends on the backend, and for codex on the model.**\n`gpt-5.6-sol` accepts up to `ultra`, while `gpt-5.5` stops at `xhigh`. The wizard asks\ncodex what the model you picked actually supports and offers exactly those, so\nyou can't pick one it would reject.\n\n| Backend | Effort control |\n|---|---|\n| `codex` | ✓ per-model levels, read live from its catalog |\n| `claude` | ✓ low, medium, high, xhigh, max |\n| everything else | ignored; no such control, so nothing is passed |\n\nSet a fallback for every run in the config as `solo.thinkingLevel`; a backend\nthat pins its own with `@level` keeps it, since that's the more specific choice.\nBackends without an effort dial ignore it rather than being handed a flag\nthey'd reject.\n\n### Staying independent of your project\n\nBoth codex and claude read the repo's `AGENTS.md` / `CLAUDE.md` before\nanswering. So a second opinion asked inside a project shows up already following\nthat project's house rules, which is some of the bias you were trying to escape\nby asking someone else.\n\n`--isolate` changes how supported presets load project instructions; it does not prevent a CLI from reading files:\n\n```bash\nbpx-council --isolate \"Is this auth flow actually sane, or are we just used to it?\"\n```\n\nTested by planting an instruction (\"begin every reply with BANANA\") in a repo's\n`AGENTS.md`. codex obeyed it, and stopped once `--isolate` was passed.\n\n| Backend | What `--isolate` does |\n|---|---|\n| `codex` | sets `project_doc_max_bytes=0` to skip project `AGENTS.md`; it keeps the project working directory and can still read its files |\n| `claude` | drops the project `CLAUDE.md` from the preset's instruction path; user-global instructions may still apply |\n| everything else | no isolation guarantee; some CLIs may read project config |\n\nOne honest limit: for claude this drops the project `CLAUDE.md` but **not** your\nuser-global `~/.claude/CLAUDE.md`, which survives a system-prompt override.\nThere's a `--bare` flag that drops both, except it also forces authentication\nthrough `ANTHROPIC_API_KEY` and never reads your OAuth login, which breaks the\nno-API-key setup this whole tool is built around. Not worth it as a default.\n\nIt's opt-in, so nothing changes for existing setups, and an advisor that knows\nyour conventions is genuinely useful sometimes. Reach for `--isolate` when you\nwant the outside view.\n\n### Files and images\n\nPiping works for one blob of context (up to 1MB). It waits for EOF, then fails\nif the pipe stays open past three seconds, even if no bytes arrived. Use\n`--no-stdin` when a calling harness keeps stdin open.\n`--file` is better when there's more than one, and it labels each by name:\n\n```bash\nbpx-council --file src/auth.ts --file tests/auth.test.ts \\\n  \"Does the test actually cover the bug the code has?\"\n```\n\nFiles are read and folded into the prompt, so **every backend supports this**.\nNo special handling needed. Each file is fenced and labelled, and told plainly\nif it was truncated (256KB per file, 512KB total, at most 16 files) so the model doesn't reason\nabout a function whose ending it never saw.\n\nImages are different, because a picture can't be folded into text. The backend\nhas to actually take one:\n\n```bash\nbpx-council --backend codex --image mock.png \"Does this layout look off?\"\n```\n\n| Backend | Images | How |\n|---|---|---|\n| `codex` | ✓ | attached directly (`-i`), several at once |\n| `anthropic` | ✓ | inlined into the request as base64 |\n| `claude` | ✗ | tools are disabled; no verified direct image transport |\n| everything else | ✗ | refuses with a message naming the ones that work |\n\nImages must be regular, non-symlink files with matching magic bytes (four max,\n5MB each, 20MB combined). Anthropic HTTP gets the validated bytes frozen before\nthe call. Codex CLI gets a validated **path**, not frozen bytes: another process\ncould replace its contents before Codex opens it. Use Anthropic HTTP when that\nrace matters. With `--image`, Council and Debate check each seat's image\ntransport before any call. Image paths in config are rejected; pass them with\n`--image` so the CLI validates each file and freezes bytes for Anthropic HTTP.\n\nFor Codex, a pinned model that its catalog marks text-only triggers a warning\nbefore a call, including Council and Debate seats. An unknown catalog result\nisn't treated as proof of image support.\n\nBad paths, directories, binary files passed to `--file`, and unsupported image\ntypes all fail immediately, before any model call rather than two minutes into a\ncouncil run.\n\n### Driving an interactive agent instead\n\nThere's a third backend type beyond CLI and HTTP: `tmux` (also `pty` or\n`interactive`), which drives an agent running in a real terminal session rather\nthan spawning a fresh headless one.\n\n```bash\nbpx-council --backend tmux \"Is this auth flow sane?\"\n```\n\nIt needs `tmux` installed. Useful when you want the advisor to be a session\nthat's already warmed up and authenticated instead of a cold subprocess, and it\nwas the original route before the headless flags on codex and claude turned out\nto be good enough. Most people want a plain CLI backend; this is here for the\ncases where you don't.\n\n## Configuring\n\n`bpx-council config` opens a settings hub showing target path, scope, current\nchoices and unsaved changes. Advisor, Gut-check, Council, Debate and default mode\nare separate sections; choosing Solo doesn't hide the other routes.\n\nEdits stay in a draft until **Review & save → Save**. Back from review keeps the\ndraft. Escape from a picker leaves its current value alone; Escape from the hub\nexits, asking before discarding unsaved changes. Discard and Ctrl-C write nothing.\nOpening settings doesn't rewrite or normalize your file.\n\nModel catalogs load only when you ask for them, with search for long lists.\nSaved unavailable choices stay selectable, and manual model IDs are always an\noption. **Backend default** clears the pinned model and its effort; changing a\nmodel clears stale effort too. Explicit Advisor route/model/effort changes also\nclear the legacy `solo.thinkingLevel` fallback, so it can't silently restore the\nold effort. Untouched settings keep it. Same-backend edits keep custom arguments\nand timeouts. Detected binaries and catalog entries don't prove you're logged in.\n\n```bash\nbpx-council config          # interactive\nbpx-council config --dry-run\nbpx-council config --backend codex --model gpt-5.6-sol --mode solo --yes   # headless\n```\n\nThe hub preserves untouched fields and refuses rather than clobber an invalid\nfile. Council shows your configured roster, including custom names, plus its\nsynthesizer; Debate exposes advocate, critic and synthesizer independently.\nHeadless `config --yes` leaves saved seats, roster, persona prompts, gut-check\nsettings, and backend-specific options alone. There's also a one-command\nonboarding that does both this and the agent wiring:\n\n```bash\nbpx-council setup           # configure the advisor, then offer to wire into your agents\n```\n\n### Global vs per-project\n\nBy default config is **global** (`~/.bpx-council.json`), one setup for your whole\nmachine. But a repo can carry its own:\n\n```bash\nbpx-council config --scope project    # writes .bpx-council.json at the repo root\n```\n\nAt runtime the layers stack: **defaults → global → the repo's `.bpx-council.json`**,\nwith the project file overriding only the keys it sets. So a project config of\njust\n\n```json\n{ \"solo\": { \"backend\": { \"type\": \"http\", \"provider\": \"anthropic\", \"model\": \"claude-opus-4-8\" } } }\n```\n\nmeans \"this repo uses Opus, everything else stays my usual.\" Discovery walks up\nfrom your working directory to the git root, so it works from any subdirectory.\n\nYou can **commit `.bpx-council.json`** for shared mode and routes, but a repo\nisn't a trusted source of executable instructions. Auto-discovered project files\ncan select Anthropic HTTP and its model; Council/Debate seats use Anthropic\nroutes or `null` to inherit Solo. They cannot choose CLI commands (even Codex:\nits read-only sandbox still permits shell reads), tmux, HTTP URL or API-key\nvariable. They may reorder or select bundled Council personas, but cannot\nsupply persona prompts or select trusted custom personas. Project gut-check routes\nfollow the same Anthropic-only rule; output-token preference is allowed.\nAn invalid file fails with its path and key before any model call. Need a custom\ncommand or URL? Put it in your own global config or pass an explicit trusted\n`--config <path>`; either overrides/escapes project restrictions. Don't pass a\nrepo-controlled file explicitly as a shortcut around this check.\n\nExisting repo `.bpx-council.json` files with CLI/tmux routes, custom URLs, or\npersona prompts now fail validation. Move those choices to your global config\nor a trusted file passed with `--config`; keep the repo file within the\nAnthropic-only rules above. Configured image paths also fail; pass them with\n`--image`. Run `bpx-council doctor` to check routes without paying for a call.\n\n## Wiring it into your agent\n\nInstalling the CLI teaches *you* that the council exists. It teaches your agent\nnothing, because agents discover what they can do from files in their own config\ntree.\nSo there's a command that puts those files there:\n\n```bash\nbpx-council install\n```\n\nIt checks which agents are actually on your machine, asks what to wire up and\nwhether you want it for this project or globally, shows you the plan, and waits\nfor a yes before writing anything.\n\n| Agent | What it gets | Where |\n|---|---|---|\n| Claude Code | Skill and `/council` command | `.claude/` (project) or `~/.claude/` (global) |\n| Codex | Skill | `.agents/skills/` (project) or `~/.agents/skills/` (global) |\n| OpenCode | Skill and `/council` command | `.opencode/` (project) or `~/.config/opencode/` (global) |\n| Shared skill (manual choice only) | Compatibility copy for hosts that read project `.agents/skills/` | `.agents/skills/` |\n| Agents reading `AGENTS.md` | Instruction block | project root |\n\nThe shared option is never auto-detected. Select it explicitly if your host\nreads that path. Choosing it with Codex writes one skill, not two; choosing it (or Codex)\nwith OpenCode keeps OpenCode's command but avoids a duplicate project skill.\nOlder global\nCodex installs at `~/.codex/skills/bpx-council` are reported, not migrated or\nremoved. `AGENTS.md` uses a marker-delimited block; malformed markers are\nrefused rather than guessed at. Reinstall refreshes known files, but refuses\nskill directories with extra entries or foreign symlinks instead of claiming\nsuccess. Clear drift manually; `[blocked]` in the plan names affected paths.\n\nHeadless, for dotfiles and CI:\n\n```bash\nbpx-council install --dry-run                              # show the plan, write nothing\nbpx-council install --agent claude-code --scope global -y\nbpx-council install --link                                 # one canonical copy, symlinked\nbpx-council install --verify --agent claude-code            # offline artifact check\nbpx-council uninstall --agent claude-code --dry-run         # inspect removal\nbpx-council uninstall --agent claude-code --yes             # remove exact owned files\n```\n\n**Link mode (`--link`).** By default each agent gets its own copy of the skill.\nWith `--link`, one canonical copy lives at `.agents/skills/bpx-council`;\nhosts needing a separate skill path link to it. Codex uses the canonical copy\ndirectly, and OpenCode can discover that shared copy without a second skill. It's the same\nscheme [vercel-labs/skills](https://github.com/vercel-labs/skills) uses. Copy is\nthe default because symlinks are fragile across Windows, committed git trees, and\nDocker builds; on Windows link mode uses a junction, and any link that can't be\nmade falls back to a copy automatically. An agent dir you've *edited* is never\nreplaced by a link. It's left alone with a note.\n\nOne caveat: reinstall refreshes known files at the canonical path. Extra\nentries or links block reinstall, and `--verify` reports edited content as\n`drifted`. Treat the canonical copy as a distribution point, not a fork.\n\n`--with-hook` now fails without writing: an every-Stop paid consult was too easy\nto trigger without a deliberate question. Existing hooks aren't removed by\ninstall. `uninstall` removes only an exact bundled legacy Stop entry, leaving\nunrelated hooks and settings alone. Edited or malformed entries are refused.\n\n`uninstall` uses the same agent and scope selection. Dry-run never prompts;\nnoninteractive mutation needs `--yes`. It removes only template-identical files\nand skill trees with no extras, or links to the canonical copy. Marker blocks\nmust match the current or bundled legacy text exactly. Edited artifacts stay\nput and produce a nonzero result; other owned artifacts can still be removed.\nA link-only uninstall leaves the real `.agents/skills` copy in place, since\nCodex or another host may use it without a link. When it is the last link,\nthe command exits nonzero and names the retained copy; explicitly select\n`codex` or `agents-skills` to remove it. `--verify` reports missing, drifted,\nor current per selected host without authentication or a model call; binary\navailability isn't checked.\n\nThis integration installs instructions and commands; it doesn't add native host\nexecution or host-harness cost tracking. Consult receipts report provider usage\nwhere available, with unknown CLI usage marked unknown. If your agent isn't on\nthe list, it can still run `bpx-council` in a shell. The templates live in `templates/` if you'd\nrather place them yourself.\n\n## Backend support\n\nThe automatic routes are Anthropic HTTP (when `ANTHROPIC_API_KEY` is set),\nthen Codex CLI, then Claude CLI. Codex uses a read-only sandbox, which still\nallows project-file reads; Claude's preset disables tools. OpenCode's explicit\nCLI route runs with tools denied and accepts only its JSON event output. Other\nCLI commands require a trusted global or explicit config. A custom command's\npermissions and output format are yours to check, not something the name\n`bpx-council` magically fixes.\n\nOnly Anthropic HTTP is implemented. OpenAI and Google HTTP config values fail\nbefore any request; use a supported CLI or Anthropic route instead. The\nAnthropic default model is `claude-opus-4-8`. Earlier backend probes used\nolder presets, so they don't establish that these revised routes are logged in\nor working on your machine. `doctor` checks availability without a model call;\n`doctor --probe` makes one explicitly requested smoke call. Authenticated\nmulti-seat runs still need checking in the target environment.\n\n## Doctor\n\n`bpx-council doctor` checks config and effective Solo, Gut-check, Council and\nDebate routes without running an advisor, fetching models, or testing login.\nIt reports whether a binary exists or an API key is present; neither proves\nthat the account works. Invalid project config and trust restrictions fail with\na diagnostic before any call.\n\n```bash\nbpx-council doctor                    # offline, no model call\nbpx-council doctor --config ./my.json # inspect a trusted config, no discovery\nbpx-council doctor --probe            # explicit ONE-call Solo smoke test\n```\n\n`--probe` prints selected route and possible charge *before* calling. It uses a\nfixed tiny prompt, 10-second deadline, 8 KiB CLI stdout cap or 32 Anthropic\nHTTP output tokens, and prints only success/failure, never the reply. It cannot\nfan out into Council or Debate. Only read-only Codex, tool-disabled Claude,\nand the standard Anthropic HTTP endpoint are probed; tmux, custom commands/args,\ncustom endpoints and unimplemented HTTP providers are refused. Configured\nimage paths are not sent. A parseable reply doesn't independently verify login\nor model selection. Offline diagnostics exit nonzero for unavailable routes.\nOther consult/install/config flags are not accepted by `doctor`.\n\n## Options\n\n```\n-m, --mode <mode>     solo | council | debate | gut-check (saved default if omitted)\n    --format json     Consult only: one JSON receipt on stdout, even on failure\n-q, --question <q>    The question (or pass it positionally)\n    --isolate         Skip project instructions in supported Codex/Claude presets; not a filesystem sandbox\n    --no-stdin        Don't wait for piped input (for harnesses that keep stdin open)\n-f, --file <path>     Attach a text file as context (repeatable)\n    --image <path>    Attach an image (repeatable; codex, anthropic)\n-b, --backend <name>  Force one backend (also: tmux | pty | interactive)\n    --backends <a,b>  Council: one backend per persona, in order\n    --synthesizer <s> Council/Debate verdict backend[:model][@effort]\n    --advocate <s>   Debate advocate backend[:model][@effort]\n    --critic <s>     Debate critic backend[:model][@effort]\n    --model <id>      Override the shared Solo model\n    --effort <level>  Reasoning effort (codex, claude); ignored elsewhere\n    --rounds <n>      Debate rounds, 1-4 (default: 2)\n    --timeout <ms>    Per-call timeout (default: 120000)\n-c, --config <path>   Config file (default: ~/.bpx-council.json)\n```\n\nResolution order for backends: `--backend` → config → `*_API_KEY` env vars →\nCodex or Claude CLI on your PATH → error if neither is available.\n\n`--format json` emits one schemaVersion 1 object with an invocation UUID, resolved\nmode (or `null`), status (`complete`, `partial`, `failed`), advice, error, ordered\nseat attempts, planned seats, skipped (`notRun`) seats, and usage coverage.\nEach attempt records selected route, label, pinned model/effort, round, outcome,\nand provider-reported tokens when available. `usage.attempted/reported/unknown`\ncount calls, never skipped seats. Input/output totals are `null` until a call\nreports them; Anthropic cache creation/read tokens stay separate with per-field\nreport counts. CLI usage stays unknown. Council can return `partial` with exit\ncode 0 when synthesis succeeds despite a failed member; incomplete verdicts keep\nnonzero exit codes and salvage completed answers. Progress stays on stderr. Config,\nsetup, and install do not accept JSON mode.\n\n## Updating\n\n```bash\nnpm install -g @booplex/bpx-council@latest   # get the newest version\nbpx-council install                          # re-run to refresh the agent files\n```\n\nTwo steps on purpose. Updating the npm package **doesn't** touch your agent\nfiles. Nothing writes into `~/.claude` or `AGENTS.md` behind your back on an\n`npm install`. Re-run `bpx-council install` to pull in new or changed skills; it's\nidempotent for known, unedited files; it refuses drift rather than overwriting\nit. This does **not** migrate an older Codex skill at\n`~/.codex/skills/bpx-council`. The installer reports that path but creates the\nnew skill under `~/.agents/skills/bpx-council`. Check which one your host reads\nbefore removing the old copy yourself; `uninstall` won't remove that legacy path.\n\n`bpx-council --version` shows what you've got. The CLI also checks for a newer\nversion at most once a day and prints a one-line notice on **stderr** (so it\nnever touches piped output). Silence it with `NO_UPDATE_NOTIFIER=1`; it's already\nquiet in CI and when output isn't a terminal.\n\n## Related\n\n- **[slopbuster](https://github.com/gabelul/slopbuster)** — strips the AI tells out of prose and code\n- **[stitch-kit](https://github.com/gabelul/stitch-kit)** — teaches your agent the full design-to-code pipeline\n- **[pixelslop](https://github.com/gabelul/pixelslop)** — opens your page in a real browser and measures the design\n\n---\n\nBuilt by Gabi @ [Booplex.com](https://booplex.com). MIT license.\n","readmeFilename":"README.md"}