System Stats
The System page gives you a detailed, real-time view of the Raspberry Pi's health and status. Accessible from the sidebar or bottom tab bar via the pulse icon.
http://<raspberry-pi-ip>:3000/stats
Overview
The page polls /system_info every 10 seconds and displays everything in a single scrollable view:
| Section | What it shows |
|---|---|
| Uptime bar | Time since last boot, hostname, username, IP address (click to copy), WiFi SSID and signal strength |
| CPU | Current load %, per-core bars, sparkline history |
| Temperature | CPU temp in C with thermal gradient, sparkline |
| RAM | Used / total in MB, sparkline, swap usage |
| Storage | Used / total in GB, percentage bar, free space |
| Throttle | Active and historical flags, process count, CPU cores, load averages |
| Network | Bytes and packets sent/received since boot |
| SD Card | Name, serial, manufacturing date, firmware revision, bytes written, life estimate |
| Camera | Sensor model, native resolution, available modes, current stream settings |
| Recordings | Total count, timelapse frames today, live REC indicator |
| Connectivity | BT/WiFi device counts (online/total), AP client signal strengths, sensor status |
| Platform | OS distro, kernel, architecture, Python/Flask/Node.js/MediaMTX versions, git branch |
Sparklines
CPU, temperature, and RAM cards each include a small inline chart rendered on a Canvas element.
Data sources:
- On first load: Up to 1 hour of historical data from the health log (5-minute interval snapshots) loads in parallel with the first live poll
- After that: Live 10-second samples are appended, keeping up to 60 data points
How they look:
- A gradient-filled area chart with a stroke line on top
- A pulsing dot at the leading edge (latest data point) confirms the feed is live
- When new data arrives, values interpolate smoothly toward their targets rather than jumping
Performance:
- Full 60fps during data transitions (smooth flow-in)
- Throttles to ~15fps when settled (idle glow pulse only)
- Stops entirely when
prefers-reduced-motionis enabled - DPR-aware rendering capped at 2x for Pi performance
Status-reactive cards
The four metric cards (CPU, RAM, temperature, storage) respond visually when metrics cross warning or critical thresholds. Effects include colour-matched sparklines, an ambient glow, and an animated border sweep.
The border sweep is a rotating conic-gradient animation using CSS @property. It degrades gracefully in older browsers and is disabled for users who prefer reduced motion.
Temperature gradient
The temperature card's large number renders as a gradient that shifts along a thermal spectrum - from accent blue (cool) through amber (warm) to red (hot). The gradient position animates smoothly over 1.5 seconds using a registered CSS @property. The card also has a subtle ambient glow that shifts through the same spectrum. In browsers without @property support, the colour still changes but snaps instead of animating.
Throttle details
Shows both active flags (currently happening) and past flags (happened since boot):
| Flag | Meaning |
|---|---|
| Low voltage | Power supply can't deliver enough current |
| Throttled | CPU clock reduced to protect hardware |
| Freq capped | Maximum frequency limited |
| Temp limit | Soft thermal limit reached |
Below the flags: process count, CPU core count, and 1/5/15 minute load averages. The raw hex value from vcgencmd get_throttled is shown for debugging.
If you see persistent throttle flags, upgrade to the official Raspberry Pi power supply (5V 3A) or improve ventilation.
SD Card health
Metadata from /sys/block/mmcblk0/device/:
| Field | Source | Notes |
|---|---|---|
| Name | Card model ID | Always available |
| Manufacturing date | Card metadata | Usually available |
| Serial | Unique card ID | Usually available |
| Manufacturer ID | OEM identifier | Usually available |
| Hardware revision | Card hardware version | Less common |
| Firmware revision | Card firmware version | Less common |
| Written since boot | /proc/diskstats | Bytes written since last boot |
| Life estimate | Wear level | Industrial/eMMC cards only |
| Erase block size | Wear leveling hint | Industrial/eMMC cards only |
Not all SD cards expose every field. Consumer cards typically show name, serial, and manufacturing date. Life estimate and erase block are more common on industrial/eMMC cards.
Camera and recording
Camera card:
- Sensor model - detected from
rpicam-hello --list-cameras(e.g. IMX219, IMX708), cached on startup - Native resolution - the sensor's maximum resolution
- Available modes - supported resolution/FPS combinations as compact badges
- Stream resolution / FPS - currently configured MediaMTX settings
If the camera command is not available (e.g. on a dev machine), only stream settings are shown.
Recordings card:
- Total recordings - number of videos in the archive (fetched via lightweight count endpoint)
- Frames today - timelapse frames captured today (if enabled)
- REC indicator - pulsing red badge when actively recording
Connectivity and sensor
Device counts: How many tracked Bluetooth and WiFi devices are online out of total configured.
AP client signals (when Pi runs as access point): Each connected device's MAC address with a colour-coded dBm value:
| Signal | Colour |
|---|---|
| Better than -50 dBm | Green |
| -50 to -70 dBm | Yellow |
| Worse than -70 dBm | Red |
Sensor status: Armed, Idle, or Off - plus sensor type and GPIO pin.
Platform info
A footer section shows system identity:
| Field | Source |
|---|---|
| WiFi signal | Colour-coded dBm badge next to SSID |
| OS distro | /etc/os-release |
| Kernel | platform.platform() |
| Architecture | e.g. aarch64 |
| CPU model | /proc/cpuinfo |
| Boot time | Formatted from psutil.boot_time() |
| Software versions | Python, Flask, OpenCV, Node.js, MediaMTX |
| Git branch / commit | Build-time injected |
Relationship to Dashboard
The Dashboard page includes a compact system health widget (CPU, temp, RAM, storage in a 2x2 grid). The System page expands on this with sparkline history, status-reactive card effects, throttle breakdown, network I/O, SD card metadata, camera/recording/connectivity info, and full platform details.
Dashboard = quick glance. System = investigation and monitoring.