Sheet 02 · How it works
Three steps, and then you can forget about it.
- 01
You write a Job file
A name, a Command, and when to run it. In the app or in your editor.
- 02
Cuckoo runs it
On time, in your login shell. A background agent does the running, so it goes on after you quit the app.
- 03
It tells you
When a Job starts failing, and when it recovers. Every Run keeps its log.
No crontab, no launchd plist.
How it works →Sheet 03 · The Job file
A Job is a small text file.
Each Job lives in ~/.config/cuckoo/ as a TOML file. Write it in the app or in your editor. Point at a note to find its line.
1# Copies the photo exports to the backup disk, every hour.2name = "Back up photos"3command = '''4rsync -a --delete ~/Pictures/Exports/ /Volumes/Backup/Photos/5'''6every = 607timeout = 308notify = "stateChanges"9channels = ["mac", "ntfy"]
- A
The file is the Job
The file name is its identity. Change
namefreely, and the history stays. - B
Runs in your login shell
So your PATH and your profile apply. A Command can span several lines.
- C
Every N minutes, or at set times
every = 60runs it each hour.at = ["09:00", "18:00"]runs it twice a day. - D
A timeout, in minutes
Past it, the Run is stopped and counts as failed.
- E
Changes, not noise
A notification when it starts failing and when it recovers. On this Mac and on your iPhone.
Check a file before Cuckoo reads it
A typo doesn't break a Job. Cuckoo keeps running the last version that worked, and cuckoo check tells you which line is wrong.
$ cuckoo check back-up-photos.toml
back-up-photos.toml:7: unknown key "timout"
$ cuckoo check back-up-photos.toml
ok
Sheet 04 · The app
Every Job, its last Run and its next, in one window.
Sheet 05 · Notifications
You hear when a Job fails, and when it recovers.
Not on every Run, unless you ask for it. Each Job chooses where its notifications go.
- mac
Mac
Banners on this Mac, as macOS shows them. Nothing to set up.
- ntfy · Recommended for iPhone
ntfy
On ntfy.sh or your own server. Choose a topic, then subscribe to it in the ntfy app on your iPhone.
- bellnod · By invitation
Bellnod
Sends each Job's state to Bellnod as a Notice. Open by invitation for now.