Skip to main content

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.

KindWhat starts itDoes it think?Built with
ScheduledThe clockNoadd-scheduled-routine
TriggeredSomething happens in the worldNoadd-triggered-routine
On-callA person asksYes, for one jobAn ordinary skill
ResidentItselfYes, holds a goal for weeksadd-resident-agent

The sorting test is one question:

  1. The owner says: "Check my supplier's prices every Monday and tell me if one went up."
  2. Ask: does the next step depend on what happened last time?
  3. Here, no. The steps are the same every Monday. Look up prices, compare, send a note.
  4. So it becomes a scheduled routine. A small program on a timer. No thinking, very cheap.
  5. Now the owner says: "Keep my monthly workshop full."
  6. Ask the same question. Yes. If only four people signed up, the next step is different than if twenty did.
  7. 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​

PartWhat it does
add-scheduled-routineThe skill that builds a job that runs on a clock.
add-triggered-routineThe skill that builds a job that reacts to an event, like an email arriving.
add-resident-agentThe skill that hires a resident agent: the interview, its files, its wake timer.
routines.jsonThe list that puts every scheduled and triggered job on the owner's routines page.
The Office pageWhere every resident agent shows up.

Why it works this way​

The one rule

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​