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.

SettingCLI FlagNotes
intervalSeconds--intervalPersistent; MDM takes precedence if set
captureDurationMinutes--durationOne-shot (cleared after session starts); MDM takes precedence
headlessMode--headless / --no-headlessPersistent toggle; MDM takes precedence if set
licenseKey--licenseDeploy via MDM or activate via CLI
watchedProcesses--watchCLI 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

autoStart
Boolean

When enabled, Pulse Endpoint automatically begins collecting metrics when the application launches. Useful for MDM deployments where monitoring should start without user interaction.

Default: false
Plist example:
<key>autoStart</key>
<true/>

How 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

Default: 2
Plist example:
<key>intervalSeconds</key>
<integer>5</integer>

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

Default: 0
Values: 0 (unlimited), 1–7200 (5 days max)
Plist example:
<key>captureDurationMinutes</key>
<integer>60</integer>
watchedProcesses
Array of String

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

Default: [] (empty)
Plist example:
pulse --start --watch "Google Chrome" --watch "zoom.us"

User Interface

minimalUI
Boolean

Show the menu bar icon but hide the detailed metrics preview in the popover. Only status indicators are shown.

Default: false
Plist example:
<key>minimalUI</key>
<true/>
logLevel
Integer

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

Default: 2
Plist example:
<key>logLevel</key>
<integer>0</integer>

Metric Collection

Each metric category can be independently enabled or disabled.

collectCPU
Boolean

Collect CPU load average (1m, 5m, 15m), usage breakdown (user, system, idle), and thermal throttle status. Essential for performance monitoring.

Default: true
Plist example:
<key>collectCPU</key>
<false/>

Collect memory usage (active, wired, compressed, free), pressure level (normal, warning, critical), and swap activity. Critical for diagnosing slowdowns.

Default: true
Plist example:
<key>collectMemory</key>
<false/>

Collect disk space usage (total, used, free) and I/O throughput (read/write KB/s). Useful for monitoring storage-intensive workloads.

Default: true
Plist example:
<key>collectDisk</key>
<false/>

Collect network interface statistics (bytes/packets in/out, errors) and connectivity status. Useful for diagnosing connectivity and bandwidth issues.

Default: true
Plist example:
<key>collectNetwork</key>
<false/>

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

Default: true
Plist example:
<key>collectProcesses</key>
<false/>

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

Default: false
Plist example:
<key>aggregateProcesses</key>
<true/>
collectGPU
Boolean

Collect GPU utilization percentage, memory usage, and top GPU processes. Keep enabled for creative/video workloads. Can disable for general office use.

Default: true
Plist example:
<key>collectGPU</key>
<false/>

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

Default: true
Plist example:
<key>collectPower</key>
<false/>

Collect uptime, macOS version, hardware model, CPU brand, and chip description. Low overhead, provides essential inventory data for fleet management.

Default: true
Plist example:
<key>collectSystem</key>
<false/>

Show process IDs in the process list UI. Disable for a cleaner display.

Default: true
Plist example:
<key>showPIDsInUI</key>
<false/>

Local Storage

Store collected metrics locally in JSONL format. This is the default and recommended option.

Default: true
Plist example:
<key>storageEnabled</key>
<true/>

Maximum disk space in megabytes for local metric storage. Oldest files are deleted when this limit is exceeded.

Default: 500
Values: 10–1000
Plist example:
<key>maxStorageMB</key>
<integer>500</integer>

Number of days to retain metric files before automatic deletion.

Default: 7
Values: 1–90
Plist example:
<key>retentionDays</key>
<integer>30</integer>

How often to rotate metric files. Each rotation creates a new timestamped file.

Default: daily
Values: daily, hourly
Plist example:
<key>rotationPolicy</key>
<string>hourly</string>

Alerts

Native macOS notifications for high CPU usage and memory pressure events.

Enable alert notifications. When disabled, no alerts are shown regardless of threshold violations.

Default: false
Plist example:
<key>alertsEnabled</key>
<true/>

CPU usage percentage that triggers a high CPU alert.

Default: 90
Values: 1–100
Plist example:
<key>alertCPUThreshold</key>
<integer>80</integer>

Number of seconds CPU must exceed threshold before triggering alert. Set to 0 for immediate alerts.

Default: 0
Plist example:
<key>alertSustainedSeconds</key>
<integer>30</integer>

Memory pressure level that triggers alerts. 0=disabled, 2=warning and critical, 4=critical only.

Default: 4
Values: 0 (disabled), 2 (warning+critical), 4 (critical only)
Plist example:
<key>alertMemoryPressureLevel</key>
<integer>2</integer>

Minimum time between repeated alerts of the same type to prevent notification spam.

Default: 15
Values: 1–60
Plist example:
<key>alertCooldownMinutes</key>
<integer>30</integer>

Check thresholds even when monitoring is stopped. Uses 10-second check interval.

Default: false
Plist example:
<key>alertInBackground</key>
<true/>

Seconds memory pressure must persist before alerting. 0 = immediate.

Default: 0
Plist example:
<key>alertMemorySustainedSeconds</key>
<integer>30</integer>

Show macOS notification when alert fires. Disable for silent logging only.

Default: true
Plist example:
<key>alertShowNotification</key>
<false/>

Log alert events to storage for upload to Splunk. When disabled, alerts only trigger notifications.

Default: true
Plist example:
<key>alertLogEvents</key>
<false/>

Custom Alert Messages

Custom title for CPU alert notifications. Leave empty for default ('High CPU Usage').

Default: ""
Plist example:
<key>alertCPUNotificationTitle</key>
<string>IT Alert: High CPU</string>

Custom body for CPU alert notifications. Placeholders: {value} = current CPU %, {threshold} = configured threshold.

Default: ""
Plist example:
<key>alertCPUNotificationBody</key>
<string>CPU is at {value}%, exceeds {threshold}%</string>

Custom title for memory alert notifications. Placeholder: {level} = 'warning' or 'critical'.

Default: ""
Plist example:
<key>alertMemoryNotificationTitle</key>
<string>Memory Alert ({level})</string>

Custom body for memory alert notifications. Placeholder: {level} = 'warning' or 'critical'.

Default: ""
Plist example:
<key>alertMemoryNotificationBody</key>
<string>Memory pressure is {level}. Please close unused apps.</string>

Licensing

Base64-encoded RSA-signed license key. Can be deployed via MDM Configuration Profile or activated per-machine using the --license CLI flag.

Default: ""
Plist example:
<key>licenseKey</key>
<string>YOUR-LICENSE-KEY</string>