Skip to content

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.)

Terminal window
sh ./QuartermasterCollectorSetup-macos-arm64.run

The guided flow mirrors the Windows wizard:

  1. Explains what will happen, then installs to ~/Library/Application Support/Quartermaster (override with --prefix).
  2. 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.
  3. Offers the Local Companion (advanced) for a private provenance/Drift dashboard (default No), then installs an explicit collector scan command. It does not install a launchd agent or other persistence.
  4. Offers to run the first scan immediately.

The machine scans only when you run the collector, with secrets redacted on-device before upload.

Every prompt has a flag, so fleets and dotfile scripts can install headlessly:

Terminal window
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
Terminal window
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.

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 &amp;&amp; "$HOME/Library/Application Support/Quartermaster/collector" jobs &gt;&gt; "$HOME/Library/Application Support/Quartermaster/collector.log" 2&gt;&amp;1</string>
</array>
<key>StartInterval</key><integer>3600</integer>
<key>RunAtLoad</key><false/>
</dict></plist>

Load, inspect, or remove it explicitly:

Terminal window
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.

  • Releases: every collector-v* tag builds both architectures in CI and attaches them to the GitHub release, each with a .sha256 sidecar — verify with shasum -a 256 -c QuartermasterCollectorSetup-macos-arm64.run.sha256.
  • Build it yourself: node installer/unix/build.mjs --platform macos (needs only tar; builds on any OS).

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.