A complete guide to every feature in System Guardian.
System Guardian is a native macOS menu bar app that monitors CPU, GPU, memory, and swap in real time. It provides local alerts and user-controlled actions for resource management.
No. System Guardian runs entirely in user space and does not require administrator access for normal operation.
System Guardian is useful in resource-intensive workflows such as local AI model inference, development environments, and other compute-heavy applications where memory pressure changes quickly during active work.
The Dashboard is a resizable window with a full overview of your system. It contains a health gauge ring, a pressure sparkline chart, detailed memory/CPU/GPU cards, a process list with inline controls, and an events log.
The ring fills based on the ratio of used memory to total memory. Colors: Green (nominal, under 75%), Orange (warning, 75-90%), Red (critical, over 90%). The icon inside changes accordingly.
A small area chart tracking memory trend over the last 5 minutes (up to 60 samples). It uses Catmull-Rom interpolation for smooth curves and colors match the current pressure level.
Yes. The Dashboard window can be resized from 360×500 (minimum) up to 800×1200 (maximum). The content reflows to fit.
| Metric | Description | Source |
|---|---|---|
| Strict Free | Immediately unused memory (free + speculative) | host_statistics64 |
| Available | Strict Free plus reclaimable cache/purgeable memory | host_statistics64 |
| Used | Memory actively in use | Total minus Available |
| Wired | Kernel-locked memory | host_statistics64 |
| Compressed | RAM compressed to save space | host_statistics64 |
| Swap | Memory written to disk | sysctl vm.swapusage |
| Virtual | Total virtual address space | host_statistics64 |
| Total | Physical RAM installed | ProcessInfo.physicalMemory |
System Guardian uses a hybrid absolute + ratio approach to prevent false positives on high-RAM machines. Critical, warning, and nominal thresholds adapt to your total RAM amount, preventing false "warning" alerts on machines with 128+ GB where having 20 GB free is perfectly healthy.
On macOS, "free" memory includes both truly free pages and "speculative" pages (loaded speculatively, instantly reclaimable). System Guardian counts both as free because they are functionally available.
macOS compresses inactive memory pages rather than writing them to swap. This is faster than disk I/O but uses CPU. High compression ratios (above 25% of total RAM) can indicate memory pressure even when "free" memory looks adequate.
macOS manages memory automatically. Memory actions adjust cache behavior and memory pressure; effects vary by workload.
The Standard action calls malloc_zone_pressure_relief(nil, 0), which asks all malloc zones in every running process to release pages they are holding but not actively using. This is a lightweight operation that completes in about 1 second.
The Intensive action performs a stronger memory action than the Standard action. It may take longer and can temporarily reduce responsiveness while it runs.
Results vary by workload and current memory state.
Intensive mode is designed with safety limits, but it can temporarily increase resource usage while running. Use it only when needed and avoid running it during latency-sensitive work.
The labels are intentionally plain:
If an action reports "no significant change," the system may already be in a healthy state with little reclaimable cache at that moment.
Yes. You can trigger memory actions from the menu bar or from the Dashboard.
System Guardian reads per-core tick counts from host_processor_info(PROCESSOR_CPU_LOAD_INFO) twice (with a delay), then calculates the delta between samples. This provides a near real-time CPU estimate based on sample deltas, not cumulative averages. Reported values include User, System, and Total percentages.
On macOS, CPU percentage is measured per-core. 100% means one core is fully utilized. A machine with 10 cores can reach 1000% total. System Guardian's total CPU figure is a weighted average across all cores (0-100%).
In Settings → Advanced, you can set a per-process CPU highlight limit. Processes exceeding this limit appear with a red dot in the menu bar and dashboard. The value is shown as "N×core" (e.g., "2×core" = 200% = 2 full cores).
| Metric | Description |
|---|---|
| Device Utilization | Overall GPU usage percentage |
| Renderer | GPU time on fragment/pixel shading |
| Tiler | GPU time on vertex processing and tiling |
| In-Use Memory | VRAM currently consumed |
System Guardian reads GPU telemetry from IOKit's IOAccelerator service, querying the PerformanceStatistics dictionary. This works with Apple Silicon GPUs (M1 and later).
If your computer's GPU is idle (no rendering, no compute), utilization will naturally be 0%. This is normal. GPU utilization spikes during video playback, 3D rendering, Metal compute workloads, or window compositor activity.
System Guardian lists running processes with their current CPU and memory usage so you can identify heavy resource consumers.
Yes. You can force quit supported user processes from the app interface. Unsaved work in that process may be lost.
Force Quit immediately terminates the selected process. Any unsaved data in that process will be lost.
You can only manage supported processes for your current user account. Critical system processes are protected.
When enabled, System Guardian can notify you when available memory drops below your configured threshold and optionally run a memory action.
When enabled, System Guardian can apply an automated process memory-limit action to selected eligible user processes based on your configured limit and policy mode. Enabling this feature requires explicit user confirmation. Protected system processes are excluded. Process control scope depends on macOS permissions and distribution type (for example App Sandbox vs Developer ID).
System Guardian supports two policy modes in Settings → Advanced for Process Memory Limit Action:
When enabled (Settings → Advanced), System Guardian monitors overall CPU usage and sends a notification when CPU stays above your threshold for a configurable duration (e.g., above 90% for 30 seconds).
Yes. Cooldown periods are applied to automated actions and alerts to reduce repeated notifications and repeated actions.
System Guardian can run memory actions on a recurring schedule (Settings → Advanced). Two modes:
Yes. You can choose the scheduled memory-action method independently from low-memory automation settings.
No. If a manual or automatic action is already running, the scheduled action is skipped. There is also a 5-minute cooldown between scheduled actions.
| Notification | Trigger |
|---|---|
| Low Memory Automation Alert | Available memory dropped below threshold and a memory action was triggered |
| Process Memory Limit Action | A configured process memory limit was exceeded |
| CPU Spike Alert | CPU stayed above threshold for the configured duration |
Enable/Disable: Settings → General → "Enable Notifications." Click "Configure in System Settings..." for macOS-level control over banners, sounds, and Do Not Disturb behavior.
Each automation feature has its own toggle. You can disable specific automation and alert types independently.
When enabled, System Guardian automatically starts when you log into your computer. This uses the SMAppService API (the modern macOS method). Verify in System Settings → General → Login Items & Extensions.
How often System Guardian refreshes all metrics. Range: 2 to 60 seconds. Default: 5 seconds. Lower values give more responsive monitoring but use slightly more CPU. Recommended: 3-10 seconds.
A master toggle to enable or disable all macOS notifications from System Guardian. The "Configure in System Settings..." button opens macOS Notification preferences for fine-grained control.
Per-process memory limit with an enable/disable toggle. Selected eligible user processes over this limit may be force quit (with protected system processes excluded).
Sets the threshold for red highlighting in the menu bar and dashboard. Displayed as "N×core" where 1×core = 100%. This is a visual indicator only — it does not trigger any automatic action.
Overall CPU threshold and duration for alert notifications. Spike duration range: 10 to 120 seconds, step: 5 seconds.
Enable and configure automatic memory actions on a schedule. Choose between interval mode (15 min to 8 hours) or time-of-day mode (once daily at a specific time).
In Settings → Advanced, Diagnostics shows the latest automated-action timestamps and reasons (Low Memory Automation action, scheduled action, process action, CPU spike alert). Use "Copy Diagnostics Snapshot" to export this information for support.
A timeline of actions and alerts. Each event has an icon, a message, and a relative timestamp. The log keeps the 50 most recent events in memory (ring buffer). Events are not persisted to disk.
On first launch, System Guardian detects your computer's total RAM and core count and sets sensible default thresholds. Defaults are tuned to the detected hardware profile.
| Setting | Default Formula | Example (32 GB / 10 cores) |
|---|---|---|
| Low Memory threshold | 15% of total RAM (min 2 GB) | 4.8 GB |
| Per-process memory limit | 25% of total RAM (min 2 GB) | 8 GB |
| CPU highlight | 12.5% of total cores (min 200%) | 200% |
Yes. All thresholds are fully adjustable through sliders in Settings. The hardware-aware values are only applied on first launch.
Yes. On every launch, System Guardian clamps all persisted settings to valid ranges to protect against corrupt UserDefaults. Poll interval: 2-60s, RAM thresholds: 1 GB to 75% of total, CPU thresholds: 100% to (cores × 100)%.
No. System Guardian makes zero network requests. There is no analytics, no telemetry, no update checks, no cloud sync. Your system data never leaves your computer.
System Guardian stores only your settings preferences in the standard macOS UserDefaults system. No logs, no databases, no other files are created.
| Subsystem | API | Function |
|---|---|---|
| Memory | Mach kernel | host_statistics64(HOST_VM_INFO64) |
| CPU | Mach kernel | host_processor_info(PROCESSOR_CPU_LOAD_INFO) |
| GPU | IOKit | IOAccelerator → PerformanceStatistics |
| Swap | sysctl | vm.swapusage |
| Processes | System APIs | Usage listing and manual actions |
| Memory Actions | System memory APIs | User-triggered and optional automated actions |
| Login Item | ServiceMgmt | SMAppService.mainApp |
| Notifications | UserNotifications | UNUserNotificationCenter |
At the default 5-second poll interval, approximately 0.1-0.3% CPU on average. Kernel API calls take less than 1ms each. Process scanning via ps is the slowest operation and runs on a background thread.
~2,400 lines of Swift across 7 source files. No external dependencies.
Make sure System Guardian is running (check Activity Monitor). If you have many menu bar items, macOS may hide some — try closing other menu bar apps or using a menu bar management tool.
This can be normal when the system is already in a healthy state. Results depend on current workload and reclaimable cache.
Some workloads naturally remain high for a while (for example compiling or rendering). Wait for the next poll cycles and verify usage trends over time.
No. System Guardian is limited to supported processes under your current user account and cannot control protected system services.
System Guardian stores settings in macOS UserDefaults. These persist across updates as long as the bundle identifier remains the same. If settings appear reset, the hardware-aware defaults may have been reapplied due to a migration flag.
System Guardian is signed and notarized by Apple. If you see this warning:
This only happens once per downloaded version.