{ "name": "9router", "version": "0.4.55", "description": "9Router CLI - Start and manage 9Router server", "bin": { "9router": "./cli.js" }, "files": [ "cli.js", "src", "hooks", "app", "README.md", "LICENSE" ], "scripts": { "dev": "nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js", "build": "node scripts/build-cli.js", "pack:cli": "npm run build && npm pack --pack-destination ../..", "publish:cli": "npm run build && npm publish", "postinstall": "node hooks/postinstall.js", "prepublishOnly": "npm run build" }, "dependencies": { "enquirer": "^2.4.1", "node-forge": "^1.3.3", "node-machine-id": "^1.1.12", "react": "19.2.1", "react-dom": "19.2.1" }, "comment_sqlite": "sql.js + better-sqlite3 are NOT bundled here. They are installed into ~/.9router/runtime/node_modules by hooks/postinstall.js (and re-checked at runtime by cli.js). This avoids Windows EBUSY errors when updating the global CLI, since native .node files no longer live under the locked install dir.", "comment_systray": "systray2 is NOT bundled here. It is lazy-installed into ~/.9router/runtime/node_modules by hooks/postinstall.js on macOS/Linux only. Windows uses PowerShell NotifyIcon (zero binary). This avoids shipping unsigned Go binaries that trigger antivirus false positives (Kaspersky). We use the systray2 fork because the legacy systray@1.0.5 ships a 2017 x86_64 binary that fails on modern macOS dyld.", "engines": { "node": ">=18.0.0" }, "keywords": [ "9router", "cli", "proxy", "ai", "api" ], "license": "MIT", "devDependencies": { "esbuild": "^0.25.12", "nodemon": "^3.1.14" } }