← όλα τα πρότζεκτς

HardwareToad

Windows hardware monitor με native DX12 GPU stress, AVX2/FMA CPU burners, και θωρακισμένο sensor bridge.

beta
Python 3.11+TkinterC# / .NETC++ / HLSLDirectX 12LibreHardwareMonitorAVX2 / FMAObfuscarPyInstallerInno Setup

Σύνοψη

Το HardwareToad είναι ένας Windows hardware monitor με Python/Tkinter UI και αυτόνομο .NET sensor bridge βασισμένο στο LibreHardwareMonitor. Δείχνει σε πραγματικό χρόνο CPU / GPU / RAM / storage telemetry με live γραφήματα, τρέχει AVX2/FMA και Linpack-grade CPU stress, έχει native DirectX 12 GPU stress engine (compute + VRAM + rasterizer), και 15-pattern RAM stability test — όλα πίσω από token-authenticated local bridge με SHA256 integrity και Obfuscar symbol protection. Διανέμεται ως one-click Inno Setup installer‧ ο τελικός χρήστης δεν χρειάζεται compiler, .NET runtime, ή Python.

Σημαντικά σημεία

  • Live CPU / GPU / RAM / storage telemetry με ring gauges και γραφήματα θερμοκρασίας.
  • CPU stress: single-core AVX2/FMA, multi-core FMA, Memory/IMC, combined, Linpack DGEMM.
  • Native DX12 GPU stress engine: 16M FMA compute threads + 256MB VRAM transfers + rasterizer, με feature-level fallback (12.1 → 11.0).
  • 15-pattern RAM stability test με ακριβή αναφορά λαθών — αποκαλύπτει ασταθή XMP / EXPO.
  • Θωρακισμένο local bridge: 256-bit token ανά εκκίνηση, SHA256 binary check, Obfuscar-protected symbols, 127.0.0.1-only CORS.
  • 11 built-in θέματα, per-color overrides, οποιαδήποτε εγκατεστημένη γραμματοσειρά, custom μεγέθη παραθύρου — όλα αυτόματα αποθηκευμένα.
  • Self-contained installer — zero dependencies για τον τελικό χρήστη‧ auto-elevates σε κάθε εκκίνηση.

Πλαίσιο

Ήθελα έναν hardware monitor που να ταιριάζει στον τρόπο που δουλεύω: σκούρος, πυκνός, χωρίς nagware, χωρίς cloud, χωρίς account. Και ήθελα να καταλάβω το stack — sensors, GPU compute, stress workloads — από άκρη σε άκρη αντί να κολλάω έτοιμα εργαλεία. Το HardwareToad είναι το αποτέλεσμα: ένα Python UI που μου αρέσει πραγματικά να βλέπω, υποστηριζόμενο από .NET bridge που μιλάει σε αληθινούς low-level sensors και ένα C++/HLSL stress engine πάνω σε DirectX 12.

Αρχιτεκτονική

Two-process design με καθαρό διαχωρισμό. Το Python/Tkinter UI κάνει rendering και interaction‧ ένα αυτόνομο .NET sensor bridge (LHMBridge) τρέχει ως privileged child process και εκθέτει local HTTP endpoints για sensor reads και stress orchestration. Ένα standalone DirectX 12 executable (GPUStress.exe, C++/HLSL) χειρίζεται GPU workloads — zero dependencies για τον τελικό χρήστη.

  • main.py — application entry point.
  • core/app.py — όλο το UI: tabs, cards, ring gauges, γραφήματα, settings.
  • core/bridge.py — HTTP client για το LHMBridge (token, retries, typed responses).
  • core/stress_manager.py — αποστέλλει stress commands μέσω του bridge.
  • core/constants.py — single source of truth για version, χρώματα, port.
  • LHMBridge/LHMBridge.cs — C# sensor bridge (LibreHardwareMonitor + local HTTP).
  • GPUStress/ — native DX12 engine: C++ source, pre-built GPUStress.exe, HLSL shaders.
  • vendor/ — LibreHardwareMonitor runtime files μέσα στο repo.
  • dev.bat — γρήγορο τοπικό run, auto-elevates, χτίζει το bridge όταν χρειάζεται.
  • build_all.bat — πλήρες clean release build: bridge → PyInstaller → Inno Setup installer.

Μοντέλο ασφαλείας

Το local bridge έχει privileged πρόσβαση σε low-level sensors, οπότε αντιμετωπίζεται ως security boundary, όχι ως φιλικός βοηθός.

  • Token auth — 256-bit token παράγεται στην εκκίνηση, απαιτείται σε κάθε request μέσω X-HardwareToad-Token. Εναλλάσσεται κάθε εκκίνηση.
  • Token transport — περνάει με per-process env var (ή temp file για elevated launches), ποτέ μέσω CLI args ορατών σε άλλα τοπικά processes.
  • SHA256 integrity — το bridge binary γίνεται hash στην πρώτη εκτέλεση‧ οποιαδήποτε αλλαγή μπλοκάρει το startup.
  • Obfuscar — LHMBridge.dll symbols μετονομάζονται κατά το build για να επιβραδύνουν το decompilation.
  • Restricted CORS — origin reflected μόνο για 127.0.0.1 / localhost‧ κανένα wildcard.

Stress engine

Όλα τα CPU/memory workloads τρέχουν native μέσα στο .NET bridge — χωρίς Python GIL, χωρίς subprocesses. Τα threads pinαρονται σε cores με ένα core δεσμευμένο για UI/system responsiveness. Τα GPU workloads τρέχουν σε ξεχωριστό native DX12 executable.

  • CPU Single Core — 1 thread, 12 ανεξάρτητα AVX2 FMA chains, max single-core boost clock.
  • CPU Multi Core — ίδιο FMA engine σε κάθε logical core‧ ~Prime95 Small FFT thermal output.
  • Memory / IMC — 256MB/thread, AVX2 sequential + stride-127 + reverse passes‧ νικάει τον prefetcher.
  • Linpack DGEMM — tiled 3072²3072 FP64 matmul (~58B FMAs/pass)‧ αποκαλύπτει αστάθεια που χάνουν μικρότερα workloads.
  • Combined — κάθε thread τρέχει FMA + memory pass ταυτόχρονα για max package power.
  • RAM Stability — 15 patterns εγγραφής/ανάγνωσης με ακριβή αναφορά λαθών, αποκαλύπτει ασταθή XMP/EXPO προφίλ.
  • GPU Core — DX12 compute shader που dispatches 16M FMA threads‧ σατουράρει τους shader cores.
  • GPU VRAM — συνεχείς 256MB μεταφορές‧ σατουράρει το memory bandwidth.
  • GPU Combined — Compute + VRAM + Rasterizer ταυτόχρονα‧ μέγιστο GPU thermal load.

UX

Μικρά πράγματα που έχουν σημασία όταν κοιτάς αυτό το app για ώρες όταν tunάρεις build.

  • 11 built-in θέματα (MSI Dragon, Cyberpunk, Matrix Green, και άλλα), καθένα με πλήρη παλέτα για cards, accents, και graph lines.
  • Per-color overrides — click σε οποιοδήποτε χρώμα για customization ανεξάρτητα από το θέμα.
  • Οποιαδήποτε εγκατεστημένη γραμματοσειρά‧ custom μέγεθος παραθύρου (presets ή ακριβές W×H).
  • Κάθε ρύθμιση αυτόματα αποθηκεύεται και επανέρχεται στο επόμενο launch.
  • Raw Sensors viewer — δείχνει κάθε τιμή που βλέπει το bridge. Τα ακριβή ονόματα για custom sensor labels σε edge-case hardware.
  • Auto-elevation — το UAC prompt σε κάθε launch είναι το τίμημα για άμεση πρόσβαση σε sensors‧ χωρίς silent re-launch κόλπα.

Build & διανομή

  • dev.bat — η μόνη εντολή που χρειάζεσαι κατά την ανάπτυξη.
  • build_all.bat — πλήρες release pipeline: compile LHMBridge, freeze UI με PyInstaller, package με Inno Setup.
  • Version bump γίνεται με μία γραμμή στο core/constants.py — η έκδοση του installer ακολουθεί αυτόματα.
  • Ο installer εγγράφει την εφαρμογή να εκκινεί ως Administrator by default και προαιρετικά βάζει desktop shortcut.

Απαιτήσεις

  • Windows 10+ (64-bit).
  • Python 3.11+ (μόνο για builds από source).
  • .NET SDK (για χτίσιμο του LHMBridge από source).
  • Inno Setup 6 (για παραγωγή installer).
  • Δικαιώματα Administrator κατά το runtime (υποχρεωτικό για πρόσβαση σε sensors).

Πρόσφατες εκδόσεις

v0.8.1 Beta

  • · CPU temperature now works on previously unsupported CPUs (i7-8700, R5-5800X, others).
  • · GPU sensor polling now reads correctly via dedicated bridge methods.
  • · GPU stress shaders ~10× heavier per dispatch (transcendental ops, 4K render target, 30k tris).

v0.8.0 Beta

  • · Native DX12 GPU stress engine (Core / VRAM / Combined).
  • · Universal GPU support via feature-level fallback (12.1 → 11.0).
  • · GPUStress.exe bundled in installer — zero setup for end users.

v0.7.5 Beta

  • · Token authentication and SHA256 integrity check for the local bridge.
  • · Obfuscar integration in the build pipeline.
  • · Heavier AVX2/FMA, larger memory buffer, 4-pass scatter-write memory burn.
toad mascot