GitHub - mc7h/lazycron: A terminal UI for managing cron jobs, systemd timers, and launchd agents. Inspired by lazygit and lazydocker.

2 min read Original article ↗

A terminal UI for managing cron jobs, systemd timers, and launchd agents. Inspired by lazygit and lazydocker.

Features

  • Unified view of scheduled tasks across cron, systemd, and launchd
  • Natural language schedule input ("every day at 2pm", "every weekday at 9:30")
  • Heatmap visualization of job execution history
  • Full CRUD: create, edit, delete, run now
  • No daemon or database — reads directly from system logs

Platform Support

cron systemd launchd
macOS yes yes
Linux yes yes

Unavailable providers are hidden automatically — no empty states or disabled UI elements.

Feature Matrix

Feature cron systemd launchd
List jobs yes yes yes
Create yes yes (sudo) yes
Edit yes yes (sudo) yes
Delete yes (confirm) yes (confirm) yes (confirm)
Run now yes yes yes
Enable/disable yes (space) yes (space)
History heatmap when ran only* exit codes exit codes
Next run computation yes yes yes

* Cron logs don't include exit codes — the heatmap shows when jobs ran but not whether they succeeded.

Keyboard Shortcuts

Key Action
j/k, arrows Navigate job list / scroll heatmap
tab Cycle panel focus
n New job
e Edit selected job
d Delete (press twice to confirm)
r Run selected job now
space Enable/disable (systemd/launchd)
a/c/s/l Filter by type
+/- Zoom heatmap (7/14/30 days)
R Refresh
? Help overlay
q Quit

Build & Run

Requires Go 1.26+.

go build -o lazycron .
./lazycron

Test

Integration tests (require real crontab/systemctl/launchctl) are guarded by build tags:

go test ./... -tags integration

Schedule Input

Type natural language when creating or editing a job:

every day at 2am          ->  0 2 * * *
every weekday at 3pm      ->  0 15 * * 1-5
every monday at 9:30      ->  30 9 * * 1
every 5 minutes           ->  */5 * * * *
1st of the month at midnight  ->  0 0 1 * *

The resolved cron expression and next 3 run times are shown live as you type.