Skip to content

Getting Started

Rod Christiansen edited this page Oct 8, 2026 · 3 revisions

Getting Started

The shortest path from a fresh Mac to a device visible in your ReportMate dashboard. You need a running ReportMate API and a client passphrase or API key that it accepts.

1. Install the package

Download ReportMate-<version>.pkg from the repo's Releases page and install it.

sudo installer -pkg ReportMate-2026.10.07.2024.pkg -target /

The GitHub release artifact is unsigned and unnotarized. For fleet deployment, sign and notarize it with your own Developer ID first — see Building and Releasing.

The postinstall script installs osquery 5.21.0 only when the Mac has no osquery at all, writes default preferences, loads the LaunchDaemons, and starts a background --hello check-in followed by one forced collection of every enabled module. With ApiUrl and a credential already in place (from a profile or a config package), the device appears in the dashboard within seconds of install.

2. Point it at your API

Write the two settings the client needs to reach the API. ApiUrl is the base URL; the client appends /api/v1/events itself.

sudo defaults write /Library/Preferences/com.github.reportmate ApiUrl -string "https://reportmate.example.com"
sudo defaults write /Library/Preferences/com.github.reportmate Passphrase -string "your-client-passphrase"

For a managed fleet, deliver these through an MDM configuration profile in the com.github.reportmate domain instead; a profile-forced value beats the plist. See Configuration.

3. Grant Full Disk Access

Several modules read TCC-protected locations. Without the grant, the management module's osquery queries stall in a TCC check that has no UI to resolve. Deploy ReportMate-FullDiskAccess.mobileconfig through your MDM after replacing the TEAMID0000 placeholder with your own Team ID. The template is in the repo at Sources/Resources/profiles/ and inside the installed app at /Applications/Utilities/Managed Reports Runner.app/Contents/Resources/profiles/. See Installation for the extension's entry.

4. Run a collection by hand

The binary refuses to run as anything other than root.

sudo /usr/local/bin/managedreportsrunner --run-modules inventory,system -vv

You should see a configuration banner, per-module progress, and Transmission successful at the end.

5. Verify

Check the client's own log for the outcome of the run.

sudo tail -40 "/Library/Managed Reports/logs/reportmate.log"

Confirm the daemons are loaded.

sudo launchctl list | grep com.github.reportmate

Inspect the exact payload that was sent, from the newest cache directory.

sudo ls -t "/Library/Managed Reports/cache" | head -1

The device appears in the dashboard keyed by its serial number. A device with serial SERIAL123 reports as that serial with a UUID derived from it.

What happens next without you

Daemon Schedule Modules
com.github.reportmate.hourly every 3600 s security, network, management, hardware (quick storage)
com.github.reportmate.fourhourly every 14400 s applications, inventory, system, identity, peripherals
com.github.reportmate.daily 09:00 plus up to 59 min jitter hardware (deep storage)
com.github.reportmate.allmodules 04:00 plus up to 2 h jitter all enabled modules
com.github.reportmate.installs on demand, kickstarted by Munki installs
com.github.reportmate.appusage continuous application usage watcher
com.github.reportmate.helper on demand, when the GUI connects privileged helper for the GUI

Clone this wiki locally