What it is

One sentence, then the three steps, then the parts of the product that matter.

AgentCron schedules the coding-agent CLIs you already pay for — Claude Code, GitHub Copilot CLI and agy (Antigravity), plus plain shell jobs — gives each run its own isolated workspace, keeps a command log of what it ran, and hands the work back uncommitted for you to read.

It contains no model and writes no code. It is useless without a CLI subscription you already have. The honest category is a process supervisor — the same shape as a job scheduler's UI or a CI dashboard, but for agent CLIs.

Why it exists

You are probably already running your agent with permission prompts turned off, because answering allow this? forty times is worse than the risk. That works fine for one agent you are watching. It stops working the moment you want five agents running while you are asleep — because the only thing making it safe was you, watching.

So the question this answers is: what does running with permissions off need in order to be a defensible decision rather than a reckless one? Four things, and they are the product.

  1. Retained run output plus the command evidence the chosen CLI integration can capture.
  2. A blocking approval command that fails closed when a workflow uses it.
  3. Isolation, so two agents in one repo is not a merge conflict.
  4. A review that makes code you did not write readable at the speed it arrives.

The three steps

1. Point it at a folder

A project is a working directory plus its own environment variables. A git repo, or a scratch folder for work that has no repo.

Per-project variables are load-bearing rather than a convenience: they are how one machine holds a different GitHub identity for each client, and how each project's credentials stay scoped to that project rather than to your shell.

2. Write the agent

Which CLI, what it should do, and when — a six-field cron expression in your machine's local time. Or start from a template and edit the prompt.

AgentCron appends its own rules to every prompt before launching the CLI. Those rules tell the agent where to write its notes, where to leave screenshots, how to report progress, how to ask you a question, what it must ask permission for, and that it must not commit. Two of the blocks are conditional, so a run in a folder with no git repo does not pay for the rules about explaining a diff.

New agents are created switched off. The first button is Run once to see what it does.

3. Read what it did

The diff, still uncommitted, with the agent's own explanation beside each hunk. The commands it ran, with exit code and duration. Screenshots it captured. Anything it got stuck on and asked you about — still waiting.

What is in the box

ThingWhat it actually does
SchedulerOne six-field cron expression per agent, machine-local time. No retries, no backoff, no jitter.
ChainingA finished run can fire the next one, with a cycle guard, skipping links you have switched off.
Mail triggersA run can fire when mail arrives matching a folder, sender or subject.
WorktreesAgents work in their own checkout, not yours.
EnvironmentsWhere your project defines a setup script: a collision-checked port block, database name and compose project per worktree.
CLIsClaude Code, GitHub Copilot CLI, agy, plain shell. Chosen per agent, so two projects can differ.
Command logCommand, cwd, exit code, duration, output. Automatic for Claude Code; via a wrapper for the rest.
Approval gateBlocks the agent's process until you decide. Fails closed three ways.
Blocking questionsThe agent asks with options and stops. Answer in the app or from your phone.
Declared plansThree to seven steps declared before starting, with progress through them.
ReviewUnified diff, uncommitted, with a per-hunk explanation card. Ends in a commit you make.
QueueOne markdown file per item with source links in its frontmatter. The handoff between agents.
MemoryDurable per-project key/value, so an agent resumes where it left off.
ScreenshotsOne folder per issue reference, browsable in the app.
Service registryServers an agent left running, with liveness confirmed by the port.
CostPer agent, per day — with a line saying how many runs it could actually price.
MCPClient for the servers you run — sign in with OAuth, scope a server to one project, run any tool by hand from a form built from its own schema. Also a server, publishing its own tools behind a fail-closed ceiling.
Phone bridgeAnswer an agent's question from a bot you own. No inbound port.
TerminalEvery run is a live session you can watch, type into, pause, resume or kill.

What it deliberately is not

  • Not a monitor. In-process scheduler. A sleeping Mac fires nothing and there is no catch-up.
  • Not autonomous. It will not commit, push, publish, send or pay.
  • Not cross-platform. macOS on Apple Silicon.
  • Not multi-user. One machine, one data directory, no server, no sync.

The limits page has each of those in full, including the ones that will annoy you.