{"_id":"kastell","_rev":"40-c545034a686b451151d42e8424482018","name":"kastell","dist-tags":{"latest":"2.3.1"},"versions":{"0.0.1":{"name":"kastell","version":"0.0.1","keywords":["infrastructure","server","devops","cli"],"author":{"name":"omrfc"},"license":"MIT","_id":"kastell@0.0.1","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"dist":{"shasum":"72df8fc4cb4372466e7da8143fc5a454f55daffa","tarball":"https://registry.npmjs.org/kastell/-/kastell-0.0.1.tgz","fileCount":2,"integrity":"sha512-fKjAyZ/56rObjZslB/uzOKhgsdwvs7LTLeTndHpq4XkcpF1dp9vC8fmbBDKpfMbHGXhJR1v1wBEUzE4KE0J1yw==","signatures":[{"sig":"MEUCIQCSRPaXr+EYIwYsX1ucaVAHh/bQo/t5/aLj01kWDarDCQIgCaG0HKwexnsehRzEwfxQmdg4uJZa3V+oM4h9t7PDa0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":314},"main":"index.js","_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"_npmVersion":"11.6.2","description":"Your infrastructure, fortified.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kastell_0.0.1_1772614034879_0.706425907496163","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"kastell","version":"1.3.0","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.3.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/omrfc/quicklify/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"3b13c905263a3f01615822624c57469ae877a2b2","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.3.0.tgz","fileCount":308,"integrity":"sha512-xNJnPACBEd//qTe2Uu/0F/iXnD7D9qz0seLEXSyRDR/kK0Cyh70Xwhtp0uscihi7ygmNno8RWiDg4h1xneE8Eg==","signatures":[{"sig":"MEYCIQDGAK3U1bssSSvyNArdwjNShCtCgCQwFxllcLl7tk9d0gIhAJiOii8CtywlB+KrYuy5z5CxKZQTI+jgMEkf1lenkZC+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":967112},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"99bf1facd01e0a01c0df069c050fdb3cc22a3556","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"repository":{"url":"git+https://github.com/omrfc/quicklify.git","type":"git"},"_npmVersion":"11.6.2","description":"Autonomous security and maintenance layer for self-hosted infrastructure","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","inquirer":"^12.3.2","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.3.0_1772798629751_0.8248662631701429","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"kastell","version":"1.3.1","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.3.1","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://github.com/omrfc/kastell","bugs":{"url":"https://github.com/omrfc/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"f72046c60e94ab894f00c52a5fab2de042db546b","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.3.1.tgz","fileCount":308,"integrity":"sha512-OXPt50JaoCffZSs7KBeK6fgCDlz2glh6s/fbsa5ablpc0r5WOSPvRTv5WU5hYD6/QqT6KtjmFsqM0jFDfE4Hig==","signatures":[{"sig":"MEUCIF7MtLffKUGTwzK7z/d5owS4vSjnLALqXuy4EdD08D/fAiEAzIa+Gs7BIj9rzX6HoEp+vSUv2wfCLzO+ESI1uDmih/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":967274},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"d9fe796ba2c61c2b3196af6039867b89b29cac19","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"repository":{"url":"git+https://github.com/omrfc/kastell.git","type":"git"},"_npmVersion":"11.6.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","inquirer":"^12.3.2","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.3.1_1772799477572_0.4488574312019593","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"kastell","version":"1.4.0","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.4.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://github.com/kastelldev/kastell","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"4548fc9c7d39de0835872daf033530981fdba02a","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.4.0.tgz","fileCount":324,"integrity":"sha512-eks3Y6v7A29gC7OB7yIMLBi+ziqaxAA8reDBISwgkSgBdLKyh4GJouaX+imtOv2IFDw2T/gD06lJJ+PRXzER7Q==","signatures":[{"sig":"MEUCIQDqNBqU57ow20aCLdQoiixoM15eXVkqWNplmx1fi26MggIgR03+TisyJZPrk/YNG6kJCbKBSPC9Z5vI1YAlHeKlRlY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1029918},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"d9fbad869b80e3d5c9e328d29460c55fc684e981","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","figlet":"^1.10.0","js-yaml":"^4.1.1","inquirer":"^12.3.2","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/figlet":"^1.7.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.4.0_1772919312217_0.7672646782358006","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"kastell","version":"1.5.1","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.5.1","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://github.com/kastelldev/kastell","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"0fcf4323c411ac57ad272ac1accc2dd0da5b7dcf","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.5.1.tgz","fileCount":444,"integrity":"sha512-DfhUAV2Qk31ooVcjUksdNRHsKiVADzO+O2LzgRSm4fLY66P4mZ0c1tV2DOJAgYDAfTY6AaK4LY7OtxXTsi0zWQ==","signatures":[{"sig":"MEYCIQDU+SA9VHBqDrzM7uFtp4TfkK1uPp3oz9vBRKGHDSsTzwIhAIJQxJrJI7Jg5jXaqt/JQhMJRTR4SHRVqCHvMOXKqd+h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1266373},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"dd75191af52bc278ec371b6586d5da92ded8578b","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"11.6.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.5.1_1772991597321_0.053181388739387936","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"kastell","version":"1.5.2","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.5.2","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://github.com/kastelldev/kastell","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"1222dfa9f39d4726e7ee2f8d84c5a2c8ce922edb","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.5.2.tgz","fileCount":440,"integrity":"sha512-6QbNCjx5EoryYbyd5hmQjybLpGko7zjOMDStaoHYTpD9X1zDELNVYfx5WGz9+OCAtHt6vFG6WTtiFC7MvjwmkA==","signatures":[{"sig":"MEYCIQCTq75efR14F2jZjt6zf+Kuce0q6toDe+K0evvslw/x3gIhALIuKP4NHjtVIDBEwprmTG5XM8xl7x3EDus2UimPXSEf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1278382},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"90ba188da2afe8a4291fa453f5ee5539d19f51a0","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.5.2_1773037900194_0.9530396003579185","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"kastell","version":"1.6.0","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.6.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"998b00acf9b1d38d0e58a29b0535b79e5762ed3e","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.6.0.tgz","fileCount":472,"integrity":"sha512-cQ8xOzZZAhaignICof/Hn6q2+zRXPOSkR1K3+Ec2jTW0z5hl2n/Wqf+vVIEdp/YJJuKSql1NDlz7Vd6m0Zjc8Q==","signatures":[{"sig":"MEYCIQCWuKOGsVgwFyEdsir1ax6cVBpiXof2x26blN8vDueUjQIhAN+0FPfL2lw4KXJLY8GrGKv/CQdy50QH+t2E7ploqsXP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1352606},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"e77939523eb52a973c9f94087eb1be42d7a60e34","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.6.0_1773231629468_0.6580164243253286","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"kastell","version":"1.7.0","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.7.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"1d0e8ee9e7c042b9eef05b721a8f3adc6b86ca18","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.7.0.tgz","fileCount":512,"integrity":"sha512-bLpN8XBxnG3L/8tBJJsqkqEktlyxuMNV65f+NGTgNbiqXDuPAyjoSL65uzlP28n/AT/tzCAw7k0KmaRCmkxA7w==","signatures":[{"sig":"MEUCIB+v4sOCB5KWuWeFdm/HnCrScsRJ0t3ir9srhXWX4wH7AiEAzO/Xi6rsNndqWBtaa3t32cQnZ3lCaJoz0Unwl404rmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1497769},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"16844e0b3974aba779c706f5731c25db6d4eb105","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.7.0_1773493454035_0.3949444961747661","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"kastell","version":"1.8.0","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.8.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"ff378133127a62baf7645ef384d2bd192d81c48d","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.8.0.tgz","fileCount":540,"integrity":"sha512-8WS4lgeZWhWi8DZyWGgpN4bznKt8ZXCIoVqCev9GCAsmK4F3Mqc1CheGW5J0sfOdyOU9OsgF7kzlbmj0jSEnhA==","signatures":[{"sig":"MEUCIB7ApaSHUUwEb4yl93FopSIX7OtjOa9Dw2wbqMw7ehGXAiEAvlcHs8ZR81Lo6pF3P8IGs5hdRLnR3cF0lUAf1Ll8pNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1554318},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"98b810801f92d52ac01130364692972208bf0dfa","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.8.0_1773524363569_0.6356285372633221","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"kastell","version":"1.8.1","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.8.1","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"4c5fd90f7a9ee47cd5dad288769eb9f74bc80d1b","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.8.1.tgz","fileCount":540,"integrity":"sha512-WB7Q0wUXS6TylBmcVvlltumZBsQHVc1iaspF/+Z0JqGAA5Uhwz/6zL1XvXPPRirvfTLjJWSPx/3HBlTwblvjZw==","signatures":[{"sig":"MEUCIFIZQp2efJ1an2LDljq/uNKh83sNh4cN6jc+B2kRpJ8FAiEAp7u7SWVv00J/yWLkn38wm/2LZ0qOVWmzX2XjnUYNpZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1576599},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"54c6a177b08d1ffa06a92bf81a2f247587178406","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.8.1_1773530888579_0.649266874908716","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"kastell","version":"1.8.2","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.8.2","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"a43fbc3f161629c8456ea378e382464ad3995d8e","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.8.2.tgz","fileCount":572,"integrity":"sha512-aZa2NVMCS8STAp2UdXi+/UUqhJ+LJbRt4tK2Wa4FGhR4dDTmLvZlxRKaasmOUVctLlSJ/f35Qi9GdYznszMhow==","signatures":[{"sig":"MEQCIDjCqiyWPgYE0q8hHlhXR+C9lX1970ahItJ8XJazU7oEAiAN0Z8Nsbs5b8n5jSJE5eQLLjSyJ947ozjLoRUXxvy/4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1607839},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"5f6e5990d53dcf89382c26d44aa5e6b1332b7f48","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"deprecated":"Use v1.9.0 instead","repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.8.2_1773563552197_0.12943130577576256","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"kastell","version":"1.9.0","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.9.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"dd57f9796c3bbb0bfbc487354bd1838e43c9c37a","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.9.0.tgz","fileCount":572,"integrity":"sha512-6gZQbPmusbvyWWKclbkxABrEVdagAqpmNut/8qYPKGQAu5Y1qELkSpnDuiXDlHG88QzO2FXG+HBK4SRJijhTWg==","signatures":[{"sig":"MEYCIQDWXOGYIm0a4BnjycgHDXdnEKS8ZI7DwLJUnPHqa6IMtAIhAMiyL7tKDWjdEf1SUz77K3vi/OE0PNy+J0ZK5gknRYiA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1607839},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"3cc7ff7b1e76172ea6ce838b2456eec40694a023","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.9.0_1773563675274_0.197421417694448","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"kastell","version":"1.9.1","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.9.1","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"062448688085fb0ba06e8a477fe96ea72cabfa59","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.9.1.tgz","fileCount":572,"integrity":"sha512-ZdSf1fSC7SFpfcy0EwKxHxfUqpxwinVW4B7ZrNPzmdSCL0+X9jbcJXA9bD5Q6ViEzTzgH8eZBMKnaBQ+OhNr+Q==","signatures":[{"sig":"MEUCIQCHm8OKk5czxI7AIP/6kIT08h3NaXVa9a18e6fQLGXD3wIgNQYV1cFgSuOBeHsd/s81ynB+Rc1B4vgC2DbDl0EVQmI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1607663},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"f65b25cfb8e5e6b2eca149d09a3552ddad8d1b4b","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.9.1_1773566778919_0.9925616365978316","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"kastell","version":"1.10.0","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.10.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"d44429c75b0a5299dce12d56f72c0f95c871b1f5","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.10.0.tgz","fileCount":672,"integrity":"sha512-nOnZwNe971SDb1aFquaIdqu/6NqXHFDsvVlu2nX28Hwm6AnvQHFwrxYoGClWuIyLcfVH0FDhhsWGBEGY5rEtGw==","signatures":[{"sig":"MEYCIQDYqvxxeFvMuVBBnUus/bUjrVG1SIEX7mO3m2UE/hcJOAIhAOgnrq99nSbcu/xa+6WdhpJHgwniuLxGeOmXCoNf/EOq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2432859},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"363d5ec65e79c2efc1677b6f6c0e8c205cadf06a","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.10.0_1773671040161_0.05621914634720926","host":"s3://npm-registry-packages-npm-production"}},"1.10.1":{"name":"kastell","version":"1.10.1","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.10.1","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"a6837a2513d0c0caa9c97611de73e2295524f421","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.10.1.tgz","fileCount":672,"integrity":"sha512-E8wcRBTIwkyaVpWxIm3E8klDrhYiDQRGCJfkkzfqQA9ICWTthVLtlZhl9F4gBgJB8f3i7fjXnzOKteDbP7Murw==","signatures":[{"sig":"MEUCIB6OK+Wp6pE2Yw25r3jDrVoeGJQ27XMyapD2yA24hh23AiEA51t5X/hONT/iEaN1KbPA7gb9h7kKDPoBUAQINKeQ4s8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2446460},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"b771e7621e65a6c566375cde5167291a3f322d4a","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.10.1_1773741468876_0.8486223482383508","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"kastell","version":"1.11.0","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.11.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"f1dc47ca974e7c3e4b7ac6052f885de53de040e2","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.11.0.tgz","fileCount":676,"integrity":"sha512-/yWc/Vxh9yxppxjVhYYCS+sXskPpbhTKx8iAj3aynkDjpKCmdxP/ez6sIdQp9CxMSWtSqjnnJIygIgPWQPNh+g==","signatures":[{"sig":"MEUCIQCmqRiVW/CKvhSGjgK6K0l98FpNyYSPidQYnp8L1mZdtQIgPntdg2S4qHKxe7jzOEcIHTOrmZXFq5kSrhymjYS6l9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2488989},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"8df91a482f35544529870a8d716629317f518fc8","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.11.0_1773824607781_0.8189967921980073","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"kastell","version":"1.12.0","keywords":["kastell","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.12.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"cb29bf17072dc55295b118cd6698ca74c9b9ccce","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.12.0.tgz","fileCount":676,"integrity":"sha512-X16nfl/p5t0Yxuvs45FFn3jR0+hQPHOCFJHTE3hjuoWvtjQ6vnxT/fCvL//luEwXhn1ffDCu5tMuQK23DNneIQ==","signatures":[{"sig":"MEUCIF5OO0dYe2l1OYDFK/6bJ+lGplJI5aqi2ab/Y9RT17vxAiEA9h/v8pJ8iKRzt6VVHscbZzmpBU3hnHEKocOBQp4+hyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2508053},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"3698a66d2b11ab118a68cee7d3fc8fa9e566c846","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.12.0_1773864565621_0.5930359059828829","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"kastell","version":"1.13.0","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.13.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"5695dd9382006a28c93078b2c1eaa2b76597d926","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.13.0.tgz","fileCount":680,"integrity":"sha512-dXHaab3KBESkvhi2X1RmWVCh8ULWb+ToD19km5B5cbWly7N3UqY/0+W5QEgr40I4LXkgCJOANg2NbTlhOm0aNA==","signatures":[{"sig":"MEQCIEUT1vxUYhfF6rgnGuonxg87TKk1zVL1357GeWDZEo7IAiANs1NdSaYdtC5DL/3qoTYaC2/+TSLxFisgv0fv8SHJUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2526996},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"0898da0e85c40a342313a9ab757c11f47cc532ee","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.13.0_1773951535256_0.9668403867169959","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"kastell","version":"1.14.0","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.14.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"e635a3993ea7f956615582e555e5047485f958b1","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.14.0.tgz","fileCount":688,"integrity":"sha512-WmQagLfyU19DOeFyEc0f4chXU/0WulDiIYjGgAGxYLV8FnQqBAYqf/vF1JJRx8QQqJYYwzOtPZtoneaAhCZXtQ==","signatures":[{"sig":"MEQCID8Cl8W730BvP3iGgw8QtYjTGNj0DFCoLVosFyc5+L2SAiBjGZWV8LySR/5JCv401qszRUUj2EHRUyGJxkaQ4UD4zg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2600608},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"b554f008dbeed53328ef1f21073e7ca954bf8b78","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.14.0_1774337614077_0.9599060636293311","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"kastell","version":"1.15.0","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.15.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"40707fff750a644dcf656603291bed175ca2d4b0","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.15.0.tgz","fileCount":732,"integrity":"sha512-1vY5oCYaURmD8iHi3aymay2YmgBuB26cz2q2nqX9jb7QjosARTRDq4BPIizqrCyza33YgixL6FRG7GbkcSSQWg==","signatures":[{"sig":"MEQCIAgVFbcMktUJXcZwBRPElpipDJt572xr9Flrrw307QdZAiBsdQNilTqQdpVGTSWzUBhulA+WL/5mXD/zaW6KsbVLcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2746224},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"7669d5eb436e3399567780152f6648345a82ceb3","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","grammy":"^1.41.1","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.15.0_1774622207571_0.2454297838540871","host":"s3://npm-registry-packages-npm-production"}},"1.15.1":{"name":"kastell","version":"1.15.1","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.15.1","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"078f755eacba2161ed8b205a2d66f1f1651f93a9","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.15.1.tgz","fileCount":741,"integrity":"sha512-7krhZ71Lb+/3UFtOwy+Jr97KEFA3B1mmA2iyyU3fPuSa7F0gzyXgdj6fvDq0LE4Gh84SxTcFnFptbYKs7Ef3sg==","signatures":[{"sig":"MEUCIBiLYTZxTjLcn+C0qDTULBb7qgcAv1ys7lNaQsAFeYVpAiEA/WR75LHky/aVU/UoUs5vTtRO8H9vNvcfnNfMgCD+KpU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kastell@1.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2823926},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"7286c6b039b6c608b3d517cbb6b6670588e2b0c1","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","grammy":"^1.41.1","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.15.1_1774689692303_0.06774265148467218","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"kastell","version":"1.16.0","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.16.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"b09ccd288a07eac8d71db3f241a9dce6cef51e80","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.16.0.tgz","fileCount":777,"integrity":"sha512-jcpCYfTgCqpzPucxhumoRuf+Saeju6m9zvb/ZhmvWqQkGTQffHJ+VvKXke/jY6z/k8wQ5TTNpflmWBxJj2Qu0g==","signatures":[{"sig":"MEUCIQC/d24A95H33VL6++GJE4Z/++sUrHwEZTAbVxUr3Xg2wgIgKKQp/GGPlzRWhr5i93BySjRrGDsGfIlSRY2KOVLX00Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kastell@1.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2964941},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"878870ad1bf31e0c3d2119e23d95da9558b4b8e0","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","grammy":"^1.41.1","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.16.0_1774810203763_0.669785860962284","host":"s3://npm-registry-packages-npm-production"}},"1.17.0":{"name":"kastell","version":"1.17.0","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.17.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"171cc3491da4a06882549bb3239d1d347ac67d32","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.17.0.tgz","fileCount":805,"integrity":"sha512-IKKRWmW5/DVVnrkk0Q20esMCmiMI6wNsloD8a3OLdT9buxJhOH50GO7PE7K5qi9vMkZUeRbeCyZ7nitftCIKxw==","signatures":[{"sig":"MEUCIQCpy2G08mlmzTDRzVcw6GSNe/7V6d04rkUt974IxU546AIgLb1tjnAzloRMwn62TXn+J5tz3rg0sLC/2dbuuzSvIL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kastell@1.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3077298},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"1b0549ccb03834b3fc0304457480f11cf5b59307","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","axios":"^1.13.6","chalk":"^5.6.2","grammy":"^1.41.1","js-yaml":"^4.1.1","p-limit":"^7.3.0","inquirer":"^12.3.2","commander":"^14.0.3","@napi-rs/keyring":"^1.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.17.0_1775040759961_0.4149530721966672","host":"s3://npm-registry-packages-npm-production"}},"1.17.1":{"name":"kastell","version":"1.17.1","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@1.17.1","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"8b9449cd48c082317bc73a1757ef449230f492e8","tarball":"https://registry.npmjs.org/kastell/-/kastell-1.17.1.tgz","fileCount":809,"integrity":"sha512-AM5MLqQBb4WGjkDPBjmPhaWMqn2AUcwoVArD2PmRBkJ97ox0iakcEXhcAxmXO/2uzRklCRzwKKtTpG/NDWD40g==","signatures":[{"sig":"MEQCIHRNrxS5OZ49XG47UkcpyLk3KbzsOOPj5IVG1clqV2C6AiBLv3JNNgjBqK23ZDRfa7u27wGzgTUEUb39GMXgb8i+qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kastell@1.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3091947},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"93b52aab89a8c8bedd07441e9c3ded29d6bdb85c","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.13.6","chalk":"5.6.2","grammy":"1.41.1","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_1.17.1_1775062763687_0.31837068465100216","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"kastell","version":"2.0.0","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.0.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"5dd23ab664c91f52dbe5950408c1453b6303651e","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.0.0.tgz","fileCount":841,"integrity":"sha512-oTx/RiBY2vzp0TKIQL3IzuNKpLLVrOCQARRiB+FwhVKW5y6MItLmTRThulkNI8Mwj//4yE5I+2Jy5DXrdEJzyA==","signatures":[{"sig":"MEUCIQDuybZHTG4VT6NwssPKxVuzRBI/ijSHFdDb82m2JsQ1NQIgdIH7S1yx+9qNpMy8yWGHBh1qyc7G3b6lLCHgu8PEJCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3177836},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"8aab05a783c79ee0519bbf470a9fa7472d868248","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.15.0","chalk":"5.6.2","grammy":"1.41.1","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.0.0_1776679738767_0.21794986788650617","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"kastell","version":"2.1.0","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.1.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"67c3541f65e1a997f2e02e73a7101b5f4f70f3d5","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.1.0.tgz","fileCount":873,"integrity":"sha512-zWog7Wkj7j2Tl+i7veeTll0XHUNSk+kqIhjlLKR58h3PHEADhwy7QNMLViFDsIe8TR4Sc1Qp2qVJkAorcgaFuw==","signatures":[{"sig":"MEUCIQDXtT2gbIca8nZYL0tJOcQ9xzEHkLtUo4wb+dGSOPFbTQIgLxHLWFKKuBZhzAjWsNfSa6y2726LbjcUGTiLEIn6c4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3292054},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"952b57cbd93122b3e582ab7b54e4660229ac2711","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.15.0","chalk":"5.6.2","grammy":"1.41.1","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.1.0_1777371593358_0.5192233541380789","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"kastell","version":"2.2.0","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.2.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"632cdc0341313746a758ccaebd688881c017f1e3","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.2.0.tgz","fileCount":921,"integrity":"sha512-/21lCb+vVMVwsadoERssny7w5Za9QUx9mft67G/Qvm/YvDFXCg5ELeiSTMxHrxXJCQMQJZIX+oPf7qFlX4U0cw==","signatures":[{"sig":"MEQCIEsm/LZhxgzO3DKgvuYJVLNfP2kA3cbIJrsQW1v+sMLUAiBhGaZOw+BDeuVMSPxD15WK4n8mLHEKfS4IH8nOSTOIQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3465039},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"05e07c2bb061e3992ca76a02b15d1f9605185277","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.15.0","chalk":"5.6.2","grammy":"1.41.1","semver":"7.7.2","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/semver":"7.7.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.2.0_1777814325125_0.15157923929371964","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"kastell","version":"2.2.1","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.2.1","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"c4f60d4824d9a35d4e7e1184831ee718fbfe286f","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.2.1.tgz","fileCount":1046,"integrity":"sha512-SekS+VVDNKhxJ+Vs28zIrk8YgIECVNL7FA0mePXz4uLvNugo4EgTOjGSGFffK1PHSmOyy+878rdIkBWdVfevEw==","signatures":[{"sig":"MEUCIQDZPNL7C34iN0Iq0gYqZ3WXSxPcRkplziCxKQLN0+/MGgIgFGARKwv1mt0GiiTB/obDHEeAMIj+kuzk1DeEllD9TgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3818347},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"ebccdcd1ce459698fac606d5997bf908b1874efd","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"deprecated":"use 2.2.4","repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"11.6.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.15.0","chalk":"5.6.2","grammy":"1.41.1","semver":"7.7.2","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/semver":"7.7.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.2.1_1778151217519_0.7396392030914214","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"kastell","version":"2.2.2","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.2.2","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"5d4cdd675be0014c76ed0e3b5a01556ba22496bd","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.2.2.tgz","fileCount":1046,"integrity":"sha512-tV3TtT6jTvqzH5Vte0NuGn3rBYq5/pATFzlpz3Sr80X429Dv0dC4XJIiALFrYTNO05C9iXIsCeQyVUeyWKIK0A==","signatures":[{"sig":"MEUCIBIAxqzVix3JrJbEXqqaXrgnUZ+XEW5Fg1idzALIjJL8AiEA/MDeanljAA7HTSrieeMy9sgskAdNnqwmuHfF13UqGSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3818338},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"2fdc6d336192c24305ec647ecaa1de84ee5bdced","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"deprecated":"use 2.2.4","repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"11.6.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.15.0","chalk":"5.6.2","grammy":"1.41.1","semver":"7.7.2","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/semver":"7.7.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.2.2_1778151407036_0.7623522955874511","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"kastell","version":"2.2.3","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.2.3","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"1c5bcc0723875efb4cf1829816c615acea96c111","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.2.3.tgz","fileCount":1046,"integrity":"sha512-XhRI6Ner0yb/WDIeUQN9NmhGqiK/OoWuEGRZGwfO3BeM+aTVBjV7ACGRvEZUGh6f1Si99lA+KYP1zGlYqErr2Q==","signatures":[{"sig":"MEUCIQCBDIvV9Ni22fW8+VumJPQNJ3QruPOU5+QBNbdVJHb28wIgRBOaobrHULthCiwEK+4xq29bIY6wnw2UfnXTJfkyqzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3818344},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"b656966dfb1f683eb95187097dd0320da52d8242","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"deprecated":"use 2.2.4","repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"11.6.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.15.0","chalk":"5.6.2","grammy":"1.41.1","semver":"7.7.2","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/semver":"7.7.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.2.3_1778153248363_0.8765427747073444","host":"s3://npm-registry-packages-npm-production"}},"2.2.4":{"name":"kastell","version":"2.2.4","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.2.4","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"f93a306d22343b1c913a15f995b516395f0001bf","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.2.4.tgz","fileCount":1046,"integrity":"sha512-tyoY52+ZxrvAN5xRd/EhBDRkNV2bgmAM2g+PtDJgdeP0X3gFbvtCRtgZP6Q66XpG/jeZp0DvMXNdGzH+hy9QZw==","signatures":[{"sig":"MEUCIFgq7ihY9SRrSTu6dQtgUrl7ACbf3nr69am1lcpvlTjVAiEAsGqzrqfT7huH+atYaeMwanvTJYAhEdCtBV/hh90BZAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3818303},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"13e596c5f7d883933bd38b1f0a125f7b1497163c","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"11.6.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.15.0","chalk":"5.6.2","grammy":"1.41.1","semver":"7.7.2","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/semver":"7.7.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.2.4_1778153386064_0.17407996853133567","host":"s3://npm-registry-packages-npm-production"}},"2.2.5":{"name":"kastell","version":"2.2.5","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.2.5","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"df334a49d8064af14f1943b9d99a30505efef16b","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.2.5.tgz","fileCount":1039,"integrity":"sha512-SXfyOOgy9tZ4O2Xb9NApv6GvHH3L1TFdNM/WGyntIBxBxj1F7ZmN/2I5OoUjS83yDDqDbgOWMMtFqhtUylsVVQ==","signatures":[{"sig":"MEUCIQCdEcBLNMVxDCcgXRGFycC44T+AXB47UR56OaTK41ohPAIgBUpTmlVi8/589mb/eBHEBkCm/mk/sSObWSNcDgtcFsU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7756938},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"9932f08019878847a54e0624bd6a44e81899d25d","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc && node scripts/bundle-mcp.mjs","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","bundle:mcp":"node scripts/bundle-mcp.mjs","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.15.2","chalk":"5.6.2","grammy":"1.41.1","semver":"7.7.2","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","esbuild":"^0.28.0","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/semver":"7.7.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.2.5_1778249757594_0.7075370322618906","host":"s3://npm-registry-packages-npm-production"}},"2.2.6":{"name":"kastell","version":"2.2.6","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.2.6","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"0e0de7cb5db8492f57690914bfd761a49dacc98a","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.2.6.tgz","fileCount":1071,"integrity":"sha512-GmFL0RwK7s4yde8+TTMJWKrKf66XWNJ0Raf/OBGrIzs76JS6/Ix6d0n5HEqhOyG0L0Oh0JaQ7V+pBrHg+aDF0A==","signatures":[{"sig":"MEYCIQDF+lHddEL+ibVBRq0emhHBVyniEreSVtngMpDdmRgugwIhALFYl4CMK4pOd+JJ09dvYy4NGrtx5jtIStUv8znD5RjU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7914422},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"0b78d022229d419f542861bdd14a83e8999176d9","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc && node scripts/bundle-mcp.mjs","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","bundle:mcp":"node scripts/bundle-mcp.mjs","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.15.2","chalk":"5.6.2","grammy":"1.41.1","semver":"7.7.2","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","esbuild":"^0.28.0","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/semver":"7.7.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.2.6_1778915490256_0.8246868297823726","host":"s3://npm-registry-packages-npm-production"}},"2.2.7":{"name":"kastell","version":"2.2.7","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.2.7","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"9b48eeea0e7953b03a9ac50f6f0b1e3b07a0a7bb","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.2.7.tgz","fileCount":1071,"integrity":"sha512-9kOuR1TkcC1bXQzPMYB6viiN7gWkFflNKhPIE0HgW6M/RTsFeVKIoWJKdqDImHfHc7MPwH5Iuk3sT9rj2+WaQQ==","signatures":[{"sig":"MEYCIQCmTsJ2iYvxKhBaDvVZlYIzpoRlF/4QrJuZsH/Fy4qnfAIhAPj8WG+THKu1kJOJzjsRE7OyP1x8uBYDgdW5THg3Ol4f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7915583},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"b5fa88eee8e59060985d33884a75199c1beaca11","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc && node scripts/bundle-mcp.mjs","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","bundle:mcp":"node scripts/bundle-mcp.mjs","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.15.2","chalk":"5.6.2","grammy":"1.41.1","semver":"7.7.2","js-yaml":"4.1.1","p-limit":"7.3.0","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","esbuild":"^0.28.0","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^22.12.0","@types/semver":"7.7.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.2.7_1778936647881_0.7503384348955386","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"kastell","version":"2.3.0","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"author":{"url":"https://omrfc.dev","name":"Ömer","email":"hello@omrfc.dev"},"license":"Apache-2.0","_id":"kastell@2.3.0","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"homepage":"https://kastell.dev","bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"dist":{"shasum":"06af29fd0d4e3e71cdc4b3b49a5b636b7f498781","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.3.0.tgz","fileCount":1123,"integrity":"sha512-kPQqH5lOLqIgJKRP0Ftu/aCrQEpuy2o2GowQXU2CSEJbpxvpDGqEjgQa9EZ/+yPsuFJQNSjSU8BfBE2MGvi0LQ==","signatures":[{"sig":"MEUCIQCC18SnhZvgss/k3Zt89wrpGeqKun0MqxZWNpJHska6WgIgfVwJyJAizaWnbORVenDOGjIxKVISf7Pu/WbfOCSyjew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8075188},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"funding":{"url":"https://github.com/sponsors/omrfc","type":"github"},"gitHead":"bd39c7592e188b335b974a106e3b79d5c0f43004","mcpName":"io.github.kastelldev/kastell","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"jest --config jest.config.cjs","build":"tsc && node scripts/bundle-mcp.mjs","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","bundle:mcp":"node scripts/bundle-mcp.mjs","test:watch":"jest --config jest.config.cjs --watch","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --config jest.config.cjs --coverage"},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"overrides":{"minimatch":"^10.2.4","ip-address":"^10.1.1"},"repository":{"url":"git+https://github.com/kastelldev/kastell.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"9.3.0","zod":"4.3.6","axios":"1.16.0","chalk":"5.6.2","grammy":"1.41.1","semver":"7.7.2","js-yaml":"4.1.1","inquirer":"12.11.1","commander":"14.0.3","@napi-rs/keyring":"1.2.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","eslint":"^10.0.2","ignore":"^7.0.5","esbuild":"^0.28.0","ts-jest":"^29.4.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","fast-check":"^4.7.0","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.9.2","@types/semver":"7.7.0","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7","typescript-eslint":"^8.56.1","@stryker-mutator/core":"^9.6.0","eslint-config-prettier":"^10.1.8","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.3.3","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/kastell_2.3.0_1781251326639_0.37607809861885766","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"kastell","version":"2.3.1","description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","type":"module","main":"dist/index.js","bin":{"kastell":"bin/kastell","kastell-mcp":"bin/kastell-mcp"},"scripts":{"dev":"tsx src/index.ts","build":"tsc && node scripts/bundle-mcp.mjs","bundle:mcp":"node scripts/bundle-mcp.mjs","start":"node dist/index.js","test":"jest --config jest.config.cjs","test:watch":"jest --config jest.config.cjs --watch","test:linux":"bash scripts/test-linux-parity.sh","test:coverage":"jest --config jest.config.cjs --coverage","test:mutate":"cp .stryker-tmp/incremental.json .stryker-tmp/incremental.backup.json 2>/dev/null; stryker run","lint":"eslint src/","lint:fix":"eslint src/ --fix","format":"prettier --write \"src/**/*.ts\"","format:check":"prettier --check \"src/**/*.ts\""},"mcpName":"io.github.kastelldev/kastell","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"engines":{"node":">=20.0.0"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/kastelldev/kastell.git"},"bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"homepage":"https://kastell.dev","author":{"name":"Ömer","email":"hello@omrfc.dev","url":"https://omrfc.dev"},"funding":{"type":"github","url":"https://github.com/sponsors/omrfc"},"dependencies":{"@modelcontextprotocol/sdk":"1.27.1","@napi-rs/keyring":"1.2.0","axios":"1.16.0","chalk":"5.6.2","commander":"14.0.3","grammy":"1.41.1","inquirer":"12.11.1","js-yaml":"4.2.0","ora":"9.3.0","semver":"7.7.2","zod":"4.3.6"},"overrides":{"minimatch":"^10.2.4","ip-address":"^10.1.1"},"devDependencies":{"@babel/core":"^7.29.7","@emnapi/core":"^1.10.0","@emnapi/runtime":"^1.10.0","@eslint/js":"^10.0.1","@stryker-mutator/core":"^9.6.0","@stryker-mutator/jest-runner":"^9.6.0","@stryker-mutator/typescript-checker":"^9.6.0","@types/inquirer":"^9.0.7","@types/jest":"^30.0.0","@types/js-yaml":"^4.0.9","@types/node":"^25.9.2","@types/semver":"7.7.0","esbuild":"^0.28.0","eslint":"^10.0.2","eslint-config-prettier":"^10.1.8","eslint-plugin-no-secrets":"^2.3.3","eslint-plugin-security":"^4.0.0","fast-check":"^4.7.0","ignore":"^7.0.5","jest":"^30.2.0","prettier":"^3.8.1","ts-jest":"^29.4.6","tsx":"^4.21.0","typescript":"^5.9.3","typescript-eslint":"^8.56.1"},"_id":"kastell@2.3.1","gitHead":"b0a6f0621d5f0929471665ffc59f94e84e6e251d","types":"./dist/index.d.ts","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-/AE9szbVqTS71QN8BsJpCEihlSfiuelKaEHa2+3So61HHOrMFOgcE1l7irVHcqhggMAe1hVoiwgqP3strxyZ7w==","shasum":"c64869d6c838880494407ccf85878c216e34c239","tarball":"https://registry.npmjs.org/kastell/-/kastell-2.3.1.tgz","fileCount":1175,"unpackedSize":8509874,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEMCIHrczyTCAuOpKmXOxnetcjmzzjl1DpbfE7HYkdwjK4B4Ah9LeII6P0gcS6YRwGjgl+xsTfg2MevHj3Ok9MXvv9Eg"}]},"_npmUser":{"name":"omrfc","email":"omrfccc@gmail.com"},"directories":{},"maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kastell_2.3.1_1782825489147_0.983900628437433"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-04T08:47:14.878Z","modified":"2026-06-30T13:18:09.455Z","0.0.1":"2026-03-04T08:47:15.025Z","1.3.0":"2026-03-06T12:03:50.038Z","1.3.1":"2026-03-06T12:17:57.741Z","1.4.0":"2026-03-07T21:35:12.391Z","1.5.1":"2026-03-08T17:39:57.531Z","1.5.2":"2026-03-09T06:31:40.427Z","1.6.0":"2026-03-11T12:20:29.650Z","1.7.0":"2026-03-14T13:04:14.273Z","1.8.0":"2026-03-14T21:39:23.781Z","1.8.1":"2026-03-14T23:28:08.791Z","1.8.2":"2026-03-15T08:32:32.348Z","1.9.0":"2026-03-15T08:34:35.419Z","1.9.1":"2026-03-15T09:26:19.085Z","1.10.0":"2026-03-16T14:24:00.395Z","1.10.1":"2026-03-17T09:57:49.036Z","1.11.0":"2026-03-18T09:03:27.956Z","1.12.0":"2026-03-18T20:09:25.824Z","1.13.0":"2026-03-19T20:18:55.515Z","1.14.0":"2026-03-24T07:33:34.240Z","1.15.0":"2026-03-27T14:36:47.839Z","1.15.1":"2026-03-28T09:21:32.492Z","1.16.0":"2026-03-29T18:50:03.991Z","1.17.0":"2026-04-01T10:52:40.263Z","1.17.1":"2026-04-01T16:59:24.015Z","2.0.0":"2026-04-20T10:08:58.946Z","2.1.0":"2026-04-28T10:19:53.530Z","2.2.0":"2026-05-03T13:18:45.340Z","2.2.1":"2026-05-07T10:53:37.736Z","2.2.2":"2026-05-07T10:56:47.234Z","2.2.3":"2026-05-07T11:27:28.555Z","2.2.4":"2026-05-07T11:29:46.280Z","2.2.5":"2026-05-08T14:15:57.826Z","2.2.6":"2026-05-16T07:11:30.478Z","2.2.7":"2026-05-16T13:04:08.085Z","2.3.0":"2026-06-12T08:02:06.811Z","2.3.1":"2026-06-30T13:18:09.331Z"},"bugs":{"url":"https://github.com/kastelldev/kastell/issues"},"author":{"name":"Ömer","email":"hello@omrfc.dev","url":"https://omrfc.dev"},"license":"Apache-2.0","homepage":"https://kastell.dev","keywords":["kastell","mcp-server","coolify","deployment","hetzner","digitalocean","vultr","linode","cli","vps","cloud","automation","self-hosted","server-security","server-maintenance","infrastructure","devops","server"],"repository":{"type":"git","url":"git+https://github.com/kastelldev/kastell.git"},"description":"CLI toolkit for provisioning, securing, and managing self-hosted servers","maintainers":[{"name":"omrfc","email":"omrfccc@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"assets/logo.png\" alt=\"Kastell\" width=\"120\" />\n</p>\n\n<h1 align=\"center\">Kastell</h1>\n<p align=\"center\">Altyapınız, güçlendirilmiş.</p>\n\n> [English](README.md) | Türkçe\n\n![Tests](https://github.com/kastelldev/kastell/actions/workflows/ci.yml/badge.svg)\n[![Coverage](https://codecov.io/gh/kastelldev/kastell/branch/main/graph/badge.svg)](https://app.codecov.io/gh/kastelldev/kastell)\n![npm](https://img.shields.io/npm/v/kastell)\n![Downloads](https://img.shields.io/npm/dt/kastell)\n![License](https://img.shields.io/badge/license-Apache%202.0-blue)\n![GitHub stars](https://img.shields.io/github/stars/kastelldev/kastell?style=flat-square)\n[![Socket Badge](https://socket.dev/api/badge/npm/package/kastell)](https://socket.dev/npm/package/kastell)\n[![Snyk](https://snyk.io/test/github/kastelldev/kastell/badge.svg)](https://snyk.io/test/github/kastelldev/kastell)\n[![Website](https://img.shields.io/badge/website-kastell.dev-blue?style=flat-square)](https://kastell.dev)\n[![DeepWiki](https://img.shields.io/badge/DeepWiki-kastelldev%2Fkastell-blue.svg?logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==)](https://deepwiki.com/kastelldev/kastell)\n![Zero Telemetry](https://img.shields.io/badge/telemetry-zero-brightgreen)\n\n## Neden Kastell?\n\nSunucu guvenligi parcali. Lynis tarar ama duzeltmez. OpenSCAP guclu ama karmasik. Ozel script'ler bir sure calisir, sonra kimse bakmaz. Her aracin ayri cikti formati, ayri guncelleme dongusu, ayri ogrenme egrisi var.\n\n**Kastell farkli bir yaklasim benimser:** tek CLI ile denetle, duzelt, kilitle ve izle. Sunucunu tara, guvenli fix'leri uygula, uretim standartlarina kilitle ve izlemeye devam et -- hepsi ayni aracla.\n\n**Ilk gunden yapay zeka uyumlu.** Kastell yerlesik MCP sunucusuyla gelir; Claude, Cursor veya herhangi bir MCP uyumlu yapay zeka ajanı sunucularinizi dogrudan yonetebilir. Bir prompt'tan uretim siklastirmasina saniyeler icinde gecin.\n\nBir sunucuyu guvenli hale getirmek icin dort ayri araca ihtiyaciniz yok.\n\n## Hızlı Başlangıç\n\n```bash\n# İnteraktif mod -- komut ezberlemeye gerek yok\nnpx kastell\n```\n\n`kastell` komutunu argümansız çalıştırdığınızda gradient ASCII banner ve hızlı başlangıç örnekleriyle birlikte **interaktif arama menüsü** açılır. Emoji kategorileriyle gruplanmış tüm işlemleri görebilir, yazarak anında filtreleyebilir ve alt seçenekleri adım adım yapılandırabilirsiniz -- komut adı veya flag ezberlemek zorunda değilsiniz.\n\n```\n ██╗  ██╗  ██████╗  ███████╗████████╗███████╗██╗     ██╗\n ██║ ██╔╝  ██╔══██╗ ██╔════╝╚══██╔══╝██╔════╝██║     ██║\n █████╔╝   ███████║ ███████╗   ██║   █████╗  ██║     ██║\n ██╔═██╗   ██╔══██║ ╚════██║   ██║   ██╔══╝  ██║     ██║\n ██║  ██╗  ██║  ██║ ███████║   ██║   ███████╗███████╗███████╗\n ╚═╝  ╚═╝  ╚═╝  ╚═╝ ╚══════╝   ╚═╝   ╚══════╝╚══════╝╚══════╝\n\n  KASTELL  v2.3.1  ·  Your infrastructure, fortified.\n\n  $ kastell init --template production  → deploy a new server\n  $ kastell status --all                → check all servers\n  $ kastell secure setup                → harden SSH + fail2ban\n  $ kastell maintain --all              → full maintenance cycle\n\n? What would you like to do?\n   Server Management\n❯    Deploy a new server\n     Add an existing server\n     List all servers\n     ...\n   Security\n     Harden SSH & fail2ban\n     Manage firewall (UFW)\n     ...\n```\n\nHer işlem alt seçenekler (sunucu modu, şablon, log kaynağı, port numarası vb.) içerir ve istediğiniz noktada ana menüye dönmek için **<- Back** seçeneği sunar.\n\nKomutları zaten biliyorsanız, doğrudan da kullanabilirsiniz:\n\n```bash\nkastell init                    # Yeni sunucu kur\nkastell status sunucum          # Sunucu durumunu kontrol et\nkastell backup --all            # Tüm sunucuları yedekle\n```\n\nKastell sunucu oluşturma, SSH anahtar kurulumu, güvenlik duvarı yapılandırması ve platform kurulumunu otomatik yapar.\n\n## Kastell'i Farklı Kılan Ne?\n\n| Problem | Çözüm |\n|---------|-------|\n| Güncelleme sunucuyu bozdu mu? | `maintain` ile güncelleme öncesi snapshot koruması |\n| Sunucunuz sağlıklı mı bilmiyor musunuz? | Yerleşik izleme, sağlık kontrolleri ve `doctor` tanılama |\n| Güvenlik sonradan mı düşünülüyor? | Güvenlik duvarı, SSH sıkılaştırma, SSL ve güvenlik denetimi hazır |\n| Yedekleme? Belki bir gün... | Tek komutla yedekleme ve geri yükleme, manifest takibiyle |\n| Birden fazla sunucu mu yönetiyorsunuz? | Yedekleme, bakım, durum ve sağlıkta `--all` desteği |\n| Mevcut sunucu takip dışı mı? | `kastell add` ile her sunucuyu yönetime alın |\n| Komutları ezberlemek mi? | `kastell` yazın -- interaktif menü sizi yönlendirir |\n\n## Kastell vs Alternatifler\n\n| Ozellik | Kastell | Lynis | OpenSCAP |\n|---------|---------|-------|----------|\n| Kurulum | `npm i -g kastell` | Paket yoneticisi | Paket yoneticisi |\n| Dil | TypeScript | Shell | C/Python |\n| Guvenlik Kontrolleri | 449 | 300+ | Profile gore degisir |\n| Otomatik Duzeltme | Guvenli katman | Sadece oneri | Sadece oneri |\n| MCP (AI Ajan) | 17 arac | -- | -- |\n| Uyumluluk | CIS, PCI-DSS, HIPAA | CIS, HIPAA | CIS, STIG, PCI-DSS |\n| Bulut Saglama | 4 saglayici | -- | -- |\n| Siklastirma (Lock) | 24 adim | -- | -- |\n| Uzaktan Izleme | Guard daemon | -- | -- |\n| Telegram Bot | Yerlesik | -- | -- |\n| Platform Destegi | Linux (SSH) | Linux/macOS/BSD | Linux |\n| Lisans | Apache 2.0 | GPL-3.0 | LGPL-2.1 |\n\n## Neler Yapabilirsiniz?\n\n### Kurulum\n```bash\nkastell                               # İnteraktif menü (önerilen)\nkastell init                          # İnteraktif kurulum (doğrudan)\nkastell init --provider hetzner       # Otomatik kurulum\nkastell init --config kastell.yml     # YAML ile kurulum\nkastell init --template production    # Şablon kullanarak\nkastell init --mode bare              # Genel VPS (platform yok)\nkastell init --mode dokploy           # Dokploy (Docker Swarm PaaS)\n```\n\n### Yönetim\n```bash\nkastell list                  # Sunucuları listele\nkastell status sunucum        # Sunucu durumu\nkastell status --all          # Tüm sunucuları kontrol et\nkastell ssh sunucum           # Sunucuya SSH bağlantısı\nkastell restart sunucum       # Sunucuyu yeniden başlat\nkastell destroy sunucum       # Bulut sunucusunu tamamen sil\nkastell add                   # Mevcut sunucu ekle\nkastell remove sunucum        # Yerel yapılandırmadan kaldır\nkastell config set key value  # Varsayılan yapılandırma yönet\nkastell config validate       # servers.yaml yapısını ve tiplerini doğrula\nkastell export                # Sunucu listesini JSON'a aktar\nkastell import servers.json   # JSON'dan sunucuları içe aktar\n```\n\n### Güncelleme ve Bakım\n```bash\nkastell update sunucum                # Platformu güncelle (Coolify veya Dokploy, sunucu kaydından otomatik algılanır)\nkastell update sunucum --dry-run      # Güncellemeyi çalıştırmadan önizle\nkastell maintain sunucum              # Tam bakım (snapshot + güncelleme + sağlık + yeniden başlatma)\nkastell maintain sunucum --dry-run    # Bakım adımlarını önizle\nkastell maintain --all                # Tüm sunucuları bakıma al\n```\n\n### Yedekleme ve Geri Yükleme\n```bash\nkastell backup sunucum        # Veritabanı + yapılandırma yedeği\nkastell backup --all          # Tüm sunucuları yedekle\nkastell restore sunucum       # Yedekten geri yükle\n```\n\n### Snapshot'lar\n```bash\nkastell snapshot create sunucum   # VPS snapshot'ı oluştur (maliyet tahminiyle)\nkastell snapshot list sunucum     # Snapshot'ları listele\nkastell snapshot list --all       # Tüm sunuculardaki snapshot'ları listele\nkastell snapshot delete sunucum   # Snapshot sil\n```\n\n### Güvenlik\n```bash\nkastell firewall status sunucum   # Güvenlik duvarı durumu\nkastell firewall setup sunucum    # UFW yapılandırması\nkastell secure audit sunucum      # Güvenlik denetimi\nkastell secure setup sunucum      # SSH sıkılaştırma + fail2ban\nkastell domain add sunucum --domain ornek.com  # Domain + SSL ayarla\n```\n\n### Güvenlik Denetimi\n```bash\nkastell audit sunucum                    # Tam güvenlik denetimi (31 kategori, 449 kontrol)\nkastell audit sunucum --json             # Otomasyon için JSON çıktısı\nkastell audit sunucum --threshold 70     # Skor eşiğin altındaysa exit code 1\nkastell audit sunucum --fix              # İnteraktif düzeltme modu (önem derecesine göre)\nkastell audit sunucum --fix --dry-run    # Düzeltmeleri çalıştırmadan önizle\nkastell audit sunucum --watch            # 5 dk aralıkla tekrar denetle, sadece değişiklikleri göster\nkastell audit sunucum --watch 60         # Özel aralık (60 saniye)\nkastell audit --host root@1.2.3.4       # Kayıtlı olmayan sunucuyu denetle\nkastell audit sunucum --badge            # SVG rozet çıktısı\nkastell audit sunucum --report html      # Tam HTML raporu\nkastell audit sunucum --score-only       # Sadece skor (CI uyumlu)\nkastell audit sunucum --summary          # Kompakt özet görünümü\nkastell audit sunucum --explain          # Başarısız kontrolleri iyileştirme rehberiyle açıkla\nkastell audit sunucum --compliance cis   # Uyumluluk çerçevesine göre filtrele (cis-level1, cis-level2, pci-dss, hipaa)\n```\n\n### Güvenlik Sertleştirme\n```bash\nkastell lock sunucum                          # 19 adımlı production sertleştirme (SSH + UFW + sysctl + auditd + AIDE + Docker)\nkastell lock sunucum --dry-run                # Sertleştirme adımlarını uygulamadan önizle\n```\n\n### İzleme ve Hata Ayıklama\n```bash\nkastell monitor sunucum             # CPU, RAM, disk kullanımı\nkastell logs sunucum                 # Platform logları (Coolify veya Dokploy)\nkastell logs sunucum -f              # Logları canlı takip et\nkastell health                       # Tüm sunucuların sağlık kontrolü\nkastell doctor                       # Yerel ortam kontrolü\n```\n\n## Desteklenen Sağlayıcılar\n\n| Sağlayıcı | Durum | Bölgeler | Başlangıç Fiyatı |\n|-----------|-------|----------|------------------|\n| [Hetzner Cloud](https://hetzner.cloud) | Kararlı | Avrupa, ABD | ~€4/ay |\n| [DigitalOcean](https://digitalocean.com) | Kararlı | Küresel | ~$18/ay |\n| [Vultr](https://vultr.com) | Kararlı | Küresel | ~$12/ay |\n| [Linode (Akamai)](https://linode.com) | Beta | Küresel | ~$12/ay |\n\n> Fiyatlar en az 2 GB RAM'e sahip en ucuz planı yansıtır (Coolify ve Dokploy gereksinimi). Bare modda minimum gereksinim yoktur -- sağlayıcıya göre ~$2.50/ay'dan başlayan planlar kullanılabilir. Kurulum sırasında farklı boyut seçebilirsiniz. Linode desteği beta aşamasındadır -- topluluk testleri memnuniyetle karşılanır.\n\n## Desteklenen Platformlar\n\n| Platform | Mod Bayrağı | Min RAM | Min CPU | Açıklama |\n|----------|-------------|---------|---------|----------|\n| Coolify | `--mode coolify` (varsayılan) | 2 GB | 2 vCPU | Docker tabanlı PaaS (port 8000) |\n| Dokploy | `--mode dokploy` | 2 GB | 2 vCPU | Docker Swarm tabanlı PaaS (port 3000) |\n| Bare | `--mode bare` | — | — | Genel VPS, platform yükü yok |\n\nKastell **PlatformAdapter** mimarisini kullanır -- aynı komutlar (`update`, `maintain`, `logs`, `health`) tüm platformlarda çalışır. Platform sunucu kaydınızda saklanır ve her komutta otomatik algılanır.\n\n## Geliştirici Deneyimi\n\n| Özellik | Komut / Bayrak | Açıklama |\n|---------|---------------|----------|\n| Kuru Çalıştırma | `--dry-run` | Yıkıcı komutları çalıştırmadan önizleyin. Destekleyen komutlar: destroy, update, restart, remove, maintain, restore, firewall, domain, backup, snapshot, secure. |\n| Kabuk Tamamlama | `kastell completions bash\\|zsh\\|fish` | Komut ve seçeneklerin sekme ile tamamlanması için kabuk tamamlama betikleri oluşturur. |\n| Yapılandırma Doğrulama | `kastell config validate` | `servers.yaml` dosyasını Zod strict şemaları ile yapısal ve tip hataları açısından kontrol eder. |\n| Sürüm Kontrolü | `kastell --version` | Mevcut sürümü gösterir ve npm'de daha yeni bir sürüm varsa bildirir. |\n\n## YAML Yapılandırması\n\nTek bir yapılandırma dosyasıyla kurulum yapın:\n\n```yaml\n# kastell.yml\nprovider: hetzner\nregion: nbg1\nsize: cax11\nname: sunucum\nfullSetup: true\ndomain: coolify.ornek.com\n```\n\n```bash\nkastell init --config kastell.yml\n```\n\n## Şablonlar\n\n| Şablon | Kullanım Alanı | İçerik |\n|--------|---------------|--------|\n| `starter` | Test, yan projeler | 1-2 vCPU, 2-4 GB RAM |\n| `production` | Canlı uygulamalar | 2-4 vCPU, 4-8 GB RAM, tam sıkılaştırma |\n| `dev` | Geliştirme ve CI/CD | Starter ile aynı, sıkılaştırma yok |\n\n```bash\nkastell init --template production --provider hetzner\n```\n\n## Güvenlik\n\nKastell güvenlik öncelikli olarak geliştirilmektedir -- 344 test suite'inde **11.206 test**, özel güvenlik test suite'leri dahil.\n\n- API token'ları asla diske kaydedilmez -- çalışma zamanında sorulur veya ortam değişkenlerinden alınır\n- SSH anahtarları gerekirse otomatik oluşturulur (Ed25519)\n- Tüm SSH bağlantıları `StrictHostKeyChecking=accept-new` ile IP doğrulama (oktet aralığı) ve ortam filtreleme kullanır\n- Tüm kullanıcı girdilerinde shell injection koruması (`spawn`/`spawnSync`, `execSync` yok)\n- Provider hata mesajları token sızıntısını önlemek için temizlenir\n- stderr temizleme -- hata çıktısından IP'ler, home dizinleri, token'lar ve gizli veriler otomatik redakte edilir\n- Yapılandırma dosyasında token tespiti (22+ anahtar pattern, büyük/küçük harf duyarsız, iç içe yapılar)\n- İçe/dışa aktarma işlemleri hassas alanları temizler ve dosya izinlerini sıkılaştırır (`0o600`)\n- `--full-setup` güvenlik duvarı ve SSH sıkılaştırmasını otomatik etkinleştirir\n- MCP: SAFE_MODE (varsayılan: açık) tüm yıkıcı işlemleri engeller, tüm girdilerde Zod şema doğrulaması, yedek geri yüklemede path traversal koruması\n- Claude Code hook'ları: destroy-block, `--force` olmadan `kastell destroy` komutunu engeller; pre-commit audit guard skor düşüşünde uyarır\n- **Sıfır Telemetri** — Kastell hiçbir kullanım verisi, analitik veya telemetri toplamaz. Sunucu verileriniz makinenizden asla çıkmaz.\n\n## Kurulum\n\n```bash\n# Doğrudan çalıştırın (önerilen)\nnpx kastell <komut>\n\n# Veya global olarak kurun\nnpm install -g kastell\nkastell <komut>\n```\n\nNode.js 20 veya üstü gereklidir.\n\n## Sorun Giderme\n\n**Sunucu oluşturma başarısız mı?**\nAPI token'ınızı ve yerel ortamınızı doğrulamak için `kastell doctor --check-tokens` komutunu çalıştırın.\n\n**Sunucu yanıt vermiyor mu?**\nPlatform durumunu kontrol edip gerekirse otomatik yeniden başlatmak için `kastell status sunucum --autostart` kullanın veya tüm sunucuları kontrol etmek için `kastell health` çalıştırın.\n\n**Sıfırdan başlamak mı istiyorsunuz?**\n`kastell destroy sunucum` bulut sunucusunu tamamen kaldırır.\n\n## Katkıda Bulunma\n\nGeliştirme ortamı kurulumu, test ve katkı rehberi için [CONTRIBUTING.md](CONTRIBUTING.md) dosyasına bakın.\n\nKastell, 344 suite'te **11.206 test** kullanmaktadır. PR göndermeden önce `npm test` çalıştırın.\n\n## MCP Sunucusu (Yapay Zeka Entegrasyonu)\n\nKastell, yapay zeka destekli sunucu yönetimi için yerleşik bir [Model Context Protocol](https://modelcontextprotocol.io/) sunucusu içerir. Claude Code, Cursor, Windsurf ve diğer MCP uyumlu istemcilerle çalışır.\n\n```json\n{\n  \"mcpServers\": {\n    \"kastell\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"-p\", \"kastell\", \"kastell-mcp\"],\n      \"env\": {\n        \"HETZNER_TOKEN\": \"token-buraya\",\n        \"DIGITALOCEAN_TOKEN\": \"token-buraya\",\n        \"VULTR_TOKEN\": \"token-buraya\",\n        \"LINODE_TOKEN\": \"token-buraya\"\n      }\n    }\n  }\n}\n```\n\nMevcut araçlar:\n\n| Araç | Eylemler | Açıklama |\n|------|----------|----------|\n| `server_info` | list, status, health, sizes | Sunucu bilgilerini sorgula, bulut sağlayıcı ve platform durumunu kontrol et |\n| `server_logs` | logs, monitor | SSH ile platform/Docker loglarını ve sistem metriklerini getir |\n| `server_manage` | add, remove, destroy | Sunucuları kaydet, kaldır veya bulut sunucusunu sil |\n| `server_maintain` | update, restart, maintain | Platformu güncelle, sunucuları yeniden başlat, tam bakım yap |\n| `server_secure` | secure, firewall, domain | SSH sıkılaştırma, güvenlik duvarı kuralları, domain/SSL yönetimi (10 alt komut) |\n| `server_backup` | backup, snapshot | Veritabanı yedekle/geri yükle ve VPS snapshot oluştur/yönet |\n| `server_provision` | create | Bulut sağlayıcılarda yeni sunucu oluştur |\n| `server_audit` | audit | 468+ kontrollü güvenlik denetimi, uyumluluk çerçevesi filtresiyle; iyileştirme rehberi için `--explain` kullanın |\n| `server_evidence` | collect | Adli kanıt paketi topla (SHA256 checksum ile) |\n| `server_guard` | start, stop, status | Otonom güvenlik izleme daemon'u yönet |\n| `server_doctor` | diagnose | Proaktif sağlık analizi ve iyileştirme komutları |\n| `server_lock` | harden | 24 adımlı production sertleştirme (SSH, UFW, sysctl, auditd, AIDE, Docker) |\n| `server_fleet` | overview | Tüm filo için sağlık ve güvenlik duruşu panosu |\n| `server_fix` | fix --safe | Otomatik güvenli düzeltmeler uygula (yalnızca SAFE tier, dryRun varsayılan) |\n\n> Tüm yıkıcı işlemler (destroy, restore, snapshot-delete, provision, restart, maintain, snapshot-create) çalıştırılmak için `SAFE_MODE=false` gerektirir.\n\n### Claude Code Eklentisi\n\nKastell, Anthropic marketplace için [Claude Code eklentisi](kastell-plugin/) olarak da sunulmaktadır. Eklenti şunları içerir:\n\n- **4 beceri**: kastell-ops (mimari referans), kastell-scaffold (bileşen üretimi), kastell-careful (yıkıcı işlem koruyucusu), kastell-research (kod tabanı keşfi)\n- **2 ajan**: kastell-auditor (paralel denetim analizcisi), kastell-fixer (worktree izolasyonlu otomatik düzeltici)\n- **5 hook**: destroy-block, session-audit, session-log, pre-commit-audit-guard, stop-quality-check\n\nKurulum için Claude Code eklenti yöneticisini kullanın ya da doğrudan `claude --plugin-dir kastell-plugin` ile çalıştırın.\n\n### MCP Platform Kurulumu\n\n| Platform | Yapılandırma Konumu | Kılavuz |\n|----------|---------------------|---------|\n| Claude Code | `claude mcp add` veya `.mcp.json` | [Kurulum Rehberi](docs/mcp-platforms/claude-code.md) |\n| Claude Desktop | `claude_desktop_config.json` | [Kurulum Rehberi](docs/mcp-platforms/claude-desktop.md) |\n| VS Code / Copilot | `.vscode/mcp.json` | [Kurulum Rehberi](docs/mcp-platforms/vscode.md) |\n| Cursor | `.cursor/mcp.json` | [Kurulum Rehberi](docs/mcp-platforms/cursor.md) |\n\n> Daha fazla platform (JetBrains, Windsurf, Gemini ve diğerleri) v2.0'da eklenecek.\n\n### AI Keşfedilebilirliği\n\nKastell, AI tarayıcıları için [`llms.txt`](llms.txt) sağlar ve [MCP Registry](https://registry.modelcontextprotocol.io/)'de `io.github.kastelldev/kastell` olarak listelenmiştir.\n\n`kastell audit` komutunu CI pipeline'ınızda güvenlik eşiği zorunluluğu için kullanın:\n\n```yaml\n# .github/workflows/security-audit.yml\nname: Güvenlik Denetimi\non:\n  schedule:\n    - cron: '0 6 * * 1'  # Her Pazartesi 06:00\njobs:\n  audit:\n    runs-on: ubuntu-latest\n    steps:\n      - run: npx -y kastell audit --host root@${{ secrets.SERVER_IP }} --threshold 70 --json > audit-result.json\n      - uses: actions/upload-artifact@v4\n        with:\n          name: audit-report\n          path: audit-result.json\n```\n\n## Gelecek Planlar\n\n- Test Mükemmelliği: Mutasyon testi, kapsam boşlukları, entegrasyon testleri (v1.14)\n- Marketplace dağıtımıyla plugin ekosistemi (v2.0)\n- Dashboard ve yönetilen hizmet (v3.0)\n\n## Felsefe\n\n> Altyapı sıkıcı, öngörülebilir ve güvenli olmalıdır.\n\nKastell bir script değildir. Self-hosted altyapınız için DevOps güvenlik katmanınızdır.\n\n## Lisans\n\nApache 2.0 -- [LICENSE](LICENSE) dosyasına bakın\n\n## Destek\n\n- [GitHub Issues](https://github.com/kastelldev/kastell/issues) -- Hata bildirimleri ve özellik istekleri\n- [Changelog](CHANGELOG.md) -- Sürüm geçmişi\n\n---\n\n[@omrfc](https://github.com/omrfc) tarafından geliştirilmektedir.\n","readmeFilename":"README.tr.md"}