Skip to content

ulf16/istatserverlinux

 
 

Repository files navigation

iStat Server

iStat Server is a remote system monitoring daemon for iStat View-compatible clients. This maintained fork keeps the original protocol usable on modern Linux systems and adds preliminary macOS Apple Silicon support.

The original project was released by Bjango and is based on istatd by William Tisater. This fork is maintained at:

https://github.com/ulf16/istatserverlinux

2026 Maintenance Update

Release v1.2.0 brings the fork in line with the telemetry expected by iStat View-compatible clients on modern Linux systems and Apple Silicon Macs.

Highlights

  • Modern Autotools build for current GCC, Clang, pkg-config, OpenSSL, SQLite, and libxml2 environments.
  • Hardened Linux install path with safer config permissions and optional systemd service installation.
  • Bonjour/Avahi discovery where available.
  • Linux CPU, memory, load, uptime, disk, disk I/O, network, process, sensor, power, frequency, and GPU telemetry.
  • Preliminary macOS Apple Silicon support, tested on Mac mini M1.
  • macOS memory pressure, APFS-aware disk space, disk I/O mapping, task lists, Apple Silicon sensor names, fan speed, power, frequency, and AGX GPU counters.
  • Protocol extensions for server model, OS version, memory pressure, GPU data, disk metadata, task lists, and sensor units.
  • Install and upgrade paths preserve existing configuration and SQLite history databases.

Supported Architectures

Platform Architecture Example Device Status
Linux x86_64 Intel/AMD servers, Intel Mac mini Stable
Linux aarch64 Odroid N2, Raspberry Pi 4 64-bit Stable
Linux armv7l Odroid XU4, older Raspberry Pi systems Stable
macOS arm64 Apple Silicon Mac mini Preliminary
BSD/AIX/Solaris/HP-UX varies legacy supported targets Not recently tested

Current Telemetry

Linux:

  • CPU usage, task list, load, uptime, memory, swap, and process memory
  • Disk capacity and disk I/O
  • Network interface throughput
  • lm_sensors temperature and fan sensors
  • CPU frequency through cpufreq
  • Intel RAPL CPU package/core/uncore power
  • GPU telemetry where exposed through sysfs, DRM, devfreq, or i915 debugfs

macOS Apple Silicon:

  • CPU usage, task list, load, uptime, memory, swap, and memory pressure
  • Disk capacity using APFS-aware volume accounting
  • Disk I/O mapped back to displayed APFS volumes, including multi-disk volumes
  • Network interface throughput
  • Apple HID temperature sensors with readable Apple Silicon names
  • Fan speed through SMC-compatible interfaces
  • CPU/GPU/ANE/RAM/PCIe power where available through IOReport/powermetrics
  • CPU and GPU frequency through the powermetrics helper
  • AGX GPU load, renderer/tiler utilization, and unified GPU memory counters

Quick Install

curl -fsSL https://raw.githubusercontent.com/ulf16/istatserverlinux/master/get-istatserver.sh -o istatserverlinux.sh
sh istatserverlinux.sh

The quick installer is designed for Linux distributions using systemd. It installs required packages, builds the daemon, installs it, and enables the istatserver service.

On non-systemd systems, the build can still succeed, but service installation is skipped. Run the daemon manually or add a local init script:

sudo -u istat /usr/local/bin/istatserver

Requirements

  • C and C++ compilers such as gcc, g++, or clang
  • Autoconf, automake, libtool, and pkg-config/pkgconf
  • OpenSSL/libssl plus development headers
  • SQLite3 plus development headers
  • libxml2 plus development headers

Optional libraries:

  • libavahi plus development headers for Bonjour discovery on Linux
  • lm_sensors/libsensors4 plus development headers for Linux sensors

On macOS, Homebrew packages are sufficient for the build dependencies. The Apple Silicon helper installed by this fork is used for powermetrics-derived frequency and power values.

Build And Install

git clone https://github.com/ulf16/istatserverlinux.git
cd istatserverlinux
./autogen
./configure
make
sudo make install
sudo /usr/local/bin/istatserver -d

A 5 digit passcode is generated by the install script. It can be found in:

/usr/local/etc/istatserver/istatserver.conf

iStat View-compatible clients ask for this passcode the first time they connect.

Upgrading

Stop the running service, rebuild, and install normally:

sudo service istatserver stop
git pull
./autogen
./configure
make
sudo make install
sudo service istatserver start

The installer preserves the existing configuration and SQLite history database. Do not remove /usr/local/etc/istatserver/istatserver.db if you want to keep historical graph data.

macOS Apple Silicon Helper

Apple's powermetrics tool requires elevated privileges. This fork ships a small LaunchDaemon helper that samples powermetrics and writes a plain key/value file read by the unprivileged server process.

After installing the server under /opt/istatserverlinux, install the helper:

sudo /opt/istatserverlinux/contrib/install-macos-helper.sh

To remove it:

sudo /opt/istatserverlinux/contrib/uninstall-macos-helper.sh

Starting With systemd

The build can install the systemd unit directly:

./configure --enable-systemd-unit
make
sudo make install
sudo systemctl enable --now istatserver

You can also install the unit manually:

sudo cp ./resource/systemd/istatserver.service /etc/systemd/system/istatserver.service
sudo systemctl daemon-reload
sudo systemctl enable --now istatserver

Starting With upstart

sudo cp ./resource/upstart/istatserver.conf /etc/init/istatserver.conf
sudo start istatserver

Starting With rc.d

sudo cp ./resource/rc.d/istatserver /etc/rc.d/istatserver
sudo /etc/rc.d/istatserver start

Security Notes

  • The service runs as a dedicated istat user where supported.
  • Configuration and database files live in /usr/local/etc/istatserver/.
  • The systemd unit runs the process in the foreground under systemd supervision.
  • Linux RAPL power readings can be exposed to the istat user with a narrow udev rule instead of running the daemon as root.
  • Self-signed certificates use RSA-2048 with SHA-256 through OpenSSL's modern EVP API and are stored in:
/usr/local/etc/istatserver/key.pem
/usr/local/etc/istatserver/cert.pem

To expose Intel RAPL readings without root, install a udev rule such as:

SUBSYSTEM=="powercap", KERNEL=="intel-rapl:*", TEST=="%S%p/energy_uj", GROUP="istat", MODE="0440"

Then reload and apply it:

sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=powercap

Notes

The native replacement macOS viewer prototype is kept in a separate private repository. This repository contains the server and server-side helper assets only.

        :::::::::   :::::::     ::::      ::::    :::   ::::::::    ::::::::
       :+:    :+:      :+:    :+: :+:    :+:+:   :+:  :+:    :+:  :+:    :+:
      +:+    +:+      +:+   +:+   +:+   :+:+:+  +:+  +:+         +:+    +:+
     +#++:++#+       +#+  +#++:++#++:  +#+ +:+ +#+  :#:         +#+    +:+
    +#+    +#+      +#+  +#+     +#+  +#+  +#+#+#  +#+   +#+#  +#+    +#+
   #+#    #+#  #+# #+#  #+#     #+#  #+#   #+#+#  #+#    #+#  #+#    #+#
  #########    #####   ###     ###  ###    ####   ########    ########

About

A system monitoring daemon that sends stats to iStat View for iOS and iStat View for macOS.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 89.7%
  • M4 4.6%
  • Shell 3.2%
  • Makefile 1.3%
  • Other 1.2%