blowhorn uninstall
Remove Blowhorn from this machine.
blowhorn uninstall
Remove Blowhorn from this machine: the background service (the ai.blowhorn.service LaunchAgent, booted out and its file removed), the Chrome native host (the com.blowhorn.chrome_extension manifest, its launcher under ~/Library/Application Support/Blowhorn, and the every-profile install entries 'chrome extension-install --all-profiles' wrote), the ~/.local/bin/blowhorn launcher tools/install.sh wrote (a launcher without the installer's marker is kept), /Applications/Blowhorn.app (the bundle first unregisters its own Login Items entries - open at login and the background service - through its --unregister-login-items; a bundle too old to have it is reported not unregistered, naming System Settings > General > Login Items as the step left to you), and the checkout's venv/ (--venv-dir, else BLOWHORN_VENV_DIR, else <checkout>/venv, removed only when it holds pyvenv.cfg), node_modules/, desktop/node_modules/ and data/logs/. Every item is reported as removed, not present, not checked, kept, not unregistered or failed, in that order; a failed or not-unregistered item is reported and the run goes on, exiting 1 at the end. Local data is kept and named -- the store connection file, the desktop app's state, Blowhorn's own Chrome trees, the checkout's data/cache/ and each profile's browser/ sessions -- unless --purge is given, which removes it after you type 'purge' at the prompt (or pass --yes, which --json needs); the shared store on Layer5 Cloud is never touched. Nothing under a Chrome profile is read or written: nobody is signed out of Chrome, Google Chrome stays installed, and the extension stays on the Chrome Web Store. Refused by name, in a dry run too, while a scheduler tick, a service pass, an extension run, Blowhorn.app, a desktop app started from this checkout or, with --purge, a Chrome on ~/.blowhorn is running, and while a write-back spool this run removes (under the checkout's data/logs/, or the app's state under --purge) holds run records that have not reached the shared store (run 'blowhorn store --replay-spool' first, or pass --discard-unsynced-runs when the store will never be reachable again); a spool in any other log directory is left in place and named with its count. --dry-run lists every item and removes nothing. ./tools/uninstall.sh at the checkout root runs the same code with the system Python once the venv is gone. macOS only; Linux and any other platform are refused by name.
blowhorn uninstall [OPTIONS]| Flag | Type | Default | Description |
|---|---|---|---|
--purge |
boolean | false |
Also remove local data: ~/.config/blowhorn/store.yaml, ~/Library/Application Support/Blowhorn, ~/.blowhorn, the app's per-user Library state, the checkout's data/cache/, each profile's browser/ sessions and the pause file. Asks you to type purge first; the shared store is never touched |
--yes |
boolean | false |
Confirm --purge or --discard-unsynced-runs without the prompt, for a run with no terminal; refused without either |
--discard-unsynced-runs |
boolean | false |
Give up the run records waiting in a write-back spool this run removes (runs/pending-store.ndjson under the checkout's data/logs/, or the app's state under --purge) instead of refusing, when the shared store will never be reachable again; otherwise run 'blowhorn store --replay-spool' first. Asks you to type discard after naming the count of records it deletes (or pass --yes, which --json needs) |
--json |
boolean | false |
Emit the report as one JSON object: ok, dry_run, purge, refusals, every item with its result, and the kept paths |
--bin-dir |
string | Where tools/install.sh wrote the launchers (its --bin-dir; default ~/.local/bin) | |
--venv-dir |
string | The virtualenv tools/install.sh created (its --venv-dir; default BLOWHORN_VENV_DIR, else <checkout>/venv). Removed only when it holds pyvenv.cfg; the filesystem root, your home directory, the checkout and a directory holding either are refused | |
--platform |
string | Accepted and ignored by 'blowhorn uninstall': 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 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:
blowhorn uninstall --dry-run
blowhorn uninstall
blowhorn uninstall --purge
blowhorn uninstall --purge --yes --json
blowhorn uninstall --bin-dir ~/bin --dry-run
blowhorn uninstall --discard-unsynced-runsOutput: json with --json, text otherwise.