Configuration Reference
Complete reference for all Pulse Endpoint preference keys. Configure via Settings UI, defaults command, or MDM Configuration Profile.
Preference Domain: com.qlabs.pulse
Most settings can be configured via the Settings UI, defaults command, or MDM Configuration Profile. Settings deployed via MDM are locked in the UI. Most settings can be managed via MDM. CLI flags (--interval, --duration, --headless) also work but MDM takes precedence when set. --watch is CLI-only.
Settings Availability Reference
All settings are configurable via MDM profiles. The few that are also available via CLI are listed below. When both are used, MDM always takes precedence.
| Setting | CLI Flag | Notes |
|---|---|---|
intervalSeconds | --interval | Persistent; MDM takes precedence if set |
captureDurationMinutes | --duration | One-shot (cleared after session starts); MDM takes precedence |
headlessMode | --headless / --no-headless | Persistent toggle; MDM takes precedence if set |
licenseKey | --license | Deploy via MDM or activate via CLI |
watchedProcesses | --watch | CLI only (not MDM-managed); one-shot, cleared after session starts |
All other settings (metric toggles, storage, upload, alerts — 28 keys) are MDM-only. See sections below for details.
General
autoStartWhen enabled, Pulse Endpoint automatically begins collecting metrics when the application launches. Useful for MDM deployments where monitoring should start without user interaction.
false<key>autoStart</key>
<true/>intervalSecondsHow often Pulse Endpoint collects and displays metrics (1-10 seconds). This unified setting applies to the popup refresh, local storage, and Splunk upload rate. Also configurable via CLI: pulse --start --interval 5
2<key>intervalSeconds</key>
<integer>5</integer>captureDurationMinutesMaximum duration in minutes for a monitoring session. When set, Pulse Endpoint automatically stops collection after the specified time. 0 means unlimited (no auto-stop). Also configurable via CLI: pulse --start --duration 60. MDM takes precedence if set. CLI value is one-shot (cleared after monitoring starts).
0<key>captureDurationMinutes</key>
<integer>60</integer>watchedProcessesList of process names to monitor separately with aggregated CPU, memory, network, and disk metrics. CLI-only (not MDM-managed). Set via repeatable --watch flags with --start. One-shot: cleared after monitoring begins.
[] (empty)pulse --start --watch "Google Chrome" --watch "zoom.us"User Interface
minimalUIShow the menu bar icon but hide the detailed metrics preview in the popover. Only status indicators are shown.
false<key>minimalUI</key>
<true/>logLevelControls log verbosity: 0 = Debug (all messages), 1 = Info, 2 = Warning (default), 3 = Error only. Logs are written to ~/Library/Logs/Pulse Endpoint/pulse.log. Set to 0 for troubleshooting, then restore to 2.
2<key>logLevel</key>
<integer>0</integer>Metric Collection
Each metric category can be independently enabled or disabled.
collectCPUCollect CPU load average (1m, 5m, 15m), usage breakdown (user, system, idle), and thermal throttle status. Essential for performance monitoring.
true<key>collectCPU</key>
<false/>collectMemoryCollect memory usage (active, wired, compressed, free), pressure level (normal, warning, critical), and swap activity. Critical for diagnosing slowdowns.
true<key>collectMemory</key>
<false/>collectDiskCollect disk space usage (total, used, free) and I/O throughput (read/write KB/s). Useful for monitoring storage-intensive workloads.
true<key>collectDisk</key>
<false/>collectNetworkCollect network interface statistics (bytes/packets in/out, errors) and connectivity status. Useful for diagnosing connectivity and bandwidth issues.
true<key>collectNetwork</key>
<false/>collectProcessesCollect top CPU and memory consuming processes. This is the most resource-intensive metric as it spawns /bin/ps for system-wide process visibility. Disable to reduce overhead on resource-constrained systems.
true<key>collectProcesses</key>
<false/>aggregateProcessesCombine related processes by app name in the UI (e.g., all Chrome helpers shown as one entry). Useful when browsers/apps spawn many helper processes.
false<key>aggregateProcesses</key>
<true/>collectGPUCollect GPU utilization percentage, memory usage, and top GPU processes. Keep enabled for creative/video workloads. Can disable for general office use.
true<key>collectGPU</key>
<false/>collectPowerCollect battery state (charging, discharging, charged), power source (AC/battery), charge percentage, and sleep prevention assertions. Keep enabled for laptops. Can disable for desktop-only fleets.
true<key>collectPower</key>
<false/>collectSystemCollect uptime, macOS version, hardware model, CPU brand, and chip description. Low overhead, provides essential inventory data for fleet management.
true<key>collectSystem</key>
<false/>showPIDsInUIShow process IDs in the process list UI. Disable for a cleaner display.
true<key>showPIDsInUI</key>
<false/>Local Storage
storageEnabledStore collected metrics locally in JSONL format. This is the default and recommended option.
true<key>storageEnabled</key>
<true/>maxStorageMBMaximum disk space in megabytes for local metric storage. Oldest files are deleted when this limit is exceeded.
500<key>maxStorageMB</key>
<integer>500</integer>retentionDaysNumber of days to retain metric files before automatic deletion.
7<key>retentionDays</key>
<integer>30</integer>rotationPolicyHow often to rotate metric files. Each rotation creates a new timestamped file.
daily<key>rotationPolicy</key>
<string>hourly</string>Alerts
Native macOS notifications for high CPU usage and memory pressure events.
alertsEnabledEnable alert notifications. When disabled, no alerts are shown regardless of threshold violations.
false<key>alertsEnabled</key>
<true/>alertCPUThresholdCPU usage percentage that triggers a high CPU alert.
90<key>alertCPUThreshold</key>
<integer>80</integer>alertSustainedSecondsNumber of seconds CPU must exceed threshold before triggering alert. Set to 0 for immediate alerts.
0<key>alertSustainedSeconds</key>
<integer>30</integer>alertMemoryPressureLevelMemory pressure level that triggers alerts. 0=disabled, 2=warning and critical, 4=critical only.
4<key>alertMemoryPressureLevel</key>
<integer>2</integer>alertCooldownMinutesMinimum time between repeated alerts of the same type to prevent notification spam.
15<key>alertCooldownMinutes</key>
<integer>30</integer>alertInBackgroundCheck thresholds even when monitoring is stopped. Uses 10-second check interval.
false<key>alertInBackground</key>
<true/>alertMemorySustainedSecondsSeconds memory pressure must persist before alerting. 0 = immediate.
0<key>alertMemorySustainedSeconds</key>
<integer>30</integer>alertShowNotificationShow macOS notification when alert fires. Disable for silent logging only.
true<key>alertShowNotification</key>
<false/>alertLogEventsLog alert events to storage for upload to Splunk. When disabled, alerts only trigger notifications.
true<key>alertLogEvents</key>
<false/>Custom Alert Messages
Custom title for CPU alert notifications. Leave empty for default ('High CPU Usage').
""<key>alertCPUNotificationTitle</key>
<string>IT Alert: High CPU</string>alertCPUNotificationBodyCustom body for CPU alert notifications. Placeholders: {value} = current CPU %, {threshold} = configured threshold.
""<key>alertCPUNotificationBody</key>
<string>CPU is at {value}%, exceeds {threshold}%</string>Custom title for memory alert notifications. Placeholder: {level} = 'warning' or 'critical'.
""<key>alertMemoryNotificationTitle</key>
<string>Memory Alert ({level})</string>Custom body for memory alert notifications. Placeholder: {level} = 'warning' or 'critical'.
""<key>alertMemoryNotificationBody</key>
<string>Memory pressure is {level}. Please close unused apps.</string>Licensing
licenseKeyBase64-encoded RSA-signed license key. Can be deployed via MDM Configuration Profile or activated per-machine using the --license CLI flag.
""<key>licenseKey</key>
<string>YOUR-LICENSE-KEY</string>