Keep posting when the app is closed

Run scheduled passes from the background service, and quit cleanly.

Keep posting when the app is closed

Scheduled passes keep running with no window open. One background service owns the timer and runs a pass every ten minutes, starting with one as soon as it starts.

Check the service

blowhorn service status
blowhorn service tick-now --follow

service status names the owner, whether the service is running, the last pass and the pass in flight. tick-now asks the running service for a pass now and watches it. In the app, the "service" screen shows the same state.

The owner tells you who manages it: the desktop app registered it itself, or the command line installed it from a file. When the app owns it, the app's setting "keep the background service running after quit" (on by default) decides whether quitting stops it. Quitting with a pass in flight asks what to do: finish, cancel at a safe point, or stay.

Install it without the app

On a machine without the desktop app:

blowhorn service install

service test validates the schedule and previews a pass the way the service would run it. service stop drains the pass in flight before it stops; the definition stays, and service start loads it again. service update brings a file-installed definition up to date with the checkout, and only reloads when it differs.

Every verb takes --dry-run to print what it would do, and --json for the shape the app reads.

Cancel a pass in flight

blowhorn service cancel

Cancelling stops at the next safe point, never mid-post: the row the pass was on returns to the queue exactly as claimed, with no retry counted, and the next pass takes it up again. The run ledger records the pass as cancelled, never failed.

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