Skip to content

Alaxay8/Metrics

Repository files navigation

English | Русский

Metrics

Overview

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.

App Overview

Main Dashboard & System State

Experience a clear, high-fidelity view of your Mac's vitals. Track per-core activity, thermal trends, and memory pressure in real-time.

Main Overview General dashboard view with core activity and system state.


Dark Mode dashboard overview.

Process Management

Identify resource hogs quickly with the built-in process manager, sorted by CPU or Memory impact.

Process Manager

Desktop Widgets

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 Small Small Dark
Medium Medium Medium Dark
Large Large Large Dark

Features

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

Quick Start

Build and test the current implementation:

swift build
swift test
open Metrics.xcodeproj

Installation

Prerequisites:

  1. Install Xcode 26 or later.
  2. Use macOS 15 or later for development and testing.
  3. Open Metrics.xcodeproj in Xcode.
  4. Run the Metrics scheme once so the app writes shared snapshots for the widget.
  5. Production release builds use thermal-state temperature fallback by design.

Usage

Current user flow:

  1. Run swift run MetricsApp. Or run the Metrics scheme from Xcode when you want the app and widget workflow together.
  2. Watch live CPU, temperature fallback state, and RAM updates in the main panel.
  3. Open the menu bar extra for a compact summary.
  4. Toggle between Celsius and Fahrenheit from the UI.
  5. Add the Metrics Overview widget from the macOS widget gallery after the app has been launched at least once.

Examples

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.

Configuration

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.

Development

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 summary
  • MetricsCore: domain models, formatting, thresholds, and live samplers
  • MetricsWidgetExtension: WidgetKit target that renders shared snapshots

Planned follow-up modules:

  • MetricsHelper: optional privileged helper for precise temperature access

Current implemented files live under:

  • Sources/MetricsCore
  • Sources/MetricsApp
  • Widgets/MetricsWidgetExtension
  • Tests/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.

License

MIT

About

A sleek and native macOS system monitor for CPU load, temperature, and RAM usage with Desktop Widgets support.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors