English | Русский
Metrics is a macOS system monitor focused on fast, clear visibility into CPU load, CPU temperature, and RAM usage.
The product is designed around a beautiful desktop widget-like panel that feels native on macOS, stays easy to understand at a glance, and requires almost no setup.
Experience a clear, high-fidelity view of your Mac's vitals. Track per-core activity, thermal trends, and memory pressure in real-time.
General dashboard view with core activity and system state.
Identify resource hogs quickly with the built-in process manager, sorted by CPU or Memory impact.
Stay informed without opening the app. Metrics provides a full set of native macOS widgets for your desktop or Notification Center.
| Family | Light | Dark |
|---|---|---|
| Small | ![]() |
![]() |
| Medium | ![]() |
![]() |
| Large | ![]() |
![]() |
- Live CPU usage with total load, per-core detail, and short-term trends.
- CPU temperature via macOS thermal state in production releases.
- Direct CPU sensor temperature in debug and development builds.
- RAM usage with used, free, compressed, and swap indicators.
- A desktop panel that looks like a widget but supports real-time updates.
- An optional menu bar companion for quick access and settings.
- A native WidgetKit extension for lower-frequency snapshot views.
- Simple onboarding, start-at-login support, and low-power defaults.
Build and test the current implementation:
swift build
swift test
open Metrics.xcodeprojPrerequisites:
- Install Xcode 26 or later.
- Use macOS 15 or later for development and testing.
- Open
Metrics.xcodeprojin Xcode. - Run the
Metricsscheme once so the app writes shared snapshots for the widget. - Production release builds use thermal-state temperature fallback by design.
Current user flow:
- Run
swift run MetricsApp. Or run theMetricsscheme from Xcode when you want the app and widget workflow together. - Watch live CPU, temperature fallback state, and RAM updates in the main panel.
- Open the menu bar extra for a compact summary.
- Toggle between Celsius and Fahrenheit from the UI.
- Add the
Metrics Overviewwidget from the macOS widget gallery after the app has been launched at least once.
Example scenarios for the first release:
- Watch CPU load and temperature during builds or exports.
- Keep RAM pressure visible while running multiple heavy apps.
- Place a compact panel in the corner for all-day monitoring.
- Use the menu bar popover when you need more context without opening a full app window.
Planned settings:
- Refresh interval for live metrics.
- Temperature unit: Celsius or Fahrenheit.
- Compact, balanced, or expanded layout.
- Color thresholds for warning states.
- Start at login.
- Click-through desktop mode.
- Optional detailed per-core view.
Current technology stack:
- Swift 6
- SwiftUI for the app, settings, and desktop panel
- Observation for UI state propagation
- WidgetKit for the desktop widget extension
- App Group storage for widget snapshot sharing
- Build-aware temperature backend policy: release uses thermal fallback; debug can use direct sensors
Current module layout:
MetricsApp: SwiftUI app shell, dashboard window, and menu bar summaryMetricsCore: domain models, formatting, thresholds, and live samplersMetricsWidgetExtension: WidgetKit target that renders shared snapshots
Planned follow-up modules:
MetricsHelper: optional privileged helper for precise temperature access
Current implemented files live under:
Sources/MetricsCoreSources/MetricsAppWidgets/MetricsWidgetExtensionTests/MetricsCoreTests
Development principles:
- Follow TDD for domain logic and formatter rules.
- Keep sensor code isolated behind protocols for testability.
- Prefer standard library and system frameworks.
- Keep the desktop panel lightweight and energy aware.
MIT









