# dsh-plugins-dsh-launcher **Repository Path**: funcong/dsh-plugins-dsh-launcher ## Basic Information - **Project Name**: dsh-plugins-dsh-launcher - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-02 - **Last Updated**: 2026-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
DSH Launcher banner # DSH Launcher **A desktop launcher for running multiple [DeepSeek Harness (DSH)](https://github.com/deepseek-ai/deepseek-harness) versions and instances side by side.** English | [简体中文](README.zh_CN.md)
Tauri 2 + Vue 3 + TypeScript + Sass + vue-router + vue-i18n + Arco Design Vue. ## Preview ![Preview](docs/img.png) ## Features - **Multi-version installs**: query the npm registry and install multiple `@deepseek-ai/dsh` versions into isolated directories that never interfere with each other. - **Multi-instance management**: create several instances per version, each with its own name, profile, and runtime environment variables. - **Three DSH_HOME modes**: - Reuse/share an existing DSH_HOME; - Automatically adopt the user's default `~/.dsh`; - Create a dedicated DSH_HOME per instance (created and registered under the app data directory automatically). - **One-click launch**: pick an instance and a profile on the home page and start; the launcher parses the URL printed by `dsh web` and opens the DSH Web GUI in a dedicated webview window. - **Environment overrides**: add or remove runtime environment variables on the instance settings page; they are injected into the child process at launch (`DSH_HOME` is reserved and always injected by the launcher from the selected DSH_HOME). - **Plugin marketplace**: browse plugins published to the [DSH plugin market](https://dsh-plug.in/) (`https://dsh-plug.in/api/plugins.json`), search by name/description, and install them into any instance's profile: - **Three version channels**, distinguished by colored icon letters — **stable** (releases / npm `latest`, green **R**), **beta** (pre-releases / npm `next`, yellow **B**) and **alpha** (latest commit on GitHub, red **A**); - The install flow is a wizard: pick plugin → pick version channel/version → pick instance → pick profile → create a task → start installing; - Dependency build scripts are allowed automatically (`onlyBuiltDependencies: ['*']`), and the installed plugin is registered in the profile's `package.json` (`dsh.profile.bundles` + `dependencies`) plus a `cordis.patch.yml` insert row for non-bundle plugins. - **Per-profile plugin management** (instance settings → Plugins tab): filter by profile to view the plugins installed in it, enable/disable individual plugins, and multi-select for batch enable/disable. Core `@deepseek-ai/*` packages are hidden. - **System tray**: - Double-click: opens the most recently focused instance's profile page; with a single running instance opens it directly, otherwise shows the launcher; - Right-click menu: a "Running profiles" submenu offers Open / Stop for each running instance, plus "Open launcher / Quit launcher". - Quitting the launcher terminates all instance processes so none are orphaned. - **Close to tray** (can be disabled in Settings). - **Launch at login** (Settings toggle, registered for real via the autostart plugin). - **i18n**: Simplified Chinese / English; JSON locale files are discovered, hot-reloaded, and precompiled by `@intlify/unplugin-vue-i18n` through Vite. ## Interface - **Home**: left panel (instance status → linked instance/profile dropdowns → large launch button → instance list / instance settings); right side reserved for a news area. - **Download**: sidebar with "Create instance / Download plugins"; the create page groups installable versions by stable/prerelease; clicking a version opens the naming page (instance name, DSH_HOME choice, "Start download" at the bottom). The plugins page is the marketplace; a three-step wizard (plugin → version channel → instance/profile) creates an install task. - **Instances**: name, version, DSH_HOME, profile, runtime status and URL, edit/delete. - **Instance settings → Plugins**: filter by profile, enable/disable plugins, multi-select batch enable/disable (`@deepseek-ai/*` core plugins hidden). - **Settings**: language, close to tray, launch at login, DSH_HOME management. ## Development Prerequisites: Node ≥ 20, pnpm, stable Rust (MSVC toolchain), WebView2. ```bash pnpm install pnpm tauri dev # dev mode (Vite frontend + debug backend) pnpm tauri build # bundle (produces exe / msi / nsis installers) ``` Preview the frontend in a browser without the backend (mock layer backed by localStorage): ```bash pnpm dev # open http://localhost:1420 ``` ## Runtime data - Launcher config and data: `%APPDATA%\in.dsh-plug.dsh-launcher\` - `config.json`: DSH_HOMEs / versions / instances / settings - `versions//`: isolated install directory per version - `homes//`: dedicated DSH_HOME (when chosen) - `logs/.log`: instance runtime logs ## Architecture - `src/`: Vue 3 frontend (pages, store, API wrapper, i18n) - `src/api/index.ts`: unified API layer — `invoke` under Tauri, localStorage mock in a plain browser - `src-tauri/src/` - `config.rs`: config model and atomic persistence - `commands.rs`: all Tauri commands (CRUD / version installs / instance start-stop / settings) - `plugins.rs`: plugin marketplace — catalog fetch, per-channel versions (npm dist-tags + GitHub commits), install task, profile manifest registration and enable/disable - `tasks.rs`: background task system (create-instance / install-plugin) with progress and log events - `process.rs`: instance process management (spawn / kill / URL parsing / env injection / logs) - `tray.rs`: system tray and dynamic menu - `windows.rs`: instance webview window management ## License MIT