# dw-0/kiauh architecture

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

- Interactive diagram: https://gitdiagram.com/dw-0/kiauh
- Repository: https://github.com/dw-0/kiauh

## Overview

KIAUH is an interactive Linux administration tool for installing, updating, removing, and managing Klipper printer-server software. The main user journey starts at the CLI and menu system, then selects component setup actions; those actions configure Klipper, Moonraker, and web clients, with instance management supporting system services. The repository also includes firmware, camera, touchscreen, log-upload, backup, and community-extension capabilities. Some subsystem links reflect README-described features rather than sampled calls; these are marked unverified where appropriate.

Main entry points: [`kiauh/core/menus`](https://github.com/dw-0/kiauh/tree/master/kiauh/core/menus) (Main menus), [`kiauh/components/moonraker/services/moonraker_setup_service.py`](https://github.com/dw-0/kiauh/blob/master/kiauh/components/moonraker/services/moonraker_setup_service.py) (Moonraker setup), [`kiauh/components/webui_client/services/web_client_setup_service.py`](https://github.com/dw-0/kiauh/blob/master/kiauh/components/webui_client/services/web_client_setup_service.py) (Web client setup), [`kiauh/components/klipper/klipper.py`](https://github.com/dw-0/kiauh/blob/master/kiauh/components/klipper/klipper.py) (Klipper instances)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Interactive control"]
  node_cli["CLI entry<br/>[main.py]"]
  node_menus["Main menus"]
  node_settings["Application settings<br/>[kiauh_settings.py]"]
end

subgraph group_printer["Printer services"]
  node_klipper_setup["Klipper setup"]
  node_klipper["Klipper instances<br/>[klipper.py]"]
  node_moon_setup["Moonraker setup"]
  node_moonraker["Moonraker instances<br/>[moonraker.py]"]
  node_web_setup["Web client setup"]
  node_web_utils["Web client utilities<br/>[client_utils.py]"]
  node_firmware["Firmware tools"]
  node_crowsnest["Camera services"]
  node_screen["Touchscreen client<br/>[klipperscreen.py]"]
end

subgraph group_support["Management tools"]
  node_instances["Instance manager"]
  node_backup["Backup service<br/>[backup_service.py]"]
  node_config["Config parser"]
  node_log_upload["Log uploads"]
end

subgraph group_extensions["Community extensions"]
  node_extensions_menu["Extension menu<br/>[extensions_menu.py]"]
  node_extension_base["Extension framework<br/>[base_extension.py]"]
  node_extension_catalog["Community add-ons"]
end

node_user(("Linux operator"))

node_user -->|"launches"| node_cli
node_cli -->|"opens"| node_menus
node_user -->|"chooses actions"| node_menus
node_menus -.->|"starts setup"| node_klipper_setup
node_menus -.->|"starts setup"| node_moon_setup
node_menus -.->|"starts setup"| node_web_setup
node_klipper_setup -->|"configures"| node_klipper
node_klipper_setup -->|"uses instances"| node_moonraker
node_moon_setup -->|"uses instances"| node_klipper
node_moon_setup -->|"configures"| node_moonraker
node_moon_setup -->|"uses helpers"| node_web_utils
node_web_setup -->|"uses helpers"| node_web_utils
node_web_setup -->|"checks instances"| node_klipper
node_web_setup -->|"checks instances"| node_moonraker
node_instances -->|"discovers services"| node_klipper
node_extensions_menu -->|"uses framework"| node_extension_base
node_extensions_menu -->|"offers add-ons"| node_extension_catalog
node_menus -.->|"offers firmware"| node_firmware
node_menus -.->|"offers camera setup"| node_crowsnest
node_menus -.->|"offers touchscreen"| node_screen
node_menus -.->|"offers log upload"| node_log_upload
node_menus -.->|"offers backups"| node_backup
node_settings -->|"parses settings"| node_config

click node_cli "https://github.com/dw-0/kiauh/blob/master/kiauh/main.py"
click node_menus "https://github.com/dw-0/kiauh/tree/master/kiauh/core/menus"
click node_settings "https://github.com/dw-0/kiauh/blob/master/kiauh/core/settings/kiauh_settings.py"
click node_klipper_setup "https://github.com/dw-0/kiauh/blob/master/kiauh/components/klipper/services/klipper_setup_service.py"
click node_klipper "https://github.com/dw-0/kiauh/blob/master/kiauh/components/klipper/klipper.py"
click node_moon_setup "https://github.com/dw-0/kiauh/blob/master/kiauh/components/moonraker/services/moonraker_setup_service.py"
click node_moonraker "https://github.com/dw-0/kiauh/blob/master/kiauh/components/moonraker/moonraker.py"
click node_web_setup "https://github.com/dw-0/kiauh/blob/master/kiauh/components/webui_client/services/web_client_setup_service.py"
click node_web_utils "https://github.com/dw-0/kiauh/blob/master/kiauh/components/webui_client/client_utils.py"
click node_firmware "https://github.com/dw-0/kiauh/tree/master/kiauh/components/klipper_firmware"
click node_crowsnest "https://github.com/dw-0/kiauh/tree/master/kiauh/components/crowsnest"
click node_screen "https://github.com/dw-0/kiauh/blob/master/kiauh/components/klipperscreen/klipperscreen.py"
click node_instances "https://github.com/dw-0/kiauh/blob/master/kiauh/core/instance_manager/instance_manager.py"
click node_backup "https://github.com/dw-0/kiauh/blob/master/kiauh/core/services/backup_service.py"
click node_config "https://github.com/dw-0/kiauh/blob/master/kiauh/core/simple_config_parser/simple_config_parser.py"
click node_log_upload "https://github.com/dw-0/kiauh/tree/master/kiauh/components/log_uploads"
click node_extensions_menu "https://github.com/dw-0/kiauh/blob/master/kiauh/extensions/extensions_menu.py"
click node_extension_base "https://github.com/dw-0/kiauh/blob/master/kiauh/extensions/base_extension.py"
click node_extension_catalog "https://github.com/dw-0/kiauh/tree/master/kiauh/extensions"

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_cli,node_menus,node_settings toneBlue
class node_klipper_setup,node_klipper,node_moon_setup,node_moonraker,node_web_setup,node_web_utils,node_firmware,node_crowsnest,node_screen toneAmber
class node_instances,node_backup,node_config,node_log_upload toneMint
class node_extensions_menu,node_extension_base,node_extension_catalog toneRose
class node_user toneIndigo
```

## Components

### Interactive control

- [CLI entry](https://github.com/dw-0/kiauh/blob/master/kiauh/main.py): `kiauh/main.py`
- [Main menus](https://github.com/dw-0/kiauh/tree/master/kiauh/core/menus): `kiauh/core/menus`
- [Application settings](https://github.com/dw-0/kiauh/blob/master/kiauh/core/settings/kiauh_settings.py): `kiauh/core/settings/kiauh_settings.py`

### Printer services

- [Klipper setup](https://github.com/dw-0/kiauh/blob/master/kiauh/components/klipper/services/klipper_setup_service.py): `kiauh/components/klipper/services/klipper_setup_service.py`
- [Klipper instances](https://github.com/dw-0/kiauh/blob/master/kiauh/components/klipper/klipper.py): `kiauh/components/klipper/klipper.py`
- [Moonraker setup](https://github.com/dw-0/kiauh/blob/master/kiauh/components/moonraker/services/moonraker_setup_service.py): `kiauh/components/moonraker/services/moonraker_setup_service.py`
- [Moonraker instances](https://github.com/dw-0/kiauh/blob/master/kiauh/components/moonraker/moonraker.py): `kiauh/components/moonraker/moonraker.py`
- [Web client setup](https://github.com/dw-0/kiauh/blob/master/kiauh/components/webui_client/services/web_client_setup_service.py): `kiauh/components/webui_client/services/web_client_setup_service.py`
- [Web client utilities](https://github.com/dw-0/kiauh/blob/master/kiauh/components/webui_client/client_utils.py): `kiauh/components/webui_client/client_utils.py`
- [Firmware tools](https://github.com/dw-0/kiauh/tree/master/kiauh/components/klipper_firmware): `kiauh/components/klipper_firmware`
- [Camera services](https://github.com/dw-0/kiauh/tree/master/kiauh/components/crowsnest): `kiauh/components/crowsnest`
- [Touchscreen client](https://github.com/dw-0/kiauh/blob/master/kiauh/components/klipperscreen/klipperscreen.py): `kiauh/components/klipperscreen/klipperscreen.py`

### Management tools

- [Instance manager](https://github.com/dw-0/kiauh/blob/master/kiauh/core/instance_manager/instance_manager.py): `kiauh/core/instance_manager/instance_manager.py`
- [Backup service](https://github.com/dw-0/kiauh/blob/master/kiauh/core/services/backup_service.py): `kiauh/core/services/backup_service.py`
- [Config parser](https://github.com/dw-0/kiauh/blob/master/kiauh/core/simple_config_parser/simple_config_parser.py): `kiauh/core/simple_config_parser/simple_config_parser.py`
- [Log uploads](https://github.com/dw-0/kiauh/tree/master/kiauh/components/log_uploads): `kiauh/components/log_uploads`

### Community extensions

- [Extension menu](https://github.com/dw-0/kiauh/blob/master/kiauh/extensions/extensions_menu.py): `kiauh/extensions/extensions_menu.py`
- [Extension framework](https://github.com/dw-0/kiauh/blob/master/kiauh/extensions/base_extension.py): `kiauh/extensions/base_extension.py`
- [Community add-ons](https://github.com/dw-0/kiauh/tree/master/kiauh/extensions): `kiauh/extensions`

### Other components

- **Linux operator**

## Connections

- Linux operator → CLI entry: launches (evidence: `README.md`)
- CLI entry → Main menus: opens (evidence: `kiauh/main.py`)
- Linux operator → Main menus: chooses actions (evidence: `README.md`)
- Main menus → Klipper setup: starts setup (evidence: `kiauh/core/menus/update_menu.py`)
- Main menus → Moonraker setup: starts setup (evidence: `kiauh/core/menus/update_menu.py`)
- Main menus → Web client setup: starts setup (evidence: `kiauh/core/menus/update_menu.py`)
- Klipper setup → Klipper instances: configures (evidence: `kiauh/components/klipper/services/klipper_setup_service.py`)
- Klipper setup → Moonraker instances: uses instances (evidence: `kiauh/components/klipper/services/klipper_setup_service.py`)
- Moonraker setup → Klipper instances: uses instances (evidence: `kiauh/components/moonraker/services/moonraker_setup_service.py`)
- Moonraker setup → Moonraker instances: configures (evidence: `kiauh/components/moonraker/services/moonraker_setup_service.py`)
- Moonraker setup → Web client utilities: uses helpers (evidence: `kiauh/components/moonraker/services/moonraker_setup_service.py`)
- Web client setup → Web client utilities: uses helpers (evidence: `kiauh/components/webui_client/services/web_client_setup_service.py`)
- Web client setup → Klipper instances: checks instances (evidence: `kiauh/components/webui_client/services/web_client_setup_service.py`)
- Web client setup → Moonraker instances: checks instances (evidence: `kiauh/components/webui_client/services/web_client_setup_service.py`)
- Instance manager → Klipper instances: discovers services (evidence: `kiauh/core/instance_manager/instance_manager.py`)
- Extension menu → Extension framework: uses framework (evidence: `kiauh/extensions/extensions_menu.py`)
- Extension menu → Community add-ons: offers add-ons (evidence: `kiauh/extensions/extensions_menu.py`)
- Main menus → Firmware tools: offers firmware (evidence: `README.md`)
- Main menus → Camera services: offers camera setup (evidence: `README.md`)
- Main menus → Touchscreen client: offers touchscreen (evidence: `README.md`)
- Main menus → Log uploads: offers log upload (evidence: `README.md`)
- Main menus → Backup service: offers backups
- Application settings → Config parser: parses settings (evidence: `kiauh/core/settings/kiauh_settings.py`)
