Repository navigation
Personal AI Router 0.8.0 — macOS Apple Silicon
Unsigned and not notarized. Not a production-ready or NVIDIA-signed distribution. It targets macOS arm64 only; Windows, Linux desktop and Intel Mac packages are not included. Privileged-helper registration and automatic firewall setup stay unavailable in unsigned builds: instead of prompting, PAIR shows Firewall setup: manual guidance under Settings → Service.
It is the fork's Latest release, so 0.7.0 installs are offered it through the in-app updater, and scripts/install-mac.sh installs it by default. Earlier releases remain on the releases page.
Upgrade notes
- Versions: Desktop 0.8.0 ships service product 2.6.0, with
nvpair-node-infoandnvpair-engine-managerat 1.3.0. The relay envelope protocol stays v2, so upgrade desktop/TUI and services together. - Compatibility: no JSON-RPC method was removed.
engine:install-tool,engine:remote-install-tooland the/v1/node-infosensorsobject are additive. - Mixed clusters: installing macmon on a remote peer needs that peer on engine-manager 1.3.0 or newer. An older peer answers with a generic error; install macmon on it by hand, or upgrade it first.
- macmon: it is a Homebrew dependency PAIR can install for you. It is not bundled, and macmon's own licence (MIT) is not part of this package.
What this release adds
Sensors on Apple Silicon node cards
- Sensors drawer. A new thermometer button on Apple Silicon node cards opens four tiles:
- Temperature: the hotter of CPU and GPU, both shown underneath.
- Fans: each fan's speed against its maximum.
- Power: system watts, with the CPU, GPU and Neural Engine split.
- Memory: the memory pressure level, with swap use.
- Badges. The collapsed card shows Throttling when macOS reports thermal pressure above nominal, and Memory pressure at warning or critical. Colour comes only from macOS's own pressure levels; Apple publishes no safe temperature limits, so temperatures are never coloured.
- Install macmon from the card. Temperature, fan and power readings come from macmon, which reads Apple's sensors without
sudo. When it is missing, the drawer offers Install macmon, which runsbrew install macmonon this machine or on a trusted cluster peer. Without Homebrew, it shows the command to copy instead. - No macmon needed for thermal pressure, memory pressure and swap, which PAIR reads directly.
- Nothing is fabricated. An unmeasured reading shows "—", never
0, and a fanless Mac reads "No fans". - Display-only: sensor readings don't change scheduling or routing.
Aligned metrics layout
- Key/value groups. Node cards, job cards and the performance legend show their metrics as aligned key/value groups. Each group names its window once ("Last 60 s", "Since broker start", "This request", "Engine total", "Engine average").
- Formatting. The per-model breakdown is a table, values use tabular figures, and an unreported value reads as a muted dash.
- Keyboard access. Legend rows are buttons, so soloing a series works from the keyboard.
Full list: CHANGELOG.
Validation
Built from 2aecf6d (merge of the release-prep PR #23) on a clean tree. Its tree is identical to the gated release-prep commit 54eff56.
- Repository gate:
make checkandmake testpass. That covers 726 desktop unit tests, every Go module, and the cross-process suite inservices/tests. The cross-process suite failed 15 tests at the 0.7.0 build only because a running PAIR app held its ports; no app was running this time. - Release checks:
npm run dead-code:checkandnpm run licenses:checkpass (298 dependencies attributed).- SPDX headers pass.
scripts/install-mac.shpassesbash -nandshellcheck, and its 95 installer tests pass.
- Race detector:
go test -racepasses in node-info and engine-manager. - Skipped tests (untested, not passing): five Go tests skip on the build machine. Four engine-manager tests can't resolve which process owns a port, and one live oMLX test skips.
- Feature review: the sensors feature was reviewed per task, then as a whole branch by an independent model (two passes), before merge (#22).
- Live check of the feature in the desktop app on an Apple M5 Max (macOS 27.2):
- The local card's drawer showed real readings, with no badges.
- After
brew uninstall macmonand the running macmon process exiting, node-info reportedmissingwith no zeroed values. The card offered Install macmon, and the Memory tile kept working. - Clicking Install macmon finished in about 11 s, and readings were back on the card at 12 s with no restart.
- Package checks:
- Versions: the app reports 0.8.0. All 14 bundled service binaries report their
services/versions.jsonversions and are arm64-only, and the bundled manifest reports product 2.6.0. - Sensors in the shipped build: the packaged
nvpair-node-infoserved live sensors and exited cleanly with its macmon child. - Licences:
LICENSE,LICENSE.electron.txt,LICENSES.chromium.htmlandTHIRD_PARTY_NOTICES.mdare present in the packaged app. - Contents: the app inside the DMG and inside the ZIP is identical to the built bundle (content-manifest SHA-256
ce52ed9e21cf955d7eb953d505ea675f9a4d51d057da57897cc30b0066a3b54c, 291 files).service-binaries-mac-arm64.zipmatches the bundledcli-bin. - Checksums:
NVPAIR-Setup-0.8.0-arm64.dmg: SHA-256101d1d852797f9b9dc5c4716a885a71a312f51c9c14e8dff3d49929fcb617066NVPAIR-Setup-0.8.0-arm64.zip: SHA-25696b2ddef52482123aa53f86f2ec6eb0096efb9c145404e6f7056e36893461f8bservice-binaries-mac-arm64.zip: SHA-25633e19cbaa7af51c2026aac26744a12f6e92a76aff1e4cc59aeedf1815f8da9e8
- Signing and updates: the update feed points at this fork. Code signing is ad-hoc only.
- Versions: the app reports 0.8.0. All 14 bundled service binaries report their
Assets
NVPAIR-Setup-0.8.0-arm64.dmgand.zip, with their blockmaps.service-binaries-mac-arm64.zip: the packaged service binaries.SHA256SUMS.- The macOS update feeds
latest-mac.yml/latest-arm64-mac.yml.
Not validated
- Remote install: installing macmon on a remote cluster peer from the card was not tested live, because no second Mac was in the cluster. It is covered by engine-manager unit tests, including the pin gate and error-code round trip.
- Packaged app: a full launch of this packaged app (the live check above used the development build from the same commit). Also not validated: fresh install on a new machine, upgrade from 0.7.0 on a live machine, uninstall, purge, and corrupt- or interrupted-download handling.
- Fanless hardware: sensor behaviour on fanless Macs and on chips other than the M5 Max. macmon's output can differ between chips and macOS releases; PAIR reads only its stable fields, and anything unparseable shows "—".
- Known minor follow-ups:
- Thermal pressure can lag up to about 10 s when a card is opened after the node has been idle.
- A node that stops answering keeps its last sensor readings, including badges, matching how CPU and GPU telemetry already behave.
- Other platforms: Windows, Linux desktop and Intel Mac runtime.
- Performance: no profiling of this build; no performance change is claimed.
- Apple trust: no Developer ID signing or notarization; Gatekeeper may block first launch.