{"_id":"@yc-software/qm","_rev":"17-15dc31749fc0a13a04a9ee68329dc1e6","name":"@yc-software/qm","dist-tags":{"latest":"0.1.14"},"versions":{"0.1.0":{"name":"@yc-software/qm","version":"0.1.0","license":"MIT","_id":"@yc-software/qm@0.1.0","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"43726acae85d9412796ffb78d6b1b3494cf0391e","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.0.tgz","fileCount":123,"integrity":"sha512-C8arJOdFoVZ1zTjjjsAZQ7SwRVjP7b5sBHJ5Nm/KMhxJ92/UN+u1m2Xx1qgorbUxa32jOwCtrH9jYBomdjiVQA==","signatures":[{"sig":"MEUCIEZLRsrq74j2cVr5LsmNBkoYwHMRZmecAraDixwV8aGRAiEAuh4S0MrBMe+Jzfa5E/BEWiJ4PjIUN7b3i/r/z6AnYLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1144452},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"b27c78b11538a16a0f6ac2e65c77913996ab4954","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.0_1785367784113_0.8203445557811118","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@yc-software/qm","version":"0.1.1","license":"MIT","_id":"@yc-software/qm@0.1.1","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"f5ae4da8f42ca5148d5b9564dc24761998fb682d","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.1.tgz","fileCount":123,"integrity":"sha512-K6gYyvtTvhG8UJN8re4Gcvmh/S8UaLgtUlRLQuMawNZTrT909Vt0h0yjycIut8NuTYCmYeXpP3Um7gsgdOwtog==","signatures":[{"sig":"MEQCIDS8Qpsgk3IZ2TEng93oRP2kNhb/NgUqu3aky2+nWOWFAiAJPs1FnVVzhxQNrTzKQ9cw8ffDw0O00SG2TwROCkymHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1144452},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"12014038a5d754a7860fca5dcdda5c8f0e9d84ed","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.1_1785370109618_0.22720081768997136","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@yc-software/qm","version":"0.1.2","license":"MIT","_id":"@yc-software/qm@0.1.2","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"3b913a746c505758c261e9b325e29a7c01e96de4","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.2.tgz","fileCount":126,"integrity":"sha512-bO1/hG/nnQe+CZ3pQS9DQzKDovGC1NcmsxdXRX7EqxpaWJHgOsz1W97FaoHBckm5yNUy+0eKDXRanZyjlXfXaA==","signatures":[{"sig":"MEQCICJRCCwS0fsc4c9HwGTJwGjghuEkJOxTmABheFc3XJ4OAiALY2/oxoKL+sSPsxOlMND5bhTspgw8kvaD0fUIRGihDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1210306},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"b80f9c629bbce74be4aff16307011bb2dca2a393","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.2_1785456362094_0.9144649761277561","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@yc-software/qm","version":"0.1.3","license":"MIT","_id":"@yc-software/qm@0.1.3","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"a100141e6bdee0f14d22849dcf42e4321d1f9513","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.3.tgz","fileCount":126,"integrity":"sha512-h6zIVzgk4/Bk5VMBAooiEPIO2TnM3mzcNJGz0AoGt+sd8aVh2JO9PEO5KdwzUcIcV+neFY+KLCqkP6EuRvS0wg==","signatures":[{"sig":"MEUCIQC7FeOEiWZY2rMckjukg+5iYHoPBeCBksfq0cte7OLrOgIgGsdi6GzurW1CSE2mlrTVv0YyNxRAmVPrmxa4CQuSQzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1211488},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"2639c85f12306db2e9555fc6cd7d4de7c68354ab","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.3_1785460299001_0.42421347179407576","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@yc-software/qm","version":"0.1.4","license":"MIT","_id":"@yc-software/qm@0.1.4","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"b5ea7e01ff189cdcb6468665f1e17b54411646b3","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.4.tgz","fileCount":126,"integrity":"sha512-L3WWtV+yjhBq7ARYJxNzTpV4cdvw8ZCYXVk0kRUUPjKwH7NObz8newikeCZwijvpmEEEnDLTi02O+nowQTDC4Q==","signatures":[{"sig":"MEUCIQCLCOEOE6tP5j+s9YpQEpi8i+MsW03RRl4w3c7x+uAEpwIgDGULj40xM53yu+SLdyzQMO1gnlt2dt81kH89vsWrY80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1211641},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"7f2c916360f1797a8ff2a77ce2ce40c5fabab087","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.4_1785521020629_0.8951371974756739","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@yc-software/qm","version":"0.1.5","license":"MIT","_id":"@yc-software/qm@0.1.5","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"1fd09aa0ecc512ac1df8629c9b6a3a4f9a157833","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.5.tgz","fileCount":129,"integrity":"sha512-mw/N3BLnAWlpG9Nwu5726DVXBR9ZrltFJcLzo791j+ioXigJ9PgKxdcKP0Q+5hlG1431seu5f8WMXBtBV3CKsA==","signatures":[{"sig":"MEQCICrs2pT2yn3zsr0rgxZLDyIcfhw7IzyO/0vwa0+bMlJDAiAxlk0cs6ob4GYi/qAxIA6j5M3nm68Mu23r7DKhNrJ7Ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1238581},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.13.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"26.2.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.5_1787001948943_0.1571906490128514","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@yc-software/qm","version":"0.1.6","license":"MIT","_id":"@yc-software/qm@0.1.6","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"991bc5c58ff05f1c8dd4a574432fd04c0a87629d","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.6.tgz","fileCount":130,"integrity":"sha512-GGiPxrfdA5VlVsrKZkCn5KOGTTbuASafC8qhbaywaHmwkcbDcwui5N2KlL/SUQ8x5sqHmZDo3+h7Ky8XnFkJHw==","signatures":[{"sig":"MEYCIQDuCfbbnQkiPY5frJgf+RUsSRK9AzkHgYaaOpDTfv/AhwIhAOuxId5idUOvO49SI0HMkg9TH6vIixbgfmFLLf80CBT2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICIqx7LSwN8nRde7hgmTr5cXAwaNXOXyKzw4twHdfupoAiA8v+kmTpBfpXRTGP65hDOQB0kqZgandBblQr01dXCFmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1257792},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"d15295eacf59b7265d81cbd273a139305a1a9442","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.6_1788412783875_0.2263986528643691","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@yc-software/qm","version":"0.1.7","license":"MIT","_id":"@yc-software/qm@0.1.7","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"e4bb1f32aa2cca89d010137b87ea2e299c1f996d","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.7.tgz","fileCount":130,"integrity":"sha512-A4/O94hJd9tCLxG5SExCg+Krb6VLCnuIo78BgMTrboJ2SjNEQD+ijyVyrdSzKV++GySgQJDwM5FqujYTt4FxCw==","signatures":[{"sig":"MEQCICL+FUligpMadXe8JO/u3S47JdEbqCtJToVjTYylxbBMAiBmq4DTj8s99kxb+bmws7I0q1QHcYPXU8vby3jquokF2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFMn+Puw8sbKn99dMC59TDXl281j54IlWgkmFajBvFNUAiEA6M0UBtXfqu24ejaOYi3Cjl+5gaxS1HHm60G5UQ7viUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1262186},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"6e8264f5346a7cc4c9b83b93071bf38291ba2a56","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.7_1788501905659_0.718063821323234","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@yc-software/qm","version":"0.1.8","license":"MIT","_id":"@yc-software/qm@0.1.8","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"a222d438cf515e2d6e159f03aa60411158d85c34","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.8.tgz","fileCount":130,"integrity":"sha512-IYeUsF+vSqaZvXy1zXZtzc2deo1gsBPf/VUzGWgiuN/jXJ4iiT3a7YdqjVBqqkSH8TWAHaX54M52OjHBKXBw2A==","signatures":[{"sig":"MEYCIQDynjaUAtPkiS0qC72wYo3XIXWTl1xbLcYcHKGY4zQjDwIhAOeAPAohoe/MFKoFjS7smtvh/uBtu1yt+nDYxsKEkxkn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDmUrnptJzmff7mudpTbaCMh/hKusqkaxMPC8Z3NFdWwgIgCNvxR1UBUJBt8AdpctJ6OHjfgjXKklelwFxnCpIb9hQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1262186},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"95d02d7280d510ad72acbdd835fa3eeb1e462475","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.8_1788560504254_0.7898930781264557","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@yc-software/qm","version":"0.1.9","license":"MIT","_id":"@yc-software/qm@0.1.9","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"a9d68eb534e4890328a31a9bc8edfebe2fe67dd3","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.9.tgz","fileCount":133,"integrity":"sha512-d8hLsl2egHWD+mOHBG6VDDRQMnwu9+AsKAqWxTKdXVFVyqeekhK5Id8FXNbF9XGPv7v1eoEJ5VGYq3PgLx56Pg==","signatures":[{"sig":"MEYCIQCSw0PGuyi08C+Rbzkb47jrvGhYkNY5Zx8ypQNZxMXxdAIhALAteLzOYxEz4UYVUo9re2XKQYNIta1edBUxNwvujNu/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDd8l17IxO99AFCkJZZGIcU8R4O0copCUi3V147Pn1T0gIgcMrd/FIvxy2HSepyHNzJ4X/bLyI6lThpVJz2LtSRwMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1278167},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"95b5a6a9941ce517f478147b1c6fa8365a16afa0","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.9_1788647018021_0.08319096370340096","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@yc-software/qm","version":"0.1.10","license":"MIT","_id":"@yc-software/qm@0.1.10","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"b7838e8cc441955cdb63168586e8b5468dfcea89","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.10.tgz","fileCount":133,"integrity":"sha512-V64NqtSktgVLOXjUMna5Y1wQ4Usk97yjrJ4/6cjZ1rroSIdLwByS4ceznywFHZh9Mid16NcRCYSJPExJYH9FTw==","signatures":[{"sig":"MEUCIBNjjC9TI07Hh05h6/Hi0jzsb16HBsz+/lMaWhWeU5b6AiEApzau/Xnz3p3eQQHtttBmYNkPBiuo9dyHiMhxvFsEpsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDfEactvz47m3RwES8ksP1+aZ6jn69zEdjYNUxjqhU7awIhAOgEcpJJHxOAP41YdoM3PqWDVyvVsFlczHJ+hPcJDeKW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1350848},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"24d9c9aa926c61af76229081b93e0e7dcf816665","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.10_1789159625360_0.7854753233997622","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@yc-software/qm","version":"0.1.11","license":"MIT","_id":"@yc-software/qm@0.1.11","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"dd6844819765cfe5c68e4552fe81df0a34467441","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.11.tgz","fileCount":133,"integrity":"sha512-pd6V4bNWd1YuY1P8PuH5KBtloPVQlHYUS+DrcfvvcgWvJ3006Id2S3BkfGuoQT1DEByVHerAMTi+2CAPakv5sQ==","signatures":[{"sig":"MEUCIG0nfxvDPCmjbB0FD44GVHOC+c4Pa8d23GEsFTf27M9+AiEAy079UNiv8B/7L2EYRiv3w+nZWF3mYtTsmgm6jRGcyZg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIByNo68Iq7lGEq2yzAqVry/OTJU5+Aw7nmdECOR/ht2kAiEAvUzKijBVIwye28KOMONcq7Xvh+XW5mtm7EiToLeKej0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1350848},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"51bf455ea414a58f70274284ce212142518e556a","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.11_1789190305232_0.6066242867226284","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@yc-software/qm","version":"0.1.12","license":"MIT","_id":"@yc-software/qm@0.1.12","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"3ca2ecb9a60e731aa6f784860d04874fcd94e768","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.12.tgz","fileCount":142,"integrity":"sha512-x3si0TXYB5J/NJOFMRVbyWmX3zexuY12xrM+EXKGiaSuHt818v5bCBgYV5TPvcwoAdffPFYXQ8F2VAu9J/HvYQ==","signatures":[{"sig":"MEYCIQDfi/hqbwCqBl6gFPEzbPK/N9bVfsFE6QFJc+PMy9Tf7wIhALqCMuHwA29pnLaLkk6gWjfTEIfiQX+sVshd9KkXAQ9c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCn5iD71rfUvrnqgUoC7txEPftmWtMCehznlq10sjr4XAIgTiLdH+2Ju6Aglm9segSiTwY8pzKhVUY4Wn2DmJKG+rY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1472268},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"5a5cb51260b13000dda5d890d40c877c88d87555","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.12_1789776949462_0.7710044275746466","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@yc-software/qm","version":"0.1.13","license":"MIT","_id":"@yc-software/qm@0.1.13","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","bugs":{"url":"https://github.com/yc-software/qm/issues"},"bin":{"qm":"dist/bin/qm.js"},"dist":{"shasum":"df39bddf791f25b459b772011bda269333cc77cb","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.13.tgz","fileCount":142,"integrity":"sha512-pMnMnriY3IV1M+UFaXSWNqF6xyYVu7On+M4UiDYWJW+wFlFCoCbnUbijEOTHVtrRYbk8X0OIdgO/QRok4aUjCw==","signatures":[{"sig":"MEUCIQCmlfGW3NTWeNWFj0dRrvTZyt9TCYwQiOtaaQZv5zgSxAIgYPbsYTQIERaYwLc7RFB6dJSrMdy+jc8ukg1MnuGxBgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHNxdsi6rtow77V30WtJJGZKYyIA2TsKqYcizxIPXugNAiEAk1oGmdeHRQJJVvKqT77m04GECw+MokjwXzwzyTgbHGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1486856},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"a5a36675041a85e30b9ff3632f678ba36837aabf","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/qm_0.1.13_1790495177017_0.41733713598029554","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"_id":"@yc-software/qm@0.1.14","bin":{"qm":"dist/bin/qm.js"},"bugs":{"url":"https://github.com/yc-software/qm/issues"},"dist":{"shasum":"3941839fcc96dd0f3be9fb30920162654493e7e8","tarball":"https://registry.npmjs.org/@yc-software/qm/-/qm-0.1.14.tgz","fileCount":142,"integrity":"sha512-Z4SWqU/YIcMvvcuBpI8x5PQgRYyuGVChTCyWkjR4/3zXlAxVjHrtNEHyCuoqSQwEE6GuWifKNU8eKhnwbGMxMQ==","signatures":[{"sig":"MEUCIQDq4uT9rIZWE/TSSTUG71WFTexRc5zwBScsxdL+Pc5oLwIgAdb1n9qIuqxtMGUF1hH3o0oz4xCUxOYyOuMRafKuEJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEY+Ep7esQSmga47j57yVHbtJ1zEab3fTaVeWl0xe9LJAiEAsAstVgM3czu2RRJm62F6cZFQEu7KJVnGdaG+OSzfvuI="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@yc-software%2fqm@0.1.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1492584},"name":"@yc-software/qm","type":"module","engines":{"node":">=24.0.0"},"exports":{"./contract":{"types":"./dist/src/contract.d.ts","default":"./dist/src/contract.js"}},"gitHead":"74486242db54ee6df67f011da6a386d6c394b9f8","license":"MIT","scripts":{"qm":"node -- bin/qm.ts","test":"node --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json","prepack":"npm run build","test:all":"node --test test/*.test.ts test/e2e/*.e2e.test.ts","test:e2e":"node --test test/e2e/*.e2e.test.ts","test:pack":"node --test test/package.test.ts","typecheck":"tsc -p tsconfig.json"},"version":"0.1.14","_npmUser":{"name":"16francej","email":"josh@ycombinator.com"},"homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","directories":{},"maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^24.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/qm_0.1.14_1790905409948_0.4736758683832605"}}},"time":{"created":"2026-07-29T23:29:43.929Z","modified":"2026-10-02T01:43:30.412Z","0.1.0":"2026-07-29T23:29:44.272Z","0.1.1":"2026-07-30T00:08:29.879Z","0.1.2":"2026-07-31T00:06:02.256Z","0.1.3":"2026-07-31T01:11:39.263Z","0.1.4":"2026-07-31T18:03:40.802Z","1.0.5":"2026-08-17T20:28:38.136Z","0.1.5":"2026-08-17T21:25:49.084Z","0.1.6":"2026-09-03T05:19:44.051Z","0.1.7":"2026-09-04T06:05:05.766Z","0.1.8":"2026-09-04T22:21:44.375Z","0.1.9":"2026-09-05T22:23:38.152Z","0.1.10":"2026-09-11T20:47:05.508Z","0.1.11":"2026-09-12T05:18:25.323Z","0.1.12":"2026-09-19T00:15:49.586Z","0.1.13":"2026-09-27T07:46:17.125Z","0.1.14":"2026-10-02T01:43:30.049Z"},"bugs":{"url":"https://github.com/yc-software/qm/issues"},"license":"MIT","homepage":"https://github.com/yc-software/qm/tree/main/cli#readme","repository":{"url":"git+https://github.com/yc-software/qm.git","type":"git","directory":"cli"},"description":"Control-plane CLI for portable QM deployments on Docker, Fly, and AWS.","maintainers":[{"name":"reganbell","email":"regan@ycombinator.com"},{"name":"16francej","email":"josh@ycombinator.com"}],"readme":"# `qm`\n\nThe standalone deployment CLI for QM. The normative directory schema,\nsecurity guarantees, target behavior, and lifecycle are in\n[`docs/deploy-directory.md`](../docs/deploy-directory.md). `qm init` materializes\nthe agent-consumable package runbook into the deployment repository.\n\n```bash\nnpm exec --yes --package=@yc-software/qm@latest -- \\\n  qm init . --org acme --target aws\nnpm install\nnpm exec qm -- check\nnpm exec qm -- infra render\nnpm exec qm -- doctor\nnpm exec qm -- infra build-image\nnpm exec qm -- plan\nnpm exec qm -- up --yes\nnpm exec qm -- check --live\n```\n\nThis package is published to npm as `@yc-software/qm`, with npm provenance attesting the\nbuilding workflow. A release is one dispatch of `.github/workflows/release.yml` from\n`main`: it signs and pushes the first-party images, publishes the package pinning their\ndigests, and then tags `v<version>` and creates the GitHub release with the resolved\ndigests attached. Each release picks its own version: a patch bump past the latest released version, or\n`cli/package.json`'s version when a PR raised it higher (for a minor or major bump); a\ntag that already exists stops the release rather than moving. The checked-in image manifest is a sentinel that\na deployment overrides with real digests. The packed-artifact test exercises the consumer\npath locally.\n\nThe CLI deploys long-running QM services; it is not the runtime. Docker runs\nthem locally, Fly runs them as Fly apps with Fly Machines for agent computers, and AWS\nruns digest-pinned tasks on ECS Fargate (amd64 by default for first-party services) with Lambda MicroVM agent computers.\n\nWhen upgrading an AWS source deployment that previously relied on the ARM64 default,\nset each existing workload's `architecture: \"arm64\"` explicitly until rebuilding\nits image for another platform. Secret rotation refuses a task-platform change\nbefore uploading secrets. New release candidates record their workload architectures;\nlegacy source-built first-party candidates without that record require an explicit\narchitecture matching the image, or regeneration with the current CLI. Candidate\ndeployment and migration reject platform mismatches before accessing AWS.\n\n## Deployment directory\n\n```text\nqm.config.jsonc\npackage.json\npackage-lock.json\ndeployment.md\n.codex/skills/deploy-qm/\n.env.example\n.env\nslack-app-manifest.yml\nslack-sso-manifest.yml\nsandbox/\n  tools/<id>/tool.json\n  tools/<id>/<binary>\n  skills/<id>/SKILL.md\n  Dockerfile\nplugins/<name>/Dockerfile\ninfra/\n```\n\n`qm.config.jsonc` is committed and contains no secret values. `.env` is ignored.\n`package.json` pins the CLI package at the exact version that scaffolded the\ndirectory — `contract: 1` is only the compatibility floor — so every checkout\nresolves the same interpreter; upgrade the pin deliberately.\n`cd` into it and the DEPLOY commands act on it; `--config` / `--env-file` / `--sandbox-dir` relocate\na piece (e.g. several deployments sharing one `sandbox/`). `check` validates the config,\ncomputed secret names, tools, skills, and plugins without network access; `up`, `plan`, and\n`sandbox build` run the same checks first. `doctor` verifies external prerequisites read-only.\n`plan` renders the deployment; AWS mutation requires `up --yes`.\n\nFor a single-host Docker deployment, `sandbox.backend: \"local\"` runs each agent\ncomputer in its own container. `qm up` builds the local runtime from the CLI's\npinned sandbox base, mounts the host Docker socket into trusted core, and connects\ncore to each sandbox's private network. An explicit `sandbox.image` uses that\nrunnable local image instead.\n\nOn AWS, `up` verifies under the deploy lease that RDS point-in-time recovery\nis current (its `LatestRestorableTime` must lag by at most\n`QM_AWS_DB_MAX_RESTORE_LAG_MS`, default 10 minutes) and records the pre-deploy\ntimestamp in the deployment manifest it precedes. `rollback` restores code and\nconfiguration only, so it prints that timestamp as the matching data restore\npoint (`aws rds restore-db-instance-to-point-in-time`);\n`aws.predeployDbSnapshot: false` opts out.\n\nAWS deployments can opt into durable background ownership with\n`aws.backgroundWorkControl: true`. Deploy protocol-capable core images to every\nparticipating stack before bootstrapping ownership. The CLI allocates a unique\n`BACKGROUND_DEPLOYMENT_ID` for each replacement core cohort and records it in the\ndeployment manifest. A no-op deployment and automatic ECS task replacement keep\nthat identity; an explicit core restart allocates a new one. Pending preparation\nis persisted before ECS changes, and an ambiguous previous deployment must be\nreconciled before another identity can be allocated.\n\nControl requests require both `CORE_SIGNING_SECRET` and a distinct\n`DEPLOYMENT_CONTROL_SECRET` of at least 32 characters. The control secret is\nrestricted to core. Configuring an identity preserves the legacy background flag\nuntil explicit bootstrap verifies every participating task. The exported\n`awsBootstrapBackgroundWork` adapter accepts all peer configurations and an exact\ndesired deployment identity, or `null` to start paused. It refuses missing cohorts\nand inconsistent durable membership.\n\nThe exported `awsBackgroundWorkBootState` reads the exact manifest core task to\nreturn its recorded boot flag and optional deployment identity. It returns\n`undefined` only without a recorded core task, and rejects missing or ambiguous\nboot flags or identities. Deployment wrappers can preserve the boot environment\nwhile changing durable ownership independently.\n\nThe exported `awsBackgroundWorkCapacity(config, configDir, candidatePath?)` proves\nthat an inactive controlled stack is currently reusable. It requires another\nowner, fully drained current membership, stable native deployments and exact task\ninventories for every workload, resolved deployment preparation, and explicitly\ndisabled protection on every current core task. It never changes task protection\nor deployment state. The deploy role needs `ecs:GetTaskProtection` on its tasks.\nThe result binds the manifest and deployment identities, ownership generation,\nworkload task definitions, native deployment IDs, task ARNs, and protection proof.\n`awsBackgroundWorkStatus` also returns the current manifest ID for an active-owner\nproof. A release coordinator can combine both snapshots with immutable candidate\nprovenance and compare them again under its production lock before any mutation.\nThis is a point-in-time check, not a reservation: intervening maintenance or task\nreplacement invalidates the proof and must block promotion.\n\nLive checks use the active ownership cohort's authenticated canary endpoint to\nverify a real model reply, session persistence, generated title, error records,\nsession cleanup, and database catalog health. The CLI proves the exact healthy\ntask cohort and ownership generation before and after the check. It requires a\nfinal success bound to the request and responding task; heartbeats alone do not\ncount. An uncertain result never triggers an automatic replay or fallback.\nLegacy deployments retain the Fargate canary. A controlled deployment uses that\nsame path only when a successful ownership read proves bootstrap is disabled or\nanother cohort owns background work.\n\nOnce bootstrapped, background mode changes use generation-checked ownership\nrequests without restarting ECS tasks. Activation waits for prior owners to stop\nclaiming and every expected task to finish activation. Pausing stops new claims;\nin-flight turns can continue draining. Replacing or rolling back the active core\ncohort requires an explicit pause or handover and proof that every member has\ndrained first. A demotion refuses to pause a different current owner. Unresponsive members are never\nassumed dead: `awsRetireBackgroundWorkMembers` requires exact instance, task ARN,\nand generation identities plus ECS evidence that each task stopped. This recovery\nis also available before bootstrap for stopped legacy members.\n\nCore secret uploads defer activation to a subsequent staged `up --restart core`.\nThe generic upload path refuses changes to either control credential while a\ncontrolled cohort is recorded, because replacing credentials before coordinating\nall running processes would break ownership control. Legacy AWS deployments keep\nthe task replacement path when ownership control is not configured.\n\nBatch operators can set `QM_DEPLOY_PROGRESS_FILE` to a new absolute file path and\n`QM_DEPLOY_PROGRESS_TOKEN` to a unique attempt identifier for candidate `up --yes`.\nAfter all forward service updates have been submitted, the CLI atomically creates\na private JSON receipt with `phase: \"monitoring\"`, `token`, `orgId`, and `targets`\n(the selected workload-to-task-definition mapping). It then continues health\nchecks, manifest recording, and rollback under the deployment lease. This receipt\nonly permits the batch runner to release a submission slot; the CLI exit status\nstill determines success. Use a fresh path and token for every attempt. Missing\nreceipts must keep the submission slot occupied until the CLI exits.\n\n`sandbox build` is a local validation build of the sandbox layer image. At runtime\nsandboxes boot their platform's stock image; tools and skills arrive through the\ndeployment-layer sync, which every ordinary `up` performs.\n\nContent screening is off by default. Set `securityScreen: { \"mode\": \"observe\" }`\nto record classifier verdicts without acting on them, or `\"enforce\"` to quarantine\nflagged content. The classifier is the built-in model unless `\"classifier\": \"proxy\"`\nnames an external screener with a provider label and HTTPS endpoint; route its token\nthrough `secretEnv.core.SECURITY_SCREEN_PROXY_TOKEN`.\n\n## Commands\n\n```text\ninit [dir] [--org id] [--target docker|fly|aws]\ncheck [--json] [--live]\ndoctor\ninfra render|build-image|delete-image|delete-task-definitions\nconformance [dir] [--static]\nplan\nup [--yes] [--build-from[=repo]] [--image-label label]\nslack render\noutputs [--json]\nadmin-login [--email admin@example.com]\nproof scope-key <scope-id>\nsecrets push [--from file]\nstatus\nlogs [service] [-f] [--tail n]\ndown [--purge]\nrollback [--to revision-or-sha]\nsandbox build [--from image] [--tag tag] [--dry-run]\n```\n\n## Administrator login without email\n\nAfter deployment, run `qm admin-login` to print a single-use login URL valid for\nfive minutes. Open it and confirm the displayed administrator email. The command\nuses the deployment's existing `PORTAL_SESSION_SECRET` and the email in\n`ADMIN_GRANTS`; if several admins are configured, select one with `--email`.\nQM checks that the selected account still has `org_admin` access when the link\nis redeemed. The command creates no account or role grant.\n\nRun it from the deployment directory with its `.env`, or use `--config` and\n`--env-file`. Inside a running deployment without a config file, supply\n`PORTAL_PUBLIC_URL`, `PORTAL_SESSION_SECRET`, and `ADMIN_GRANTS` through its\nenvironment. The CLI prints only the URL, which is a temporary login credential;\ndo not publish it or put it in shared logs.\n\n`qm setup` offers email setup separately. Skip it to use administrator login\nwithout Resend or SMTP. For ordinary users before email is ready, the broker can\naccept passwords: hash one with `node plugins/auth/src/hash-password.ts\nuser@example.com` and store the output with `qm secrets set AUTH_PASSWORD_USERS`.\nThis is meant for onboarding; switch to email links or an identity provider\nafterwards. To enable ordinary email login later, rerun `qm setup`\nand configure the selected transport's complete credential set and sender,\nthen push secrets and redeploy. Missing email credentials disable email sign-in;\nQM and `qm admin-login` remain available, even if a sender is still configured.\n\nDeployment commands accept `--config`, `--env-file`, and `--sandbox-dir`;\n`admin-login` uses only `--config` and `--env-file`. `dev` remains\nthe contributor worktree loop and is separate from the portable deployment contract.\n\n## Package contract\n\nThe `@yc-software/qm/contract` export is the supported programmatic surface for\nconformance tests. It exposes the contract version, parsing/rendering\nfunctions, and provider ids without registering arbitrary runtime plugins.\nIncompatible directory\nchanges increment the contract major; optional fields may be added within a\nmajor.\n\nThe package has no runtime dependencies. It shells out to Docker with Buildx, Flyctl,\nthe AWS CLI, and Git. Terraform is operator-run against the module generated by `init`.\n","readmeFilename":"README.md"}