Agents that
show up on time.

Schedule Claude Code, Codex, opencode and pi from your menu bar. No terminal left open. Nothing in the cloud.

macOS 14 or laterApple silicon & IntelFree for 7 days

Crontender schedules the agent you already use. You’ll need Claude Code, Codex, opencode or pi installed and signed in. Crontender does not include one.

Crontender—
Next 24 hours—
— Pause all New job

Every mark computed from your clock, right now · the run is a demonstration

Schedules

Say when.
Not how.

Pick every weekday at 7 AM. Crontender writes the cron for you, and reads it back onto the same control next time you open the job. You never have to learn five asterisks.

2 AM stays 2 AM through daylight saving, on both sides.

Schedule
Repeat
At 7:00 AM
Time zone —
Every weekday at 7:00 AM 0 7 * * 1-5
New Job
NameMorning brief
Read my calendar and unread mail, then write me a five-line summary of what today needs from me.
HarnessClaude Code
Modelgemma-4-e4b · local
Skills
calendar mail web-search
CancelAdd Job

A job

Write it once.
Forget about it.

Say what you want in plain words, choose a folder, pick which skills the agent may reach for, then leave. Crontender keeps every run, so tomorrow morning the answer is already waiting.

Skills toggle one at a time. Runs are bounded by a timeout you set, and you can stop one mid-run.

Every harness

One job.
Four command lines.

Each CLI spells run this headlessly its own way. Crontender stores what you meant and translates.

Install and sign into the one you want. Whatever it can do when you run it yourself, it can do on a schedule.

Claude Code
claude -p

Your existing skills, and a base URL you can point anywhere.

Codex
codex exec

Brings its own sandbox, and a flag for running against a local model.

opencode
opencode run

Finds LM Studio by itself. No configuration at all.

pi
pi -p

Many providers, chosen per job. The one that can't be aimed at a local server.

Homebrew, npm, mise and asdf installs are all found automatically.

The folder is a wall

It can't wander
off while you sleep.

Anything above read-only gets a real shell, with an operating-system sandbox around the whole run.

Point a job at ~/Reports and that is the only place it can write. Not your Documents, not your keys, not the rest of your disk. A run that reaches past it doesn't get a warning; it gets refused.

All four tools are held the same way, so the promise doesn't change with the one you pick.

A run given ~/Reports
echo "Q3 summary" > ~/Reports/summary.md written
echo "Q3 summary" > ~/Documents/notes.md Operation not permitted
That second line is the kernel — not the agent deciding to behave.

Local models

Point it at
your own machine.

Save LM Studio or Ollama once and reuse it across every job. Point one at a proxy or a hosted gateway and its API key goes in your Keychain. Never in a file, and never into a command line, where it would show up in a window and in ps.

Crontender checks the port before it starts anything, with the same key the run will use. If your server is asleep the run is skipped with a reason. The log stays for when you want it.

Jobs, history and settings never leave ~/Library/Application Support.

LM Studio
127.0.0.1:1234
Responding
Ollama
127.0.0.1:11434
Responding
Gateway
proxy.internal · key in Keychain
Asleep — runs skipped

Built to be left alone

It behaves when
you're not watching.

Never a backlog

Close the lid for four days and you get one catch-up run, or one clean skip. Not two hundred agents waking up at once.

Asks for nothing

No Documents prompt at launch, no iCloud, no Music. Only the folder a job actually runs in, only when it runs.

Held to one folder

The permission you pick is enforced by the operating system, not honoured by the agent, and enforced the same way whichever tool runs the job.

Says what it can't do

Where a run really is unconfined, or a harness can't be handed a key, or a tool was refused mid-run, you're told. Crontender never reports a limit it didn't actually apply.

The obvious question

Why not just cron?

You can, and for a shell script you probably should. It’s agent CLIs that make it painful.

  • cron runs your job with almost no environment, so a crontab entry usually prints claude: command not found. Get past that and the tool still has to find the account you signed in to.
  • A Mac shut all weekend gets nothing from cron. Crontender gives you one catch-up run when it wakes, or a clean skip.
  • cron reports by mailing a local mailbox nothing on a Mac reads. Crontender keeps the output and tells you what happened.
  • cron lets an agent write anywhere you can. Above read-only, Crontender doesn’t: the kernel holds the job to its folder.

Put your agents
on the clock.

Signed with a Developer ID, installs to Applications, and lives quietly in your menu bar from then on.

Free for 7 days, then $19 once. No subscription. Buy a licence

UniversalmacOS 14+No accountBring your own agent CLI

What's new in 0.7