Kraken Mod Manager (KMM) is a modern, lightweight, cross-platform mod manager for Kerbal Space Program (KSP). It takes architectural inspiration from CKAN, but is built with TypeScript, Node.js, and Vue.
Tame the modding kraken: discover mods from the official CKAN registry, plan dependencies, and install or uninstall with a local-first workflow.
- Node.js 24.18.0 or newer (
.nvmrcpins the development version) - Corepack-enabled pnpm 11.13.1 or newer
corepack enable
pnpm install
pnpm devThe local UI is served at http://127.0.0.1:5173 by Vite. API requests are
proxied to the Express service at http://127.0.0.1:31415. To run the
production-shaped service after a build:
pnpm build
pnpm startThe backend binds only to loopback. Set KMM_PORT to choose another local
port, and KMM_OPEN_BROWSER=false to suppress opening the default browser.
apps/frontend— Vue 3, Vite, and Tailwind user interface.apps/backend— local Express API and production static-file server.packages/contracts— validated API contracts shared between client and server.packages/core— framework-independent KSP detection, CKAN metadata parsing, registry indexing, dependency planning, and install/uninstall policy.
On first launch, Kraken searches standard Steam, GOG, and Epic locations for a valid KSP executable. If it cannot find the game, select the installation from the directory-only browser. The browser exposes directory names only, follows neither path traversal nor symbolic links outside its explicit roots, and validates the selected folder before it is saved. On Linux and macOS its roots are the user's home directory and filesystem root; on Windows it exposes every available drive root.
The active installation is stored atomically in config.json:
- Windows:
%APPDATA%/Kraken Mod Manager - Linux:
$XDG_CONFIG_HOME/kraken-mod-manager(or~/.config/kraken-mod-manager) - macOS:
~/Library/Application Support/Kraken Mod Manager
After an installation is configured, refresh the official CKAN-meta archive to build a local searchable index. The cache is stored separately from config:
- Windows:
%LOCALAPPDATA%/Kraken Mod Manager/Cache - Linux:
$XDG_CACHE_HOME/kraken-mod-manager(or~/.cache/kraken-mod-manager) - macOS:
~/Library/Caches/Kraken Mod Manager
Kraken downloads mod ZIPs, verifies download_hash when present, extracts with
Zip Slip rejection, and installs according to .ckan install stanzas (or
CKAN defaults). Managed installs are tracked in install-manifest.json;
uninstall removes only those tracked files. Inventory also detects top-level
GameData folders that match known registry identifiers.
Before install, Kraken can dry-run a dependency plan from CKAN depends /
conflicts (POST /api/v1/mods/:identifier/plan). When confirmed, hard
dependencies install first in one job (installDependencies: true). Optional
recommends / suggests are reported in the plan only.
Install progress is streamed with Server-Sent Events on
GET /api/v1/jobs/:jobId/events.
The local API includes GET /api/v1/health, GET /api/v1/ksp/installations,
GET/PUT /api/v1/config, GET /api/v1/fs/directories, GET /api/v1/registry,
POST /api/v1/registry/refresh, GET /api/v1/mods, GET /api/v1/installed-mods,
POST /api/v1/mods/:identifier/plan, POST /api/v1/mods/:identifier/install,
DELETE /api/v1/mods/:identifier, GET /api/v1/jobs/:jobId, and
GET /api/v1/jobs/:jobId/events.
Project artwork lives in assets/:
| File | Use |
|---|---|
logo.png |
Square mark (512×512) for README and general branding |
logo-256.png |
Smaller square mark |
logo-banner.png |
Wide banner (1024×558) |
Web favicons and PWA-sized icons are under
apps/frontend/public/ (favicon.ico, apple-touch-icon.png, icon-192.png,
icon-512.png).
pnpm lint
pnpm typecheck
pnpm test
pnpm buildDependency updates are managed by Dependabot
(.github/dependabot.yml). See the roadmap and
architecture decisions for the planned work.
