blowhorn service

blowhorn service: adopt, cancel, install, restart, run, start, status, stop, test, tick-now, uninstall, update.

The blowhorn service commands. Each one's --help prints the same text.

Command What it does
service adopt Retire what stands in one owner's way so one owner holds the label: with --by app, the file-installed service.
service cancel Ask the running background service to stop its pass at the next safe point; the row in progress returns to the queue.
service install Install the background service as a per-user LaunchAgent on a machine without the desktop app.
service restart Restart the background service between passes, so it picks up a changed checkout.
service run Run the background service in this terminal: a pass every ten minutes until stopped.
service start Start the installed background service, or ask a running one for a pass now.
service status Show the background service: who registered it, whether it runs, its last pass.
service stop Stop the background service, waiting for the pass in flight to finish; the installed definition stays.
service test Validate the schedule and preview a pass, the way the service would run it.
service tick-now Ask the running background service for a scheduler pass now.
service uninstall Stop and remove the per-user background service this CLI installed.
service update Bring the installed service definition up to date with this checkout's template.

blowhorn service adopt

Retire what stands in one owner's way so one owner holds the label: with --by app, the file-installed service.

output
blowhorn service adopt [OPTIONS]
Flag Type Default Description
--by string file Who takes the label: file (this CLI's LaunchAgent; nothing stands in its way) or app (the desktop app; retires the file agent). One of file, app.
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service adopt' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service adopt --by app --dry-run
blowhorn service adopt --by app

Output: json with --json, text otherwise.

blowhorn service cancel

Ask the running background service to stop its pass at the next safe point; the row in progress returns to the queue.

output
blowhorn service cancel [OPTIONS]
Flag Type Default Description
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service cancel' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service cancel
blowhorn service cancel --dry-run

Output: json with --json, text otherwise.

blowhorn service install

Install the background service as a per-user LaunchAgent on a machine without the desktop app.

output
blowhorn service install [OPTIONS]
Flag Type Default Description
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service install' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service install --dry-run
blowhorn service install

Output: json with --json, text otherwise.

blowhorn service restart

Restart the background service between passes, so it picks up a changed checkout.

output
blowhorn service restart [OPTIONS]
Flag Type Default Description
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service restart' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service restart
blowhorn service restart --dry-run

Output: json with --json, text otherwise.

blowhorn service run

Run the background service in this terminal: a pass every ten minutes until stopped. This is what launchd runs.

output
blowhorn service run [OPTIONS]
Flag Type Default Description
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service run' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service run --log-dir ~/blowhorn-logs
blowhorn service run --config ./.blowhorn.yaml

Output: json with --json, text otherwise.

blowhorn service start

Start the installed background service, or ask a running one for a pass now.

output
blowhorn service start [OPTIONS]
Flag Type Default Description
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service start' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service start --dry-run
blowhorn service start

Output: json with --json, text otherwise.

blowhorn service status

Show the background service: who registered it, whether it runs, its last pass.

output
blowhorn service status [OPTIONS]
Flag Type Default Description
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service status' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service status
blowhorn service status --json

Output: json with --json, text otherwise.

blowhorn service stop

Stop the background service, waiting for the pass in flight to finish; the installed definition stays.

output
blowhorn service stop [OPTIONS]
Flag Type Default Description
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service stop' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service stop --dry-run
blowhorn service stop

Output: json with --json, text otherwise.

blowhorn service test

Validate the schedule and preview a pass, the way the service would run it.

output
blowhorn service test [OPTIONS]
Flag Type Default Description
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service test' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service test
blowhorn service test --dry-run

Output: json with --json, text otherwise.

blowhorn service tick-now

Ask the running background service for a scheduler pass now.

output
blowhorn service tick-now [OPTIONS]
Flag Type Default Description
--follow boolean false Print the pass's output as it runs and return when the pass finishes.
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service tick-now' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service tick-now
blowhorn service tick-now --follow
blowhorn service tick-now --dry-run

Output: json with --json, text otherwise.

blowhorn service uninstall

Stop and remove the per-user background service this CLI installed.

output
blowhorn service uninstall [OPTIONS]
Flag Type Default Description
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service uninstall' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service uninstall --dry-run
blowhorn service uninstall

Output: json with --json, text otherwise.

blowhorn service update

Bring the installed service definition up to date with this checkout's template.

output
blowhorn service update [OPTIONS]
Flag Type Default Description
--json boolean false Emit machine-readable JSON output
--platform string Accepted and ignored by 'blowhorn service': this command never acts on a platform, so --platform has no effect here -- including a value inherited from BLOWHORN_PLATFORM or defaults.platform in .blowhorn.yaml
--pace string Accepted by 'blowhorn service update' because --pace is a global flag, but this command does no paced work -- it opens no browser and sleeps between nothing -- so the value changes nothing about how it runs and appears only in the Pace column of the -v summary. Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set); an unrecognized value is rejected before anything runs

Also takes the shared flags: --config, --log-dir, --profile, --exclude, --headless, --chrome-launch, --headed, --dry-run, --verbose.

Examples:

terminal
blowhorn service update --dry-run
blowhorn service update

Output: json with --json, text otherwise.

Last modified October 18, 2026