macOS installer
QuartermasterCollectorSetup-macos-arm64.run (Apple Silicon; -x64 for Intel)
is a self-contained installer for the
collector — the macOS sibling of the
Windows and
Linux installers. It bundles a portable
Node binary, so the machine needs no Node install and no git clone, and
everything happens per-user — no sudo required.
Because it’s a plain shell script you run from the terminal, Gatekeeper doesn’t apply — no code signing, no notarization, no right-click-open dance. (The bundled Node binary is Apple-notarized upstream by the OpenJS Foundation.)
Install
Section titled “Install”sh ./QuartermasterCollectorSetup-macos-arm64.runThe guided flow mirrors the Windows wizard:
- Explains what will happen, then installs to
~/Library/Application Support/Quartermaster(override with--prefix). - Prompts for your Worker URL and admin token (input hidden). The
admin token is used once to pair and is never stored; only the
revocable device-scoped token lands on disk (
~/.quartermaster/, mode 0600). Re-running over an existing pairing keeps it. - Offers the Local Companion (advanced) for a private provenance/Drift
dashboard (default No), then installs an explicit
collector scancommand. It does not install a launchd agent or other persistence. - Offers to run the first scan immediately.
The machine scans only when you run the collector, with secrets redacted on-device before upload.
Unattended installs
Section titled “Unattended installs”Every prompt has a flag, so fleets and dotfile scripts can install headlessly:
sh ./QuartermasterCollectorSetup-macos-arm64.run --yes \ --url https://quartermaster.<you>.workers.dev \ --name my-mac \ --admin-token "$QM_ADMIN_TOKEN" # or just export QM_ADMIN_TOKEN--roots a,b— scan roots (default: the~/.{tool}dirs that exist)--name machine-name— display name registered in the Devices dashboard--local-companion— install the full loopback provenance/Drift companion--no-local-companion— explicitly keep only the thin collector--skip-connect— install now, pair later with<prefix>/collector connect--uninstall— run the uninstaller of an existing install
After install
Section titled “After install”QM="$HOME/Library/Application Support/Quartermaster""$QM/collector" status # config + tracked count + server health"$QM/collector" scan # incremental scan now"$QM/quartermaster-companion" open # start + open the local Drift dashboard"$QM/quartermaster-companion" stop"$QM/uninstall.sh" # remove (keeps pairing)The companion installs native dependencies only after opt-in, downloads the
embedding model on first start, binds to 127.0.0.1:8765, and keeps a separate
local SQLite registry. Its Drift reports are not synchronized into the personal
Worker dashboard, and it never starts automatically.
Optional: schedule scans yourself
Section titled “Optional: schedule scans yourself”Scheduling is deliberately separate from installation. If you want an hourly
per-user job, review and save this as
~/Library/LaunchAgents/io.quartermaster.collector.plist:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>Label</key><string>io.quartermaster.collector</string> <key>ProgramArguments</key><array> <string>/bin/sh</string><string>-c</string> <string>"$HOME/Library/Application Support/Quartermaster/collector" scan && "$HOME/Library/Application Support/Quartermaster/collector" jobs >> "$HOME/Library/Application Support/Quartermaster/collector.log" 2>&1</string> </array> <key>StartInterval</key><integer>3600</integer> <key>RunAtLoad</key><false/></dict></plist>Load, inspect, or remove it explicitly:
launchctl bootstrap "gui/$(id -u)" "$HOME/Library/LaunchAgents/io.quartermaster.collector.plist"launchctl print "gui/$(id -u)/io.quartermaster.collector"launchctl bootout "gui/$(id -u)/io.quartermaster.collector"Uninstalling removes program files and cleans up launchd state created by older
installers. It deliberately leaves ~/.quartermaster, so re-installing never
needs re-pairing; this also preserves the companion’s SQLite registry and model
cache. Revoke the device server-side and delete that directory to fully
disconnect and remove local companion data.
Get the installer
Section titled “Get the installer”- Releases: every
collector-v*tag builds both architectures in CI and attaches them to the GitHub release, each with a.sha256sidecar — verify withshasum -a 256 -c QuartermasterCollectorSetup-macos-arm64.run.sha256. - Build it yourself:
node installer/unix/build.mjs --platform macos(needs onlytar; builds on any OS).
Requirements
Section titled “Requirements”macOS on Apple Silicon (arm64) or Intel (x86_64) able to run Node 22 —
macOS 11 Big Sur or later. Pick the build matching uname -m; the installer
refuses a mismatch rather than relying on Rosetta.