Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OSXecs

A Speccy-style system information and hardware utility for macOS — Apple-standard UI, real-time monitoring, fan control, hardware tests, and diagnostics. Built with SwiftUI and native system APIs.

Main app

Status bar


Table of contents


Features overview

Category Features
Summary Dashboard cards (OS, CPU, RAM, motherboard, graphics, storage), system health score, stress history, SSD lifespan predictor, display aging, thermal map, live CPU/RAM charts, export report
Operating System macOS version, build, architecture, kernel, boot mode, install date, uptime, computer/host name
Users Current user, UID/GID, home, shell; list of local user accounts
CPU Model, cores, frequency, cache, instruction sets, vendor; per-core usage bar chart
RAM Total/used/free, wired/compressed, usage pie chart; slot details (vendor, part number, size)
Motherboard Apple model, serial, UUID, Boot ROM
Graphics GPU list (IOKit), VRAM, Metal support; display list with resolution, scale, rotation
Storage Volumes, partitions, capacity/used/free; usage pie chart
Fan Control SMC-based: read/write fan RPM, manual target, CPU/GPU/battery temps (Intel & Apple Silicon with fans)
Sensors All SMC sensors: temperatures, voltages, current, power, fan speeds; lid state, AC power, ambient/backlight
Trackpad Scale Force Touch pressure → weight estimate (e.g. small objects on trackpad)
Task Manager Process list with CPU/memory, sortable columns; kill (non-system) processes
Optical / Audio / Network / Peripherals Optical drives; audio devices (input/output); network interfaces; USB/peripherals
Tests Display colors, trackpad, keyboard (visual layout), trace, microphone, camera, speaker, audio devices, sensors — pass/fail status
Legal Terms and Conditions; Privacy Policy (sidebar). First launch requires acceptance to use the app.
Status bar Optional menu bar icon with live stats (CPU %, memory %, CPU temp, etc.); customizable items; launch at login; start minimized

Screenshots

Main application Status bar menu
Main app Status bar

The main app shows the Summary dashboard: overview cards, health score, stress history, SSD lifespan, display aging, thermal map, and live CPU/memory charts. Use the status bar icon to see live CPU temperature (and other optional stats) without opening the window.


Features in detail

Summary

  • Overview grid — Cards for OS, CPU, RAM, motherboard, graphics, storage with key metrics.
  • System health score — Single score from temperatures, fan usage, battery cycle count and max capacity.
  • Hardware stress history — Aggregated CPU/GPU temps and fan usage over the last 30 days.
  • SSD lifespan predictor — SMART data (TB written, % used) and optional writes/day → years remaining.
  • Display aging monitor — Tracks display usage over time for aging metrics.
  • Thermal map — Top-down MacBook-style view with temperature labels and heat indication (e.g. red for hot zones).
  • Live charts — CPU usage (overall + per-core) and memory usage, updating every second.
  • Export report — Save a .txt report (OS, CPU, RAM, GPU, storage, network) from the Summary screen.

Operating System

Field Description
Name, version, build macOS version string and build number
Architecture e.g. arm64, x86_64
Kernel, boot mode Kernel version; boot mode (e.g. EFI)
Install date, uptime OS install date; system uptime
Computer / host name Network and host identifiers

Users

  • Current user — Name, UID, GID, full name, home directory, shell.
  • Local users — List of local accounts (from dscl), excluding system users.

CPU

  • Model name, vendor, core count, frequency, cache sizes, instruction sets (e.g. SSE, AVX).
  • Per-core usage — Bar chart of each core’s CPU usage in real time.

RAM

  • Total, used, free, wired, compressed; usage percentage.
  • Pie chart — Memory usage breakdown.
  • Slots — Per-slot details (vendor, part number, size) when available (e.g. from system_profiler SPMemoryDataType).

Graphics

  • GPU — List from IOKit; VRAM, Metal support.
  • Displays — Per-display: resolution, scale, rotation, main display flag.

Storage

  • Volumes & partitions — Capacity, used, free per volume.
  • Pie chart — Storage usage by partition.

Fan Control

  • Read — Actual RPM, min/max per fan; CPU, GPU, battery temperatures from SMC.
  • Write — Manual target RPM and manual/auto mode (requires administrator privileges; see Permissions).
  • Error handling — Clear message and instructions (e.g. run with sudo) if write is denied.

Sensors

  • SMC readings — Temperatures, voltages, current, power, fan speeds (all defined SMC keys).
  • System state — Lid open/closed, clamshell mode, AC power, ambient light, keyboard backlight where available.

Trackpad Scale

  • Uses Force Touch trackpad pressure (MultitouchSupport) to estimate weight (e.g. grams).
  • Calibration factor in UI for scaling the reading.

Task Manager

  • Process list — Name (friendly where possible), icon, PID, CPU %, memory; sortable columns.
  • Kill — End non-system processes (uses kill; no sudo in-app).

Tests

Test Description
Display colors Red, green, blue, white, black blocks; pass when verified
Trackpad Live pressure; auto-pass above threshold or manual pass
Keyboard Opens window with visual Mac/Windows keyboard; keys turn green when pressed; pass when all keys pressed
Trace Draw on canvas; pass after drawing
Microphone Live level meter; pass when confirmed working
Camera Live preview; pass when confirmed working
Speaker Play test sound; pass when confirmed
Audio devices Lists default input/output; pass when OK
Sensors Checks CPU/GPU/SSD temps and SMC availability; pass when OK

Status for each test: Pending / Pass / Fail, with a summary card at the top.

Status bar

  • Show/hide — Toggle menu bar icon in Settings.
  • Customizable items — Choose what appears in the dropdown and what appears next to the icon (e.g. CPU temperature without opening the menu).
  • Options — App version, current user, CPU usage, memory usage, GPU usage, CPU/GPU/SSD/battery temperature, fan speed, lid state, power adapter.
  • Launch at login — Register with SMAppService (macOS 13+).
  • Start minimized — Start with window closed (e.g. only status bar visible).

First launch

  • On first launch, Terms and Conditions and Privacy Policy are shown; user must tap I Accept to use the app. Acceptance is stored locally; the Agreements item is not in the sidebar.

Graphs and visualizations

Visualization Location Description
CPU usage bar chart Summary Overall and per-core CPU % (Swift Charts)
Memory pie chart Summary RAM usage breakdown (used / wired / compressed, etc.)
Storage pie chart Summary Per-partition capacity share
Thermal map Summary MacBook top-down layout with temperature labels and heat coloring
Per-core bars CPU detail Real-time bar chart per logical core
RAM usage pie RAM detail Same as Summary memory pie
Stress history Summary Historical CPU/GPU/fan metrics over 30 days
SSD lifespan Summary TB written, % used, optional years remaining
Display aging Summary Display usage over time

Tech stack

Layer Technologies
UI SwiftUI, Swift Charts, AppKit (where needed)
System info sysctl, ProcessInfo, Host, Mach (CPU usage via C bridge), VM statistics
Hardware IOKit (platform, GPU, USB, display, power, lid); private AppleSMC (C bridge) for fans and sensors
Audio CoreAudio (device list); AVFoundation (mic level, camera)
Network getifaddrs, sockaddr_dl
Storage FileManager, diskutil (SMART), system_profiler (e.g. SPMemoryDataType, SPHardwareDataType)
Trackpad scale Private MultitouchSupport (C bridge) for Force Touch pressure
Persistence UserDefaults (settings, agreement); JSON in Application Support (stress history, display aging)
Privileges No App Sandbox (for SMC, process list); optional run with sudo for fan write

Build & run

  1. Open OSXecs.xcodeproj in Xcode.
  2. Select the OSXecs scheme and My Mac.
  3. Product → Run (⌘R).

Minimum: macOS 26 (Xcode 26). For older macOS, lower the deployment target in the project.


Permissions

  • The app is built without App Sandbox so Fan Control can open AppleSMC and Task Manager can list processes.
  • Fan control reading (RPM, temps) works without admin.
  • Fan control writing (manual speed, manual/auto mode) requires administrator access. If you see “denied” or “administrator access required”, quit the app, open Terminal, and run:
    sudo open -a OSXecs
    (Enter your password. Use at your own risk.)
  • Microphone and camera tests use system permission prompts; grant access in System Settings if needed.

Contributing

Feel free to fork this repository and open pull requests for bug fixes, new features, or documentation improvements. Contributions are welcome.

About

Speccy-style system information app for macOS — real-time monitoring, fan control, hardware tests

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages