Job options and schedules

Schedule rows, recurrence words, driver mode, and the three pause scopes.

Job options and schedules

What a schedule row holds, when it runs, and what keeps it from running. This page describes; the steps live in the how-to guides linked under Related.

A pass runs every ten minutes and claims the rows that are due. Several Macs sharing one store share the queue: a running row carries a lease, and a row whose lease lapsed is reclaimable by the next pass.

The row

Field Means
Command What the pass runs: post and the other schedulable commands (source is not schedulable)
Platforms Row filter, not a posting target: which rows the command reads
Profiles Which profiles the run acts as
Recurrence When the row comes due again
Driver mode How the run reaches Chrome: default, extension, cdp, or persistent
Status Where the row stands; running is a lease, never a lock

blowhorn schedule list shows each row and whether it is due. blowhorn schedule get returns one row with all fields. blowhorn schedule upsert creates or updates a row from a JSON payload (--row names the row; --expected-fingerprint rejects the write when the row changed underneath you). blowhorn schedule delete removes a row by number. blowhorn schedule validate checks every row against the schema. blowhorn schedule bootstrap previews or writes a starter set. blowhorn schedule trigger-now forces one row to run immediately instead of waiting for the pass.

Recurrence

Word Means
once, none, or blank Runs one time, then never again
hourly Every hour
daily Every day
weekly Every week
monthly Every 30 days
every:N Every N minutes

Anything else is refused as an unsupported recurrence.

Driver mode

default follows the same precedence every run follows: the --chrome-launch flag, then the job's own mode, then the configured default, which is the extension. Naming extension, cdp, or persistent pins the job to that driver. A job pinned to a driver that cannot do the work is refused by name before anything opens.

Pause scopes

A row is claimed only when none of the three scopes says paused:

Scope Pauses Lifted by
machine This Mac only, in .blowhorn.pause.json blowhorn schedule resume on this Mac
all Every Mac sharing the store Resuming the organization-wide pause
row One scheduled row, everywhere Resuming that row

blowhorn schedule pause pauses; blowhorn schedule resume resumes. blowhorn schedule status shows whether processing is paused and the last tick's heartbeat. blowhorn schedule why <row> explains why one row has or has not run on this machine. Quitting the app pauses nothing: the file, the organization-wide pause, and the row pauses keep exactly what they said.

Last modified October 9, 2026: docs: sync from master (5f4e718)