{ "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" }, "files": [ "bin/", "dist/", ".claude-plugin/", "kastell-plugin/skills/", "kastell-plugin/agents/", "kastell-plugin/hooks/", "kastell-plugin/.claude-plugin/", "kastell-plugin/.mcp.json", "kastell-plugin/README.md", "README.md", "LICENSE", "NOTICE", "SECURITY.md", "CHANGELOG.md" ], "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": "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.29.0", "@napi-rs/keyring": "1.3.0", "axios": "1.18.1", "chalk": "5.6.2", "commander": "14.0.3", "grammy": "1.44.0", "inquirer": "12.11.1", "js-yaml": "4.2.0", "ora": "9.4.1", "semver": "7.8.5", "zod": "4.4.3" }, "overrides": { "minimatch": "^10.2.4", "ip-address": "^10.1.1", "qs": "^6.15.2" }, "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.1", "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" } }