Clockwork lives in the menu bar. Give a task a name, add one or more commands, choose when it should run, and Clockwork turns it into a native launchd job.
Download the latest DMG, drag Clockwork to Applications, and open it. Clockwork supports Apple silicon and Intel Macs running macOS 14 or later.
Click the timer in the menu bar, choose New Task, and enter a command such as:
cd ~/dev/my-site && git pull --ff-only && pnpm buildChoose an interval, a daily time, or weekdays and a time. Clockwork registers the task with launchd, so it keeps running when the Clockwork app is closed.
- Run commands on an interval, every day, or on selected weekdays.
- Add, edit, pause, delete, and run tasks from the menu bar.
- Keep tasks running through
launchd, even when Clockwork is closed. - Inspect exit codes, stdout, and stderr from the latest 50 runs.
- Report results that need attention without treating them as failures.
- Manage the same tasks through a CLI with JSON output.
- Explain common cron expressions with
clockwork explain-cron.
The menu shows every task, its next run, and the result of its latest run. Open a task to edit its commands, pause or run it immediately, and inspect stdout and stderr from its last 50 runs.
Tasks run through /bin/zsh -lc, the same login shell form you would use in Terminal. Put related commands on separate lines or join them with normal shell operators such as &&.
An orange badge means a task asked for attention. It is separate from failure: a task can finish successfully and still tell you that something needs a decision.
Task definitions, run history, stdout, and stderr stay in:
~/Library/Application Support/Clockwork/
Launch agent files live in ~/Library/LaunchAgents. Clockwork does not upload task data, logs, or usage information. Its only built-in network request is the Sparkle update check against this GitHub repository.
Clockwork does not need root, Full Disk Access, Accessibility, or a privileged helper. macOS may ask for notification permission when a task first requests attention.
The first Clockwork build automatically moves data and jobs from the private pre-release app named Scheduler.
Open Clockwork's Command Line settings and choose Install CLI. This installs clockwork to ~/.local/bin.
clockwork list --json
clockwork add \
--name "Update Codex" \
--command "codex update" \
--every 6h
clockwork update "Update Codex" --daily 09:00
clockwork disable "Update Codex"
clockwork run "Update Codex"
clockwork runs "Update Codex" --json
clockwork delete "Update Codex"
clockwork explain-cron '0 */6 * * *'Tasks can be addressed by UUID or exact name. Commands that return task data accept --json.
The CLI uses the same files as the app, so changes appear in both places immediately. The app does not need to be running.
Every scheduled run receives a CLOCKWORK_EVENT_FILE environment variable. A command can report an actionable result without failing:
clockwork attention \
--title "AMA inbox" \
--message "36 questions are waiting" \
--next-step "pnpm ian ama answer --remote"Clockwork records the event with the run, adds an orange menu bar badge, and sends one native notification. Opening the task or marking it as seen acknowledges that run. A later attention event can alert again.
Public builds are signed with Developer ID and notarized by Apple:
codesign --verify --deep --strict --verbose=2 /Applications/Clockwork.app
spctl --assess --type execute --verbose=4 /Applications/Clockwork.appEach release includes a SHA-256 file beside the DMG. From your Downloads folder:
shasum -a 256 -c Clockwork-0.1.0.dmg.sha256Clockwork is a native Swift 6.2 app built with SwiftPM. There is no Xcode project. It requires macOS 14 or newer.
make check
make dev
make packagemake dev builds an ad-hoc signed app bundle, launches it, and verifies it stays running. make package builds an unsigned universal app for Apple silicon and Intel Macs.
The source is split into the portable ClockworkCore library, the native app, and the clockworkcli executable. See Architecture and Releasing for more detail.
Read AGENTS.md before changing the app. It records the product contracts and build traps that are easy to reintroduce.
No. Enabled tasks are registered with the user's launchd session and keep running after the app closes. Clockwork is the editor and activity viewer, not a background runner.
For recurring commands on one Mac, yes. Clockwork uses native launchd schedules rather than installing or editing a crontab. It supports intervals, daily times, and selected weekdays. clockwork explain-cron helps translate common cron expressions, but Clockwork does not run arbitrary cron syntax.
Yes. Disabling a task unregisters its launch agent but keeps the definition and run history. Enabling it registers the job again.
Only if you enable Open Clockwork at Login in Settings. Scheduled tasks do not depend on that setting.
Open a GitHub issue with your macOS version, the schedule type, the latest exit code, and the relevant stdout or stderr. Remove tokens, passwords, and other private values from logs before posting them.
Clockwork is available under the MIT License. Third-party licenses are listed in THIRD_PARTY_NOTICES.md and included in the app bundle.