Skip to main content

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:

SectionWhat it shows
Uptime barTime since last boot, hostname, username, IP address (click to copy), WiFi SSID and signal strength
CPUCurrent load %, per-core bars, sparkline history
TemperatureCPU temp in C with thermal gradient, sparkline
RAMUsed / total in MB, sparkline, swap usage
StorageUsed / total in GB, percentage bar, free space
ThrottleActive and historical flags, process count, CPU cores, load averages
NetworkBytes and packets sent/received since boot
SD CardName, serial, manufacturing date, firmware revision, bytes written, life estimate
CameraSensor model, native resolution, available modes, current stream settings
RecordingsTotal count, timelapse frames today, live REC indicator
ConnectivityBT/WiFi device counts (online/total), AP client signal strengths, sensor status
PlatformOS 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-motion is 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):

FlagMeaning
Low voltagePower supply can't deliver enough current
ThrottledCPU clock reduced to protect hardware
Freq cappedMaximum frequency limited
Temp limitSoft 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.

tip

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/:

FieldSourceNotes
NameCard model IDAlways available
Manufacturing dateCard metadataUsually available
SerialUnique card IDUsually available
Manufacturer IDOEM identifierUsually available
Hardware revisionCard hardware versionLess common
Firmware revisionCard firmware versionLess common
Written since boot/proc/diskstatsBytes written since last boot
Life estimateWear levelIndustrial/eMMC cards only
Erase block sizeWear leveling hintIndustrial/eMMC cards only
note

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:

SignalColour
Better than -50 dBmGreen
-50 to -70 dBmYellow
Worse than -70 dBmRed

Sensor status: Armed, Idle, or Off - plus sensor type and GPIO pin.


Platform info

A footer section shows system identity:

FieldSource
WiFi signalColour-coded dBm badge next to SSID
OS distro/etc/os-release
Kernelplatform.platform()
Architecturee.g. aarch64
CPU model/proc/cpuinfo
Boot timeFormatted from psutil.boot_time()
Software versionsPython, Flask, OpenCV, Node.js, MediaMTX
Git branch / commitBuild-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.