# alphared26/misterdownloadmanager architecture

> Architecture diagram of the GitHub repository alphared26/misterdownloadmanager, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/alphared26/misterdownloadmanager
- Repository: https://github.com/alphared26/misterdownloadmanager

## Overview

Mister Download Manager is a desktop download manager with a browser extension, command-line interface, torrent support, remote control, and optional debrid accounts. The main workflow is a user or browser handing a download to the app, which coordinates downloading and presents progress in its desktop interface. The graph also shows the documented torrent and crash-reporting capabilities. Source excerpts establish the app’s IPC entry points and selected subsystem behavior; many app and extension modules were not sampled, so unverified links are omitted or marked dashed.

Main entry points: [`crates/app/src/main.rs`](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/main.rs) (Desktop application), [`crates/ipc/src/lib.rs`](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/ipc/src/lib.rs) (Local command channel), [`crates/nmhost/src/main.rs`](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/nmhost/src/main.rs) (Native messaging host), [`crates/crash/src/client.rs`](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/crash/src/client.rs) (Crash reporting)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop app"]
  node_app["Desktop application<br/>[main.rs]"]
  node_ui["Download interface<br/>[app.rs]"]
  node_state[("Download state<br/>[model.rs]")]
  node_settings["Settings<br/>[settings.rs]"]
end

subgraph group_transfer["Download engines"]
  node_engine["Download engine<br/>[download.rs]"]
  node_torrent["Torrent transfers<br/>[lib.rs]"]
  node_debrid["Debrid accounts<br/>[lib.rs]"]
end

subgraph group_integration["Browser and control"]
  node_extension["Browser extension<br/>[background.js]"]
  node_native["Native messaging host<br/>[main.rs]"]
  node_ipc["Local command channel<br/>[lib.rs]"]
  node_cli["Command line<br/>[main.rs]"]
  node_remote["Remote control<br/>[lib.rs]"]
end

subgraph group_support["Supporting capabilities"]
  node_crash["Crash reporting<br/>[client.rs]"]
  node_crashui["Crash report window<br/>[crashui.rs]"]
end

node_user(("User"))

node_user -->|"manages downloads"| node_app
node_app -.->|"presents"| node_ui
node_app -->|"serves commands"| node_ipc
node_native -->|"forwards commands"| node_ipc
node_extension -.->|"sends messages"| node_native
node_cli -->|"launches"| node_app
node_remote -.->|"sends commands"| node_ipc
node_ipc -->|"dispatches commands"| node_app
node_app -.->|"runs downloads"| node_engine
node_app -->|"supports torrents"| node_torrent
node_debrid -->|"provides unlocker"| node_engine
node_app -.->|"configures behavior"| node_settings
node_app -.->|"tracks downloads"| node_state
node_app -.->|"reports crashes"| node_crash
node_crash -->|"opens report"| node_crashui

click node_app "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/main.rs"
click node_ui "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/app.rs"
click node_state "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/model.rs"
click node_settings "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/settings.rs"
click node_engine "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/engine/src/download.rs"
click node_torrent "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/torrent/src/lib.rs"
click node_debrid "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/debrid/src/lib.rs"
click node_extension "https://github.com/alphared26/misterdownloadmanager/blob/main/extension/background.js"
click node_native "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/nmhost/src/main.rs"
click node_ipc "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/ipc/src/lib.rs"
click node_cli "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/cli/src/main.rs"
click node_remote "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/remote/src/lib.rs"
click node_crash "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/crash/src/client.rs"
click node_crashui "https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/crashui.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_ui,node_state,node_settings,node_user toneBlue
class node_engine,node_torrent,node_debrid toneAmber
class node_extension,node_native,node_ipc,node_cli,node_remote toneMint
class node_crash,node_crashui toneRose
```

## Components

### Desktop app

- [Desktop application](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/main.rs): `crates/app/src/main.rs`
- [Download interface](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/app.rs): `crates/app/src/app.rs`
- [Download state](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/model.rs): `crates/app/src/model.rs`
- [Settings](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/settings.rs): `crates/app/src/settings.rs`

### Download engines

- [Download engine](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/engine/src/download.rs): `crates/engine/src/download.rs`
- [Torrent transfers](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/torrent/src/lib.rs): `crates/torrent/src/lib.rs`
- [Debrid accounts](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/debrid/src/lib.rs): `crates/debrid/src/lib.rs`

### Browser and control

- [Browser extension](https://github.com/alphared26/misterdownloadmanager/blob/main/extension/background.js): `extension/background.js`
- [Native messaging host](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/nmhost/src/main.rs): `crates/nmhost/src/main.rs`
- [Local command channel](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/ipc/src/lib.rs): `crates/ipc/src/lib.rs`
- [Command line](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/cli/src/main.rs): `crates/cli/src/main.rs`
- [Remote control](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/remote/src/lib.rs): `crates/remote/src/lib.rs`

### Supporting capabilities

- [Crash reporting](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/crash/src/client.rs): `crates/crash/src/client.rs`
- [Crash report window](https://github.com/alphared26/misterdownloadmanager/blob/main/crates/app/src/crashui.rs): `crates/app/src/crashui.rs`

### Other components

- **User**

## Connections

- User → Desktop application: manages downloads (evidence: `README.md`)
- Desktop application → Download interface: presents (evidence: `crates/app/src/main.rs`)
- Desktop application → Local command channel: serves commands (evidence: `crates/app/src/main.rs`)
- Native messaging host → Local command channel: forwards commands (evidence: `crates/nmhost/src/main.rs`)
- Browser extension → Native messaging host: sends messages
- Command line → Desktop application: launches (evidence: `crates/app/src/main.rs`)
- Remote control → Local command channel: sends commands
- Local command channel → Desktop application: dispatches commands (evidence: `crates/app/src/main.rs`)
- Desktop application → Download engine: runs downloads
- Desktop application → Torrent transfers: supports torrents (evidence: `README.md`)
- Debrid accounts → Download engine: provides unlocker (evidence: `crates/debrid/src/lib.rs`)
- Desktop application → Settings: configures behavior
- Desktop application → Download state: tracks downloads (evidence: `crates/app/src/main.rs`)
- Desktop application → Crash reporting: reports crashes
- Crash reporting → Crash report window: opens report (evidence: `crates/app/src/crashui.rs`)
