Two pieces: a server on one device that collects and displays everything, and a client on every device you want to watch.
Server — install on one device
Collects metrics from your clients, stores them, and serves the dashboard on port 8097. Pick the device that stays on.
macOS
native executable · no Python
./mothership-server — it is signed and notarized, so Gatekeeper lets it through./mothership-server register "My Laptop"Windows · Linux · macOS
cross-platform source package
pip install -r requirements.txtpython3 run_server.py — prints the dashboard URLpython3 register_client.py "My Laptop"build_server.bat / build_server.sh on that machine —
PyInstaller cannot cross-compileClients — install on every device
Reports CPU, RAM, disk and top processes to the server. Each client needs the agent.conf that register printed in step 1.
Windows 10 & 11
windows-tray
The previous native build was retired because it still exposed OpenClaw service
controls. Use the current full client ZIP below and run
build.bat on Windows; a cleaned native build can then be uploaded here.
Windows 11 is the primary native target. Unzip either file below — both contain
the same tray app and a CRLF-safe build.bat — then with Python 3.11+:
pip install pystray pillow psutil and python windows_tray.py
To build the native app, extract the ZIP first, then run build.bat.
It creates build.log and pauses with a readable error if Python,
dependencies, or PyInstaller fail.
Internal builds are unsigned. Windows may show Unknown Publisher; confirm this authenticated download is the expected file before choosing More info → Run anyway.
macOS
mac-tray · MacBook
pip install pystray pillow psutil pyobjc-framework-Cocoa,
then python mac_tray.pyUbuntu / Linux
mothership-launcher · Mothership
sudo apt install python3-gi gir1.2-gtk-3.0sudo apt install gir1.2-appindicator3-0.1bash install.sh
Built a new client somewhere else — e.g. windows-metrics-tray.exe from
build.bat on an actual Windows machine, since this server can't compile
Windows binaries itself? Upload it here instead of copying it into the downloads
folder by hand. Requires sign-in as the app owner.
:8097 and prints the address your clients should use.register "device name" per client. It prints that client's agent.conf and ingest token.agent.conf, and it pushes metrics every 60s.