{"_id":"@trybullet/cli","_rev":"31-76efbdcfd0851d5f8cf95be490eb1b24","name":"@trybullet/cli","dist-tags":{"latest":"1.4.15"},"versions":{"1.3.12":{"name":"@trybullet/cli","version":"1.3.12","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.12","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"eb0d72cd3aad235e0197a88fa48b7c59277e30e3","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.12.tgz","fileCount":3,"integrity":"sha512-QsXDttBCn9Zto6IxE7MD43iwnqsTMIPh/Ti04+wd254bD9JytiRVuD6lqWrAi/1AQJIW2Lp02OUEoInEgp5Xxw==","signatures":[{"sig":"MEQCIGsjHgVwRJWEpJ9x2nKZa1AzhlGybdvpkzIEONc1HohFAiAjPXtah+QVZdoCLK7gUy3pSwTglfoMELpWQJnDdpL2lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22273},"engines":{"node":">=18"},"gitHead":"4177104cc99224ea09a84547da09acdb03750e77","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"deprecated":"Colors render incorrectly in Terminal.app and multi-line pastes are misread. Upgrade: npm i -g @trybullet/cli@latest","repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.4","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.12","@trybullet/cli-win32-x64":"1.3.12","@trybullet/cli-darwin-x64":"1.3.12","@trybullet/cli-linux-arm64":"1.3.12","@trybullet/cli-darwin-arm64":"1.3.12"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.12_1786085570982_0.7841895753111887","host":"s3://npm-registry-packages-npm-production"}},"1.3.18":{"name":"@trybullet/cli","version":"1.3.18","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.18","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"cae01f2a24d5b526b65f0fa88b4d4252dad28cda","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.18.tgz","fileCount":3,"integrity":"sha512-AXW2+9firxIwo63afZJM+qzhZcxL4SX3I1RlfE3j1LnR/BARwLxjioi2X+9NZLYvnXfgABOmI8A0zaugz6vHlQ==","signatures":[{"sig":"MEUCICQRUEE/3Q6h1xSGYNfNs50j/7nuvZul2aXMdwv8RPGIAiEAqenJiJhoUPHitvU4vw7HzrjVJ+z5n0/AdQXvQwZ7p/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22273},"engines":{"node":">=18"},"gitHead":"436f95ef30e1e1f552e5a540eccb2745300c79da","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.4","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.18","@trybullet/cli-win32-x64":"1.3.18","@trybullet/cli-darwin-x64":"1.3.18","@trybullet/cli-linux-arm64":"1.3.18","@trybullet/cli-darwin-arm64":"1.3.18"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.18_1786087235423_0.6888662241373285","host":"s3://npm-registry-packages-npm-production"}},"1.3.20":{"name":"@trybullet/cli","version":"1.3.20","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.20","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"b4ee02e7337a82d803cb48836a0c7986368d05b0","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.20.tgz","fileCount":3,"integrity":"sha512-Tx0t9F7bKNnjsgbIbHa3ha/Fj7BlUC8i3HyukngBUn1A3q9VrlvyI3f2NQ651kITdBK2Dlroqar6Ohd/CRBlOw==","signatures":[{"sig":"MEYCIQCdoaUtnjVr8cD0NYtaIYzxnL5qETcqdGe3wL6Qnxy4wQIhAJO5jTf/QrmE584ia+cSpaAg3/6RK9GMr+9N97/EbZk4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24826},"engines":{"node":">=18"},"gitHead":"8a552bb56792999751088b7b937d9dc98d28ef9e","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.20","@trybullet/cli-win32-x64":"1.3.20","@trybullet/cli-darwin-x64":"1.3.20","@trybullet/cli-linux-arm64":"1.3.20","@trybullet/cli-darwin-arm64":"1.3.20"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.20_1786098365277_0.5911610438688946","host":"s3://npm-registry-packages-npm-production"}},"1.3.21":{"name":"@trybullet/cli","version":"1.3.21","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.21","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"5f3747467e9d08e2744d6920ffc3e74a0393801c","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.21.tgz","fileCount":3,"integrity":"sha512-2FtrRUKzPE+43SrZ9twOontuZATxCPN2a3eWDF2QdzK/Uy59o4jdLi/9WZNOmnhQEmItzOfxdBD2AnZEqQyLEQ==","signatures":[{"sig":"MEUCIQCR2R6NEMbdLnVNxYDO7mtVDyJd9b/fD+eKmcvWtEoIjQIgLyMSyJbkMjXjyj4jbIE5RsAWWTWw9p5+3OJ9bjo2vHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24826},"engines":{"node":">=18"},"gitHead":"d31547d6065694f81c005aade361fbb579cabd09","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.2.0","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"21.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.21","@trybullet/cli-win32-x64":"1.3.21","@trybullet/cli-darwin-x64":"1.3.21","@trybullet/cli-linux-arm64":"1.3.21","@trybullet/cli-darwin-arm64":"1.3.21"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.21_1786251375392_0.702335672077943","host":"s3://npm-registry-packages-npm-production"}},"1.3.22":{"name":"@trybullet/cli","version":"1.3.22","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.22","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"339e8e5f18caaf345e5b2385b6901a7f3b3c6dd4","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.22.tgz","fileCount":3,"integrity":"sha512-kHw1WAwmSRHCWsbfi+z9G0Mv/b/7g520Kk3DZKt9wN2OCQ4+OPB1wS0Mr5bqbZgQqUsKYjTab88I5LfSEU4cSQ==","signatures":[{"sig":"MEYCIQCag5KBSMcF4fGNqNqlmuD1knjcVZt0BxLvJq1L5bL++gIhAKoFzpoNxbBn/beE9OMmN7VxVq+2xsUTTvvOEqNXy4Mf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24877},"engines":{"node":">=18"},"gitHead":"7b760c7493d16ff43d6bf80dea5ccbd93992cdf2","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.22","@trybullet/cli-win32-x64":"1.3.22","@trybullet/cli-darwin-x64":"1.3.22","@trybullet/cli-linux-arm64":"1.3.22","@trybullet/cli-darwin-arm64":"1.3.22"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.22_1786342196114_0.05169493314171225","host":"s3://npm-registry-packages-npm-production"}},"1.3.24":{"name":"@trybullet/cli","version":"1.3.24","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.24","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"2ce60876589ea8ec9d8e4a56fa1acfa85686dc76","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.24.tgz","fileCount":3,"integrity":"sha512-K3Wm0a+C8qIcVD0QurBUINoQvLeQ2sP6YuNfo/8y7mod26djV4PnnUYhRMfkpPEvNesU4/5V6jepXvZZklxzSA==","signatures":[{"sig":"MEQCIFNEsEca80nygXOYTKXvpUkIOVqLUiKnjQugh76CceoIAiApHvJrBz4Y0yZlKuRQA+/B7qzs4NqJczOtBikwvuCyzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24987},"engines":{"node":">=18"},"gitHead":"d1ddec37694e138b31cb3fa5c7b507e8cf7ee361","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.24","@trybullet/cli-win32-x64":"1.3.24","@trybullet/cli-darwin-x64":"1.3.24","@trybullet/cli-linux-arm64":"1.3.24","@trybullet/cli-darwin-arm64":"1.3.24"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.24_1786362945071_0.47758444792620813","host":"s3://npm-registry-packages-npm-production"}},"1.3.25":{"name":"@trybullet/cli","version":"1.3.25","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.25","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"e589470d5c67d176671a2cfb7fb6d7e616acc0b4","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.25.tgz","fileCount":3,"integrity":"sha512-REqXHq9fCHecl+wC80xAqU0wK2pqc2JMSIDHKHjul1Jv93VzgSF7xp9XMRNgP4FBiSJHJwK8jMet8qrS1Di/nQ==","signatures":[{"sig":"MEUCIBXhbSAY8uuVk/BdT1EDW8XMfnoxNfJmOWS2jAEq+x8/AiEAkfYOoUYqCAgCLsr+CYBN0zJN8ousAXyGKeHcEC2rVUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24987},"engines":{"node":">=18"},"gitHead":"a67158fdef3445122c38ceb98a78426a7994da13","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.25","@trybullet/cli-win32-x64":"1.3.25","@trybullet/cli-darwin-x64":"1.3.25","@trybullet/cli-linux-arm64":"1.3.25","@trybullet/cli-darwin-arm64":"1.3.25"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.25_1786436037497_0.2848891009846666","host":"s3://npm-registry-packages-npm-production"}},"1.3.26":{"name":"@trybullet/cli","version":"1.3.26","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.26","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"552aad19621ec8228df07c80321b6ba7a38af919","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.26.tgz","fileCount":3,"integrity":"sha512-Wsj1g0FWAbazDXZP6s2LvmmWEBMCI4zGVuWvVOVQUKLpYi6CM3jHbRre8/vnuvE7B8vC9LKO5+qM3mVgayjiHg==","signatures":[{"sig":"MEQCIDoH4KH7ukUPHDQwVgwZjMT5k6FP8Fl8QKOf109SQArcAiBwH5+3MufhtIO/no+zUVfY+REeVSbjA0VZ9kWCpOoJRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26140},"engines":{"node":">=18"},"gitHead":"6ac3db039e0f688a4a0acdc58c7023a91427e220","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.26","@trybullet/cli-win32-x64":"1.3.26","@trybullet/cli-darwin-x64":"1.3.26","@trybullet/cli-linux-arm64":"1.3.26","@trybullet/cli-darwin-arm64":"1.3.26"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.26_1786446751468_0.7185550016097277","host":"s3://npm-registry-packages-npm-production"}},"1.3.27":{"name":"@trybullet/cli","version":"1.3.27","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.27","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"f111e698aff83d7c4ce8b0b007b2a6da263df782","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.27.tgz","fileCount":3,"integrity":"sha512-lRYMmul96CtxhZWplS1c5DokR+aI19s28GajTH7CFrPCU0wZRh5jy6PYB4uDjB0VaP7qYpecnzKZ3apteFaWhw==","signatures":[{"sig":"MEUCIFPT93yBkOidd0lqwVKjjXa7G13ofgJsVUjPPcKND4+kAiEA/sbJZL1itkVyR0d5oHjtGbfFfSJnW/y9NT/gs4h0ZY4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26140},"engines":{"node":">=18"},"gitHead":"6f63f01f5e70eccfbf05a60fad7ac831fa96a11d","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.27","@trybullet/cli-win32-x64":"1.3.27","@trybullet/cli-darwin-x64":"1.3.27","@trybullet/cli-linux-arm64":"1.3.27","@trybullet/cli-darwin-arm64":"1.3.27"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.27_1786616554098_0.9344689221023255","host":"s3://npm-registry-packages-npm-production"}},"1.3.28":{"name":"@trybullet/cli","version":"1.3.28","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.28","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"e15e7e68e14b411f882ef718503901ec6f8dbdb2","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.28.tgz","fileCount":3,"integrity":"sha512-Wo1duxj/AyRLxblt58vKS+8KdJlslrYmBwa4OcskJP3EyOHc0UpeIGCbCvRJOnSrnm5v9b8zYqoBEmDpwvjLdw==","signatures":[{"sig":"MEQCIHs0FVQ0YbTac2Bk58YT+5Isz0tj4WJeLYNsCow+P5uYAiBY1uR45W/UJXkdRUhnc45rDSiy8EcZLuFnaZjD5gig8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26140},"engines":{"node":">=18"},"gitHead":"755cb6320df8cde09019a56a2f10f912e2c298b4","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.28","@trybullet/cli-win32-x64":"1.3.28","@trybullet/cli-darwin-x64":"1.3.28","@trybullet/cli-linux-arm64":"1.3.28","@trybullet/cli-darwin-arm64":"1.3.28"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.28_1786626039221_0.4336358613024298","host":"s3://npm-registry-packages-npm-production"}},"1.3.29":{"name":"@trybullet/cli","version":"1.3.29","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.29","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"2fd887c0056402da6a6774666f0604257a07a550","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.29.tgz","fileCount":3,"integrity":"sha512-9cbabzt7WadryxoBvevO04CqkcT9Wh9l+BCbrg2mJ/qrA9sskwN8aaPO++p1c9TO/Ce7SfFSxz58nzPlpvhQvQ==","signatures":[{"sig":"MEYCIQDOYva648e+tahLaJ1XxyYgvYMaTSxE1GdgrEDWGG+POAIhAMUEq2JbSU6AyLLkVkxj0JuNgKXjd26bOriZw2lgxmtZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28941},"engines":{"node":">=18"},"gitHead":"c6dffd5547a8b8dadf6aea2e1a8e7ffa623637e6","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.2.0","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"21.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.29","@trybullet/cli-win32-x64":"1.3.29","@trybullet/cli-darwin-x64":"1.3.29","@trybullet/cli-linux-arm64":"1.3.29","@trybullet/cli-darwin-arm64":"1.3.29"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.29_1786637076747_0.5734834805173985","host":"s3://npm-registry-packages-npm-production"}},"1.3.30":{"name":"@trybullet/cli","version":"1.3.30","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.30","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"1261c8c8bb087e8af65a67099e069e39ea2f8ddd","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.30.tgz","fileCount":3,"integrity":"sha512-WLV2iVS+HpmahjIbOoXR6K3uttBqmm0RyhvadxYvrHU5/fgftSXQtEC5idTtDqbcjlXdxh37MmZ7BcIaeKZKog==","signatures":[{"sig":"MEQCIGw5MDhAn/tVMm3zcOqTWnhyWT7agwuWOF5T1Jpxso6nAiANEjnwuxUydLAusM/vX8e+qLE9cEzW/9mgEnBnJq8N+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28941},"engines":{"node":">=18"},"gitHead":"6776360078b18c28d33b2f8a4c4a336b3b6db25b","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.2.0","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"21.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.30","@trybullet/cli-win32-x64":"1.3.30","@trybullet/cli-darwin-x64":"1.3.30","@trybullet/cli-linux-arm64":"1.3.30","@trybullet/cli-darwin-arm64":"1.3.30"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.30_1786639043049_0.6210974941939744","host":"s3://npm-registry-packages-npm-production"}},"1.3.31":{"name":"@trybullet/cli","version":"1.3.31","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.31","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"4976d2ef2c289fa98cc9ccba068b8986f26199ab","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.31.tgz","fileCount":3,"integrity":"sha512-KmZtE6RiwucvPRqC+tky9N2QczK5D8Er6SmIX2FHech3gJJZQhgI6j0LKA/4oZXZp6wxfj8grH0YW36PpafxaA==","signatures":[{"sig":"MEUCIQD6WmA9BRfQfvt7N4/odE50hoWj9P9BDwXj7YNluNUFrwIgc8ic5cYwbyMpYx0rtGLNaN7ab1g1KKbYPeo6/DPNeDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28941},"engines":{"node":">=18"},"gitHead":"bfa26725395946026291d736c1ca8ec2677fb69d","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.31","@trybullet/cli-win32-x64":"1.3.31","@trybullet/cli-darwin-x64":"1.3.31","@trybullet/cli-linux-arm64":"1.3.31","@trybullet/cli-darwin-arm64":"1.3.31"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.31_1786683781279_0.9667312658987246","host":"s3://npm-registry-packages-npm-production"}},"1.3.32":{"name":"@trybullet/cli","version":"1.3.32","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.3.32","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"40c1a26ec9ae979cd688b1787bbaee735b32af38","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.3.32.tgz","fileCount":3,"integrity":"sha512-OTztRxOM0DaMzWd1GAWgSGqvMKDZ9HCBr/HqhL2DkTw7OfgXkfajfbCA4/Y8lEH4mFHkpaLt9L4Ng4h9uDNqMQ==","signatures":[{"sig":"MEQCIA9q1AWKVncNYzXNMfy+ZYQ0m4tX7vsUmKR5ulAp/45zAiAhp7IKh3ZZcVvDNVZBXOpXH7YbvbhJ58onK/ubm5yHzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28941},"engines":{"node":">=18"},"gitHead":"d7d667c4cbfb5ea67efc10648e1d1ccf5fa03d26","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.3.32","@trybullet/cli-win32-x64":"1.3.32","@trybullet/cli-darwin-x64":"1.3.32","@trybullet/cli-linux-arm64":"1.3.32","@trybullet/cli-darwin-arm64":"1.3.32"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.3.32_1786688357747_0.31774320415465285","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@trybullet/cli","version":"1.4.1","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.1","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"a9ffe7c0dabd1f98d45fb65c6cd82ae949c6d81b","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.1.tgz","fileCount":3,"integrity":"sha512-dpx/vs0PlAbxEX28yOeOtoCF9aLyzbEHgE40vssF5sSmKYIKtQb1DnLvW4Q9hGAdYQKpnwzC9NMLsqsvkxy2vw==","signatures":[{"sig":"MEUCIQCQWlDovoZbCWna8dkM0NaH12Iz6esjybdyqYwWfoiJXAIgMax4kvAoOzz888GDVWxL+ec9Zl6tLNKuEjkDOvh5LbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28935},"engines":{"node":">=18"},"gitHead":"2b2ae326fddec4501d09d5f3588b6918ae4a75ff","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.1","@trybullet/cli-win32-x64":"1.4.1","@trybullet/cli-darwin-x64":"1.4.1","@trybullet/cli-linux-arm64":"1.4.1","@trybullet/cli-darwin-arm64":"1.4.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.1_1786693794177_0.5389085331495107","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@trybullet/cli","version":"1.4.2","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.2","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"bbfb29db2f285e3cc38041248e776d8ec5a8b8a8","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.2.tgz","fileCount":3,"integrity":"sha512-qcQTJfW4OHINLGG59uLCpyaCZfFG6a5nD0uSFps85GiUktY9GzOs8+cHHITbxB6xuptTxU7Ntbz4CQB+JX5IZA==","signatures":[{"sig":"MEUCIA2LnN0luKPGrhZa+8/nHF46rjVApZB80Fn59eHfSOGfAiEAhjZKLBPaTYSs6fyIk2mwQY/xWTaYtee+8izAEArKa4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28935},"engines":{"node":">=18"},"gitHead":"f6d360279a1234c967aea159558881dda935846b","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.2","@trybullet/cli-win32-x64":"1.4.2","@trybullet/cli-darwin-x64":"1.4.2","@trybullet/cli-linux-arm64":"1.4.2","@trybullet/cli-darwin-arm64":"1.4.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.2_1786695360104_0.5197154051174366","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@trybullet/cli","version":"1.4.3","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.3","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"5814c31717d582bfb4ff923a2f17b447211a2157","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.3.tgz","fileCount":3,"integrity":"sha512-Xsv1SgeDmzFYjQYq88iArUEC80PrD/HfuHkxCdwG3tb0tYPs9lLB5fCn1QXAp/6gIuxwJFvQmIDVAIHql80rmw==","signatures":[{"sig":"MEYCIQCMyUYYRv7MqMcuiK3ZPcRf63eeAPppTEKsQtdyuMLmcgIhANi+35kdQfIkWuLi9jmyMQyod1+5ga1bt4yFz6nGKKpE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29949},"engines":{"node":">=18"},"gitHead":"f6d360279a1234c967aea159558881dda935846b","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.2.0","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"21.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.3","@trybullet/cli-win32-x64":"1.4.3","@trybullet/cli-darwin-x64":"1.4.3","@trybullet/cli-linux-arm64":"1.4.3","@trybullet/cli-darwin-arm64":"1.4.3"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.3_1786753057790_0.3851311523911578","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"@trybullet/cli","version":"1.4.4","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.4","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://usebullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"fbde029086969a293ab0de902db8d7132318b837","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.4.tgz","fileCount":3,"integrity":"sha512-9xsAXRjrr55hNdmzgnFZdC8G9a36piYAnQFPKgeq36yu4pS381DqJkhABXcR0shQigtUAv8I1TdIij2EUMVtWQ==","signatures":[{"sig":"MEUCIFyRI3BAN50rESeV9lp9obKCwGjq7CA1xUsSddtRzWkJAiEAoHFNcRQdT2PxrBeJHYo5hAubovc7jH/ZVRab4+gfm8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29949},"engines":{"node":">=18"},"gitHead":"8bb5b6e135ccf5814375ba0a3c4cb54428590b7e","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.4","@trybullet/cli-win32-x64":"1.4.4","@trybullet/cli-darwin-x64":"1.4.4","@trybullet/cli-linux-arm64":"1.4.4","@trybullet/cli-darwin-arm64":"1.4.4"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.4_1786766807308_0.03905417645128195","host":"s3://npm-registry-packages-npm-production"}},"1.4.5":{"name":"@trybullet/cli","version":"1.4.5","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.5","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://codewithbullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"9ad873565ecf7ec2d7a59a825671c3fd5db64248","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.5.tgz","fileCount":3,"integrity":"sha512-QaG5pBF1WKWcVvg12weDR6hZQfIHml2ydq33rvqawAsCToJG+zRsj4RHE+vafpQ7yDFziHOMk7KqrX+trSaqGg==","signatures":[{"sig":"MEYCIQCJKV6/GGDpNZkFKhUcoZEzrBpYEh6dzvBgtIwjNUpVPwIhANO4th4RXtA/JdmMOhA5ButXWxCvRM4+h2VyGURNn/RT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31287},"engines":{"node":">=18"},"gitHead":"5ca758c59f34e1a153bf447e540be9f5099835d4","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.5","@trybullet/cli-win32-x64":"1.4.5","@trybullet/cli-darwin-x64":"1.4.5","@trybullet/cli-linux-arm64":"1.4.5","@trybullet/cli-darwin-arm64":"1.4.5"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.5_1786964511623_0.749325301698899","host":"s3://npm-registry-packages-npm-production"}},"1.4.6":{"name":"@trybullet/cli","version":"1.4.6","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.6","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://codewithbullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"ae3b6b61ba6f9ca9674afa5e8e7401721681a8ce","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.6.tgz","fileCount":3,"integrity":"sha512-8XfNPrV3PUozc0LQcBt24T8N7fBuRFyLGfO3rXWmpxCRdvYGXYa2zdY8gQJzutL2G/m/WIBGPY/8a+MRCZfEmA==","signatures":[{"sig":"MEYCIQDph7t9GU4cwq9vm5Wl8bmBI+zZWEozH93VIcrK6MphhgIhAMWJuWj+GOaVDSIH7K9fjYFsKpSN24dzdQkNrBpu/4E1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31287},"engines":{"node":">=18"},"gitHead":"5f1da89c555c268b4899cc2e3dfd469e29a1219a","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.6","@trybullet/cli-win32-x64":"1.4.6","@trybullet/cli-darwin-x64":"1.4.6","@trybullet/cli-linux-arm64":"1.4.6","@trybullet/cli-darwin-arm64":"1.4.6"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.6_1786997900104_0.5734453453329664","host":"s3://npm-registry-packages-npm-production"}},"1.4.7":{"name":"@trybullet/cli","version":"1.4.7","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.7","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://codewithbullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"7e0cd2ef18ef1486f151a54b62eb304c122b64fa","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.7.tgz","fileCount":3,"integrity":"sha512-r9VlFZzywJCIEoCzCPGJZw9LqdFrFZ301ld4W7f0cPSi8VL2xFDfdSwiIcPdmLoaIVYjM+pEeIXapLCJ5i6FBA==","signatures":[{"sig":"MEQCIHFA+4WmwUIE2Je5v42pfchz7vZCQc4tGbwrq4qdzGN8AiBqKN8ZDhLpyI6vXQuqUYShhEY+EjKC5ertOK8uaPIVQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31287},"engines":{"node":">=18"},"gitHead":"abdced44f85da2113db9205eea149e33a2c536ed","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.7","@trybullet/cli-win32-x64":"1.4.7","@trybullet/cli-darwin-x64":"1.4.7","@trybullet/cli-linux-arm64":"1.4.7","@trybullet/cli-darwin-arm64":"1.4.7"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.7_1787003243458_0.26380623497512445","host":"s3://npm-registry-packages-npm-production"}},"1.4.8":{"name":"@trybullet/cli","version":"1.4.8","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.8","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://codewithbullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"351a6d36bf8efbf67ae7db070b3f1c516ca17425","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.8.tgz","fileCount":3,"integrity":"sha512-8GDJHgntUvTfEQKpqotZrLDZ2GQUFkC6PHvROqjCuY0s0auQNI6pILffQPSoEl2TKjgZ7JgCTAoqWYbBkr6Abw==","signatures":[{"sig":"MEUCIQDzYoAEr1+E6b/Sd8ZzqYkxwFFtzSP2vgEijzuQNCuf5AIgHsS4VyCPuD9WSufIjXhO377MhteJgfGbIjp7Q2JBwno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31287},"engines":{"node":">=18"},"gitHead":"de9de1c78be154a0311d5177f28cd41bf8fd3f9d","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.8","@trybullet/cli-win32-x64":"1.4.8","@trybullet/cli-darwin-x64":"1.4.8","@trybullet/cli-linux-arm64":"1.4.8","@trybullet/cli-darwin-arm64":"1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.8_1787010083664_0.21676901346202304","host":"s3://npm-registry-packages-npm-production"}},"1.4.9":{"name":"@trybullet/cli","version":"1.4.9","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.9","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://codewithbullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"8686a022237ecc65c3e8a4f5e1b69738e8dd35e2","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.9.tgz","fileCount":3,"integrity":"sha512-Ww+Xyp4RckBAn4gM8XB2JZ8hsqimkbSRXGqg6gHIgm9pTeDDUpU0AlATz7NmHsqgl40GmUlnGCm98oMCq/cuJg==","signatures":[{"sig":"MEYCIQDsRdyDDMhbSAkAvx80k0kD0hU5gZmHVLux8pq5YQGe6AIhAPlz42zMsmyO0rWoikMpIgqD94cqrmTkxMSBS5T9Q4vo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31287},"engines":{"node":">=18"},"gitHead":"f61966b21122b0ca952a59e2b3d2384acc1165f8","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.9","@trybullet/cli-win32-x64":"1.4.9","@trybullet/cli-darwin-x64":"1.4.9","@trybullet/cli-linux-arm64":"1.4.9","@trybullet/cli-darwin-arm64":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.9_1787074588577_0.9932227663563657","host":"s3://npm-registry-packages-npm-production"}},"1.4.10":{"name":"@trybullet/cli","version":"1.4.10","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.10","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://codewithbullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"60aded6016b298979591082c587f9461eaff781b","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.10.tgz","fileCount":3,"integrity":"sha512-wneNkQmoi/E3l6rXEgkh31K/4YrBmGw54XOnZpTI5qNuH3eiusG6JqJU5EhRcQhTO2tflOYOLYzZAVHFVvKrcg==","signatures":[{"sig":"MEYCIQCj8JhnKwbL5wHTOgUVDyffl/Vf6ugGJFLmcaWhoTt/zAIhAO/IqFUC3EnJQRtIiD93EoBiboAnvOKUNSb0NqNQg3io","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34538},"engines":{"node":">=18"},"gitHead":"5aa01159e4fcae786224748d7722d92b0e82c4a4","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.10","@trybullet/cli-win32-x64":"1.4.10","@trybullet/cli-darwin-x64":"1.4.10","@trybullet/cli-linux-arm64":"1.4.10","@trybullet/cli-darwin-arm64":"1.4.10"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.10_1787123812024_0.044017122457966185","host":"s3://npm-registry-packages-npm-production"}},"1.4.11":{"name":"@trybullet/cli","version":"1.4.11","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.11","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://codewithbullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"8eac5a4f60b6656c3487333b1940ecde8664fed2","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.11.tgz","fileCount":3,"integrity":"sha512-zJQbVjBo4OLyRA+ZqIXNFNnFYXXUd5q1vyL/dk0o4xUe3AEcowZzb8rk8z6AztPYffTE6Mfqhfyyc6Mk2/Z6+A==","signatures":[{"sig":"MEUCIDpgQKBMCG+qJw3okSwbnRS05wkS4IsO3i3nQFx+zhydAiEA7BvvN7NZTjr9u5gPOY+UIuJtGht/E688EtuZDNgkSnE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34538},"engines":{"node":">=18"},"gitHead":"380bb4e3225f0dba49a92371237f4c04eb05c553","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.11","@trybullet/cli-win32-x64":"1.4.11","@trybullet/cli-darwin-x64":"1.4.11","@trybullet/cli-linux-arm64":"1.4.11","@trybullet/cli-darwin-arm64":"1.4.11"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.11_1787224922939_0.48835454482180407","host":"s3://npm-registry-packages-npm-production"}},"1.4.12":{"name":"@trybullet/cli","version":"1.4.12","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.12","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://codewithbullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"cb9f847b5ddd7e9518cdd1fbb93ef0196f4876cb","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.12.tgz","fileCount":3,"integrity":"sha512-bU9282VaryEQ/EifMV2WwOsigDnmUlZ+KSvfqtQlee7Uc4o+AcNIYJ1nwPvFsViVomMF3BDPr+Jkp+dmcA+Asg==","signatures":[{"sig":"MEUCIQCgA2z3aXSAa6tfElcECpe03PA5jTEjDleg8ofY+DBqNgIgbqVeUX0gKo5QMxsI/WUqj/7+gdgcMCiCCePbytVBrYM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34538},"engines":{"node":">=18"},"gitHead":"43d61d77f8099e987a9c4ac1047dc97a6306a89c","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.12","@trybullet/cli-win32-x64":"1.4.12","@trybullet/cli-darwin-x64":"1.4.12","@trybullet/cli-linux-arm64":"1.4.12","@trybullet/cli-darwin-arm64":"1.4.12"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.12_1787297169255_0.0008556926212048843","host":"s3://npm-registry-packages-npm-production"}},"1.4.13":{"name":"@trybullet/cli","version":"1.4.13","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.13","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://codewithbullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"b576000a12279180399a12feca16784078b5e36c","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.13.tgz","fileCount":3,"integrity":"sha512-mPZCYKThUQCbXDR47oEDEM0ABtnSXs8G8QRlWhZS0EIOXyNQMSFNaJzChnGhbJY5E3YA7gjBC0OsST1fhspqyg==","signatures":[{"sig":"MEYCIQCk61t9P6BDgB3MBkkyZnJ3xwQdrqVJ3zzLvryu41dmLgIhAPw2vNqk6Ue9Nc1WgLVAbIWsiTxD2+43bfvkXMrRvB3n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36054},"engines":{"node":">=18"},"gitHead":"433d7bc4aadbd33ae5d524ea198d9ff6257f5fe0","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.13","@trybullet/cli-win32-x64":"1.4.13","@trybullet/cli-darwin-x64":"1.4.13","@trybullet/cli-linux-arm64":"1.4.13","@trybullet/cli-darwin-arm64":"1.4.13"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.13_1787450009071_0.9900446821088169","host":"s3://npm-registry-packages-npm-production"}},"1.4.14":{"name":"@trybullet/cli","version":"1.4.14","keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"license":"UNLICENSED","_id":"@trybullet/cli@1.4.14","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"homepage":"https://codewithbullet.com","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"bin":{"bullet":"bin/bullet.js"},"dist":{"shasum":"e328b2efbfc4bc655c08a7ba7cf569ad185ff317","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.14.tgz","fileCount":3,"integrity":"sha512-cVP/XPMa6AsZp08J5rxWvlqUUkOLVPTI5/Ot4xV8FK0EXQK8WZhtB9fnf/4ZG7DpZsDeuhWIGZJDPWbGSFHWbQ==","signatures":[{"sig":"MEUCIAhvZ+nHEBeUg49EowXjMGc+bQWKtFfjkG6uFNkCc7mLAiEAwojviqaxdo270BkjKy7nJ18fDlrmg274uNgti+5V7vw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36054},"engines":{"node":">=18"},"gitHead":"92439a0709637f8c4a567dd2c74894633e50bdf7","_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"repository":{"url":"git+https://github.com/trybullet/bullet.git","type":"git"},"_npmVersion":"10.9.8","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"@trybullet/cli-linux-x64":"1.4.14","@trybullet/cli-win32-x64":"1.4.14","@trybullet/cli-darwin-x64":"1.4.14","@trybullet/cli-linux-arm64":"1.4.14","@trybullet/cli-darwin-arm64":"1.4.14"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.4.14_1787639872372_0.813717786294361","host":"s3://npm-registry-packages-npm-production"}},"1.4.15":{"name":"@trybullet/cli","version":"1.4.15","description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","license":"UNLICENSED","homepage":"https://codewithbullet.com","repository":{"type":"git","url":"git+https://github.com/trybullet/bullet.git"},"keywords":["cli","coding-agent","ai","agent","claude","codex"],"author":{"name":"Bullet"},"bin":{"bullet":"bin/bullet.js"},"optionalDependencies":{"@trybullet/cli-darwin-arm64":"1.4.15","@trybullet/cli-darwin-x64":"1.4.15","@trybullet/cli-linux-x64":"1.4.15","@trybullet/cli-linux-arm64":"1.4.15","@trybullet/cli-win32-x64":"1.4.15"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"_id":"@trybullet/cli@1.4.15","gitHead":"c47f26f878c236167b5d1efe0b318417d899c3ad","bugs":{"url":"https://github.com/trybullet/bullet/issues"},"_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-RWlA5WEbQhqL0m6R15ovBzMAnqeqhnsOU9sBCOk3MMXqwd09n2QgU4ihI0FEjWU4Ekva3OGiWlHskrG8nO2Xcg==","shasum":"9165263d5bd12b43fcea6b303b7c4b52d28b97b7","tarball":"https://registry.npmjs.org/@trybullet/cli/-/cli-1.4.15.tgz","fileCount":3,"unpackedSize":36054,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCcENALdr7Va8E2vHUzF4enE6EKXfQcu2mkHvogUTO9owIgaqVhMY07RQdGgUIHTwdoQgQ6DFje3IPXIDPaKtvKY6w="}]},"_npmUser":{"name":"adi.kulkarni","email":"adikul117@gmail.com"},"directories":{},"maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_1.4.15_1787905364837_0.4113697554388931"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-07T06:52:50.843Z","modified":"2026-08-28T08:22:45.154Z","1.3.12":"2026-08-07T06:52:51.122Z","1.3.18":"2026-08-07T07:20:35.574Z","1.3.20":"2026-08-07T10:26:05.410Z","1.3.21":"2026-08-09T04:56:15.529Z","1.3.22":"2026-08-10T06:09:56.321Z","1.3.24":"2026-08-10T11:55:45.224Z","1.3.25":"2026-08-11T08:13:57.618Z","1.3.26":"2026-08-11T11:12:31.631Z","1.3.27":"2026-08-13T10:22:34.228Z","1.3.28":"2026-08-13T13:00:39.359Z","1.3.29":"2026-08-13T16:04:36.877Z","1.3.30":"2026-08-13T16:37:23.195Z","1.3.31":"2026-08-14T05:03:01.438Z","1.3.32":"2026-08-14T06:19:17.888Z","1.4.1":"2026-08-14T07:49:54.323Z","1.4.2":"2026-08-14T08:16:00.290Z","1.4.3":"2026-08-15T00:17:37.940Z","1.4.4":"2026-08-15T04:06:47.473Z","1.4.5":"2026-08-17T11:01:51.782Z","1.4.6":"2026-08-17T20:18:20.262Z","1.4.7":"2026-08-17T21:47:23.606Z","1.4.8":"2026-08-17T23:41:23.804Z","1.4.9":"2026-08-18T17:36:28.700Z","1.4.10":"2026-08-19T07:16:52.170Z","1.4.11":"2026-08-20T11:22:03.069Z","1.4.12":"2026-08-21T07:26:09.396Z","1.4.13":"2026-08-23T01:53:29.194Z","1.4.14":"2026-08-25T06:37:52.505Z","1.4.15":"2026-08-28T08:22:45.000Z"},"bugs":{"url":"https://github.com/trybullet/bullet/issues"},"author":{"name":"Bullet"},"license":"UNLICENSED","homepage":"https://codewithbullet.com","keywords":["cli","coding-agent","ai","agent","claude","codex"],"repository":{"type":"git","url":"git+https://github.com/trybullet/bullet.git"},"description":"The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.","maintainers":[{"name":"alex.sima","email":"alex@davidhf.com"},{"name":"adi.kulkarni","email":"adikul117@gmail.com"}],"readme":"# Bullet ⁍\n\n**The fastest coding agent.** A minimalist macOS desktop app: open a folder and\nBullet plans, edits files, runs commands, verifies its work, and shows you\neverything live. Connect a cloud provider or explicitly download the optional on-device model in Settings.\n\n## How it works\n\n- **Agent loop** (custom, ~200 lines — no framework): plan → tool calls\n  (read / edit / write / delete / run) → observations → verify → done. Hardened\n  with failure-retry directives, stuck detection, duplicate suppression, a 45s\n  wall-clock cap, and a definition-of-done verification gate.\n- **Router:** a nano-model semantic classifier (hard 4s cap — routing is never\n  the wait) rates each prompt on five difficulty levels. The optional local route\n  runs Ministral 3 8B via Metal after an explicit Settings download. With a key\n  → each level buys a deeper model *and* more thinking effort: quick asks run\n  on fast models (Haiku / Codex-low), harder work escalates (Sonnet 5 / Codex\n  at rising effort), and *extreme* tasks go to Fable 5 / Sol at full effort\n  (say \"use fable\", \"use sol\", or \"think hard\" to force the level). The debug\n  badge shows the exact model, tier, and effort used.\n- **Plan gate:** asking to plan (\"help me plan X\", \"let's figure out the\n  approach first\") is its own classifier answer — those turns draft a plan and\n  stop instead of working. Difficulty alone never triggers it: a big task you\n  told Bullet to *do* just gets done.\n- **Providers:** Bring a ChatGPT/Codex or Claude Code subscription, or use an\n  Anthropic, OpenAI, or xAI API key. Switch methods and providers in Settings\n  (⌘,). OAuth credentials are encrypted locally; keys stay on this Mac.\n- **Tools:** read / write / edit / delete, `search_code`, `find_files`,\n  `run_command`, background processes, web search + fetch, and a real browser\n  (below). File tools reach any absolute path; commands run from the workspace.\n- **Memory:** durable facts survive the session as one markdown file each, in\n  Claude Code's own on-disk format — kebab-case slug, `name`/`description`/\n  `metadata.type` frontmatter, `[[wiki links]]`, and a `MEMORY.md` index. That\n  is deliberate: Bullet reads the memories Claude Code already wrote for the\n  open folder (`~/.claude/projects/<folder>/memory`) plus Codex's consolidated\n  `~/.codex/memories` summary and scoped handbook (with its stage-one SQLite\n  store available during explicit import). Bullet's own files use the same\n  plain-Markdown building blocks and remain easy for either agent to import. The\n  index rides in the system prompt where it stays cacheable; memories matching\n  the current message are attached to that message instead, so recall never\n  invalidates the cached prefix. `remember` / `recall` / `forget` are tools the\n  agent calls itself. Bullet writes only in its own store\n  (`~/.bullet/memory`, shared by the app and the CLI) — another agent's files\n  are read-only until you ask for `/memory import`. Sub-agents may read memory\n  but not write it, and the 8K on-device model gets neither.\n- **Remote SSH workspaces.** Open `user@host:/path/to/project` — from the\n  sidebar (**Connect over SSH…**) or `bullet -C user@host:/path` — and Bullet\n  works on that machine. Transport is your own `ssh` binary, so `~/.ssh/config`,\n  IdentityFile, ssh-agent, ProxyJump and `Host` aliases (Daytona, Tailscale,\n  etc.) all just work; one multiplexed ControlMaster connection carries every\n  command. The remote folder is mirrored locally (dependency trees excluded),\n  file tools edit the mirror — diffs, snapshots and rewind included — while\n  every `run_command`/`start_process` executes on the host: edits rsync across\n  before each command, and whatever the command changed (lockfiles, generated\n  code, git commits) syncs back after it. When a remote dev server prints a\n  localhost URL, its port is forwarded over the same connection so Preview and\n  the agent's browser reach it. Hosts without rsync fall back to tar-over-ssh.\n  Keys, ssh-agent, password and key-passphrase prompts, first-use host\n  confirmation, and keyboard-interactive/MFA are supported; secrets go directly\n  to OpenSSH and are never saved. A one-off key file (a cloud provider's `-i`\n  key) can be set in the SSH input or with `--ssh-key <file>`; it is remembered\n  per host. Use `ssh://user@host:2222/path` for non-standard ports.\n- **Code search that lands.** `search_code` is extended-regex, so `(a|b)`, `\\d`\n  and `+` mean what the model thinks they mean — grep's default dialect treats\n  them as literal characters, which silently answered \"no matches\" for code that\n  was right there. A pattern that finds nothing is retried as literal text\n  before that answer is allowed, matches inside minified files are windowed with\n  a column instead of dumping a 400 KB line, `*.{ts,tsx}` is expanded, and a\n  directory you explicitly point at is never excluded as noise.\n- **Eyes.** `open_page` → `screenshot` → `read_page` → `page_action` /\n  `page_eval` drive an offscreen Chromium (no Playwright, no extra dependency).\n  The screenshot goes to the model *and* into the transcript, so a visual change\n  is verified by looking at it. `read_page` always reports console errors and\n  failed requests, every load clears the cache, and `page_action` includes\n  relative mouse-look for pointer-locked pages. Older captures are pruned from\n  the context so a long visual session doesn't pay for stale pixels.\n- **Speed levers:** warm KV sessions (no re-processing between turns),\n  patch-based edits (fewer output tokens), prompt caching on Anthropic,\n  parallel tool execution on cloud, flash attention on Metal, idle model\n  unload (frees ~2 GB after 5 min). One dev server per command: re-running\n  `npm run dev` returns the server already running with its URL rather than\n  starting a seventh one on a seventh port, and `stop_process` ends it.\n\n## UI\n\n- **Ask (⌘/ or `/ask …`)** — a side question in a floating popup, answered\n  *next to* the run instead of interrupting it. Nothing it does can break the\n  work in flight: the popup has its own thread and its own chat id, the answer\n  never enters the transcript, and the main process strips every mutating tool\n  (write/edit/delete, commands, processes, browser, sub-agents) from the turn —\n  so Ask can read the project and the web and nothing else. It sees the recent\n  turns of the chat it was opened over, so \"why did it do that?\" has an\n  antecedent. Drag it by the header, Esc (from inside) closes it, and closing\n  keeps the answer streaming for when you reopen.\n- **Sidebar grouped by folder** — chats are bound to their folder; agents in\n  different folders run concurrently (busy dot), and agents in the *same*\n  folder are told about each other's recent edits.\n- **Live activity**: plan checklist ticks in real time, action rows\n  (`✓ Edited app.js +10 −3`, click to expand output), a status pulse with an\n  elapsed counter through every silent reasoning stretch (never looks frozen;\n  dead connections error out via stream watchdogs), and a stop button (Esc).\n- **Resizable panels**: drag the sidebar and Activity/Preview edges; widths persist.\n- **Activity panel** (right): running/finished commands + per-file diffs.\n- **Plan panel**: a plan-first request drafts markdown (goal, approach, risks,\n  steps) into the side panel and *waits* — reply with feedback to iterate, ask\n  questions and the plan stays put, edit it directly, then **Run plan** (or\n  \"run it\") executes. Steps tick as the agent works; mid-run edits steer it.\n  The plan lives in the panel, never in the chat. Discard, or just move on to\n  other work, exits plan mode.\n- **LaTeX**: `$$…$$`, `\\[…\\]`, `\\(…\\)`, and math-y `$…$` render via KaTeX\n  (bundled, offline); dollar amounts in prose stay literal.\n- **Preview panel**: in-app browser for whatever the agent is serving. It\n  opens itself when the agent starts a dev server, and auto-reloads (cache\n  cleared) after each edit burst — toggleable via the `auto` button.\n- **Prompt history**: ↑/↓ in the composer cycles your previous prompts,\n  terminal-style; your in-progress draft is preserved.\n- **Attachments**: 📎, drag in, or **paste** code/text, images & screenshots\n  (sent as vision to cloud models), and PDF / Word / Excel / PowerPoint\n  (auto-extracted to text — works with the local model too).\n  **Rewind/fork**: hover any of your messages —\n  rewinding confirms first, then also reverts the file edits made after that\n  point (command side-effects are not undone). **Two themes**: Midnight / Paper.\n\n## CLI\n\nThe terminal front end. Not a port — it loads `electron/router.js` and every\nmodule under it, so routing, tools, skills, sub-agents, the rewind ledger and\nthe provider auth are byte-for-byte the same code the app runs.\n\n```bash\nnpm link                          # puts `bullet` on your PATH\nbullet account signup             # create a Bullet account (first run also offers this)\nbullet account guest              # start without an email; upgrade later without losing history\nbullet providers                  # connect or inspect providers and local servers\nbullet auth openrouter            # connect a specific provider directly\nbullet auth status                # show every connection\nbullet                            # interactive session in this folder\nbullet \"fix the failing tests\"    # run one task, then keep talking\nbullet -p \"what does app.js do\"   # print and exit — pipeable\ngit diff | bullet -p \"review this\"\n```\n\nInside a session: `enter` sends, `ctrl+j` newlines, `esc` stops a running turn,\n`tab` completes `/commands` and `@files`, `↑` walks history. `/help` lists the\nrest — `/providers`, `/model`, `/thinking`, `/cost`, `/diff`, `/undo`, `/resume`, `/agents`.\n`/login` signs in to your Bullet account; `/providers` connects and switches model providers.\n\n### Providers and thinking\n\n`bullet providers` (or `bullet auth`) presents the full provider surface: Claude and ChatGPT/Codex\nsubscriptions; Anthropic, OpenAI, xAI, Gemini (Google AI Studio), Groq, and\nOpenRouter API keys; Ollama and LM Studio local servers; and a custom\nOpenAI-compatible endpoint. Each connection keeps its own encrypted key,\nendpoint, and selected model, so adding one never replaces another.\n\nProvider presets are used when you press Enter at the base-URL prompt:\n\n```bash\nbullet auth gemini       # Google AI Studio\nbullet auth groq\nbullet auth openrouter\nbullet auth ollama       # http://localhost:11434/v1\nbullet auth lmstudio     # http://localhost:1234/v1\nbullet auth custom       # enter an HTTPS endpoint\nbullet auth status\n```\n\nEndpoints without a scheme are saved as HTTPS. HTTP is accepted only for\nloopback local servers. Local servers do not require a key. Use a provider and\nthinking level per run or per session:\n\n```bash\nbullet --provider openrouter --model openai/gpt-5.2 --thinking high \"review this\"\nbullet --provider ollama --model qwen3-coder \"fix the tests\"\n# in a session — unconfigured providers connect before becoming active\n/providers gemini\n/model gemini-2.5-pro\n/thinking high            # auto | low | medium | high | xhigh | max\n```\n\n`--effort` remains an alias for `--thinking`. The setting is persisted in the\nsession and forwarded only where the selected model supports it: OpenAI\nreasoning models, Claude, supported xAI/Gemini/Groq models, and OpenRouter\nmodels that advertise reasoning metadata. Unsupported local and compatible\nmodels receive no reasoning parameter, so the setting does not cause API errors.\n\nSkills come across from Claude Code and Codex without the desktop app:\n\n```bash\nbullet skills import              # review what's in ~/.claude and ~/.codex, tick what you want\nbullet skills import ./team-kit   # scan another folder too\nbullet skills import --all        # no review — for scripted setups\nbullet skills export kit.json     # move your reviewed skills to another machine\n```\n\n`SKILL.md` files, `commands/*.md` (including nested `/review:pr`), `agents/*.md`\nand `CLAUDE.md` are all recognised, and nothing is stored until you select it.\n`/skills` does the same thing inside a session, plus `enable`, `disable` and\n`remove`. Imported commands then run as slash commands and complete on `tab`;\nbuilt-ins always win, so an import can't shadow `/undo`. Skills that depend on\nexternal MCP servers still need those tools configured separately; importing a\nskill does not make its MCP dependencies available in Bullet.\n\nMemory works the same way. `/memory` lists what Bullet knows and where each\nfact came from, `/memory show <n>` prints one in full, `/memory import` copies\nClaude Code's and Codex's memories into Bullet's own store (originals untouched),\nand `/memory forget <n>` deletes one Bullet owns.\n\nMCP connections work in the CLI too. Import one already configured in Codex or\nClaude Code, add any remote HTTP or local stdio server, then test it before use:\n\n```bash\nbullet mcp list                         # connections and current status\nbullet mcp import linear                # import a discovered Codex/Claude connection\nbullet mcp add my-api https://example.com/mcp\nbullet mcp add local-tool -- npx -y @example/mcp-server\nbullet mcp search datadog                # includes registry IDs\nbullet mcp install com.mcparmory/datadog # guided encrypted setup\nbullet mcp configure datadog            # update an existing connection\nbullet mcp enable linear\nbullet mcp login linear                 # browser OAuth when status is needs-auth\nbullet mcp test linear                  # connect and list the tool count\n```\n\nUse `bullet mcp search <query>` to search the MCP Registry, `bullet mcp help`\nfor the complete command list, or `/mcp` for the same workflow inside an\ninteractive session. OAuth tokens and any values supplied with `--header` or\n`--env` are encrypted in Bullet's credential store. `mcp install` and\n`mcp configure` prompt for setup fields in an interactive terminal; scripts can\npass them explicitly, for example `bullet mcp configure datadog --env\nAPI_KEY_AUTH=… --env APP_KEY_AUTH_API_KEY=…`.\n\nModel-provider sign-in reuses whatever is already on the machine: an existing\nClaude Code or Codex login is imported directly, no browser round-trip.\nCredentials are encrypted with the OS keychain (macOS Keychain, `secret-tool`\non Linux) and kept in `~/.bullet`, separate from the app's own store.\n\nGuest mode is a real, device-local account: its chats and usage are attributed\non the dashboard, but it has no email recovery. Use `bullet account upgrade` or\nSettings → Account to add an email and password without losing that history.\n\nIn scripts, `-p` exits `0` when it answered, `1` when the turn errored, `130`\nwhen you interrupted it, and `2` on bad arguments — so `bullet -p … || handle-it`\ndoes what it looks like. stdout carries only the answer; routing notes and\nwarnings go to stderr.\n\nTwo capabilities do not cross over. The agent's browser — `open_page`,\n`screenshot`, `read_page` — needs the offscreen Chromium only Electron can host,\nso those tools are removed from the kit and the system prompt is told, rather\nthan left to fail mid-turn. And with no provider connected the CLI falls back to\nthe same Ministral 3 8B model and download path the app uses; that is a one-time\n~5 GB download, so it asks first, and `-p` refuses rather than pulling it in a\nscript nobody is watching.\n\nHow it stays one codebase: `cli/shim.js` registers itself as the `electron`\nmodule before anything under `electron/` is required, and supplies the four\nthings the shared core actually asks Electron for — a user-data directory,\n`safeStorage`, `shell.openExternal`, and a `BrowserWindow` that explains why it\nisn't there. Everything in `cli/` above that line is presentation.\n\n## Run\n\n```bash\nnpm install\nnpm start        # dev\nnpm test         # UI liveness + feature regressions (offline, no key)\nnpm run cli      # the CLI, from source\nnpm run test:cli # CLI suites (plain node, offline, no key)\nnpm run dist     # local unsigned build (right-click → Open)\n```\n\n`npm run eval:classifier` additionally checks routing quality — plan intent and\nplan-approval verdicts — against a live nano model, so it needs a provider key.\n\n## Linux\n\nEvery host difference resolves in one place, `electron/platform.js`; nothing else\nin `electron/` or `src/` may hardcode a path or read `process.platform`, and\n`scripts/check-platform.sh` fails the build if it does. CI runs the suite on\nmacOS and Ubuntu both.\n\n```bash\nnpm run dist:linux            # AppImage + deb into release/\nnpm run release:publish linux # push to the linux update feed\n```\n\n**Which package to hand a user**\n\n| | `.deb` | AppImage |\n|---|---|---|\n| Ubuntu / Debian | **recommended** | needs setup, see below |\n| Other distros | — | **recommended** |\n| Updates itself | no | yes |\n\nThe split is not a preference, it is what works. Chromium's sandbox needs either\nunprivileged user namespaces or a setuid helper. Ubuntu 24.04 blocks the former\n(`kernel.apparmor_restrict_unprivileged_userns=1`) and an AppImage is mounted\n`ro,nosuid`, so the helper can never be setuid there — the app aborts on launch\nwith \"The SUID sandbox helper binary was found, but is not configured\ncorrectly.\" A `.deb` can make the helper setuid, which `build/deb-postinst.sh`\ndoes; read that file before touching it, because electron-builder's generated\npostinst gets this wrong in a way that only breaks for the user, not the\npackager. Ubuntu 24.04 also ships FUSE3, so an AppImage needs `libfuse2t64`\nbefore it will even mount.\n\nRunning with `--no-sandbox` would paper over all of it and is deliberately not\ndone: the Preview panel renders pages the agent navigated to, which is exactly\nwhat that sandbox is there to contain.\n\n**Two Linux gaps to know about**\n\n- **No on-device model.** node-llama-cpp kills the process while loading a model\n  inside Electron on Linux — SIGILL on Electron 32, SIGSEGV on 34 and 38 — while\n  the same model and binaries work under plain `node` on the same machine. A\n  native crash cannot be caught, so `platform.localEngine()` gates it off and\n  onboarding asks for a subscription or API key instead. Fixing it means running\n  the engine in a child node process and streaming over IPC.\n- **`.deb` cannot self-update.** electron-updater only supports AppImage on\n  Linux, so Settings tells `.deb` users where to download from rather than\n  offering a button that cannot work. A real fix is an apt repository.\n\nThe AppImage ships CPU and Vulkan llama backends only; the CUDA ones are\nexcluded in `build.files` because they are 526 MB and load solely where the CUDA\nruntime is already installed, which for most desktops means never. Vulkan\nalready covers NVIDIA, AMD, and Intel. Re-adding them is one glob.\n\n## Windows\n\nWindows ships as a 64-bit NSIS installer and updates itself through the Windows\nupdate feed.\n\n```bash\nnpm run dist:win                # installer + latest.yml into release/\nnpm run release:publish windows # push to the Windows update feed\n```\n\nAgent commands run through Git Bash, which is installed with Git for Windows;\nBullet reports a clear startup error instead of accidentally invoking WSL when\nGit Bash is unavailable.\n\nWindows builds are deliberately unsigned: a publicly trusted Authenticode\nidentity is not available for free, and a self-signed certificate would still\nshow a security warning while providing no trustworthy proof of identity. The\ninstaller therefore shows Windows' honest **Unknown publisher** warning, while\nits filename, icon, file metadata, installed-app entry, HTTPS download URL, and\nSHA-256 file published beside every GitHub release identify it as Bullet. Users\nshould download only from the official Bullet site or `trybullet` GitHub\nrelease. No Windows signing secrets are required by the release workflow.\n\nThe on-device model is currently disabled on Windows; subscriptions and API\nkeys work normally.\n\n### Disposable test installers and cloud desktops\n\nThe **Test installers** workflow builds an unsigned Apple Silicon DMG, Windows\nNSIS installer, Linux AppImage, and Ubuntu/Debian `.deb` without publishing any\nof them:\n\n```bash\nnpm run test:installers\n```\n\nDownload the three seven-day artifacts from the workflow run in GitHub Actions.\nThey are suitable for Google Drive and manual testing. macOS requires\nright-clicking the app and choosing **Open** because the test DMG is unsigned;\nWindows shows **Unknown publisher** by design. On Ubuntu, use the `.deb`; use the\nAppImage for other compatible x64 distributions.\n\nDisposable Windows 11 Pro x64 and Ubuntu 24.04 x64 Azure desktops can be\ncreated and removed from a machine where Azure CLI is logged in:\n\n```bash\nnpm run test:vm:up          # create Windows; print RDP credentials\nnpm run test:vm:down        # delete the Windows resource group\nnpm run test:linux-vm:up    # create Ubuntu Desktop; print RDP credentials\nnpm run test:linux-vm:down  # delete the Linux resource group\n```\n\nLinux is based on Canonical's official Ubuntu 24.04 server image, with the\nminimal GNOME desktop and xrdp installed automatically. Use Microsoft Windows\nApp for either desktop. On Ubuntu, download and install the `.deb` artifact;\nthat is the recommended package and exercises Chromium sandbox setup too.\n\nCreation permits RDP only from the caller's current public IP and enables a UTC\nauto-shutdown (`0100` by default). Override settings when needed, for example:\n\n```bash\nBULLET_TEST_VM_SHUTDOWN=2330 BULLET_TEST_VM_LOCATION=eastus npm run test:vm:up\nBULLET_LINUX_TEST_VM_SHUTDOWN=2330 npm run test:linux-vm:up\n```\n\nAuto-shutdown deallocates compute but does not delete storage; always run the\nmatching `down` command after testing. The Windows and Linux desktops use\nseparate resource groups and can exist at the same time.\n\n## Releasing\n\nInstalled copies update themselves: the app checks\n`https://api.codewithbullet.com/bullet/v1/updates/mac/latest-mac.yml` on launch and\nevery six hours, downloads in the background, and installs on quit (Settings ›\nUpdates has a manual check and a *Restart to update* button). Nobody has to\ndelete and reinstall.\n\n**This only works for signed builds.** macOS applies updates through\nSquirrel.Mac, which requires the downloaded bundle to satisfy the running app's\ncode-signing requirement — an ad-hoc signed build can never update itself, and\npublishing one strands every user who installs it on that version.\n`scripts/publish-update.sh` refuses to publish an unsigned build for that reason.\n\nOne-time setup on the build Mac:\n\n1. In Xcode › Settings › Accounts, sign in with the Apple Developer account, then\n   **Manage Certificates › + › Developer ID Application**. Confirm with\n   `security find-identity -v -p codesigning` — you need a line reading\n   `Developer ID Application: … (TEAMID)`, not just `Apple Development`.\n2. Create an app-specific password at <https://appleid.apple.com> › Sign-In and\n   Security › App-Specific Passwords — notarization rejects the account\n   password — and put the credentials in `.env.notarize` at the repo root:\n\n   ```bash\n   APPLE_ID=\"you@example.com\"\n   APPLE_APP_SPECIFIC_PASSWORD=\"xxxx-xxxx-xxxx-xxxx\"\n   APPLE_TEAM_ID=\"YOURTEAMID\"   # Membership details on developer.apple.com\n   ```\n\n   `npm run release` loads that file itself. It is gitignored, it must stay\n   that way, and the Team ID in it has to match the team that issued the\n   signing certificate — the script checks and stops if they disagree, because\n   Apple rejects the notarization otherwise.\n\nThen each release:\n\n```bash\nnpm version patch          # or edit \"version\" — the feed compares against it\nnpm run release            # signs + notarizes, writes release/latest-mac.yml\nnpm run release:publish     # uploads to the update feed on the API box\n```\n\n`npm run release` takes a few extra minutes the first time — notarization is a\nround trip to Apple. Running clients pick the new version up within six hours,\nor immediately from Settings › Updates.\n\n### Signing on someone else's Mac\n\n**Bullet is signed on one specific Mac, and that never changes.** Squirrel.Mac\nonly applies an update whose signature satisfies the running app's requirement,\nso every release must be signed by the same Developer ID / Team ID as the one\nbefore it. Signing a release under a different team strands every installed\ncopy — those users would each need a manual reinstall to get updates back.\nKeep a `.p12` export of that certificate (and its password) somewhere safe\noff that machine: losing access to it means losing the ability to ship updates\nto everyone already running Bullet.\n\nWhoever signs builds from this repo rather than re-signing someone else's `.app`\n— electron-builder rebuilds the native modules and signs the unpacked\n`node-llama-cpp` binaries as part of packaging, and any hand-editing of a signed\nbundle invalidates both the signature and the sha512 in `latest-mac.yml`.\n\nOn their Mac: Xcode command line tools, Node, the **Developer ID Application**\ncertificate in the login keychain, then\n\n```bash\ngit clone … && cd bullet && npm install\n# write .env.notarize with the Apple ID, app-specific password, and the Team ID\n# that issued the certificate on this Mac (see step 2 above)\nnpm run release\n```\n\n(`CSC_NAME=\"Developer ID Application: Name (TEAMID)\"` if the keychain holds more\nthan one Developer ID certificate.) Leave `build/entitlements.mac.plist` alone —\nJIT, unsigned executable memory, and library validation are all off-limits to\nstrip, because the on-device model needs them under the hardened runtime.\n\nChecks before handing the build over:\n\n```bash\ncodesign -dv --verbose=2 release/mac-arm64/Bullet.app  # Authority=Developer ID Application: … (TEAMID)\nspctl -a -vv release/mac-arm64/Bullet.app              # accepted, source=Notarized Developer ID\nxcrun stapler validate release/Bullet-*-arm64.dmg\n```\n\nThen hand over `release/` intact — the `.zip` (electron-builder's, never a\nFinder-made one, which mangles symlinks and the signature), its `.blockmap`, the\n`.dmg`, and the `latest-mac.yml` from that same build, whose hashes must match\nthe files beside it. `npm run release:publish` does the upload and needs the VM\nSSH key, so it is easiest for whoever holds that key to run it on the received\n`release/` directory.\n\n## SWE-bench Verified\n\n`scripts/swe/` runs Bullet's real agent over SWE-bench Verified and grades every\npatch with the official Docker scorer — see\n[scripts/swe/README.md](scripts/swe/README.md).\n\n**All 500 instances, officially scored: 479/500 = 95.8%.** Native x86, one attempt\nper instance, network on, `gpt-5.6-sol`, `swebench.harness.run_evaluation`. Zero\nempty patches, zero worker errors, every instance graded.\n\n| | resolved | round trips¹ | latency | cost/inst |\n|---|---|---|---|---|\n| **Bullet — all 500** | **479/500 = 95.8%** | **15.0** | **119s** | **$0.73** |\n| mini-swe-agent + sol@max — all 500 | 421/500 = 84.2% | 12.6 | 91s | $0.29 |\n\nResolve rate by repository, so it is clear no single project is carrying it:\ndjango 96.5% (223/231), sympy 97.3%, sphinx 95.5%, matplotlib 94.1%,\nscikit-learn 100%, xarray 95.5%, astropy 81.8%, pytest 100%, pylint 90%,\nrequests 87.5%.\n\n**The 17-point asterisk.** Both rows above have network access, which is the\nreference's default and — on the evidence of its cost and latency — the published\nleaderboards' too. That matters enormously: these instances are public GitHub PRs,\nso an agent with a route out can fetch the merged upstream fix, and the reference\ndoes exactly that on 23% of instances (`curl raw.githubusercontent.com/<the very\nfile>`, `api.github.com/search/issues?q=<the bug>`). Measured directly on the\nrandom 120, same configuration, only the network changed:\n\n| | resolved |\n|---|---|\n| network on | 113/120 = 94.2% |\n| `--network none`, no web tools | 92/120 = 76.7% |\n\n**So 95.8% is the leaderboard-comparable number and ~77% is the from-the-repository\n-alone number.** Offline is the default here; `SWE_NETWORK=1` is the switch.\n\n¹Round trips — model calls per instance — is the only speed figure worth quoting.\nWall clock is provider-load dependent: the *same* configuration on the *same*\ninstances measured 131s and 248s nine hours apart with the machine idle. Turns\ndon't drift. `profile.js` reports both.\n\n**What the turn-efficiency work bought**, paired on the same instances: 17.2 → 14.4\nround trips and $0.93 → $0.68 an instance, for an accuracy change that is not\nstatistically separable (0 gained, 2 lost, McNemar p = 0.50 — a 1-2 point cost is\npossible and unproven). Against the reference on the shared 120, Bullet resolved\nevery instance it resolved and 17 more, nothing the other way (**p < 0.001**).\n\nA gold control on this machine resolves 117/120 reference patches on the random\n120; the three exceptions (a live HTTP call, an env-sensitive header test, an\nextension-version test) cannot pass whatever the patch does. So roughly 2.5% of any\nraw rate here is the machine, not the agent — `ceiling.js` reports the corrected\nfigure. No gold control was run over all 500, so the 95.8% above is raw.\n\n**What moved it.** Routing: the deep model resolves 62.1% at 138s against the fast\nmodel's 36.8% at 152s, so the best model leads at every level instead of being an\nescalation. Reliability: an earlier run submitted 13 blank patches from dead\nworkers, and there are none now. Two defects found by measurement rather than by\nreading:\n\n- **`search_code` ran in grep's BRE dialect**, where `(`, `|` and `+` are literal\n  characters — so `function (alpha|beta)` reported \"no matches\" for code plainly\n  present. Searches are 40% of all tool calls, so this cost both accuracy and a\n  great many wasted round-trips.\n- **The shared git mirror had a creation race.** `git clone` makes its directory\n  immediately and fills it over minutes, so a worker that only tested existence\n  cloned from a half-written mirror and lost the instance one second in. Six of 120,\n  all in the repositories eight workers wanted at once; all six resolved on re-run.\n\nA third defect, found by a one-instance smoke test after the runs above: an\nundeclared timer variable threw at the first phase write, silently aborting the tail\nof every attempt — losing the reproduction it was meant to collect, which is what\nthe candidate selector runs on. The patch survived because the error path recovers\nit from disk, which is exactly why it went unnoticed.\n\nTwo other levers were paired, graded and landed within noise: the methodology brief\nversus bare environment facts, and structured tools versus a bare shell.\n\n**Latency is round-trip count and nothing else.** Instrumented per tool over the\n500: an instance is 120s, of which **checkout 0.3s, container start 0.7s, collect\n0.5s, tool execution 14s (12%, four fifths of it real test suites) — and 104s of\nmodel thinking**, i.e. 15 round trips at 7s each. There is nothing to win in the\nscaffolding; the only lever is needing fewer turns. Bullet's 15 against the\nreference's 12.6 is the entire speed difference between them. Beware comparing\n*tool calls* instead: Bullet issues ~38 of those, but batches 2.5 per turn, and\nconfusing the two overstated the gap threefold in an earlier draft of this file.\n`profile.js` reports both.\n\nTwo things carry the result, and a third had to be taken back out:\n\n- **A testbed the agent can run.** The attempt works in the instance's prepared\n  container, so it can actually reproduce the bug and run the project's tests\n  instead of reasoning about code it cannot execute. File tools keep editing a\n  local checkout (that is where the diff comes from) and edits are pushed across\n  before every command.\n- **The best model, at full depth, first.** Measured over 86 graded attempts, the\n  deep model resolved 62.1% at 138s against the fast model's 36.8% at 152s — better\n  *and* quicker, because it needs far fewer steps. Escalation is right for chat and\n  wrong here, so there is no ladder: one attempt, strongest model, highest effort.\n- **The ensemble is off by default, and the reason is not yet settled.** Several\n  attempts under different lenses, each leaving a reproduction, every reproduction\n  run against every candidate in fresh containers, a reviewer to break ties — that\n  configuration scored 104/120 against a single deep attempt's 113/120, losing nine\n  instances and winning none (p = 0.004). But that comparison is confounded: an\n  undeclared variable in the phase stopwatch was throwing partway through every\n  attempt, and the statement it aborted was the one that collected the attempt's\n  reproduction. So the selector — whose whole job is weighing reproductions — was\n  running on almost none, and fell back to preferring the first, shortest candidate\n  on 97 of 114 instances. The bug is fixed; the experiment has not been repeated.\n  One attempt is the default because it is the best *measured* configuration, not\n  because the ensemble is known to be worse. An oracle over the pair scored\n  105/114, so the headroom is real and `SWE_K` still turns it back on.\n\nThe benchmark's answer key — test patch, reference patch,\n`FAIL_TO_PASS`/`PASS_TO_PASS` — never reaches inference; `export-instances.py`\nasserts those fields out of the data the agent sees. `SWE_NETWORK=1` is the switch\nbehind the two regimes in the table; without it the web tools are removed and every\ncontainer runs `--network none`.\n\nFirst prompt downloads the on-device model once (~5 GB), then it's local.\nApple Silicon only.\n\n## Layout\n\n```\nelectron/  main.js (window/IPC) · preload.js · router.js (routing+context)\n           engine.js (local agent loop) · cloud.js (cloud loops) · tools.js\n           memory.js (cross-session facts, Claude Code's on-disk format)\nsrc/       index.html · styles.css · app.js\ncli/       bin.js · shim.js (fake `electron` for plain node) · main.js (repl)\n           session.js (host wiring) · render.js (events → transcript) · ui/\nscripts/   icon/logo generators · ui-test.js / feature-test.js (offline suites)\n           cli-test.js (CLI suites) · memory-test.js · classifier-eval.js\n           eval.js / swebench.js / polyglot.js (live evals)\nBENCHMARK.md  one-shot website benchmark vs Claude Code / Codex\n```\n","readmeFilename":"README.md"}