A macOS menu bar system monitor with retro CRT terminal aesthetics.
![]() |
![]() |
| Menu Bar Popover | Floating Window |
- CPU Usage - Per-core usage with sparkline graphs
- Memory - Active, wired, compressed breakdown with segmented bar
- Network - Upload/download speeds with real-time sparklines
- Disk - Volume usage and I/O speeds
- Processes - Top 10 by CPU or memory usage
- Phosphor glow effects on text
- Scanline overlay
- Vignette darkening at edges
- Multiple color themes
- Retro Green - Classic green phosphor CRT
- Amber CRT - Warm amber terminal
- Blue Ice - Cool blue tones
- Matrix - Bright green on black
- Dracula - Purple/pink dark theme
- Light - Light mode for daytime
- macOS 14.0 (Sonoma) or later
- Swift 6.0+ / Xcode 16+ (for building)
git clone https://github.com/CorvidLabs/MacNTop.git
cd MacNTop
swift build -c releaseThe built app will be at .build/release/MacNTop.
swift runOr after building:
.build/release/MacNTop- Left-click - Toggle the dashboard popover
- Right-click - Open context menu
- Open in Window - Detach dashboard to a floating window
- Theme - Select from 6 color themes
- About MacNTop - Version info
- Quit MacNTop - Exit the app
The dashboard can be opened in a standalone floating window that stays on top:
- Right-click β "Open in Window"
- Window persists across spaces
- Receives live updates like the popover
- Right-click β "Close Window" to return to popover-only mode
- CPU/MEM toggle in process list - Click to sort by CPU or Memory
- Scroll to see all sections
- βW - Toggle window mode (from context menu)
- βQ - Quit (from context menu)
MacNTop/
βββ Sources/MacNTop/
β βββ App/
β β βββ AppDelegate.swift # Entry point
β β βββ Application+State.swift # AppState theme management
β βββ MenuBar/
β β βββ StatusBarController.swift # NSStatusItem + popover + window
β β βββ StatusBarIconRenderer.swift
β βββ Models/ # Sendable data models
β βββ Services/ # Actor-based monitors
β βββ Core/
β β βββ MetricsCoordinator.swift # Orchestrates collection
β βββ Views/
β β βββ DashboardWindow.swift # Standalone floating window
β β βββ DashboardView.swift # Main dashboard layout
β β βββ ... # Component views
β βββ Utilities/
β βββ ByteFormatter.swift
βββ Tests/MacNTopTests/ # Unit tests
βββ Package.swift
- Swift Concurrency - Actors for thread-safe monitoring
- AppKit - Native macOS UI
- AppState - State management and persistence
- IOKit - Low-level system metrics
| Metric | API |
|---|---|
| CPU | host_processor_info() |
| Memory | host_statistics64(HOST_VM_INFO64) |
| Network | getifaddrs() with if_data |
| Disk | statfs(), IOKit IOBlockStorageDriver |
| Processes | proc_listallpids(), proc_pidinfo() |
- AppState - Thread-safe state management
Theme selection is persisted automatically via UserDefaults.
This project follows CorvidLabs Swift Conventions:
- Explicit access control on all declarations
- K&R brace style
- No force unwrapping
- async/await for concurrency
- Sendable conformance for cross-boundary types
swift package generate-documentationswift testMacNTop runs entirely locally. No data is collected or transmitted.
- Requires distribution outside App Store (uses restricted APIs)
- Disk I/O monitoring requires IOKit access
- Process monitoring limited to current user's processes
- Fork the repository
- Create a feature branch
- Follow CorvidLabs Swift conventions
- Submit a pull request
MIT License - see LICENSE for details.
Built by CorvidLabs
Inspired by:

