{"_id":"@adamkadaban/crucible","_rev":"10-5b616940faef887d55d75eed33397ba9","name":"@adamkadaban/crucible","dist-tags":{"beta":"0.1.0-beta.3","latest":"1.3.1"},"versions":{"0.1.0-beta.0":{"name":"@adamkadaban/crucible","version":"0.1.0-beta.0","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"author":{"name":"Adam Hassan"},"license":"MIT","_id":"@adamkadaban/crucible@0.1.0-beta.0","maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"homepage":"https://github.com/Adamkadaban/crucible#readme","bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"bin":{"crucible":"dist/cli.js"},"dist":{"shasum":"91e4927072ada054f90e24bc2cc33e8a2bb78683","tarball":"https://registry.npmjs.org/@adamkadaban/crucible/-/crucible-0.1.0-beta.0.tgz","fileCount":17,"integrity":"sha512-THMbO0BEUaU1GitUZuJ/ER6fh05KQISqfgQVEA0w2ACJoViX2PaTtIyq7R8B9PIc9MmMBKMPXBlQtLSLM4FMpg==","signatures":[{"sig":"MEUCIClFnyqTPt7LvQz3ekbtMFiBaLeU7nAwdNo4TWNKGrmKAiEAq1/iTLpW/mYSOg9Uu6fPmneHg4rmqGwsvOs0gQSsNW4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9141868},"type":"module","engines":{"node":">=22.12.0","pnpm":">=10.10.0"},"exports":{".":{"import":"./dist/cli.js"},"./package.json":"./package.json"},"gitHead":"ad0364f3f003ce394be1bd16da145f246ba63c1c","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -b packages/core packages/mcp-server packages/cli","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build","format":"prettier --write .","prepack":"pnpm build:bundle && node scripts/assert-npm-vendor.mjs","crucible":"tsx --conditions=development packages/cli/src/index.ts","typecheck":"tsc -p tsconfig.check.json --noEmit","build:bundle":"node scripts/build-npm-bundle.mjs","format:check":"prettier --check ."},"_npmUser":{"name":"adamkadaban","email":"adamkadaban@gmail.com"},"repository":{"url":"git+https://github.com/Adamkadaban/crucible.git","type":"git"},"_npmVersion":"11.13.0","description":"Source-install beta for controlling isolated Windows analysis VMs from Linux MCP agents.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","undici":"^7.16.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0","devDependencies":{"tsx":"4.22.3","eslint":"9.39.4","vitest":"4.1.7","esbuild":"^0.28.0","prettier":"3.8.3","@eslint/js":"9.39.4","typescript":"6.0.3","@types/node":"25.9.1","typescript-eslint":"8.60.0"},"_npmOperationalInternal":{"tmp":"tmp/crucible_0.1.0-beta.0_1780237966540_0.992883166438651","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.3":{"name":"@adamkadaban/crucible","version":"0.1.0-beta.3","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"author":{"name":"Adam Hassan"},"license":"MIT","_id":"@adamkadaban/crucible@0.1.0-beta.3","maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"homepage":"https://github.com/Adamkadaban/crucible#readme","bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"bin":{"crucible":"dist/cli.js"},"dist":{"shasum":"00ecf4d9bf8b29b5ef3a8b7d915da1c245a5c660","tarball":"https://registry.npmjs.org/@adamkadaban/crucible/-/crucible-0.1.0-beta.3.tgz","fileCount":17,"integrity":"sha512-EEH7JIW16NccMMvkVhI17m0V580zZ3ywDnxnz0yJGcLMIpqwRjxqgKt2HdvfInqh81lB6nWNzcn2Uu6Zv8VuLA==","signatures":[{"sig":"MEMCH1eAXHevpXQsJ70mFWdELKNTR1qWaSmtDzxj8yrNvjUCIDdGYvfqD3MwFJwwhb/gOs2jTppCLJ+L+35i/FYtE7Tp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamkadaban%2fcrucible@0.1.0-beta.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9156804},"type":"module","engines":{"node":">=22.12.0","pnpm":">=10.10.0"},"exports":{".":{"import":"./dist/cli.js"},"./package.json":"./package.json"},"gitHead":"87e902abfc7933cb52bfab871541efac8439bfa9","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm generate:version && tsc -b packages/core packages/mcp-server packages/cli","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build","format":"prettier --write .","prepack":"pnpm build:bundle && node scripts/assert-npm-vendor.mjs","crucible":"tsx --conditions=development packages/cli/src/index.ts","typecheck":"tsc -p tsconfig.check.json --noEmit","build:bundle":"node scripts/build-npm-bundle.mjs","format:check":"prettier --check .","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1c54079-a8d5-45d3-b817-4be959e8a023"}},"repository":{"url":"git+https://github.com/Adamkadaban/crucible.git","type":"git"},"_npmVersion":"11.13.0","description":"Source-install beta for controlling isolated Windows analysis VMs from Linux MCP agents.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","undici":"^7.16.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0","readmeFilename":"README.md","devDependencies":{"tsx":"4.22.3","eslint":"9.39.4","vitest":"4.1.7","esbuild":"^0.28.0","prettier":"3.8.3","@eslint/js":"9.39.4","typescript":"6.0.3","@types/node":"25.9.1","typescript-eslint":"8.60.0"},"_npmOperationalInternal":{"tmp":"tmp/crucible_0.1.0-beta.3_1780262408226_0.20892448491630944","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@adamkadaban/crucible","version":"1.0.0","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"author":{"name":"Adam Hassan"},"license":"MIT","_id":"@adamkadaban/crucible@1.0.0","maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"homepage":"https://github.com/Adamkadaban/crucible#readme","bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"bin":{"crucible":"dist/cli.js"},"dist":{"shasum":"52312378d8b0dc4d2fb512850af3d27b608458be","tarball":"https://registry.npmjs.org/@adamkadaban/crucible/-/crucible-1.0.0.tgz","fileCount":17,"integrity":"sha512-gR0vo4s4rRfmxocU7yGEVm7ddVEI4dNB5kZPhv5/beNW/VZTCeZGwrLWKw+9iuM7C0BI6ouSP1ZCK1r0vVZHwQ==","signatures":[{"sig":"MEQCIBsdFdXQrHc0Tk8xslzx76XP4hCioEWtfpeiZO7mxZcOAiAHUgF+7/oMMq92FytYFzUzCiy1+JJap3G4LLZSaAV6Iw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamkadaban%2fcrucible@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9162987},"type":"module","engines":{"node":">=22.12.0","pnpm":">=10.10.0"},"exports":{".":{"import":"./dist/cli.js"},"./package.json":"./package.json"},"gitHead":"52f19ac47c6f61a71d8ec09a8486681bf5e905f5","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm generate:version && tsc -b packages/core packages/mcp-server packages/cli","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build","format":"prettier --write .","prepack":"pnpm build:bundle && node scripts/assert-npm-vendor.mjs","coverage":"vitest run --coverage","crucible":"tsx --conditions=development packages/cli/src/index.ts","typecheck":"tsc -p tsconfig.check.json --noEmit","build:bundle":"node scripts/build-npm-bundle.mjs","format:check":"prettier --check .","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1c54079-a8d5-45d3-b817-4be959e8a023"}},"repository":{"url":"git+https://github.com/Adamkadaban/crucible.git","type":"git"},"_npmVersion":"11.13.0","description":"Build, snapshot, and control isolated Windows analysis VMs from Linux MCP agents.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","undici":"^7.16.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0","devDependencies":{"tsx":"4.22.3","eslint":"9.39.4","vitest":"4.1.7","esbuild":"^0.28.0","prettier":"3.8.3","@eslint/js":"9.39.4","typescript":"6.0.3","@types/node":"25.9.1","typescript-eslint":"8.60.0","@vitest/coverage-v8":"4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/crucible_1.0.0_1780316646373_0.20013538582089696","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@adamkadaban/crucible","version":"1.0.1","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"author":{"name":"Adam Hassan"},"license":"MIT","_id":"@adamkadaban/crucible@1.0.1","maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"homepage":"https://github.com/Adamkadaban/crucible#readme","bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"bin":{"crucible":"dist/cli.js"},"dist":{"shasum":"61e831d679267c34afedeb27736a4264091cdb4f","tarball":"https://registry.npmjs.org/@adamkadaban/crucible/-/crucible-1.0.1.tgz","fileCount":17,"integrity":"sha512-5v91uZO78cX70XNKBAUwGwJNEYneL7THr6NyM21KA+2c/pO0s4nlq8BGNPTefdf5qoCXRa7epNdo5CGM4WgtsQ==","signatures":[{"sig":"MEYCIQDscXORZt98m6foM74WKWvkgsdPjQJg1JG4tVHSj5Ne8AIhAPcKX3N4DX9CQ+Dz98qFcUz3dKlv7alL/iS32OrHF97V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamkadaban%2fcrucible@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9163862},"type":"module","engines":{"node":">=22.12.0","pnpm":">=10.10.0"},"exports":{".":{"import":"./dist/cli.js"},"./package.json":"./package.json"},"gitHead":"32f4f9bb23cc10fef1eb3ef62c60935d65fa3a11","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm generate:version && tsc -b packages/core packages/mcp-server packages/cli","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build","format":"prettier --write .","prepack":"pnpm build:bundle && node scripts/assert-npm-vendor.mjs","coverage":"vitest run --coverage","crucible":"tsx --conditions=development packages/cli/src/index.ts","typecheck":"tsc -p tsconfig.check.json --noEmit","build:bundle":"node scripts/build-npm-bundle.mjs","format:check":"prettier --check .","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1c54079-a8d5-45d3-b817-4be959e8a023"}},"repository":{"url":"git+https://github.com/Adamkadaban/crucible.git","type":"git"},"_npmVersion":"11.13.0","description":"Build, snapshot, and control isolated Windows analysis VMs from Linux MCP agents.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","undici":"^7.16.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0","devDependencies":{"tsx":"4.22.3","eslint":"9.39.4","vitest":"4.1.7","esbuild":"^0.28.0","prettier":"3.8.3","@eslint/js":"9.39.4","typescript":"6.0.3","@types/node":"25.9.1","typescript-eslint":"8.60.0","@vitest/coverage-v8":"4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/crucible_1.0.1_1780337647521_0.2126474961078879","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@adamkadaban/crucible","version":"1.0.2","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"author":{"name":"Adam Hassan"},"license":"MIT","_id":"@adamkadaban/crucible@1.0.2","maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"homepage":"https://github.com/Adamkadaban/crucible#readme","bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"bin":{"crucible":"dist/cli.js"},"dist":{"shasum":"8ff6ccd9edbc37218cf6269a728099403d161d84","tarball":"https://registry.npmjs.org/@adamkadaban/crucible/-/crucible-1.0.2.tgz","fileCount":17,"integrity":"sha512-zopuToITjcjO7LDvH65AE0Oz5koTj9uZt8sllmr8ERHnTm7P8JOeR5ZcKHeUazMO8Z0My0k38V5tHZiSWi33uA==","signatures":[{"sig":"MEYCIQCTzxBdYG6pxhs/rw1qpeLeqYeDTe8oaZ2ZE7Zj3Iep1wIhAKfPMZP5Svxc7iuApoSlyWNicUXCHvQvVzrONWDKzdtR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamkadaban%2fcrucible@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9169527},"type":"module","engines":{"node":">=22.12.0","pnpm":">=10.10.0"},"exports":{".":{"import":"./dist/cli.js"},"./package.json":"./package.json"},"gitHead":"cce27677bcc7eac349ae41d486919674a5b48aaf","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm generate:version && tsc -b packages/core packages/mcp-server packages/cli","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build","format":"prettier --write .","prepack":"pnpm build:bundle && node scripts/assert-npm-vendor.mjs","coverage":"vitest run --coverage","crucible":"tsx --conditions=development packages/cli/src/index.ts","typecheck":"tsc -p tsconfig.check.json --noEmit","build:bundle":"node scripts/build-npm-bundle.mjs","format:check":"prettier --check .","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1c54079-a8d5-45d3-b817-4be959e8a023"}},"repository":{"url":"git+https://github.com/Adamkadaban/crucible.git","type":"git"},"_npmVersion":"11.13.0","description":"Build, snapshot, and control isolated Windows analysis VMs from Linux MCP agents.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","undici":"^7.16.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0","devDependencies":{"tsx":"4.22.3","eslint":"9.39.4","vitest":"4.1.7","esbuild":"^0.28.0","prettier":"3.8.3","@eslint/js":"9.39.4","typescript":"6.0.3","@types/node":"25.9.1","typescript-eslint":"8.60.0","@vitest/coverage-v8":"4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/crucible_1.0.2_1780392821494_0.5028161559767226","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@adamkadaban/crucible","version":"1.1.0","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"author":{"name":"Adam Hassan"},"license":"MIT","_id":"@adamkadaban/crucible@1.1.0","maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"homepage":"https://github.com/Adamkadaban/crucible#readme","bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"bin":{"crucible":"dist/cli.js"},"dist":{"shasum":"a4e10b2bce9e71c86a0aa51f105cb5595f76123b","tarball":"https://registry.npmjs.org/@adamkadaban/crucible/-/crucible-1.1.0.tgz","fileCount":17,"integrity":"sha512-ivbwLNgyj0I1gRbgnmbPb+70m8RIciPeTF5GZyNzE8bU6wbNsq642MAxUjHzWdea7JkLi6slltWqra/t4CNweA==","signatures":[{"sig":"MEUCIELzB9qTArv4WZajm+ZFuGY0WIoF1IsVh4JlFzUKWDLRAiEAraQI4hng1MpxnfoPB0tzCfB5k5WDHsUg9GgZASNHhJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamkadaban%2fcrucible@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9237914},"type":"module","engines":{"node":">=22.12.0","pnpm":">=10.10.0"},"exports":{".":{"import":"./dist/cli.js"},"./package.json":"./package.json"},"gitHead":"848cb7ff73d0c32dcef2fff2bcc798481fff43f1","scripts":{"e2e":"vitest run --config vitest.e2e.config.ts","lint":"eslint .","test":"vitest run","build":"pnpm generate:version && tsc -b packages/core packages/mcp-server packages/cli","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build","format":"prettier --write .","prepack":"pnpm build:bundle && node scripts/assert-npm-vendor.mjs","coverage":"vitest run --coverage","crucible":"tsx --conditions=development packages/cli/src/index.ts","e2e:live":"CRUCIBLE_E2E_LIVE=1 vitest run --config vitest.live-e2e.config.ts","typecheck":"tsc -p tsconfig.check.json --noEmit","build:bundle":"node scripts/build-npm-bundle.mjs","format:check":"prettier --check .","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1c54079-a8d5-45d3-b817-4be959e8a023"}},"repository":{"url":"git+https://github.com/Adamkadaban/crucible.git","type":"git"},"_npmVersion":"11.13.0","description":"Build, snapshot, and control isolated Windows analysis VMs from Linux MCP agents.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","undici":"^7.16.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0","devDependencies":{"tsx":"4.22.3","eslint":"9.39.4","vitest":"4.1.7","esbuild":"^0.28.0","prettier":"3.8.3","@eslint/js":"9.39.4","typescript":"6.0.3","@types/node":"25.9.1","typescript-eslint":"8.60.0","@vitest/coverage-v8":"4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/crucible_1.1.0_1780506831618_0.35418696185827714","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@adamkadaban/crucible","version":"1.2.1","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"author":{"name":"Adam Hassan"},"license":"MIT","_id":"@adamkadaban/crucible@1.2.1","maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"homepage":"https://github.com/Adamkadaban/crucible#readme","bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"bin":{"crucible":"dist/cli.js"},"dist":{"shasum":"85c81574fc6b18bfab22edeb42a162eec66559ff","tarball":"https://registry.npmjs.org/@adamkadaban/crucible/-/crucible-1.2.1.tgz","fileCount":17,"integrity":"sha512-w7L8nDwLbEyx9et4pr96SQ6prag1qKfmnDS+suugI1fRFKBNNUho19bmSHKOm2SbSWqhB6TOYwRXRoBZ+RLIRA==","signatures":[{"sig":"MEUCIBw3bt6NoGR/VxoPCv7q6iKiuQpFNo9csiuGgm7ds37jAiEAtz2pS97FnYzLzUi4OdU/oSkY7KPrYwNrEcCpZvqvpoU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamkadaban%2fcrucible@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9246327},"type":"module","engines":{"node":">=22.12.0","pnpm":">=10.10.0"},"exports":{".":{"import":"./dist/cli.js"},"./package.json":"./package.json"},"gitHead":"0073424c927d895e5aa2708edd97268958304dda","scripts":{"e2e":"vitest run --config vitest.e2e.config.ts","lint":"eslint .","test":"vitest run","build":"pnpm generate:version && tsc -b packages/core packages/mcp-server packages/cli","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build","format":"prettier --write .","prepack":"pnpm build:bundle && node scripts/assert-npm-vendor.mjs","coverage":"vitest run --coverage","crucible":"tsx --conditions=development packages/cli/src/index.ts","e2e:live":"CRUCIBLE_E2E_LIVE=1 vitest run --config vitest.live-e2e.config.ts","typecheck":"tsc -p tsconfig.check.json --noEmit","build:bundle":"node scripts/build-npm-bundle.mjs","format:check":"prettier --check .","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1c54079-a8d5-45d3-b817-4be959e8a023"}},"repository":{"url":"git+https://github.com/Adamkadaban/crucible.git","type":"git"},"_npmVersion":"11.13.0","description":"Build, snapshot, and control isolated Windows analysis VMs from Linux MCP agents.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","undici":"^7.16.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0","devDependencies":{"tsx":"4.22.3","eslint":"9.39.4","vitest":"4.1.7","esbuild":"^0.28.0","prettier":"3.8.3","@eslint/js":"9.39.4","typescript":"6.0.3","@types/node":"25.9.1","typescript-eslint":"8.60.0","@vitest/coverage-v8":"4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/crucible_1.2.1_1780528409816_0.27723744582678744","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@adamkadaban/crucible","version":"1.2.2","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"author":{"name":"Adam Hassan"},"license":"MIT","_id":"@adamkadaban/crucible@1.2.2","maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"homepage":"https://github.com/Adamkadaban/crucible#readme","bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"bin":{"crucible":"dist/cli.js"},"dist":{"shasum":"d2115bd71ecea71008fdf5cd77a463d41854113e","tarball":"https://registry.npmjs.org/@adamkadaban/crucible/-/crucible-1.2.2.tgz","fileCount":17,"integrity":"sha512-vU3lhHCodNKxPqk8YmmHVdJh6/s1YQdBbMHl+IISpruHa7h8WUxI6bOZo7BJFWKScq1HQLCSiureEvfDUKXv0Q==","signatures":[{"sig":"MEYCIQDI7PswLiNxLsGYhohBH1MAzI1NC2Hbsxke74wv31TAmAIhANL/6IhGJAST2Dz8MLwG9b9Qx4hdvxif1hi4wd0EjKew","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamkadaban%2fcrucible@1.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9242012},"type":"module","engines":{"node":">=22.12.0","pnpm":">=10.10.0"},"exports":{".":{"import":"./dist/cli.js"},"./package.json":"./package.json"},"gitHead":"b4561e31d5cbd3845a0798eedd06c7b9d156625a","scripts":{"e2e":"vitest run --config vitest.e2e.config.ts","lint":"eslint .","test":"vitest run","build":"pnpm generate:version && tsc -b packages/core packages/mcp-server packages/cli","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build","format":"prettier --write .","prepack":"pnpm build:bundle && node scripts/assert-npm-vendor.mjs","coverage":"vitest run --coverage","crucible":"tsx --conditions=development packages/cli/src/index.ts","e2e:live":"CRUCIBLE_E2E_LIVE=1 vitest run --config vitest.live-e2e.config.ts","typecheck":"tsc -p tsconfig.check.json --noEmit","build:bundle":"node scripts/build-npm-bundle.mjs","format:check":"prettier --check .","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1c54079-a8d5-45d3-b817-4be959e8a023"}},"repository":{"url":"git+https://github.com/Adamkadaban/crucible.git","type":"git"},"_npmVersion":"11.13.0","description":"Build, snapshot, and control isolated Windows analysis VMs from Linux MCP agents.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","undici":"^7.16.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0","devDependencies":{"tsx":"4.22.3","eslint":"9.39.4","vitest":"4.1.7","esbuild":"^0.28.0","prettier":"3.8.3","@eslint/js":"9.39.4","typescript":"6.0.3","@types/node":"25.9.1","typescript-eslint":"8.60.0","@vitest/coverage-v8":"4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/crucible_1.2.2_1780530715350_0.998002964688351","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@adamkadaban/crucible","version":"1.3.0","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"author":{"name":"Adam Hassan"},"license":"MIT","_id":"@adamkadaban/crucible@1.3.0","maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"homepage":"https://github.com/Adamkadaban/crucible#readme","bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"bin":{"crucible":"dist/cli.js"},"dist":{"shasum":"84b19724e18ece61f9de23f354d6f0167fc98214","tarball":"https://registry.npmjs.org/@adamkadaban/crucible/-/crucible-1.3.0.tgz","fileCount":17,"integrity":"sha512-gZ26wwT9FMDLPbBBBWZs0Vs9DVyTcAYMw/da2EtLp/Fy/PSfdxKTm0wyMcbxWJK86yv28JoGB7rwenKK8+h1fQ==","signatures":[{"sig":"MEQCIBhvjKAh5vT7/1HcKHFTfdRl+30K5SBDte1hA+nM7WzAAiAy+h4vBpE6/6spV/6VrGTnY6VLmJySM8UhssRjfe15ZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamkadaban%2fcrucible@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9246471},"type":"module","engines":{"node":">=22.12.0","pnpm":">=10.10.0"},"exports":{".":{"import":"./dist/cli.js"},"./package.json":"./package.json"},"gitHead":"c9d4fc6216cc8a82b78bcc7af3fe6d79f4f61ed9","scripts":{"e2e":"vitest run --config vitest.e2e.config.ts","lint":"eslint .","test":"vitest run","build":"pnpm generate:version && tsc -b packages/core packages/mcp-server packages/cli","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build","format":"prettier --write .","prepack":"pnpm build:bundle && node scripts/assert-npm-vendor.mjs","coverage":"vitest run --coverage","crucible":"tsx --conditions=development packages/cli/src/index.ts","e2e:live":"CRUCIBLE_E2E_LIVE=1 vitest run --config vitest.live-e2e.config.ts","typecheck":"tsc -p tsconfig.check.json --noEmit","build:bundle":"node scripts/build-npm-bundle.mjs","format:check":"prettier --check .","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1c54079-a8d5-45d3-b817-4be959e8a023"}},"repository":{"url":"git+https://github.com/Adamkadaban/crucible.git","type":"git"},"_npmVersion":"11.13.0","description":"Build, snapshot, and control isolated Windows analysis VMs from Linux MCP agents.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","undici":"^7.16.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0","devDependencies":{"tsx":"4.22.3","eslint":"9.39.4","vitest":"4.1.7","esbuild":"^0.28.0","prettier":"3.8.3","@eslint/js":"9.39.4","typescript":"6.0.3","@types/node":"25.9.1","typescript-eslint":"8.60.0","@vitest/coverage-v8":"4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/crucible_1.3.0_1780557760817_0.04366364156639202","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@adamkadaban/crucible","version":"1.3.1","description":"Build, snapshot, and control isolated Windows analysis VMs from Linux MCP agents.","author":{"name":"Adam Hassan"},"license":"MIT","type":"module","packageManager":"pnpm@10.10.0","repository":{"type":"git","url":"git+https://github.com/Adamkadaban/crucible.git"},"bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"homepage":"https://github.com/Adamkadaban/crucible#readme","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"engines":{"node":">=22.12.0","pnpm":">=10.10.0"},"bin":{"crucible":"dist/cli.js"},"exports":{".":{"import":"./dist/cli.js"},"./package.json":"./package.json"},"publishConfig":{"access":"public","provenance":true},"scripts":{"build":"pnpm generate:version && tsc -b packages/core packages/mcp-server packages/cli","build:bundle":"node scripts/build-npm-bundle.mjs","check":"pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm build","coverage":"vitest run --coverage","crucible":"tsx --conditions=development packages/cli/src/index.ts","e2e":"vitest run --config vitest.e2e.config.ts","e2e:live":"CRUCIBLE_E2E_LIVE=1 vitest run --config vitest.live-e2e.config.ts","format":"prettier --write .","format:check":"prettier --check .","generate:version":"node scripts/generate-version.mjs","lint":"eslint .","prepack":"pnpm build:bundle && node scripts/assert-npm-vendor.mjs","test":"vitest run","typecheck":"tsc -p tsconfig.check.json --noEmit"},"dependencies":{"@modelcontextprotocol/sdk":"1.29.0","undici":"^7.16.0","zod":"4.4.3"},"devDependencies":{"@eslint/js":"9.39.4","@types/node":"25.9.1","@vitest/coverage-v8":"4.1.7","esbuild":"^0.28.0","eslint":"9.39.4","prettier":"3.8.3","tsx":"4.22.3","typescript":"6.0.3","typescript-eslint":"8.60.0","vitest":"4.1.7"},"gitHead":"680f1d0c7c80b62ec23f7ad0b241dc954cab95fd","_id":"@adamkadaban/crucible@1.3.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-/JRieK/JAaLaFxYKUxktYp35J2KlBN3HPzIhtP/1xTo7tiWyJDdi8KApdT7Y9VFqtWEGwbKJyHiAmEpDP6G0IA==","shasum":"d361bf4cd63ead68bd220e172a8cc1eff5a89988","tarball":"https://registry.npmjs.org/@adamkadaban/crucible/-/crucible-1.3.1.tgz","fileCount":17,"unpackedSize":9250225,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adamkadaban%2fcrucible@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCuUsmxkxbzmSTGGQhAIr6PNNchCrpDO6eOMBRW+OCCdAIhAKA4sU4fZ/CyoBdkVPcy7Dx9hnDzEaRdliZ1o2I6srMp"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d1c54079-a8d5-45d3-b817-4be959e8a023"}},"directories":{},"maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/crucible_1.3.1_1780648295837_0.06825137422340033"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-31T14:32:46.435Z","modified":"2026-06-05T08:31:36.490Z","0.1.0-beta.0":"2026-05-31T14:32:46.876Z","0.1.0-beta.3":"2026-05-31T21:20:08.481Z","1.0.0":"2026-06-01T12:24:06.593Z","1.0.1":"2026-06-01T18:14:07.852Z","1.0.2":"2026-06-02T09:33:41.856Z","1.1.0":"2026-06-03T17:13:51.874Z","1.2.1":"2026-06-03T23:13:30.121Z","1.2.2":"2026-06-03T23:51:55.627Z","1.3.0":"2026-06-04T07:22:41.055Z","1.3.1":"2026-06-05T08:31:36.105Z"},"bugs":{"url":"https://github.com/Adamkadaban/crucible/issues"},"author":{"name":"Adam Hassan"},"license":"MIT","homepage":"https://github.com/Adamkadaban/crucible#readme","keywords":["mcp","opencode","windows","qemu","kvm","malware-analysis","debugging","windbg","cdb"],"repository":{"type":"git","url":"git+https://github.com/Adamkadaban/crucible.git"},"description":"Build, snapshot, and control isolated Windows analysis VMs from Linux MCP agents.","maintainers":[{"name":"adamkadaban","email":"adamkadaban@gmail.com"}],"readme":"<h1 align=\"center\">crucible</h1>\n\n<p align=\"center\">\n  Build, snapshot, and control isolated Windows analysis VMs from Linux MCP agents.\n</p>\n\n<p align=\"center\">\n  <a href=\"./LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/badge/license-MIT-blue\"></a>\n  <img alt=\"Node\" src=\"https://img.shields.io/badge/node-%3E%3D22.12.0-339933\">\n  <img alt=\"Platform\" src=\"https://img.shields.io/badge/platform-linux%20%2B%20kvm-informational\">\n  <img alt=\"made with vibes\" src=\"https://img.shields.io/badge/made_with-vibes-ff69b4\">\n</p>\n\nCrucible provisions a Windows analysis VM on QEMU/KVM, installs debugger tooling and a small mTLS\nguest agent, then exposes VM control through a CLI and MCP server.\n\nUse it for local malware-analysis and Windows debugging workflows where you control the host. Do not\ntreat it as a hard containment boundary against VM escapes or host-kernel bugs.\n\n## Quick Start\n\nRequirements:\n\n- Linux host with KVM access.\n- QEMU, OVMF, `swtpm`, `socat`, and `xorriso`.\n- Local Windows installer ISO, virtio-win ISO, and virtio guest tools installer.\n\nDebian / Ubuntu baseline:\n\n```sh\nsudo apt install qemu-system-x86 qemu-utils ovmf swtpm socat xorriso\n```\n\nInstall the CLI:\n\n```sh\nnpm install -g @adamkadaban/crucible\ncrucible doctor\n```\n\nCreate a config, edit the media paths, and provision:\n\n```sh\ncrucible config init\ncrucible provision\ncrucible guest health\ncrucible snapshot list\n```\n\nThe first provision usually takes 12-18 minutes and creates a `clean-base` snapshot. Restore that\nsnapshot before each new analysis session.\n\n## MCP Server\n\nRun the MCP server over stdio:\n\n```sh\ncrucible mcp --stdio\n```\n\nUse the setup helpers instead of hand-editing client config:\n\n```sh\ncrucible setup opencode\ncrucible setup claude\ncrucible setup codex --print\ncrucible setup copilot --print\n```\n\nExample opencode config:\n\n```json\n{\n  \"mcp\": {\n    \"crucible\": {\n      \"enabled\": true,\n      \"type\": \"local\",\n      \"command\": [\"crucible\", \"mcp\", \"--stdio\"]\n    }\n  }\n}\n```\n\n## Common Commands\n\n```sh\ncrucible --help\ncrucible version\ncrucible update --dry-run\ncrucible vm status\ncrucible vm credentials\nprintf %s \"$VM_PASSWORD\" | crucible vm paste --stdin\ncrucible vm view --dry-run\ncrucible snapshot restore clean-base\ncrucible network status\n```\n\n`crucible vm credentials` prints generated Windows account credentials from host-only secret files.\nTreat that output as sensitive. Use `crucible vm paste --stdin` to paste passwords into the focused\nVM window without putting the secret itself in shell history.\n\n## Source Checkout\n\nUse a source checkout only when developing Crucible itself:\n\n```sh\ngit clone https://github.com/Adamkadaban/crucible.git\ncd crucible\nscripts/check-host.sh\nnvm install\ncorepack enable pnpm\npnpm install --frozen-lockfile\npnpm build\n```\n\nFrom source, use `pnpm crucible ...` instead of the global binary.\n\n## Safety\n\n- Keep the default network mode isolated unless guest egress is intentional.\n- Never mount host home directories, SSH agents, browser profiles, cloud credentials, or repository\n  roots into the guest.\n- Keep malware samples and generated artifacts outside Git and outside synced personal folders.\n- Treat generated secrets, autounattend files, dumps, pcaps, and snapshots as local-only artifacts.\n- Stop and restore `clean-base` after each sample unless you are intentionally continuing the same\n  investigation.\n\nSee [`SECURITY.md`](./SECURITY.md) for reporting and containment guidance.\n\n## Documentation\n\n- [`docs/install.md`](./docs/install.md) - detailed install and first provision.\n- [`docs/provisioning.md`](./docs/provisioning.md) - provisioning stages, realism mode, and E2E\n  scope.\n- [`docs/qemu.md`](./docs/qemu.md) - QEMU command shape and lifecycle state.\n- [`docs/network-isolation.md`](./docs/network-isolation.md) - isolated, NAT, and capture modes.\n- [`docs/protocol.md`](./docs/protocol.md) - guest agent mTLS HTTP API.\n- [`docs/debugger.md`](./docs/debugger.md) - CDB-backed debugger workflows.\n- [`docs/malware-analysis-sop.md`](./docs/malware-analysis-sop.md) - operating procedure.\n- [`docs/teardown.md`](./docs/teardown.md) - cleanup boundaries.\n- [`docs/threat-model.md`](./docs/threat-model.md) - assumptions and non-goals.\n\n## Development\n\n```sh\npnpm check\npnpm e2e\npnpm e2e:live  # opt-in; requires local Windows media and live VM config\n\ncd guest-agent\ngo test ./...\ngo build ./...\n```\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}