Agents vs routines
Everything the system runs is one of four kinds. They are split by one question: what starts it? Only one kind thinks and holds a goal for weeks, and it is also the one that costs money every time it runs.
Where you see it
Resident agents live on the Office. Each one has a row, a face, and a goal.
Scheduled and triggered jobs do not show there. They show on the owner's routines page, which reads a list called routines.json (the list of every routine). A job that is missing from that list is a job nobody checks.
What happens, step by step
When the owner asks for something new, the system sorts it into one of four kinds.
| Kind | What starts it | Does it think? | Built with |
|---|---|---|---|
| Scheduled | The clock | No | add-scheduled-routine |
| Triggered | Something happens in the world | No | add-triggered-routine |
| On-call | A person asks | Yes, for one job | An ordinary skill |
| Resident | Itself | Yes, holds a goal for weeks | add-resident-agent |
The sorting test is one question:
- The owner says: "Check my supplier's prices every Monday and tell me if one went up."
- Ask: does the next step depend on what happened last time?
- Here, no. The steps are the same every Monday. Look up prices, compare, send a note.
- So it becomes a scheduled routine. A small program on a timer. No thinking, very cheap.
- Now the owner says: "Keep my monthly workshop full."
- Ask the same question. Yes. If only four people signed up, the next step is different than if twenty did.
- So it becomes a resident agent. It wakes, looks, decides, and picks when to wake next.
A routine (scheduled or triggered) is a fixed program. It is often pure code. It cannot change its own schedule. It either works or it fails loudly.
A resident agent is different in four ways:
- It does not exist between wakes. Each wake is one run of Claude that starts, reads its files, works, writes back, and exits.
- It picks its own next wake time.
- It holds one goal for weeks or months, and works toward a few numbers.
- Every wake is a real model turn, so every wake costs money.
What powers it
| Part | What it does |
|---|---|
add-scheduled-routine | The skill that builds a job that runs on a clock. |
add-triggered-routine | The skill that builds a job that reacts to an event, like an email arriving. |
add-resident-agent | The skill that hires a resident agent: the interview, its files, its wake timer. |
routines.json | The list that puts every scheduled and triggered job on the owner's routines page. |
| The Office page | Where every resident agent shows up. |
Why it works this way
If a fixed list of steps covers the job, build the timer. Pick an agent only when the right next step really changes from one time to the next.
Picking an agent when a timer would do is the single most expensive mistake in the system. An agent that checks prices every Monday costs a model turn every Monday, and it can make a new mistake each time. A timer does the same work for almost nothing and does it the same way every time.
Cheap and reliable beats "smart" for anything with a fixed procedure. Judgment is kept for jobs that truly need it.
The setup skills also exist for a reason. When a job is hand-built, it tends to run but stay invisible. It never gets a row on the routines page, so nobody notices when it stops. The box now refuses to deploy a timer that has no row.
Connected to
- How an agent wakes: what a resident agent does each time it runs.
- The delegation tree: deciding which steps an agent should get at all.
- Routines overview: the scheduled and triggered side in detail.
- Proof it ran: how the box knows a routine really did its job.
- The Office: where resident agents show up.