Know if your Mac is actually struggling.
Live pressure signals folded into one health score, with optional AI, network, and Finder context. No telemetry and no outbound requests unless you use or enable a network feature.
The panel
Default · Overview · Memory
Themes
Default · Bento · Sun Gold · Ink Night
What it reads
11 signals · 1 score- CPU load %
- Per-core usage P + E
- GPU utilization %
- Pressure level
- Used / total GB
- Swap ratio
- Disk capacity GB
- Read / write MB/s
- Up / down KB/s
- Proxy state TUN
- Exit node geo
- Battery %
- Temperature °C
- Fan RPM
- Claude Code 5h / 7d
- Codex 5h / 7d
- Gemini quota
One number for "is it sluggish right now"
The 0–100 score reads live pressure, not capacity. CPU saturation, memory pressure and swap, load average per core, temperature and thermal throttling, GPU. A Mac with 30 GB used and many apps open stays green if it isn't actually struggling. The score only drops when the system is.
A single saturated dimension caps the total, so the number tracks the bottleneck you feel, not a flattering average.
Network truth, not just speed
Throughput is the easy part. Light Stats also detects whether you are behind a proxy and, when you opt in, which exit node you are actually leaving through, with its geo-location and AS number.
Exit lookup is off by default, and the first time you enable it the app explains exactly what it sends. See the privacy policy for every optional network behavior.
Claude Code, Codex, and Gemini usage
When enabled, Light Stats uses credentials already stored by each provider's CLI to request current subscription windows from that provider. Optional Claude and Codex warmup can send a minimal headless message after a rolling window resets; it has a separate switch and is off by default.
Developer actions where the files are
The optional Finder extension can copy paths and names, open a chosen terminal, create files from curated templates, move or copy selections, open them with configured apps, toggle hidden state, and start cmux windows or workspaces.
Nothing extra runs until you ask
Monitoring stays read-only. AI requests, exit-node lookup, automatic update checks, the Beta update channel, Finder actions, window and scroll event taps, and display keep-awake are all opt-in. A clean install makes no outbound request and asks for no Accessibility permission.
Four looks for the instrument, not the settings sheet
Default is the cold-start readout (system materials: Liquid Glass on macOS 26+, ordinary chrome on macOS 15). Bento Grid keeps the classic card layout. Sun Gold and Ink Night are optional mesh surfaces with grain and light-dynamics controls. Settings stays a plain white tool panel so configuration never competes with the dial.
Light Stats is local by default. It has no analytics, crash reporting, advertising, account system, or developer-operated telemetry endpoint. Optional features contact only the service needed to perform the action described below.
Exit-node lookup, AI usage requests, Claude/Codex usage-window warmup, automatic update checks, and the Beta update channel are all off by default. A clean install reads local system metrics only and makes no network request.
Data collection
Light Stats does not collect or send data to the developer. System metrics are read locally and shown on your device. The app reads, for display or user-requested actions:
- CPU load and per-core utilization
- GPU utilization (supported Macs)
- Memory pressure, used, available, swap
- Disk capacity and disk I/O throughput
- Network up/down throughput and local proxy configuration
- Battery, temperature, and fan RPM (supported Macs)
- Running applications and their memory footprint (Memory tab)
- Credentials and local state already stored by Claude Code, Codex, and Gemini CLI, only when the matching AI provider is enabled
- Selected Finder paths and Finder-menu preferences, only when the Finder extension is enabled
Local processing
Metric sampling and scoring happen on your device through macOS system APIs (Mach, IOKit, SMC, CFNetwork, Network). App preferences and Finder-menu configuration are stored locally in UserDefaults and the app group. The app does not upload system metrics or process lists.
Exit-node detection
When enabled, this feature sends a request to a public geo-IP service and caches the result briefly to avoid repeated lookups. It transmits no personal data beyond the network request itself, which necessarily reveals your IP to that service, the same as visiting any website. Disable it and no such request is ever made.
AI usage and optional warmup
When an AI provider is enabled, Light Stats contacts that provider's own usage endpoint using credentials already stored by its CLI. Claude Code and Codex also have separate, off-by-default warmup switches; after a rolling window resets, warmup sends the minimal headless prompt “ok” through the selected provider's CLI, discards normal output, and uses a temporary empty working directory. Gemini has no warmup.
Update checks
A manual update check, or the off-by-default automatic update setting, contacts GitHub Releases. The update channel can be Stable (final releases only) or Beta (also considers prereleases such as v1.9.0-beta.N); Beta is off by default. Downloaded updates must pass codesign, notarization, and Team ID verification before installation.
Local diagnostic logs
The app can write structured diagnostic logs to disk under its support directory (and to Unified Logging). Levels are Off, Errors only, or Full (default Full). Logs are rotated, retained for a limited window, redacted for sensitive fields, and never uploaded to the Light Stats developer.
Third parties
No analytics, crash reporting, advertising, or third-party SDKs. Depending on the switches you enable, requests may go to the selected geo-IP service, Anthropic, OpenAI, Google, or GitHub. Credentials are never sent to a different provider or to the Light Stats developer.
Open source
The full source is on GitHub. You can inspect exactly what the app does, including every network call.
Changes
Any change to this policy will appear here and in the app's release notes. Data handling will never change silently.
Last updated: July 12, 2026
Light Stats is an open source project. Here is how to get help, report issues, or contribute.
Report a bug or request a feature
File an issue on GitHub. Include your macOS version, Mac model, and steps to reproduce. A screenshot of the panel helps.
→ github.com/EvilIrving/light-stats/issuesFor security concerns or private inquiries, email directly. Response within 2–3 business days.
→ jescain2024@gmail.comFrequently asked
- How do I change what shows in the menu bar?
- Click the ellipsis (…) in the panel to open Settings, then toggle items under Status Bar Items. You can also choose which dimensions feed the health score.
- What are the visual themes?
- Settings → General → Theme. Default is the cold-start instrument look; Bento Grid uses cards; Sun Gold and Ink Night are optional mesh surfaces. The Settings window itself stays white and does not follow the panel theme.
- Does exit-node detection cost me privacy?
- Only if you turn it on. It is off by default and shows a disclosure before its first lookup. Other optional network features are documented in the Privacy tab and are also off by default.
- Why do some readings show N/A?
- GPU, fan, and battery require supported hardware. A desktop Mac with no battery, or a Mac without those sensors, shows N/A and drops that dimension from the score.
- Does it affect battery life?
- The default refresh is 2 seconds. You can choose a 5-second interval in Settings to reduce sampling frequency.
- Is force-quitting safe?
- Force quit bypasses an app's normal shutdown and can lose unsaved work. The app confirms first. Prefer a normal quit when you can.