# k1-lihongrong/dsh-multiver architecture

> Architecture diagram of the GitHub repository k1-lihongrong/dsh-multiver, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/k1-lihongrong/dsh-multiver
- Repository: https://github.com/k1-lihongrong/dsh-multiver

## Overview

dsh-multiver is a Windows desktop manager for installing, switching, isolating, and running multiple DeepSeek Harness versions. The main workflow is to check prerequisites, discover npm releases, install a selected version, then launch it in an embedded window or the system browser. Users can also configure storage paths, batch-uninstall versions, create desktop shortcuts, and maintain isolated data. The Vue UI invokes Tauri commands; Rust coordinates version, configuration, environment, launch, and maintenance services. Edges reflect excerpts or README statements; some detailed command-to-service wiring is unsampled.

Main entry points: [`src-tauri/src/lib.rs`](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/lib.rs) (Tauri commands), [`src-tauri/src/launcher.rs`](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/launcher.rs) (DSH launcher), [`src/App.vue`](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src/App.vue) (Manager UI), [`src-tauri/src/maintenance.rs`](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/maintenance.rs) (Background maintenance)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_app["Manager UI<br/>[App.vue]"]
end

subgraph group_management["Version management"]
  node_backend["Tauri commands<br/>[lib.rs]"]
  node_version_ops["Version operations<br/>[versions.rs]"]
  node_actions["Registry and actions<br/>[actions.rs]"]
end

subgraph group_runtime["Launch and integration"]
  node_launcher["DSH launcher<br/>[launcher.rs]"]
  node_jobobj["Process cleanup<br/>[jobobj.rs]"]
  node_webview["Embedded WebView"]
  node_forwarding["Terminal forwarding<br/>[actions.rs]"]
  node_desktop_link["Desktop shortcut<br/>[launcher.rs]"]
end

subgraph group_state["Configuration and data"]
  node_config[("Settings and paths<br/>[config.rs]")]
  node_filesystem[("Local data")]
end

subgraph group_operations["Environment and maintenance"]
  node_envcheck["Environment checks<br/>[envcheck.rs]"]
  node_maintenance["Background maintenance<br/>[maintenance.rs]"]
end

node_user(("User"))
node_registry(("npm registry"))
node_pnpm["pnpm runtime"]
node_dsh["Installed DSH"]
node_browser(("System browser"))

node_user -->|"uses"| node_app
node_app -->|"invokes commands"| node_backend
node_backend -->|"manages versions"| node_version_ops
node_backend -->|"requests actions"| node_actions
node_backend -->|"loads settings"| node_config
node_backend -->|"checks environment"| node_envcheck
node_backend -->|"starts DSH"| node_launcher
node_backend -->|"starts maintenance"| node_maintenance
node_app -->|"requests checks"| node_envcheck
node_app -->|"refreshes releases"| node_actions
node_actions -->|"queries releases"| node_pnpm
node_pnpm -->|"reads package versions"| node_registry
node_version_ops -.->|"installs packages"| node_pnpm
node_version_ops -->|"reads and writes versions"| node_filesystem
node_config -->|"persists settings"| node_filesystem
node_backend -->|"opens window"| node_webview
node_launcher -->|"spawns web process"| node_dsh
node_dsh -->|"serves web UI"| node_webview
node_launcher -->|"assigns process"| node_jobobj
node_backend -->|"opens browser mode"| node_launcher
node_launcher -->|"opens URL"| node_browser
node_backend -.->|"creates shortcut"| node_launcher
node_backend -.->|"sets default version"| node_forwarding
node_maintenance -->|"cleans webview data"| node_filesystem
node_maintenance -->|"prunes store"| node_pnpm
node_maintenance -->|"assigns process"| node_jobobj

click node_app "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src/App.vue"
click node_backend "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/lib.rs"
click node_version_ops "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/versions.rs"
click node_actions "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/actions.rs"
click node_config "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/config.rs"
click node_envcheck "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/envcheck.rs"
click node_launcher "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/launcher.rs"
click node_jobobj "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/jobobj.rs"
click node_maintenance "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/maintenance.rs"
click node_forwarding "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/actions.rs"
click node_desktop_link "https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/launcher.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_user,node_browser toneBlue
class node_backend,node_version_ops,node_actions toneAmber
class node_launcher,node_jobobj,node_webview,node_forwarding,node_desktop_link toneMint
class node_config,node_filesystem toneRose
class node_envcheck,node_maintenance,node_registry,node_pnpm,node_dsh toneIndigo
```

## Components

### Desktop interface

- [Manager UI](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src/App.vue): `src/App.vue`

### Version management

- [Tauri commands](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [Version operations](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/versions.rs): `src-tauri/src/versions.rs`
- [Registry and actions](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/actions.rs): `src-tauri/src/actions.rs`

### Launch and integration

- [DSH launcher](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/launcher.rs): `src-tauri/src/launcher.rs`
- [Process cleanup](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/jobobj.rs): `src-tauri/src/jobobj.rs`
- **Embedded WebView**
- [Terminal forwarding](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/actions.rs): `src-tauri/src/actions.rs`
- [Desktop shortcut](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/launcher.rs): `src-tauri/src/launcher.rs`

### Configuration and data

- [Settings and paths](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/config.rs): `src-tauri/src/config.rs`
- **Local data**

### Environment and maintenance

- [Environment checks](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/envcheck.rs): `src-tauri/src/envcheck.rs`
- [Background maintenance](https://github.com/k1-lihongrong/dsh-multiver/blob/main/src-tauri/src/maintenance.rs): `src-tauri/src/maintenance.rs`

### Other components

- **User**
- **npm registry**
- **pnpm runtime**
- **Installed DSH**
- **System browser**

## Connections

- User → Manager UI: uses (evidence: `README.md`)
- Manager UI → Tauri commands: invokes commands (evidence: `src/App.vue`)
- Tauri commands → Version operations: manages versions (evidence: `src-tauri/src/lib.rs`)
- Tauri commands → Registry and actions: requests actions (evidence: `src-tauri/src/lib.rs`)
- Tauri commands → Settings and paths: loads settings (evidence: `src-tauri/src/lib.rs`)
- Tauri commands → Environment checks: checks environment (evidence: `src-tauri/src/lib.rs`)
- Tauri commands → DSH launcher: starts DSH (evidence: `src-tauri/src/lib.rs`)
- Tauri commands → Background maintenance: starts maintenance (evidence: `src-tauri/src/lib.rs`)
- Manager UI → Environment checks: requests checks (evidence: `src/App.vue`)
- Manager UI → Registry and actions: refreshes releases (evidence: `src/App.vue`)
- Registry and actions → pnpm runtime: queries releases (evidence: `src-tauri/src/actions.rs`)
- pnpm runtime → npm registry: reads package versions
- Version operations → pnpm runtime: installs packages (evidence: `README.md`)
- Version operations → Local data: reads and writes versions (evidence: `src-tauri/src/versions.rs`)
- Settings and paths → Local data: persists settings (evidence: `src-tauri/src/config.rs`)
- Tauri commands → Embedded WebView: opens window (evidence: `src-tauri/src/lib.rs`)
- DSH launcher → Installed DSH: spawns web process (evidence: `src-tauri/src/launcher.rs`)
- Installed DSH → Embedded WebView: serves web UI (evidence: `README.md`)
- DSH launcher → Process cleanup: assigns process (evidence: `src-tauri/src/launcher.rs`)
- Tauri commands → DSH launcher: opens browser mode (evidence: `src-tauri/src/lib.rs`)
- DSH launcher → System browser: opens URL (evidence: `src-tauri/src/launcher.rs`)
- Tauri commands → DSH launcher: creates shortcut (evidence: `README.md`)
- Tauri commands → Terminal forwarding: sets default version (evidence: `README.md`)
- Background maintenance → Local data: cleans webview data (evidence: `src-tauri/src/maintenance.rs`)
- Background maintenance → pnpm runtime: prunes store (evidence: `src-tauri/src/maintenance.rs`)
- Background maintenance → Process cleanup: assigns process (evidence: `src-tauri/src/maintenance.rs`)
