Skip to content

Windows installer

QuartermasterCollectorSetup.exe is a guided Windows installer (NSIS) for the collector — the easiest way to keep a Windows machine feeding your cloud registry. It bundles a portable Node runtime, so the machine needs no Node install, no git clone, no terminal.

  1. Welcome — explains exactly what will happen: pair with your Worker and install an explicit on-demand scanner. No background task is created.
  2. Install location — defaults to %LOCALAPPDATA%\Quartermaster. The install is per-user; no admin rights required.
  3. Components — keeps the thin collector selected and offers Local Companion (advanced: local Drift dashboard), off by default.
  4. Connect — asks for your Worker URL, machine name (defaulting to the Windows computer name), and the admin token. The admin token is used once to pair and is never stored; only the revocable device-scoped token lands on disk (%USERPROFILE%\.quartermaster\, along with scan state).
  5. Install — copies portable node.exe + collector.cjs and pairs the machine. It does not register a Scheduled Task or other persistence.
  6. Finish — optionally runs the first scan immediately in a console so you can watch the initial crawl.

Use %LOCALAPPDATA%\Quartermaster\qm-scan-now.cmd whenever you want to scan. It shows its progress and runs both the scan and queued-jobs pass. Secrets are redacted on-device before upload.

Select the optional Local Companion component if this personal Cloudflare machine should also keep a full local provenance/Drift registry. Installation uses the bundled npm CLI to download native dependencies; the embedding model downloads on first start. It binds only to 127.0.0.1:8765, does not start automatically, and does not synchronize reports into the Worker dashboard.

Terminal window
$companion = "$env:LOCALAPPDATA\Quartermaster\qm-companion.cmd"
& $companion open # start in the background and open #/drift
& $companion status
& $companion stop
& $companion run # foreground mode for troubleshooting

Scheduling is deliberately separate from installation. Review and run the following in PowerShell only if you want an hourly per-user task:

Terminal window
$collector = "$env:LOCALAPPDATA\Quartermaster\qm-collector.cmd"
$command = '"' + $collector + '" scan && "' + $collector + '" jobs'
$action = New-ScheduledTaskAction -Execute $env:ComSpec -Argument ("/d /c " + $command)
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(5) -RepetitionInterval (New-TimeSpan -Hours 1)
Register-ScheduledTask -TaskName "Quartermaster Collector" -Action $action -Trigger $trigger -Description "Explicit opt-in Quartermaster scan and jobs poll"

Inspect or remove it at any time:

Terminal window
Get-ScheduledTask -TaskName "Quartermaster Collector"
Unregister-ScheduledTask -TaskName "Quartermaster Collector" -Confirm:$false
  • Releases: every collector-v* tag builds the installer in CI and attaches it to the GitHub release.
  • CI artifact: the Build collector installer (Windows) workflow can be dispatched manually; the .exe is uploaded as a build artifact.
  • Build it yourself: node installer/windows/build.mjs (needs makensis; NSIS cross-compiles, so this works on Windows, Linux, and macOS).

CI-built installers are code-signed automatically when signing credentials are configured (Azure Trusted Signing, with a classic OV-certificate fallback); locally-built installers are always unsigned — treat CI as the source of release binaries. The bundled node.exe is already signed by the OpenJS Foundation.

For an unattended install generated by the Devices dashboard, all pairing values can be supplied in PowerShell:

Terminal window
& .\QuartermasterCollectorSetup.exe /S `
"/WorkerUrl=https://quartermaster.<you>.workers.dev" `
"/DeviceName=my-laptop" `
"/AdminToken=$env:QM_ADMIN_TOKEN" `
"/LocalCompanion=1" # omit to keep the default thin collector

Settings → Apps (or Uninstall.exe in the install folder) removes program files and cleans up the legacy task created by older installers. It deliberately leaves %USERPROFILE%\.quartermaster so re-installing doesn’t need 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.

Both have their own self-contained installers — see the macOS installer (.run, launchd user agent, no sudo needed) and the Linux installer (.run, systemd user timer or cron, no root needed). On anything else, the manual collector setup works on every platform with Node ≥ 22.