I built a minimal Pomodoro timer that lives in the macOS menu bar. There are many of these little Pomodoro apps on the internet, but most of them are scammy adware. So I made my own that’s free and designed for one user, me.

Pomodoro Screenshot

Install

Requires macOS 14+

  1. Download Pomodoro-v1.2.zip from the latest release
  2. Unzip and drag Pomodoro.app to /Applications
  3. Since the app isn’t notarized, right-click the app and select Open the first time to bypass Gatekeeper
  4. To start on login: System Settings > General > Login Items > add Pomodoro.app

Build from Source

If you’d prefer to build it yourself:

brew install xcodegen
xcodegen generate
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer xcodebuild \
  -project Pomodoro.xcodeproj \
  -scheme Pomodoro \
  -configuration Release \
  build
cp -r ~/Library/Developer/Xcode/DerivedData/Pomodoro-*/Build/Products/Release/Pomodoro.app /Applications/

Log Format

One of my favorite features is the daily markdown logging. Sessions are stored as one file per day in ~/pomodoro/ (configurable in Settings):

~/pomodoro/
├── 2026-02-17.md
├── 2026-02-18.md
└── 2026-02-19.md

Each file contains all sessions for that day, with full markdown support — so you can paste code blocks, lists, or any structured notes:

## 10:00 — Fix login bug
### Notes
Found the issue in `auth.swift` — token refresh was using the wrong expiry.
Also need to update tests.
### Reflection
Rewrote auth token refresh logic
---
## 11:30 — Write unit tests
### Notes
Covered happy path and token expiry edge case.
### Reflection
Added 12 test cases, all passing
---

Shell Helper

I added this to my ~/.zshrc to quickly query my pomodoro logs:

pomo() {
  case "$1" in
    yesterday) cat ~/pomodoro/$(date -v-1d +%Y-%m-%d).md 2>/dev/null ;;
    search)    grep -ri "$2" ~/pomodoro/ ;;
    *)         cat ~/pomodoro/$(date +%Y-%m-%d).md 2>/dev/null ;;
  esac
}

After running source ~/.zshrc, I can use:

pomo                    # today's sessions
pomo yesterday          # yesterday's sessions
pomo search login       # search all sessions (case-insensitive)

The source code is available on GitHub.