# kil0bit-kb/kil0bit-system-monitor architecture

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

- Interactive diagram: https://gitdiagram.com/kil0bit-kb/kil0bit-system-monitor
- Repository: https://github.com/kil0bit-kb/kil0bit-system-monitor

## Overview

Kil0bit System Monitor is a Windows desktop system-monitoring app: it gathers live hardware and OS metrics, then displays them in a configurable taskbar or free-floating overlay. On launch, the app loads configuration and initializes telemetry, the view model, and overlay; users configure monitoring and appearance in Settings, with preferences persisted and startup behavior synchronized. The README documents CPU, GPU, network, and multi-disk monitoring, plus layout and theme customization. Telemetry internals were not sampled, so its detailed collection path is intentionally omitted.

Main entry points: [`App.xaml.cs`](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/App.xaml.cs) (App lifecycle), [`Services/TelemetryService.cs`](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Services/TelemetryService.cs) (Telemetry collection), [`SettingsWindow.xaml.cs`](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/SettingsWindow.xaml.cs) (Settings dashboard), [`Services/ConfigService.cs`](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Services/ConfigService.cs) (Configuration service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_appentry["App lifecycle<br/>[App.xaml.cs]"]
  node_viewmodel["Main view model<br/>[MainViewModel.cs]"]
end

subgraph group_monitoring["Monitoring"]
  node_telemetry["Telemetry collection"]
  node_metrics["Metric state<br/>[SystemMetrics.cs]"]
  node_amd["AMD GPU telemetry<br/>[AmdAdlService.cs]"]
end

subgraph group_interface["User interface"]
  node_settings["Settings dashboard"]
  node_overlay["Taskbar overlay<br/>[OverlayWindow.cs]"]
  node_context["Overlay context menu"]
end

subgraph group_preferences["Preferences"]
  node_config["Configuration service<br/>[ConfigService.cs]"]
  node_configdata[("JSON preferences")]
  node_startup["Startup integration<br/>[StartupService.cs]"]
end

node_user(("User"))
node_windows["Windows metrics APIs"]
node_driver["AMD display driver"]
node_registry[("Windows registry")]

node_user -->|"launches"| node_appentry
node_appentry -->|"loads settings"| node_config
node_appentry -->|"starts collection"| node_telemetry
node_appentry -->|"creates"| node_viewmodel
node_appentry -->|"opens overlay"| node_overlay
node_appentry -->|"opens dashboard"| node_settings
node_telemetry -->|"reads metrics"| node_windows
node_telemetry -.->|"uses AMD telemetry"| node_amd
node_amd -->|"queries sensors"| node_driver
node_telemetry -->|"updates"| node_metrics
node_telemetry -->|"publishes metrics"| node_overlay
node_overlay -->|"reads display state"| node_viewmodel
node_settings -->|"edits display state"| node_viewmodel
node_settings -->|"changes preferences"| node_config
node_settings -->|"enumerates devices"| node_telemetry
node_config -->|"reads and writes"| node_configdata
node_config -->|"syncs startup choice"| node_startup
node_startup -->|"sets run entry"| node_registry
node_user -->|"views metrics"| node_overlay
node_user -->|"configures monitor"| node_settings
node_user -->|"opens menu"| node_context
node_context -->|"opens dashboard"| node_settings

click node_appentry "https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/App.xaml.cs"
click node_viewmodel "https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/ViewModels/MainViewModel.cs"
click node_telemetry "https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Services/TelemetryService.cs"
click node_metrics "https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Models/SystemMetrics.cs"
click node_amd "https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Services/AmdAdlService.cs"
click node_settings "https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/SettingsWindow.xaml.cs"
click node_overlay "https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/OverlayWindow.cs"
click node_context "https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/ContextMenuWindow.xaml.cs"
click node_config "https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Services/ConfigService.cs"
click node_startup "https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Services/StartupService.cs"

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_appentry,node_viewmodel,node_user toneBlue
class node_telemetry,node_metrics,node_amd,node_registry toneAmber
class node_settings,node_overlay,node_context,node_windows toneMint
class node_config,node_configdata,node_startup toneRose
class node_driver toneIndigo
```

## Components

### Application

- [App lifecycle](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/App.xaml.cs): `App.xaml.cs`
- [Main view model](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/ViewModels/MainViewModel.cs): `ViewModels/MainViewModel.cs`

### Monitoring

- [Telemetry collection](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Services/TelemetryService.cs): `Services/TelemetryService.cs`
- [Metric state](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Models/SystemMetrics.cs): `Models/SystemMetrics.cs`
- [AMD GPU telemetry](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Services/AmdAdlService.cs): `Services/AmdAdlService.cs`

### User interface

- [Settings dashboard](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/SettingsWindow.xaml.cs): `SettingsWindow.xaml.cs`
- [Taskbar overlay](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/OverlayWindow.cs): `OverlayWindow.cs`
- [Overlay context menu](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/ContextMenuWindow.xaml.cs): `ContextMenuWindow.xaml.cs`

### Preferences

- [Configuration service](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Services/ConfigService.cs): `Services/ConfigService.cs`
- **JSON preferences**
- [Startup integration](https://github.com/kil0bit-kb/kil0bit-system-monitor/blob/main/Services/StartupService.cs): `Services/StartupService.cs`

### Other components

- **User**
- **Windows metrics APIs**
- **AMD display driver**
- **Windows registry**

## Connections

- User → App lifecycle: launches
- App lifecycle → Configuration service: loads settings
- App lifecycle → Telemetry collection: starts collection
- App lifecycle → Main view model: creates
- App lifecycle → Taskbar overlay: opens overlay
- App lifecycle → Settings dashboard: opens dashboard
- Telemetry collection → Windows metrics APIs: reads metrics
- Telemetry collection → AMD GPU telemetry: uses AMD telemetry
- AMD GPU telemetry → AMD display driver: queries sensors
- Telemetry collection → Metric state: updates
- Telemetry collection → Taskbar overlay: publishes metrics
- Taskbar overlay → Main view model: reads display state
- Settings dashboard → Main view model: edits display state
- Settings dashboard → Configuration service: changes preferences
- Settings dashboard → Telemetry collection: enumerates devices
- Configuration service → JSON preferences: reads and writes
- Configuration service → Startup integration: syncs startup choice
- Startup integration → Windows registry: sets run entry
- User → Taskbar overlay: views metrics
- User → Settings dashboard: configures monitor
- User → Overlay context menu: opens menu
- Overlay context menu → Settings dashboard: opens dashboard
