# rhinstaller/anaconda architecture

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

- Interactive diagram: https://gitdiagram.com/rhinstaller/anaconda
- Repository: https://github.com/rhinstaller/anaconda

## Overview

Anaconda is a Linux operating-system installer. Its user-facing workflow configures installation options, discovers and prepares storage, selects an installation source and payload, then applies system configuration. The repository also provides Kickstart automation and separate modules for networking, localization, security, users, services, and time zone. The sampled evidence shows storage UI interactions with storage DBus proxies; several other module relationships are inferred from the product structure and are marked unverified rather than asserted as calls.

Main entry points: [`pyanaconda/modules/boss/boss.py`](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/boss/boss.py) (Workflow coordinator), [`pyanaconda/modules/storage/storage.py`](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/storage/storage.py) (Storage coordinator), [`pyanaconda/modules/payloads/payloads.py`](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/payloads/payloads.py) (Payload coordinator), [`pyanaconda/ui/lib/storage.py`](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/ui/lib/storage.py) (Storage UI helpers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Installer control"]
  node_entrypoint["Installer startup<br/>[anaconda.py]"]
  node_boss["Workflow coordinator<br/>[boss.py]"]
  node_kickstart["Kickstart automation"]
  node_tasks["Install tasks"]
end

subgraph group_ui["Installation interface"]
  node_gui_storage["Graphical storage UI<br/>[storage.py]"]
  node_custom_storage["Custom partitioning UI<br/>[custom_storage.py]"]
  node_advanced_storage["Advanced storage UI"]
  node_storage_ui["Storage UI helpers<br/>[storage.py]"]
end

subgraph group_storage["Storage planning"]
  node_storage_module["Storage coordinator<br/>[storage.py]"]
  node_partitioning["Partitioning methods"]
  node_device_tree["Device discovery"]
  node_storage_data["Storage data model<br/>[storage.py]"]
end

subgraph group_payload["Installation content"]
  node_payloads["Payload coordinator<br/>[payloads.py]"]
  node_dnf["Package installation<br/>[dnf_manager.py]"]
  node_flatpak["Flatpak installation<br/>[flatpak_manager.py]"]
  node_sources["Installation sources"]
end

subgraph group_system["System configuration"]
  node_network["Network setup<br/>[network.py]"]
  node_localization["Language setup<br/>[localization.py]"]
  node_accounts["User accounts<br/>[users.py]"]
  node_time_services["Time and services<br/>[timezone.py]"]
  node_security["Security settings<br/>[security.py]"]
end

node_operator(("Installer user"))
node_system_services{{"Host system services"}}

node_operator -.->|"configures"| node_gui_storage
node_entrypoint -.->|"starts"| node_boss
node_boss -->|"manages"| node_kickstart
node_operator -->|"provides instructions"| node_kickstart
node_gui_storage -->|"uses helpers"| node_storage_ui
node_custom_storage -->|"uses helpers"| node_storage_ui
node_advanced_storage -->|"uses helpers"| node_storage_ui
node_storage_ui -->|"calls DBus"| node_storage_module
node_storage_module -->|"manages"| node_partitioning
node_storage_module -->|"manages"| node_device_tree
node_storage_module -.->|"exposes data"| node_storage_data
node_boss -.->|"coordinates"| node_tasks
node_boss -.->|"coordinates"| node_payloads
node_payloads -.->|"selects payload"| node_dnf
node_payloads -.->|"selects payload"| node_flatpak
node_payloads -.->|"uses sources"| node_sources
node_boss -.->|"coordinates setup"| node_network
node_boss -.->|"coordinates setup"| node_localization
node_boss -.->|"coordinates setup"| node_accounts
node_boss -.->|"coordinates setup"| node_time_services
node_boss -.->|"coordinates setup"| node_security
node_network -.->|"uses services"| node_system_services
node_localization -.->|"uses services"| node_system_services

click node_entrypoint "https://github.com/rhinstaller/anaconda/blob/main/anaconda.py"
click node_boss "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/boss/boss.py"
click node_kickstart "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/boss/kickstart_manager/kickstart_manager.py"
click node_tasks "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/installation_tasks.py"
click node_gui_storage "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/ui/gui/spokes/storage.py"
click node_custom_storage "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/ui/gui/spokes/custom_storage.py"
click node_advanced_storage "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/ui/gui/spokes/advanced_storage.py"
click node_storage_ui "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/ui/lib/storage.py"
click node_storage_module "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/storage/storage.py"
click node_partitioning "https://github.com/rhinstaller/anaconda/tree/main/pyanaconda/modules/storage/partitioning"
click node_device_tree "https://github.com/rhinstaller/anaconda/tree/main/pyanaconda/modules/storage/devicetree"
click node_storage_data "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/common/structures/storage.py"
click node_payloads "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/payloads/payloads.py"
click node_dnf "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py"
click node_flatpak "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/payloads/payload/flatpak/flatpak_manager.py"
click node_sources "https://github.com/rhinstaller/anaconda/tree/main/pyanaconda/modules/payloads/source"
click node_network "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/network/network.py"
click node_localization "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/localization/localization.py"
click node_accounts "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/users/users.py"
click node_time_services "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/timezone/timezone.py"
click node_security "https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/security/security.py"

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_entrypoint,node_boss,node_kickstart,node_tasks,node_operator toneBlue
class node_gui_storage,node_custom_storage,node_advanced_storage,node_storage_ui toneAmber
class node_storage_module,node_partitioning,node_device_tree,node_storage_data toneMint
class node_payloads,node_dnf,node_flatpak,node_sources toneRose
class node_network,node_localization,node_accounts,node_time_services,node_security,node_system_services toneIndigo
```

## Components

### Installer control

- [Installer startup](https://github.com/rhinstaller/anaconda/blob/main/anaconda.py): `anaconda.py`
- [Workflow coordinator](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/boss/boss.py): `pyanaconda/modules/boss/boss.py`
- [Kickstart automation](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/boss/kickstart_manager/kickstart_manager.py): `pyanaconda/modules/boss/kickstart_manager/kickstart_manager.py`
- [Install tasks](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/installation_tasks.py): `pyanaconda/installation_tasks.py`

### Installation interface

- [Graphical storage UI](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/ui/gui/spokes/storage.py): `pyanaconda/ui/gui/spokes/storage.py`
- [Custom partitioning UI](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/ui/gui/spokes/custom_storage.py): `pyanaconda/ui/gui/spokes/custom_storage.py`
- [Advanced storage UI](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/ui/gui/spokes/advanced_storage.py): `pyanaconda/ui/gui/spokes/advanced_storage.py`
- [Storage UI helpers](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/ui/lib/storage.py): `pyanaconda/ui/lib/storage.py`

### Storage planning

- [Storage coordinator](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/storage/storage.py): `pyanaconda/modules/storage/storage.py`
- [Partitioning methods](https://github.com/rhinstaller/anaconda/tree/main/pyanaconda/modules/storage/partitioning): `pyanaconda/modules/storage/partitioning`
- [Device discovery](https://github.com/rhinstaller/anaconda/tree/main/pyanaconda/modules/storage/devicetree): `pyanaconda/modules/storage/devicetree`
- [Storage data model](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/common/structures/storage.py): `pyanaconda/modules/common/structures/storage.py`

### Installation content

- [Payload coordinator](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/payloads/payloads.py): `pyanaconda/modules/payloads/payloads.py`
- [Package installation](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py): `pyanaconda/modules/payloads/payload/dnf/dnf_manager.py`
- [Flatpak installation](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/payloads/payload/flatpak/flatpak_manager.py): `pyanaconda/modules/payloads/payload/flatpak/flatpak_manager.py`
- [Installation sources](https://github.com/rhinstaller/anaconda/tree/main/pyanaconda/modules/payloads/source): `pyanaconda/modules/payloads/source`

### System configuration

- [Network setup](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/network/network.py): `pyanaconda/modules/network/network.py`
- [Language setup](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/localization/localization.py): `pyanaconda/modules/localization/localization.py`
- [User accounts](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/users/users.py): `pyanaconda/modules/users/users.py`
- [Time and services](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/timezone/timezone.py): `pyanaconda/modules/timezone/timezone.py`
- [Security settings](https://github.com/rhinstaller/anaconda/blob/main/pyanaconda/modules/security/security.py): `pyanaconda/modules/security/security.py`

### Other components

- **Installer user**
- **Host system services**

## Connections

- Installer user → Graphical storage UI: configures
- Installer startup → Workflow coordinator: starts
- Workflow coordinator → Kickstart automation: manages (evidence: `pyanaconda/modules/boss/kickstart_manager/kickstart_manager.py`)
- Installer user → Kickstart automation: provides instructions
- Graphical storage UI → Storage UI helpers: uses helpers (evidence: `pyanaconda/ui/gui/spokes/storage.py`)
- Custom partitioning UI → Storage UI helpers: uses helpers (evidence: `pyanaconda/ui/gui/spokes/custom_storage.py`)
- Advanced storage UI → Storage UI helpers: uses helpers (evidence: `pyanaconda/ui/gui/spokes/advanced_storage.py`)
- Storage UI helpers → Storage coordinator: calls DBus (evidence: `pyanaconda/ui/lib/storage.py`)
- Storage coordinator → Partitioning methods: manages (evidence: `pyanaconda/modules/storage/storage.py`)
- Storage coordinator → Device discovery: manages (evidence: `pyanaconda/modules/storage/storage.py`)
- Storage coordinator → Storage data model: exposes data
- Workflow coordinator → Install tasks: coordinates
- Workflow coordinator → Payload coordinator: coordinates
- Payload coordinator → Package installation: selects payload
- Payload coordinator → Flatpak installation: selects payload
- Payload coordinator → Installation sources: uses sources
- Workflow coordinator → Network setup: coordinates setup
- Workflow coordinator → Language setup: coordinates setup
- Workflow coordinator → User accounts: coordinates setup
- Workflow coordinator → Time and services: coordinates setup
- Workflow coordinator → Security settings: coordinates setup
- Network setup → Host system services: uses services
- Language setup → Host system services: uses services
