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.
🌐 Website · 📥 Install · 📱 Android App · 🛠 Develop · 🏗 Architecture · 🧩 Widgets
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.
Dashboard — live CPU & GPU sensor overview
Panel Editor — drag-and-drop widget canvas
Settings — configurable port, poll interval, and LAN web panel QR code
Custom Widget Editor — full HTML/CSS/JS editor with Monaco and live preview
Android Companion — auto-discovers XStat and displays the panel full-screen
| Searching | No panel configured | Connection lost |
|---|---|---|
![]() |
![]() |
![]() |
| 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 |
| 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 |
- Download the latest XStat-Setup.exe from Releases.
- Run the installer — administrator rights are required so the hardware service can access sensor data.
- XStat starts automatically and sits in the system tray.
See Installation Guide for full details.
# 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.
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
| 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 |
Contributions are welcome! Please open an issue first to discuss what you'd like to change.
- Fork the repo
- Create your feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m 'Add my feature' - Push to the branch:
git push origin feature/my-feature - Open a Pull Request
MIT © Inside4ndroid Studios — see LICENSE for full text.
Made with ♥ by Inside4ndroid Studios







