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.
- Retained run output plus the command evidence the chosen CLI integration can capture.
- A blocking approval command that fails closed when a workflow uses it.
- Isolation, so two agents in one repo is not a merge conflict.
- 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
| Thing | What it actually does |
|---|---|
| Scheduler | One six-field cron expression per agent, machine-local time. No retries, no backoff, no jitter. |
| Chaining | A finished run can fire the next one, with a cycle guard, skipping links you have switched off. |
| Mail triggers | A run can fire when mail arrives matching a folder, sender or subject. |
| Worktrees | Agents work in their own checkout, not yours. |
| Environments | Where your project defines a setup script: a collision-checked port block, database name and compose project per worktree. |
| CLIs | Claude Code, GitHub Copilot CLI, agy, plain shell. Chosen per agent, so two projects can differ. |
| Command log | Command, cwd, exit code, duration, output. Automatic for Claude Code; via a wrapper for the rest. |
| Approval gate | Blocks the agent's process until you decide. Fails closed three ways. |
| Blocking questions | The agent asks with options and stops. Answer in the app or from your phone. |
| Declared plans | Three to seven steps declared before starting, with progress through them. |
| Review | Unified diff, uncommitted, with a per-hunk explanation card. Ends in a commit you make. |
| Queue | One markdown file per item with source links in its frontmatter. The handoff between agents. |
| Memory | Durable per-project key/value, so an agent resumes where it left off. |
| Screenshots | One folder per issue reference, browsable in the app. |
| Service registry | Servers an agent left running, with liveness confirmed by the port. |
| Cost | Per agent, per day — with a line saying how many runs it could actually price. |
| MCP | Client 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 bridge | Answer an agent's question from a bot you own. No inbound port. |
| Terminal | Every 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.