# ryuk132/openkube-optimizer architecture

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

- Interactive diagram: https://gitdiagram.com/ryuk132/openkube-optimizer
- Repository: https://github.com/ryuk132/openkube-optimizer

## Overview

OpenKube Optimizer is a planned, read-only Kubernetes resource analysis CLI. Its intended workflow is to inspect explicitly named namespaces, compare workload CPU/memory allocations with recent utilization, and present explainable findings for human review. Currently, only immutable domain records and bounded quantity conversion are implemented; there is no CLI, Kubernetes access, analysis engine, or reporting. Planned stages below reflect README scope, not inspected runtime code.

Main entry points: [`src/openkube_optimizer`](https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer) (Local CLI), [`src/openkube_optimizer/domain/models.py`](https://github.com/ryuk132/openkube-optimizer/blob/main/src/openkube_optimizer/domain/models.py) (Domain records), [`src/openkube_optimizer/domain/quantities.py`](https://github.com/ryuk132/openkube-optimizer/blob/main/src/openkube_optimizer/domain/quantities.py) (Quantity conversion)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_domain["Implemented domain"]
  node_domain_models["Domain records<br/>[models.py]"]
  node_quantities["Quantity conversion<br/>[quantities.py]"]
end

subgraph group_planned["Planned analysis workflow"]
  node_cli["Local CLI"]
  node_namespace_discovery["Namespace discovery"]
  node_workload_discovery["Workload discovery"]
  node_metrics["Metrics collection"]
  node_analysis["Evidence analysis"]
end

subgraph group_outputs["Planned recommendations and reports"]
  node_recommendations["Investigation guidance"]
  node_reports["Terminal and JSON reports"]
end

node_engineer(("Engineer"))
node_kubernetes[("Kubernetes cluster")]

node_engineer -.->|"invokes"| node_cli
node_cli -.->|"selects namespaces"| node_namespace_discovery
node_namespace_discovery -.->|"scopes discovery"| node_workload_discovery
node_workload_discovery -.->|"reads resources"| node_kubernetes
node_metrics -.->|"reads utilization"| node_kubernetes
node_cli -.->|"requests metrics"| node_metrics
node_domain_models -->|"validates quantities"| node_quantities
node_analysis -.->|"uses facts"| node_domain_models
node_analysis -.->|"explains findings"| node_recommendations
node_cli -.->|"emits reports"| node_reports

click node_cli "https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer"
click node_namespace_discovery "https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer"
click node_workload_discovery "https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer"
click node_metrics "https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer"
click node_domain_models "https://github.com/ryuk132/openkube-optimizer/blob/main/src/openkube_optimizer/domain/models.py"
click node_quantities "https://github.com/ryuk132/openkube-optimizer/blob/main/src/openkube_optimizer/domain/quantities.py"
click node_analysis "https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer"
click node_recommendations "https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer"
click node_reports "https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer"

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_domain_models,node_quantities toneBlue
class node_cli,node_namespace_discovery,node_workload_discovery,node_metrics,node_analysis,node_kubernetes toneAmber
class node_recommendations,node_reports toneMint
class node_engineer toneIndigo
```

## Components

### Implemented domain

- [Domain records](https://github.com/ryuk132/openkube-optimizer/blob/main/src/openkube_optimizer/domain/models.py): `src/openkube_optimizer/domain/models.py`
- [Quantity conversion](https://github.com/ryuk132/openkube-optimizer/blob/main/src/openkube_optimizer/domain/quantities.py): `src/openkube_optimizer/domain/quantities.py`

### Planned analysis workflow

- [Local CLI](https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer): `src/openkube_optimizer`
- [Namespace discovery](https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer): `src/openkube_optimizer`
- [Workload discovery](https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer): `src/openkube_optimizer`
- [Metrics collection](https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer): `src/openkube_optimizer`
- [Evidence analysis](https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer): `src/openkube_optimizer`

### Planned recommendations and reports

- [Investigation guidance](https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer): `src/openkube_optimizer`
- [Terminal and JSON reports](https://github.com/ryuk132/openkube-optimizer/tree/main/src/openkube_optimizer): `src/openkube_optimizer`

### Other components

- **Engineer**
- **Kubernetes cluster**

## Connections

- Engineer → Local CLI: invokes (evidence: `README.md`)
- Local CLI → Namespace discovery: selects namespaces (evidence: `README.md`)
- Namespace discovery → Workload discovery: scopes discovery (evidence: `README.md`)
- Workload discovery → Kubernetes cluster: reads resources (evidence: `README.md`)
- Metrics collection → Kubernetes cluster: reads utilization (evidence: `README.md`)
- Local CLI → Metrics collection: requests metrics (evidence: `README.md`)
- Domain records → Quantity conversion: validates quantities (evidence: `src/openkube_optimizer/domain/models.py`)
- Evidence analysis → Domain records: uses facts (evidence: `README.md`)
- Evidence analysis → Investigation guidance: explains findings (evidence: `README.md`)
- Local CLI → Terminal and JSON reports: emits reports (evidence: `README.md`)
