{"_id":"@azrtydxb/kryton-init","_rev":"5-6daf6da3dc303d84ad01256b3511b434","name":"@azrtydxb/kryton-init","dist-tags":{"latest":"0.3.2"},"versions":{"0.2.0":{"name":"@azrtydxb/kryton-init","version":"0.2.0","license":"Apache-2.0","_id":"@azrtydxb/kryton-init@0.2.0","maintainers":[{"name":"piwi3910","email":"pascal@watteel.be"}],"homepage":"https://github.com/azrtydxb/kryton#readme","bugs":{"url":"https://github.com/azrtydxb/kryton/issues"},"bin":{"kryton-init":"dist/main.js"},"dist":{"shasum":"2a0fdc1697df17c094c91341137b48a3ed32e129","tarball":"https://registry.npmjs.org/@azrtydxb/kryton-init/-/kryton-init-0.2.0.tgz","fileCount":81,"integrity":"sha512-d0TIekN6/xXwSCgGl2j9dEyFJe2TKxVpYcqHnr19t5dTfCxH+2MI/f9m2MwgidUXo6yqCozKuC/GZj4Z7QUHCA==","signatures":[{"sig":"MEUCIBZ2jnFs11VPcEC3JqB1U44ia1HvhfcmBi3xK03J5XVTAiEAuqZo12HtGlCRn59B5XohrkAh4ZTsUUblkZ2L8wO0fpI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138251},"main":"dist/main.js","type":"module","types":"dist/main.d.ts","engines":{"node":">=20.19"},"gitHead":"ba20f42f2e19a94e4948f139b2f6fb94812fcbb7","private":false,"scripts":{"test":"tsc -p tsconfig.test.json && node --test --enable-source-maps dist-test/test/*.test.js","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"piwi3910","email":"pascal@watteel.be"},"repository":{"url":"git+https://github.com/azrtydxb/kryton.git","type":"git","directory":"packages/kryton-init"},"_npmVersion":"11.9.0","description":"Interactive installer that signs in to a Kryton server, mints an API key, and wires every supported AI agent host (Claude Code, Cursor, Codex, OpenCode, Cline, Continue, KiloCode, RooCode, Claude Desktop) to use it","directories":{},"_nodeVersion":"25.6.1","dependencies":{"yaml":"^2.6.0","commander":"^14.0.0","smol-toml":"^1.4.2","@inquirer/prompts":"^7.8.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.3","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/kryton-init_0.2.0_1779130238259_0.4842449540206042","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@azrtydxb/kryton-init","version":"0.2.1","license":"Apache-2.0","_id":"@azrtydxb/kryton-init@0.2.1","maintainers":[{"name":"piwi3910","email":"pascal@watteel.be"}],"homepage":"https://github.com/azrtydxb/kryton#readme","bugs":{"url":"https://github.com/azrtydxb/kryton/issues"},"bin":{"kryton-init":"dist/main.js"},"dist":{"shasum":"f12ee78a59ff7deffc605b688e873350e4f6f39e","tarball":"https://registry.npmjs.org/@azrtydxb/kryton-init/-/kryton-init-0.2.1.tgz","fileCount":81,"integrity":"sha512-iAMEAfotgy5oIXTVgq1CYy/xt+MBlCTRVyD/usuYSDbHes49aZzJwPcpbcEXLz5f7d6onjQZjc1OAW7Tl2BkKw==","signatures":[{"sig":"MEQCIEfEDWG9ztO/xP7IFPY/qfpqSLRxcjas6LKDKaqH5D1PAiAuPLf+5ZSAeXv/dnPzRJ3ldjgJjLyuehz9qpff9casSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@azrtydxb%2fkryton-init@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":138275},"main":"dist/main.js","type":"module","types":"dist/main.d.ts","engines":{"node":">=20.19"},"gitHead":"86cba2e9ac25480ebc7dc004a467354b61ca71bc","private":false,"scripts":{"test":"tsc -p tsconfig.test.json && node --test --enable-source-maps dist-test/test/*.test.js","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:eb1ef1e6-ba2b-45ff-ac54-9584a949845d"}},"repository":{"url":"git+https://github.com/azrtydxb/kryton.git","type":"git","directory":"packages/kryton-init"},"_npmVersion":"11.12.1","description":"Interactive installer that signs in to a Kryton server, mints an API key, and wires every supported AI agent host (Claude Code, Cursor, Codex, OpenCode, Cline, Continue, KiloCode, RooCode, Claude Desktop) to use it","directories":{},"_nodeVersion":"24.15.0","dependencies":{"yaml":"^2.6.0","commander":"^14.0.0","smol-toml":"^1.4.2","@inquirer/prompts":"^7.8.6"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.3","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/kryton-init_0.2.1_1779130990036_0.06551991414671465","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@azrtydxb/kryton-init","version":"0.3.0","license":"Apache-2.0","_id":"@azrtydxb/kryton-init@0.3.0","maintainers":[{"name":"piwi3910","email":"pascal@watteel.be"}],"homepage":"https://github.com/azrtydxb/kryton#readme","bugs":{"url":"https://github.com/azrtydxb/kryton/issues"},"bin":{"kryton-init":"dist/main.js"},"dist":{"shasum":"b3d1585b0e27c2347a30a563f58b8d8a9bff28c3","tarball":"https://registry.npmjs.org/@azrtydxb/kryton-init/-/kryton-init-0.3.0.tgz","fileCount":81,"integrity":"sha512-FpdidqChBfSgyra3Uy4c2Qz1Jczj71UqtYBiJ1pDEBgJQ8GuQap7io/gwtwWZdNmlU9sDeiblalY5khY+pwN9w==","signatures":[{"sig":"MEUCIHtW8Ms6l54GAkJ5ju/fstOFFHm7tlURP4wKi8I73HxeAiEA1JPaxPWmx6l/f8G/m0hpAjxyN0KZMcoWOLWuA+TtAXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@azrtydxb%2fkryton-init@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":138922},"main":"dist/main.js","type":"module","types":"dist/main.d.ts","engines":{"node":">=20.19"},"gitHead":"50fa745fca8efc53084cd2960276f47ea25cdda9","private":false,"scripts":{"test":"tsc -p tsconfig.test.json && node --test --enable-source-maps dist-test/test/*.test.js","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:eb1ef1e6-ba2b-45ff-ac54-9584a949845d"}},"repository":{"url":"git+https://github.com/azrtydxb/kryton.git","type":"git","directory":"packages/kryton-init"},"_npmVersion":"11.12.1","description":"Interactive installer that signs in to a Kryton server, mints an API key, and wires every supported AI agent host (Claude Code, Cursor, Codex, OpenCode, Cline, Continue, KiloCode, RooCode, Claude Desktop) to use it","directories":{},"_nodeVersion":"24.15.0","dependencies":{"yaml":"^2.6.0","commander":"^14.0.0","smol-toml":"^1.4.2","@inquirer/prompts":"^7.8.6"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.3","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/kryton-init_0.3.0_1779131295912_0.7223501041555676","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@azrtydxb/kryton-init","version":"0.3.1","license":"Apache-2.0","_id":"@azrtydxb/kryton-init@0.3.1","maintainers":[{"name":"piwi3910","email":"pascal@watteel.be"}],"homepage":"https://github.com/azrtydxb/kryton#readme","bugs":{"url":"https://github.com/azrtydxb/kryton/issues"},"bin":{"kryton-init":"dist/main.js"},"dist":{"shasum":"6a7aaa4513c2ee49ca9caf72d9792087f3072a3a","tarball":"https://registry.npmjs.org/@azrtydxb/kryton-init/-/kryton-init-0.3.1.tgz","fileCount":81,"integrity":"sha512-hDFi89Psy9Ic+v6xPUnipmxC9jG3tJsUmnM3HNHAUuyFmW78L93xYDvW9q+cQAY+rxo5CRt9PFAyIOYl9IAanA==","signatures":[{"sig":"MEUCIHnAVWLOs7droaWz9nHfgUisC+ki67qPwdA+PEWLsWMRAiEA2vtCrFSg2fQpzHrmwmp9mlsw9/6pl3QR6Cqs09OmQ1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@azrtydxb%2fkryton-init@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":138963},"main":"dist/main.js","type":"module","types":"dist/main.d.ts","engines":{"node":">=20.19"},"gitHead":"1b98a2c5ef101de30b1a4e4e911559b338375066","private":false,"scripts":{"test":"tsc -p tsconfig.test.json && node --test --enable-source-maps dist-test/test/*.test.js","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:eb1ef1e6-ba2b-45ff-ac54-9584a949845d"}},"repository":{"url":"git+https://github.com/azrtydxb/kryton.git","type":"git","directory":"packages/kryton-init"},"_npmVersion":"11.12.1","description":"Interactive installer that signs in to a Kryton server, mints an API key, and wires every supported AI agent host (Claude Code, Cursor, Codex, OpenCode, Cline, Continue, KiloCode, RooCode, Claude Desktop) to use it","directories":{},"_nodeVersion":"24.15.0","dependencies":{"yaml":"^2.6.0","commander":"^14.0.0","smol-toml":"^1.4.2","@inquirer/prompts":"^7.8.6"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.3","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/kryton-init_0.3.1_1779131535424_0.9600408839560537","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@azrtydxb/kryton-init","version":"0.3.2","private":false,"description":"Interactive installer that signs in to a Kryton server, mints an API key, and wires every supported AI agent host (Claude Code, Cursor, Codex, OpenCode, Cline, Continue, KiloCode, RooCode, Claude Desktop) to use it","license":"Apache-2.0","type":"module","main":"dist/main.js","types":"dist/main.d.ts","bin":{"kryton-init":"dist/main.js"},"publishConfig":{"access":"public","provenance":true},"scripts":{"build":"tsc -p tsconfig.json","prepublishOnly":"npm run build","test":"tsc -p tsconfig.test.json && node --test --enable-source-maps dist-test/test/*.test.js","typecheck":"tsc -p tsconfig.json --noEmit"},"dependencies":{"@inquirer/prompts":"^7.8.6","commander":"^14.0.0","smol-toml":"^1.4.2","yaml":"^2.6.0"},"devDependencies":{"@types/node":"^22.10.0","typescript":"^5.6.3"},"engines":{"node":">=20.19"},"repository":{"type":"git","url":"git+https://github.com/azrtydxb/kryton.git","directory":"packages/kryton-init"},"homepage":"https://github.com/azrtydxb/kryton#readme","bugs":{"url":"https://github.com/azrtydxb/kryton/issues"},"gitHead":"b993e4455660ea73cabd3eea03bc4898f0ed9632","_id":"@azrtydxb/kryton-init@0.3.2","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-YPE8lgoAupkOYYcVDYKCzTH2DwB5TE7jfXfyCfTDB9unPQtoor6weinvORFeUshUR7MpfXMm+w/9JSIkZfrZQg==","shasum":"52c91a371f5ef1ff8954a03c07186b2be3edf976","tarball":"https://registry.npmjs.org/@azrtydxb/kryton-init/-/kryton-init-0.3.2.tgz","fileCount":82,"unpackedSize":147284,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@azrtydxb%2fkryton-init@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCNMFAonu/LcyGrDu/4qfc4nKGkXvIZ4iUK7hXCIhXPOQIhAIrGfEKBl0JXi1BEXFOVj0Cjw7piuR3arn7RaPXqhJTm"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:eb1ef1e6-ba2b-45ff-ac54-9584a949845d"}},"directories":{},"maintainers":[{"name":"piwi3910","email":"pascal@watteel.be"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kryton-init_0.3.2_1779295581408_0.562038303666266"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-18T18:50:38.124Z","modified":"2026-05-20T16:46:21.965Z","0.2.0":"2026-05-18T18:50:38.434Z","0.2.1":"2026-05-18T19:03:10.190Z","0.3.0":"2026-05-18T19:08:16.063Z","0.3.1":"2026-05-18T19:12:15.578Z","0.3.2":"2026-05-20T16:46:21.661Z"},"bugs":{"url":"https://github.com/azrtydxb/kryton/issues"},"license":"Apache-2.0","homepage":"https://github.com/azrtydxb/kryton#readme","repository":{"type":"git","url":"git+https://github.com/azrtydxb/kryton.git","directory":"packages/kryton-init"},"description":"Interactive installer that signs in to a Kryton server, mints an API key, and wires every supported AI agent host (Claude Code, Cursor, Codex, OpenCode, Cline, Continue, KiloCode, RooCode, Claude Desktop) to use it","maintainers":[{"name":"piwi3910","email":"pascal@watteel.be"}],"readme":"# @azrtydxb/kryton-init\n\nInteractive installer that signs you in to a [Kryton](https://kryton.ai) server, mints an API key, and wires every detected AI agent host on this machine to use it via MCP.\n\nOne command turns \"I have a Kryton server\" into \"Claude Code, Cursor, Codex, Claude Desktop, Cline, Continue, OpenCode, KiloCode, and RooCode all see Kryton's tools\" — without hand-editing nine different config files.\n\n## Quick start\n\nKryton is self-hosted — you need the URL of **your** Kryton server. Pass it in or let the installer prompt for it:\n\n```bash\n# Interactive — prompts for the server URL, then email + password\nnpx -y @azrtydxb/kryton-init\n\n# Or pass the server explicitly\nnpx -y @azrtydxb/kryton-init --server https://kryton.example.com\n\n# Or set it via env var\nKRYTON_SERVER=https://kryton.example.com npx -y @azrtydxb/kryton-init\n```\n\nThe installer will:\n\n1. Prompt for the server URL (or use `--server` / `KRYTON_SERVER`), then probe `<server>/api/health`.\n2. Prompt for email + password, sign in via the public auth endpoint.\n3. Mint an API key named `kryton-init: <hostname>` with `read-write` scope.\n4. Detect every supported AI agent host installed on this machine.\n5. Show a checkbox list — pick which hosts to wire.\n6. Write the MCP entry into each chosen host's config file (preserving everything else in it).\n7. Print a per-host post-install hint (which app needs a restart, where to toggle the server on, etc.).\n\nRun it again any time to re-wire after installing a new host, or to point at a different server. Prior state is remembered so the URL prompt defaults to your last-used server.\n\n## Commands\n\n| Command                | What it does                                                          |\n| ---------------------- | --------------------------------------------------------------------- |\n| `kryton-init` _(default)_ / `kryton-init install` | Full interactive flow described above. |\n| `kryton-init uninstall` | Remove the `kryton` MCP entry from every wired host's config.        |\n| `kryton-init status`    | Print the current state: server, key prefix, list of wired hosts.    |\n| `kryton-init detect`    | List detected AI agent hosts; doesn't sign in or write anything.     |\n| `kryton-init mcp`       | Print an MCP entry snippet for manual wiring (when a host isn't auto-supported). Use `--host <name>` for one specific host shape. |\n\n### Common flags\n\n| Flag                       | Applies to                | Meaning                                                                 |\n| -------------------------- | ------------------------- | ----------------------------------------------------------------------- |\n| `--server <url>`           | `install`                 | Kryton server base URL (required). Also reads `KRYTON_SERVER`. If neither is set and there's no prior state, you'll be prompted. |\n| `--hosts <a,b,c>`          | `install`, `uninstall`    | Restrict to a comma-separated subset (host names below).                |\n| `--dry-run`                | `install`, `uninstall`    | Print the plan; write nothing.                                          |\n| `--yes` / `-y`             | `install`, `uninstall`    | Non-interactive: skip all prompts. Requires `--server`/`KRYTON_SERVER`/prior state and a previously-minted key to reuse; otherwise it errors out. |\n| `--host <name>`            | `mcp`                     | Print just that one host's MCP snippet shape.                           |\n\n## Supported hosts\n\nEach host's config file is edited in place; everything else in the file is preserved.\n\n| Name             | App                      | Config file                                                                  | Transport |\n| ---------------- | ------------------------ | ---------------------------------------------------------------------------- | --------- |\n| `claude-code`    | Claude Code              | `~/.claude.json`                                                             | HTTP      |\n| `cursor`         | Cursor                   | `~/.cursor/mcp.json`                                                         | HTTP      |\n| `claude-desktop` | Claude Desktop           | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS), `$XDG_CONFIG_HOME/Claude/…` (Linux) | stdio |\n| `codex`          | OpenAI Codex CLI         | `~/.codex/config.toml`                                                       | stdio     |\n| `opencode`       | OpenCode                 | `$XDG_CONFIG_HOME/opencode/config.json`                                      | stdio     |\n| `cline`          | Cline (VS Code)          | VS Code extension dir for `saoudrizwan.claude-dev-*`                         | stdio     |\n| `continue`       | Continue                 | `~/.continue/config.yaml`                                                    | stdio     |\n| `kilocode`       | KiloCode                 | `$XDG_CONFIG_HOME/kilocode/mcp.json`                                         | stdio     |\n| `roocode`        | RooCode (VS Code)        | VS Code globalStorage dir for `rooveterinaryinc.roo-cline`                   | stdio     |\n\nRun `kryton-init detect` to see which of these are actually installed on this machine.\n\n## Transports\n\n`kryton-init` picks the right transport per host:\n\n- **HTTP** — the host hits `<server>/api/mcp` directly with the bearer token in `Authorization`. Faster, fewer moving parts, no separate process.\n- **stdio** — the host spawns [`@azrtydxb/kryton-mcp`](../kryton-mcp/README.md) via `npx`, which proxies stdio JSON-RPC to the same `/api/mcp` endpoint. Used for hosts that don't (yet) speak Streamable-HTTP MCP.\n\nThe transport choice is per host and not configurable — it tracks whatever the host actually supports today.\n\n## State file\n\nAfter a successful install, `kryton-init` records the install plan at:\n\n```\n$XDG_CONFIG_HOME/kryton-init/state.json\n   (default: ~/.config/kryton-init/state.json)\n```\n\nIt contains the server URL, the API-key id + prefix + full plaintext key (file is `chmod 0600`), and a hash of each wired host's config at write time. The hash is what lets `uninstall` refuse to clobber a config you've hand-edited since — pass `--yes` to override.\n\n`kryton-init uninstall` removes the entries from each wired config and revokes the API key on the server.\n\n## Environment\n\n| Variable          | Used by      | Notes                                                            |\n| ----------------- | ------------ | ---------------------------------------------------------------- |\n| `KRYTON_SERVER`   | `install`    | Default for `--server`. Overridden by an explicit flag.          |\n| `XDG_CONFIG_HOME` | all          | Base dir for the state file and several host configs.            |\n\n## Examples\n\nInteractive, all detected hosts:\n\n```bash\nnpx -y @azrtydxb/kryton-init --server https://kryton.example.com\n```\n\nJust Claude Code, scripted (after at least one prior interactive install has minted a key):\n\n```bash\nnpx -y @azrtydxb/kryton-init install \\\n  --server https://kryton.example.com \\\n  --hosts claude-code \\\n  --yes\n```\n\nPreview what _would_ change, then bail:\n\n```bash\nnpx -y @azrtydxb/kryton-init install \\\n  --server https://kryton.example.com \\\n  --dry-run\n```\n\nPrint the snippet you'd paste into a host this tool doesn't yet auto-support:\n\n```bash\nnpx -y @azrtydxb/kryton-init mcp --host claude-desktop\n```\n\n## Uninstall\n\n```bash\nnpx -y @azrtydxb/kryton-init uninstall\n```\n\nRemoves Kryton's MCP entry from every previously-wired config and revokes the API key. Add `--hosts <list>` to scope to a subset; add `--yes` to force-remove past a config-hash mismatch.\n\n## See also\n\n- [`@azrtydxb/kryton-mcp`](../kryton-mcp/README.md) — the stdio shim that's installed under the hood for non-HTTP hosts.\n- [Kryton server docs](https://kryton.ai) — for the full tool catalogue exposed at `/api/mcp`.\n","readmeFilename":"README.md"}