---
title: "Clockwork: schedule recurring commands on macOS | Ian Nuttall"
description: "A native macOS menu bar app for recurring commands with launchd schedules, run history, stdout and stderr, attention events, and a JSON CLI."
canonical: "https://ian.is/clockwork"
language: "en"
---

# Run recurring commands on your Mac without learning crontab

Clockwork gives scheduled commands a native menu bar, clear run history, and launchd reliability even after the app closes.

[Download for macOS](https://github.com/iannuttall/clockwork/releases/latest)

v0.1.0 · 4.3 MB · macOS 14+

[Star on GitHub](https://github.com/iannuttall/clockwork)

0 stars · Open source

[Verify the download](https://github.com/iannuttall/clockwork#verify-the-download)

## What Clockwork adds on top of launchd and cron

### Plain controls, no crontab

Run a task on an interval, every day, or on selected weekdays without writing a crontab entry.

### Tasks outlive the app

Clockwork registers native launchd jobs. The menu bar app is the editor and viewer, not a required background runner.

### Read what the command returned

Inspect the exit code, stdout, and stderr from the latest 50 runs instead of wondering whether the task fired.

### Separate attention from failure

A successful command can raise an orange attention event when its result needs a decision rather than a retry.

### App and CLI share the same tasks

Add, update, pause, run, inspect, and delete tasks from either surface. Changes appear in both immediately.

### Logs stay local

Task definitions, run history, stdout, and stderr remain under Application Support on your Mac.

## A readable front end for the scheduler already in macOS

No root or helper process

Clockwork writes jobs into your user launchd session and does not need Full Disk Access or a privileged helper.

Signed and notarised by Apple

Public builds are signed with a Developer ID and notarised, so macOS can verify nothing changed since the build.

Common cron can be translated

The CLI explains common cron expressions with clockwork explain-cron, while schedules stay native intervals, daily times, or weekdays.

Disabled tasks keep their history

Disabling a task unregisters its launch agent but keeps the definition and run history for when you switch it back on.

## Common questions about Clockwork

### Does Clockwork need to stay open?

No. Enabled tasks run through your macOS launchd session after the app closes.

### Is it a cron replacement?

For recurring commands on one Mac, yes. Clockwork supports intervals, daily times, and selected weekdays through launchd rather than arbitrary cron syntax.

### Where are tasks and logs stored?

Task definitions, run history, stdout, and stderr stay under `~/Library/Application Support/Clockwork/`. Nothing is uploaded.

### How do I schedule a command on a Mac?

In Clockwork, add the command and choose an interval, daily time, or selected weekdays. It registers the task with your user launchd session.

### Can I run a scheduled command immediately?

Yes. Run Now starts the same saved task on demand, and the result appears in its normal run history.

### Can I see stdout and stderr?

Yes. Clockwork stores the exit code, stdout, stderr, and duration for the latest 50 runs of each task.

### Does Clockwork require administrator access?

No. Tasks run in your user launchd session. Clockwork does not install a privileged helper or require Full Disk Access.

## Schedule the command, close the app, and check the result when it matters.
