π Localized in 7 languages: πΊπΈ English | πΉπ· TΓΌrkΓ§e | π©πͺ Deutsch | π«π· FranΓ§ais | πͺπΈ EspaΓ±ol | π―π΅ ζ₯ζ¬θͺ | π¨π³ δΈζ
A lightweight, native macOS menu bar app that displays real-time system metrics with beautiful mini graphs.
- CPU monitoring - Usage percentage, temperature, frequency (Intel), per-core tracking with history graph
- Memory monitoring - Used/free memory, active/wired/compressed breakdown
- GPU monitoring - Utilization percentage, temperature, display refresh rate (Hz)
- Network monitoring - Download/upload speeds, local & public IP, session totals
- Disk monitoring - Usage percentage, free space, SSD health (when available)
- Battery monitoring - Charge level, charging status, time remaining, power consumption
- Fan monitoring - RPM for each fan (when available)
- System info - Load average, process count, swap usage, kernel version, uptime, screen brightness
- Multi-language support - Choose your language from the menu (7 languages available)
- Click any card to open the corresponding system app (Activity Monitor, Disk Utility, System Settings, etc.)
- Right-click the menu bar icon for a quick menu with settings and language selection
| Feature | DodoPulse | iStat Menus | TG Pro | Sensei |
|---|---|---|---|---|
| Price | Free | ~$14 | $10 | $29 |
| CPU monitoring | β | β | β | β |
| GPU monitoring | β | β | β | β |
| Memory monitoring | β | β | β | β |
| Network monitoring | β Multi-interface | β Per-app | β | β |
| Disk monitoring | β | β | β | β |
| Battery monitoring | β | β + Bluetooth | β | β |
| Fan control | β | β | β | β |
| Weather | β | β | β | β |
| Optimization tools | β | β | β | β |
| Open source | β | β | β | β |
| Single file | β (~2000 lines) | β | β | β |
Why DodoPulse? Free, open source, lightweight (~1-2% CPU), privacy-focused (no analytics), and easy to audit/modify.
- macOS 12.0 (Monterey) or later
- Apple Silicon or Intel Mac
About notarization: DodoPulse is not currently notarized by Apple. Notarization is Apple's security process that scans apps for malware before distribution. Without it, macOS may show warnings like "app is damaged" or "can't be opened". This is safe to bypass for open-source apps like DodoPulse where you can inspect the code yourself. Fix: Run
xattr -cr /Applications/DodoPulse.appin Terminal, then open the app. Notarization is planned for a future release.
brew tap dodoapps/tap
brew install --cask dodopulseOn first launch, right-click the app β Open β confirm. Or run: xattr -cr /Applications/DodoPulse.app
- Download the latest DMG from Releases
- Open the DMG and drag DodoPulse to Applications
- On first launch, right-click β Open β confirm (see note above about notarization)
-
Clone the repository:
git clone https://github.com/dodoapps/dodopulse.git cd dodopulse -
Build the app:
swiftc -O -o DodoPulse DodoPulse.swift -framework Cocoa -framework IOKit -framework Metal
-
Run:
./DodoPulse
If you want DodoPulse to appear as a proper macOS app:
-
Create the app structure:
mkdir -p DodoPulse.app/Contents/MacOS cp DodoPulse DodoPulse.app/Contents/MacOS/
-
Create
DodoPulse.app/Contents/Info.plist:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleExecutable</key> <string>DodoPulse</string> <key>CFBundleIdentifier</key> <string>com.bluewave.dodopulse</string> <key>CFBundleName</key> <string>DodoPulse</string> <key>CFBundleVersion</key> <string>1.0</string> <key>LSMinimumSystemVersion</key> <string>12.0</string> <key>LSUIElement</key> <true/> </dict> </plist>
-
Move to Applications (optional):
mv DodoPulse.app /Applications/
This method allows DodoPulse to run independently of Terminal, so it keeps running even after you close Terminal.
-
Build DodoPulse first (see Option 1 above)
-
Open Automator (search for it in Spotlight)
-
Click New Document and select Application
-
In the search bar, type "Run Shell Script" and drag it to the workflow area
-
Replace the default text with the full path to your DodoPulse binary:
/path/to/dodopulse/DodoPulse
For example, if you cloned to your home folder:
~/dodopulse/DodoPulse -
Go to File > Save and save it as "DodoPulse" in your Applications folder
-
Double-click the saved Automator app to run DodoPulse
Tip: You can add DodoPulse to your Login Items to start automatically at boot:
- Open System Settings > General > Login Items
- Click + and select your DodoPulse Automator app
Once running, DodoPulse appears in your menu bar showing CPU and memory usage.
- Left-click the menu bar item to open the detailed panel
- Right-click for a quick menu with settings, language selection, and quit option
- Click a card to open the related system app
- Right-click the DodoPulse icon in the menu bar
- Select Language from the menu
- Choose your preferred language from the submenu
DodoPulse uses native macOS APIs for accurate metrics:
- CPU:
host_processor_info()Mach API - Memory:
host_statistics64()Mach API - GPU: IOKit
IOAcceleratorservice - Network:
getifaddrs()for interface statistics - Battery:
IOPSCopyPowerSourcesInfo()from IOKit - Temperature/Fans: SMC (System Management Controller) via IOKit
Contributions are welcome! Please feel free to submit a pull request.
DodoPulse supports adding new languages easily. To add a new language:
- Add a new case to the
Languageenum - Add translations for all strings in the
L10nstruct - Submit a pull request
MIT License - see LICENSE for details.
Built with Swift and AppKit for native macOS performance.
Part of the Dodo app family (DodoPulse, DodoTidy, DodoClip, DodoNest)