# mrdindon/proxhawk-tui architecture

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

- Interactive diagram: https://gitdiagram.com/mrdindon/proxhawk-tui
- Repository: https://github.com/mrdindon/proxhawk-tui

## Overview

Proxhawk-tui is a terminal interface and CLI for managing Proxmox VE through its local API stack. The interactive workflow starts at the command entry point, presents resource navigation and panels, and performs read/write operations through the API; schema-generated dialogs support configuration changes. The README also documents guest consoles, batch actions and queuing, plugins, themes, languages, and an optional persistent Perl API helper. Source excerpts cover only a font-development tool, so relationships below rely on explicit README statements; implementation-level call paths could not be verified.

Main entry points: [`views`](https://github.com/mrdindon/proxhawk-tui/tree/main/views) (Management panels), [`proxhawk-tui`](https://github.com/mrdindon/proxhawk-tui/blob/main/proxhawk-tui) (CLI entry), [`lib/api.sh`](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/api.sh) (API access), [`lib/cli.sh`](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/cli.sh) (Scriptable CLI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["User interaction"]
  node_entry["CLI entry"]
  node_cli["Scriptable CLI<br/>[cli.sh]"]
  node_navigation["Resource navigation<br/>[views.sh]"]
  node_dialogs["Schema dialogs<br/>[form.sh]"]
end

subgraph group_management["Proxmox management"]
  node_panels["Management panels"]
  node_api["API access<br/>[api.sh]"]
  node_perl_helper["Persistent API helper<br/>[broker.pl]"]
  node_pvesh["pvesh backend<br/>[pvesh-as.pl]"]
  node_tasks["Task and cluster log<br/>[tasks.sh]"]
  node_console["Guest consoles<br/>[console.sh]"]
end

subgraph group_runtime["Runtime services"]
  node_queue["Action queue<br/>[queue.sh]"]
  node_plugins["Optional plugins"]
  node_config["User configuration"]
end

subgraph group_customization["Customization"]
  node_theme["Themes and glyphs"]
  node_languages["Languages"]
end

node_operator(("Operator"))
node_pve["Proxmox VE API stack"]
node_terminal["Terminal"]

node_operator -->|"invokes"| node_entry
node_entry -->|"dispatches CLI"| node_cli
node_entry -->|"opens interface"| node_navigation
node_navigation -->|"navigates panels"| node_panels
node_panels -->|"edits configuration"| node_dialogs
node_dialogs -->|"performs API call"| node_api
node_cli -->|"issues API requests"| node_api
node_api -->|"uses by default"| node_perl_helper
node_api -.->|"uses optionally"| node_pvesh
node_api -->|"accesses locally"| node_pve
node_panels -->|"shows task panel"| node_tasks
node_panels -->|"queues busy actions"| node_queue
node_panels -->|"opens consoles"| node_console
node_panels -->|"offers plugin entries"| node_plugins
node_entry -->|"configures appearance"| node_theme
node_entry -->|"configures language"| node_languages
node_entry -->|"stores user settings"| node_config
node_panels -->|"renders interface"| node_terminal

click node_entry "https://github.com/mrdindon/proxhawk-tui/blob/main/proxhawk-tui"
click node_cli "https://github.com/mrdindon/proxhawk-tui/blob/main/lib/cli.sh"
click node_navigation "https://github.com/mrdindon/proxhawk-tui/blob/main/lib/views.sh"
click node_panels "https://github.com/mrdindon/proxhawk-tui/tree/main/views"
click node_dialogs "https://github.com/mrdindon/proxhawk-tui/blob/main/lib/form.sh"
click node_api "https://github.com/mrdindon/proxhawk-tui/blob/main/lib/api.sh"
click node_perl_helper "https://github.com/mrdindon/proxhawk-tui/blob/main/lib/broker.pl"
click node_pvesh "https://github.com/mrdindon/proxhawk-tui/blob/main/lib/pvesh-as.pl"
click node_tasks "https://github.com/mrdindon/proxhawk-tui/blob/main/lib/tasks.sh"
click node_queue "https://github.com/mrdindon/proxhawk-tui/blob/main/lib/queue.sh"
click node_console "https://github.com/mrdindon/proxhawk-tui/blob/main/lib/console.sh"
click node_plugins "https://github.com/mrdindon/proxhawk-tui/tree/main/plugins"
click node_theme "https://github.com/mrdindon/proxhawk-tui/tree/main/themes"
click node_languages "https://github.com/mrdindon/proxhawk-tui/tree/main/lang"
click node_config "https://github.com/mrdindon/proxhawk-tui/tree/main/conf"

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_entry,node_cli,node_navigation,node_dialogs toneBlue
class node_panels,node_api,node_perl_helper,node_pvesh,node_tasks,node_console toneAmber
class node_queue,node_plugins,node_config,node_pve toneMint
class node_theme,node_languages toneRose
class node_operator,node_terminal toneIndigo
```

## Components

### User interaction

- [CLI entry](https://github.com/mrdindon/proxhawk-tui/blob/main/proxhawk-tui): `proxhawk-tui`
- [Scriptable CLI](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/cli.sh): `lib/cli.sh`
- [Resource navigation](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/views.sh): `lib/views.sh`
- [Schema dialogs](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/form.sh): `lib/form.sh`

### Proxmox management

- [Management panels](https://github.com/mrdindon/proxhawk-tui/tree/main/views): `views`
- [API access](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/api.sh): `lib/api.sh`
- [Persistent API helper](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/broker.pl): `lib/broker.pl`
- [pvesh backend](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/pvesh-as.pl): `lib/pvesh-as.pl`
- [Task and cluster log](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/tasks.sh): `lib/tasks.sh`
- [Guest consoles](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/console.sh): `lib/console.sh`

### Runtime services

- [Action queue](https://github.com/mrdindon/proxhawk-tui/blob/main/lib/queue.sh): `lib/queue.sh`
- [Optional plugins](https://github.com/mrdindon/proxhawk-tui/tree/main/plugins): `plugins`
- [User configuration](https://github.com/mrdindon/proxhawk-tui/tree/main/conf): `conf`

### Customization

- [Themes and glyphs](https://github.com/mrdindon/proxhawk-tui/tree/main/themes): `themes`
- [Languages](https://github.com/mrdindon/proxhawk-tui/tree/main/lang): `lang`

### Other components

- **Operator**
- **Proxmox VE API stack**
- **Terminal**

## Connections

- Operator → CLI entry: invokes (evidence: `README.md`)
- CLI entry → Scriptable CLI: dispatches CLI (evidence: `README.md`)
- CLI entry → Resource navigation: opens interface (evidence: `README.md`)
- Resource navigation → Management panels: navigates panels (evidence: `README.md`)
- Management panels → Schema dialogs: edits configuration (evidence: `README.md`)
- Schema dialogs → API access: performs API call (evidence: `README.md`)
- Scriptable CLI → API access: issues API requests (evidence: `README.md`)
- API access → Persistent API helper: uses by default (evidence: `README.md`)
- API access → pvesh backend: uses optionally (evidence: `README.md`)
- API access → Proxmox VE API stack: accesses locally (evidence: `README.md`)
- Management panels → Task and cluster log: shows task panel (evidence: `README.md`)
- Management panels → Action queue: queues busy actions (evidence: `README.md`)
- Management panels → Guest consoles: opens consoles (evidence: `README.md`)
- Management panels → Optional plugins: offers plugin entries (evidence: `README.md`)
- CLI entry → Themes and glyphs: configures appearance (evidence: `README.md`)
- CLI entry → Languages: configures language (evidence: `README.md`)
- CLI entry → User configuration: stores user settings (evidence: `README.md`)
- Management panels → Terminal: renders interface (evidence: `README.md`)
