"CleanMyMac uses 500MB to tell you your Mac is dirty. smol uses 5MB to tell you the truth."
I discovered that:
- Logitech Options+ was running at 70% CPU for 10 months straight
- CleanMyMac was using 11 GB of RAM to "protect" me
- Adobe Creative Cloud had 16+ background processes doing absolutely nothing
After freeing 62 GB of RAM and dropping temperature by 40°C, I built this.
Most system monitors show you scary numbers. smol shows you what actually matters.
| What others show | What smol shows | Why |
|---|---|---|
| "29 GB RAM used!!!" | Memory Pressure: LOW | GB used means nothing on macOS |
| "CPU 85%!!!" | CPU: 15% | Shows actual work, not panic |
| Nothing about swap | Swap: 0 MB | Swap > 0 = real problem |
| "Temperature: High" | 52°C ↓ | Actual degrees + trend |
- Menu bar widget — changes color based on real system health (green/yellow/red)
- CPU, Memory, Temperature, Swap — the metrics that actually matter
- Fan control — monitor and set fan speeds on supported Macs via SMC
- Process analysis — find what's actually eating your resources
Three AI backends with automatic fallback:
| Backend | Requirements | Cost |
|---|---|---|
| Apple AI | macOS 26+, Apple Silicon | Free, on-device |
| MLX | Apple Silicon, model download | Free, on-device |
| Cloud | API key (OpenRouter/Together/Groq/OpenAI) | Pay per use |
If no backend is available, smol still works with built-in template responses.
Features:
- Streaming chat — tokens appear in real-time
- System context — AI knows your current CPU, memory, temp, anomalies
- ML anomaly detection — CoreML-based pattern learning (trains on your usage)
- Natural language — ask "why is my Mac slow?" and get a real answer
- Ghost process detection — finds processes hogging CPU for too long
- Bloatware database — knows problematic apps (Logitech, CleanMyMac, Adobe CC...)
- Cleanup tool — finds orphaned LaunchAgents and leftover folders
Grab the signed, notarised .dmg from the latest GitHub Release (arm64, Apple Silicon). Or build from source — it's fast.
git clone https://github.com/al0x99/smol.git
cd smol
open smol.xcodeproj
# Build & Run (Cmd+R)Requirements: Xcode 26+, macOS 26 (Tahoe). The Apple AI backend uses FoundationModels, which is macOS 26-only.
Note on MLX backend: to enable on-device MLX inference, add the
mlx-swiftSPM dependency in Xcode (File → Add Package Dependencies) and attachMLX,MLXNN,MLXRandomto thesmoltarget. Without it, the MLX engine falls back to placeholder responses — the rest of the app works fine.
See scripts/release.sh. Requires a Developer ID Application certificate and a stored notarytool profile:
xcrun notarytool store-credentials smol-notary \
--apple-id you@example.com --team-id TEAMID --password <app-specific-password>
DEV_ID_APPLICATION="Developer ID Application: Your Name (TEAMID)" \
NOTARY_PROFILE=smol-notary \
scripts/release.sh 1.0.0| App | Disk Size | RAM Usage |
|---|---|---|
| CleanMyMac X | ~500 MB | 200+ MB |
| iStat Menus | ~50 MB | ~80 MB |
| smol | ~5 MB | ~15 MB |
smol.app
├── Menu Bar Widget (real-time status, color-coded)
├── Dashboard (NavigationSplitView sidebar)
│ ├── Overview — CPU, Memory, Swap, Temperature
│ ├── Processes — top consumers, ghost detection
│ ├── Alerts — anomaly detection, bloatware warnings
│ ├── Temperature — all sensors, fan speeds
│ ├── Fans — speed control via SMC (privileged helper)
│ ├── System — hardware info, uptime
│ ├── AI Assistant — chat, insights, reports, models
│ └── Settings — refresh rate, notifications, AI backend
├── Services
│ ├── SystemMonitor — IOKit/Mach for real metrics
│ ├── TemperatureMonitor — SMC sensor reading
│ ├── SmartAdvisor — AI analysis engine
│ ├── MLAnomalyEngine — CoreML pattern detection
│ ├── LLMInference/ — multi-backend AI
│ │ ├── FoundationModelEngine — Apple AI (macOS 26+)
│ │ ├── MLXEngine — on-device via mlx-swift
│ │ └── OpenRouterEngine — cloud SSE streaming
│ └── KeychainHelper — secure API key storage
└── XPC Helper (com.smol.fanhelper) — privileged fan control
Intel Macs and Apple Silicon expose fan data through different SMC key formats. On M-series machines, RPM values live in keys like F0Ac/F1Ac encoded as IEEE 754 float (flt), not the fixed-point fpe2 used on Intel. Writing to F0Tg / F1Tg starts the fans even when the current RPM is 0. This is why smol ships its own SMC reader via a privileged XPC helper — published SMC wrappers are still Intel-era.
Zero configuration. If you're on macOS Tahoe with Apple Intelligence enabled, it just works.
- Add the
mlx-swiftSPM package to the project (see Build from source) - Go to AI Assistant → Models
- Download an MLX model (e.g. Gemma 2 2B — 1.5 GB)
- Start chatting
- Go to Settings → AI Backend
- Paste your API key
- Pick a provider (OpenRouter, Together, Groq, OpenAI)
- Test connection
Reading CPU temperature requires direct SMC access via IOKit, which isn't allowed in the App Store sandbox. smol is signed and notarized by Apple — just not sandboxed.
- Swift 6 + SwiftUI — native macOS, no Electron
- IOKit — direct hardware access for temperature/fans
- CoreML / CreateML — on-device anomaly detection
- NaturalLanguage — intent detection, sentiment analysis
- FoundationModels — Apple's on-device LLM (macOS 26+)
- Security.framework — Keychain for API keys
- XPC / SMAppService — privileged helper for fan control (SMJobBless fallback for pre-macOS-13)
PRs welcome — see CONTRIBUTING.md for the ground rules. Particularly useful contributions:
- Apps for the bloatware database (
smol/KnownBloatware.json) - Improving anomaly detection algorithms
- New Apple Silicon sensor support
- Translations
Changes are tracked in CHANGELOG.md.
MIT — Do whatever you want, just don't become bloatware yourself.
Made with frustration and Swift.
