Repository navigation
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.
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.
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.
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.
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.
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.
| 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 |
MIT licensed. — reportmate.app