Everybody is talking about loops these days. Loop this, loop that, wrap your agent in a while and let it check on things every few minutes. And sure, that works — until you close the laptop, or the session times out, or you just forget the terminal tab was even open. Your loop needed a live session to stay alive, and the moment that session is gone, so is your loop.
I hit this constantly with Claude Code: check on a PR every few minutes, run a nightly cleanup, poll a flaky pipeline until it turns green. None of that should depend on me keeping a terminal open. What I actually wanted was a real, boring, system-level scheduler — the kind that keeps running whether or not I’m looking at it.
So, cron. Except raw crontab -e doesn’t tell you what ran, when it last ran, or why it failed. You end up with five undocumented lines nobody remembers writing, including you, three weeks later. And when the thing you’re scheduling involves Claude Code itself, there’s an extra headache: cron and launchd run outside your logged-in session, so anything that assumes you’re “logged in” quietly breaks, and now you’re debugging authentication instead of your actual task.
So I built cronito.
What it is
One unified, friendly interface for scheduled tasks, backed by a single system cron entry.
Instead of hand-editing crontab syntax, you get:
cronito add— create a task interactively: name, command, working directory, schedulecronito list— see everything at a glance, with statuscronito edit/cronito remove— change or delete a task by idcronito enable/cronito disable— toggle a task without deleting itcronito logs— execution history, so you actually know what happenedcronito status/cronito dashboard/cronito health— a real picture of your scheduler, not a guess
It ships as a single dependency-free bundle, so a global npm install -g cronito (or running the bundle directly) is all it takes. One system cron entry drives everything; cronito routes to the right task under the hood.
A quick example:
$ cronito add
? Task name: nightly-cleanup
? Command: ./scripts/cleanup.sh
? Working directory: ~/projects/myapp
? Schedule (cron syntax): 0 3 * * *
✔ Task "nightly-cleanup" added
$ cronito list
ID NAME SCHEDULE STATUS LAST RUN
1 nightly-cleanup 0 3 * * * enabled —
But I mostly use it from inside Claude Code
Here’s the part I actually wanted: I don’t want to leave my Claude Code session just to schedule something. So I also built a cronito skill for Claude Code.
It vendors the same dependency-free bundle, so there’s no separate install step — the skill just works. Inside a session, you can type /cronito, or ask in plain language:
“Check on this deploy every 5 minutes until it’s done”
“Schedule a task that runs my test suite every morning at 8am”
“List my scheduled tasks”
and Claude drives cronito directly — same add / list / edit / logs / dashboard commands, just without you touching a terminal.
Final Words
Both repos are open source, and I’d genuinely like feedback if you try them:
- cronito — the CLI
- cronito skill — the Claude Code plugin
If you’ve been duct-taping cron jobs together too, give it a try and let me know what breaks.
Don’t stop coding!