# randy420marsh/llm-tests architecture

> Architecture diagram of the GitHub repository randy420marsh/llm-tests, 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/randy420marsh/llm-tests
- Repository: https://github.com/randy420marsh/llm-tests

## Overview

Latency Tester Suite is a desktop/CLI hardware benchmarking and latency-measurement application. Users select individual tests or run a suite, inspect live and saved results, and optionally view saved result files in a browser. The graph covers the benchmark domains, system and sensor context, session/reporting, and result viewing. Several links rely on the SOURCE INDEX or documented server behavior because the excerpts are partial; unsampled subsystems are not treated as inspected.

Main entry points: [`latency-tester-suite/src/gui.rs`](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/gui.rs) (Desktop GUI), [`latency-tester-suite/src/cli.rs`](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/cli.rs) (CLI), [`latency-tester-suite/src/run_all.rs`](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/run_all.rs) (Suite orchestration), [`latency-tester-suite/src/cpu_benchmark.rs`](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/cpu_benchmark.rs) (CPU benchmark)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry points"]
  node_cli["CLI<br/>[cli.rs]"]
  node_gui["Desktop GUI<br/>[gui.rs]"]
  node_runall["Suite orchestration<br/>[run_all.rs]"]
end

subgraph group_tests["Measurement suites"]
  node_cpu["CPU benchmark<br/>[cpu_benchmark.rs]"]
  node_gpu["GPU benchmark<br/>[gpu_benchmark.rs]"]
  node_memory["Memory benchmark"]
  node_inputlat["Input latency<br/>[input_latency.rs]"]
  node_inputtest["Input trials<br/>[input_test.rs]"]
  node_rig["Latency rig<br/>[rig.rs]"]
  node_timer["High-resolution timer<br/>[timer.rs]"]
end

subgraph group_context["Hardware context"]
  node_topology["CPU topology<br/>[topology.rs]"]
  node_appcore["App core isolation<br/>[app_core.rs]"]
  node_sysinfo["System information<br/>[system_info.rs]"]
  node_virtualization["Virtualization detection<br/>[virtualization.rs]"]
  node_sensors["Sensor sampling<br/>[sensors.rs]"]
end

subgraph group_results["Results and viewing"]
  node_session["Session assembly<br/>[session.rs]"]
  node_logger["Result logger<br/>[result_logger.rs]"]
  node_report["Report export<br/>[report.rs]"]
  node_server["Results HTTP server<br/>[server.rs]"]
  node_viewer["Browser viewer<br/>[viewer.html]"]
  node_savedresults[("Saved JSON results")]
end

node_user(("Operator"))

node_user -->|"runs tests"| node_cli
node_user -->|"selects tests"| node_gui
node_gui -->|"starts benchmark"| node_cpu
node_gui -->|"starts benchmark"| node_gpu
node_gui -->|"starts benchmark"| node_memory
node_gui -->|"starts measurement"| node_inputlat
node_gui -->|"uses trial data"| node_inputtest
node_gui -->|"uses rig data"| node_rig
node_gui -->|"starts suite"| node_runall
node_cli -->|"runs benchmark"| node_cpu
node_cli -->|"runs benchmark"| node_gpu
node_cli -->|"runs benchmark"| node_memory
node_cli -->|"runs measurement"| node_inputlat
node_runall -->|"runs benchmark"| node_cpu
node_runall -->|"runs benchmark"| node_gpu
node_runall -->|"runs benchmark"| node_memory
node_runall -->|"runs measurement"| node_inputlat
node_cpu -->|"queries topology"| node_topology
node_cpu -->|"records telemetry"| node_sensors
node_gpu -->|"records telemetry"| node_sensors
node_memory -->|"uses topology"| node_topology
node_memory -->|"records telemetry"| node_sensors
node_inputlat -->|"measures intervals"| node_timer
node_inputlat -->|"records telemetry"| node_sensors
node_appcore -->|"checks siblings"| node_topology
node_sysinfo -->|"queries core types"| node_topology
node_sysinfo -->|"collects state"| node_virtualization
node_sensors -.->|"samples hardware"| node_savedresults
node_gui -->|"assembles session"| node_session
node_cli -->|"assembles session"| node_session
node_session -.->|"logs results"| node_logger
node_gui -->|"exports report"| node_report
node_cli -->|"exports report"| node_report
node_server -->|"serves JSON"| node_savedresults
node_server -->|"serves page"| node_viewer
node_viewer -->|"requests results"| node_server
node_user -->|"views results"| node_viewer

click node_cli "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/cli.rs"
click node_gui "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/gui.rs"
click node_runall "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/run_all.rs"
click node_cpu "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/cpu_benchmark.rs"
click node_gpu "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/gpu_benchmark.rs"
click node_memory "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/memory_benchmark.rs"
click node_inputlat "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/input_latency.rs"
click node_inputtest "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/input_test.rs"
click node_rig "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/rig.rs"
click node_timer "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/timer.rs"
click node_topology "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/topology.rs"
click node_appcore "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/app_core.rs"
click node_sysinfo "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/system_info.rs"
click node_virtualization "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/virtualization.rs"
click node_sensors "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/sensors.rs"
click node_session "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/session.rs"
click node_logger "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/result_logger.rs"
click node_report "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/report.rs"
click node_server "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/server.rs"
click node_viewer "https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/web/viewer.html"

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_gui,node_runall toneBlue
class node_cpu,node_gpu,node_memory,node_inputlat,node_inputtest,node_rig,node_timer toneAmber
class node_topology,node_appcore,node_sysinfo,node_virtualization,node_sensors toneMint
class node_session,node_logger,node_report,node_server,node_viewer,node_savedresults toneRose
class node_user toneIndigo
```

## Components

### App entry points

- [CLI](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/cli.rs): `latency-tester-suite/src/cli.rs`
- [Desktop GUI](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/gui.rs): `latency-tester-suite/src/gui.rs`
- [Suite orchestration](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/run_all.rs): `latency-tester-suite/src/run_all.rs`

### Measurement suites

- [CPU benchmark](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/cpu_benchmark.rs): `latency-tester-suite/src/cpu_benchmark.rs`
- [GPU benchmark](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/gpu_benchmark.rs): `latency-tester-suite/src/gpu_benchmark.rs`
- [Memory benchmark](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/memory_benchmark.rs): `latency-tester-suite/src/memory_benchmark.rs`
- [Input latency](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/input_latency.rs): `latency-tester-suite/src/input_latency.rs`
- [Input trials](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/input_test.rs): `latency-tester-suite/src/input_test.rs`
- [Latency rig](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/rig.rs): `latency-tester-suite/src/rig.rs`
- [High-resolution timer](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/timer.rs): `latency-tester-suite/src/timer.rs`

### Hardware context

- [CPU topology](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/topology.rs): `latency-tester-suite/src/topology.rs`
- [App core isolation](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/app_core.rs): `latency-tester-suite/src/app_core.rs`
- [System information](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/system_info.rs): `latency-tester-suite/src/system_info.rs`
- [Virtualization detection](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/virtualization.rs): `latency-tester-suite/src/virtualization.rs`
- [Sensor sampling](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/sensors.rs): `latency-tester-suite/src/sensors.rs`

### Results and viewing

- [Session assembly](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/session.rs): `latency-tester-suite/src/session.rs`
- [Result logger](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/result_logger.rs): `latency-tester-suite/src/result_logger.rs`
- [Report export](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/report.rs): `latency-tester-suite/src/report.rs`
- [Results HTTP server](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/server.rs): `latency-tester-suite/src/server.rs`
- [Browser viewer](https://github.com/randy420marsh/llm-tests/blob/main/latency-tester-suite/src/web/viewer.html): `latency-tester-suite/src/web/viewer.html`
- **Saved JSON results**

### Other components

- **Operator**

## Connections

- Operator → CLI: runs tests (evidence: `latency-tester-suite/src/cli.rs`)
- Operator → Desktop GUI: selects tests (evidence: `latency-tester-suite/src/gui.rs`)
- Desktop GUI → CPU benchmark: starts benchmark (evidence: `latency-tester-suite/src/gui.rs`)
- Desktop GUI → GPU benchmark: starts benchmark (evidence: `latency-tester-suite/src/gui.rs`)
- Desktop GUI → Memory benchmark: starts benchmark (evidence: `latency-tester-suite/src/gui.rs`)
- Desktop GUI → Input latency: starts measurement (evidence: `latency-tester-suite/src/gui.rs`)
- Desktop GUI → Input trials: uses trial data (evidence: `latency-tester-suite/src/gui.rs`)
- Desktop GUI → Latency rig: uses rig data (evidence: `latency-tester-suite/src/gui.rs`)
- Desktop GUI → Suite orchestration: starts suite
- CLI → CPU benchmark: runs benchmark (evidence: `latency-tester-suite/src/cli.rs`)
- CLI → GPU benchmark: runs benchmark (evidence: `latency-tester-suite/src/cli.rs`)
- CLI → Memory benchmark: runs benchmark (evidence: `latency-tester-suite/src/cli.rs`)
- CLI → Input latency: runs measurement (evidence: `latency-tester-suite/src/cli.rs`)
- Suite orchestration → CPU benchmark: runs benchmark (evidence: `latency-tester-suite/src/run_all.rs`)
- Suite orchestration → GPU benchmark: runs benchmark (evidence: `latency-tester-suite/src/run_all.rs`)
- Suite orchestration → Memory benchmark: runs benchmark (evidence: `latency-tester-suite/src/run_all.rs`)
- Suite orchestration → Input latency: runs measurement (evidence: `latency-tester-suite/src/run_all.rs`)
- CPU benchmark → CPU topology: queries topology (evidence: `latency-tester-suite/src/cpu_benchmark.rs`)
- CPU benchmark → Sensor sampling: records telemetry (evidence: `latency-tester-suite/src/cpu_benchmark.rs`)
- GPU benchmark → Sensor sampling: records telemetry (evidence: `latency-tester-suite/src/gpu_benchmark.rs`)
- Memory benchmark → CPU topology: uses topology (evidence: `latency-tester-suite/src/memory_benchmark.rs`)
- Memory benchmark → Sensor sampling: records telemetry (evidence: `latency-tester-suite/src/memory_benchmark.rs`)
- Input latency → High-resolution timer: measures intervals (evidence: `latency-tester-suite/src/input_latency.rs`)
- Input latency → Sensor sampling: records telemetry (evidence: `latency-tester-suite/src/input_latency.rs`)
- App core isolation → CPU topology: checks siblings (evidence: `latency-tester-suite/src/app_core.rs`)
- System information → CPU topology: queries core types (evidence: `latency-tester-suite/src/system_info.rs`)
- System information → Virtualization detection: collects state (evidence: `latency-tester-suite/src/system_info.rs`)
- Sensor sampling → Saved JSON results: samples hardware
- Desktop GUI → Session assembly: assembles session (evidence: `latency-tester-suite/src/gui.rs`)
- CLI → Session assembly: assembles session (evidence: `latency-tester-suite/src/cli.rs`)
- Session assembly → Result logger: logs results
- Desktop GUI → Report export: exports report (evidence: `latency-tester-suite/src/gui.rs`)
- CLI → Report export: exports report (evidence: `latency-tester-suite/src/cli.rs`)
- Results HTTP server → Saved JSON results: serves JSON (evidence: `latency-tester-suite/src/server.rs`)
- Results HTTP server → Browser viewer: serves page (evidence: `latency-tester-suite/src/server.rs`)
- Browser viewer → Results HTTP server: requests results (evidence: `latency-tester-suite/src/server.rs`)
- Operator → Browser viewer: views results
