Muster Docs

Automation

A goal finishes; a routine doesn't. Muster's automation is four pieces that fit together: routines run a bot on a schedule or webhook, sentries watch and only speak when something actually changed, every run keeps a why-journal of its reasoning, and scorecards grade each run so you can see drift before it becomes a problem.

Schedules & webhooks Notify-on-change sentries Overnight chains Scorecards & why-journal

Routines

A routine pins a prompt to a bot and a trigger. The bot runs it without you in the room, and the run lands in your feed like any other task — output, duration, cost, receipts.

# a daily routine, in spirit:
name:    spend digest
bot:     Bea (finance bot)
prompt:  Summarize yesterday's spend by vendor, flag anything over budget.
runs:    daily at 08:00, weekdays 1–5

For one-shot outcome work rather than recurring work, use goal mode instead — routines are for things that keep happening.

Sentries

A sentry is a routine with a watcher's temperament: it re-runs the same watching prompt on a cadence, remembers what it saw last time, and only notifies you when the picture changes. The run's reply must end with a SENTRY: line — a one-line summary of current state — and the harness compares that digest line run-over-run.

# a sentry, in spirit:
prompt:  Check the release page. End with SENTRY: <one-line state>.
runs:    daily
effect:  you hear nothing until the line changes

The why-journal

Receipts record what a bot did — who, how long, what it cost, its final word. They can't tell you why. Every routine run (and other why-enabled runs) asks the bot to end its reply with a short decision journal, parsed mechanically and joined to that run's receipt:

# the journal block the bot appends to a settled run:
WHY: restore the staging deploy
HYPOTHESIS: the new image was failing its health check, not the proxy
FINDINGS: rollback restored green; proxy config untouched
DECISIONS:
- rolled back to the last green image
- pinned the provider to its fallback

Over time this is the answer to "why has my recurring bot been doing it this way?" — intent and reasoning, kept per run. A bot that skips the contract produces no entry; an absent journal is data, never a guess.

Routine scorecards

Recurring work rots quietly — a source changes shape, a model regresses, a prompt that worked in March drifts by June. Scorecards catch it: attach deterministic checks to a routine and the harness grades every run's output against them.

# scorecard for the spend digest:
mentions total     contains    "total"
no placeholders    not_contains "TODO"
has an amount      matches     \$?[0-9]+

Read the scorecards the way you'd read a teammate's QA: a routine passing nine days out of ten and failing today is a signal, not noise. Combined with the why-journal ("this run assumed the old CSV layout"), drift usually explains itself.

Putting it together

Approval rules apply to automated runs exactly as to interactive ones — see Approvals & privacy. Automation runs on the engine the bot is assigned; see Engines & models if you want the cheap model on the night shift.