What it shows
Live tiles (refresh every 10 seconds via polling):
| Tile | Value | Notes |
|---|---|---|
| Load average | 1-minute load, with 5/15-minute sub-line | Utilisation bar normalises against the core count |
| CPU usage | Overall busy % since the previous poll | Reads — on the first render; the number appears from the second poll (it's a delta between two /proc/stat samples) |
| Memory | Used % with used/total sub-line | "Available" follows the kernel's MemAvailable, so reclaimable cache counts as free |
| Disk | Free space with total sub-line | For the filesystem holding the install |
Utilisation bars go amber at 70% and red at 90%.
Spec cards:
- Server — hostname, OS + kernel, architecture, processor model, core count, total memory, the user the PHP process runs as, web server, uptime, and the current server time in the site timezone.
- PHP & Database — PHP version + SAPI, memory limit, max execution time, upload limits, OPcache status (with hit rate), and the database engine + version.
Rows whose probe came back empty are dropped, so a locked-down host shows a shorter list instead of blanks.
Dashboard widget
The Server card shows the 1-minute load average and free disk on the dashboard homepage, linking to the full page. On by default; sites can hide it via Dashboard → Customize. (Sites that saved a Customize selection before this card shipped keep their saved set — they opt in from the same modal.)
How probing works (no root, locked-down PHP)
All data comes from app/Support/ServerStats.php, which layers three strategies and degrades to null at every step — mirroring the HostCapabilities philosophy that nothing hard-fails on a missing function:
- Pure PHP first —
sys_getloadavg(),disk_free_space(),php_uname(),ini_get()are plain syscalls unaffected byopen_basedirand absent from commondisable_functionslists (only the legacy aliasdiskfreespacetypically appears). /procreads second —/proc/cpuinfo,/proc/meminfo,/proc/stat,/proc/uptimeare world-readable by design; no root needed.proc_opensubprocess last — subprocesses aren't bound byopen_basedir, so acat/sysctl/whoamicovers hosts that block the direct read. RunCloud's stockdisable_functionslist keepsproc_openenabled while blockingexec/shell_exec/system/popen— the installer relies on that (its live preflight warns if a needed function is blocked).
macOS dev boxes (Herd) have no /proc; the sysctl/vm_stat fallbacks cover CPU model, cores, memory, and boot time there.
Hardware facts (CPU model, cores, total memory) are cached for an hour; live numbers are never cached. The CPU % baseline sample is kept in the cache between polls.
Things that genuinely need root — exact hardware model (dmidecode), SMART disk health, other users' process details — are deliberately out of scope.