Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Inside4ndroid/XStat-Hardware-Monitoring

Repository files navigation

XStat Logo

XStat — Hardware Monitoring

Open-source real-time hardware monitoring and live sensor panel for Windows.
Built with Electron, React, ASP.NET Core 9, and an Android companion app.

Latest Release License: MIT Issues Platform: Windows .NET 9 Android 5.0+

🌐 Website · 📥 Install · 📱 Android App · 🛠 Develop · 🏗 Architecture · 🧩 Widgets


What is XStat?

XStat is a desktop hardware-monitoring application for Windows. It reads live sensor data — CPU temperature, GPU load, RAM usage, fan speeds, clock frequencies, and dozens more — and lets you build beautiful, fully custom display panels.

Panels run both inside the Electron desktop app and as a responsive web page served over your local network so any phone, tablet, or second monitor can show your sensor data in real time.

The XStat Android companion app auto-discovers your PC on the network via UDP broadcast and displays your panel full-screen — zero configuration required. Works on phones, tablets, and Android TV.


Screenshots

Dashboard — live CPU & GPU sensor overview

Dashboard

Panel Editor — drag-and-drop widget canvas

Panel Editor

Settings — configurable port, poll interval, and LAN web panel QR code

Settings

Custom Widget Editor — full HTML/CSS/JS editor with Monaco and live preview

Custom Widget Editor

Android Companion — auto-discovers XStat and displays the panel full-screen

Searching No panel configured Connection lost
Searching No panel Lost

Features

Category Highlights
Real-time sensors CPU, GPU, RAM, Motherboard, Storage, Network — 291+ sensor channels
Panel editor Drag-and-drop grid layout, resizable widgets, z-index layering
Widget library Value, Bar, Sparkline, Gauge, Clock, Text, Image, Custom HTML
Custom widgets Full HTML/CSS/JS editor with Monaco, live preview, sensor data injection
LAN web panel Serve your panel to any device on your network — QR code included
Android companion Auto-discovers XStat via UDP, full-screen panel on phones/tablets/Android TV
Auto-reconnect Android app detects connection loss and restarts discovery automatically
Startup options Start minimised to tray; Start with Windows (login item)
Panel persistence Last active panel is pushed automatically on every app launch
Per-element styling Individual colour, font, size, bold, italic controls per widget element
Visibility toggles Toggle label / value / unit / accent on/off per widget
Layer ordering Send to back, send backward, bring forward, bring to front
Widget naming Click the widget name in Properties to rename inline
Configurable port Change the service port from the Settings page — restarts automatically
Multiple panels Create and switch between named panels
Import / Export Export panel layouts as JSON; import on any machine

Tech Stack

Layer Technology
Desktop shell Electron 33 + electron-vite
UI framework React 18 + Material UI 6 + TypeScript
Charts Recharts (AreaChart)
Grid layout React Grid Layout
Code editor Monaco Editor
Hardware service ASP.NET Core 9 + LibreHardwareMonitorLib
Real-time push SignalR WebSocket hub
Windows service Microsoft.Extensions.Hosting.WindowsServices
Android app Kotlin + AndroidX + WebView, min SDK 21, signed APK

Quick Start

Option A — Install the release build

  1. Download the latest XStat-Setup.exe from Releases.
  2. Run the installer — administrator rights are required so the hardware service can access sensor data.
  3. XStat starts automatically and sits in the system tray.

See Installation Guide for full details.

Option B — Run from source

# Prerequisites: Node.js 20+, .NET 9 SDK, Windows
git clone https://github.com/Inside4ndroid/XStat-Hardware-Monitoring.git
cd XStat-Hardware-Monitoring/src/app
npm install
npm run dev:admin      # launches Electron + .NET service (elevation prompt)

See Development Setup for full setup instructions.


Project Structure

xstat/
├── src/
│   ├── app/                    # Electron + React frontend
│   │   ├── electron/           # main.ts, preload.ts
│   │   └── src/
│   │       ├── components/     # Shared UI components
│   │       ├── pages/          # Dashboard, PanelEditor, Settings, WidgetEditor
│   │       ├── panel/          # LAN web panel entry point
│   │       ├── hooks/          # useSensors, usePanelLayout, useAppSettings
│   │       └── types/          # TypeScript type definitions
│   └── XStat.Service/          # ASP.NET Core hardware service
│       ├── Controllers/        # REST API controllers
│       ├── Hardware/            # LibreHardwareMonitor wrapper
│       ├── Hubs/               # SignalR sensor hub
│       └── Services/           # SensorBroadcastService, PanelLayoutStore, DiscoveryBeaconService
├── android-companion/          # Android companion app (Kotlin)
│   └── app/src/main/
│       ├── java/net/xstat/companion/   # SplashActivity, MainActivity, DiscoveryManager
│       └── res/                # Layouts, icons, TV banner
├── website-source/             # Static marketing website (GitHub Pages)
├── build.ps1                   # Full production build script
├── release.ps1                 # GitHub release automation
└── xstat.sln                   # Visual Studio solution

Documentation

Document Description
Installation Guide How to install and run XStat
Android Companion Install and use the Android app
Development Setup Set up a local dev environment
Building for Production Build the installer and service
Architecture Overview How the pieces fit together
Widget Reference All widget types documented

Contributing

Contributions are welcome! Please open an issue first to discuss what you'd like to change.

  1. Fork the repo
  2. Create your feature branch: git checkout -b feature/my-feature
  3. Commit your changes: git commit -m 'Add my feature'
  4. Push to the branch: git push origin feature/my-feature
  5. Open a Pull Request

License

MIT © Inside4ndroid Studios — see LICENSE for full text.


Made with ♥ by Inside4ndroid Studios