CLI reference · 06 macOS only

halton-meter uninstall

Remove the Halton Meter supervisor, restore the macOS system proxy from snapshot, and optionally purge config and database.

macOS 12+ · Python 3.11+ Reading time 2 min Updated May 11, 2026

halton-meter uninstall removes the launchd supervisor, restores the macOS system proxy from the snapshot init captured, and (optionally) purges configuration and the SQLite database. The default invocation preserves your captured data; you must opt in to delete it.

Synopsis

halton-meter uninstall [--purge] [--include-logs] [--yes] [--graceful]

What gets removed at each level

~ — uninstall variants
$ halton-meter uninstall                                # default: remove plists, restore proxy, keep ~/.halton-meter
$ halton-meter uninstall --purge                        # also delete ~/.halton-meter EXCEPT db.sqlite
$ halton-meter uninstall --purge --include-logs         # also delete db.sqlite (interactive confirmation)
$ halton-meter uninstall --purge --include-logs --yes   # scripted / CI
$ halton-meter uninstall --graceful                     # leave edge running through next reboot

What it actually does, in order

The reference is daemon/halton_meter/install/_macos.py:

  1. launchctl bootout for com.haltonlabs.meter, com.haltonlabs.meter.watchdog, com.haltonlabs.meter.edge (unless --graceful), and com.haltonlabs.meter.userenv.
  2. Restore the macOS system proxy from ~/.halton-meter/system_state.json — the snapshot init captured pre-install. If no snapshot exists, fall back to disabling the proxy on every active interface (the load-bearing recovery path).
  3. Remove sentinel files (proxy-managed, apps-managed, install-mode).
  4. Delete the four plists from ~/Library/LaunchAgents/.
  5. With --purge: delete ~/.halton-meter/ except db.sqlite{,-wal,-shm}.
  6. With --purge --include-logs: delete the SQLite database too (interactive confirmation required unless --yes).

The mitmproxy CA at ~/.mitmproxy/ is not removed by uninstall — other tools may share that store. To remove it, see the Manual cleanup checklist below.

--graceful — soft uninstall

Tools that have HTTPS_PROXY=http://127.0.0.1:8081 baked into their environ will fail their next request when the edge stops. --graceful keeps the edge running in pure-passthrough mode through the next reboot, giving you time to restart your tools cleanly:

~ — soft uninstall
$ halton-meter uninstall --graceful
  daemon stopped
  watchdog stopped
    edge left running    127.0.0.1:8081 (passthrough until next reboot)
  system proxy restored
  plists removed (daemon, watchdog, userenv)
    edge plist preserved — bootout on next reboot

Manual cleanup checklist

If halton-meter uninstall is unavailable (e.g. pipx already removed the binary), here is the by-hand equivalent:

~ — manual uninstall
# 1. Stop and unload every plist
$ launchctl bootout "gui/$(id -u)/com.haltonlabs.meter"          2>/dev/null
$ launchctl bootout "gui/$(id -u)/com.haltonlabs.meter.watchdog" 2>/dev/null
$ launchctl bootout "gui/$(id -u)/com.haltonlabs.meter.edge"     2>/dev/null
$ launchctl bootout "gui/$(id -u)/com.haltonlabs.meter.userenv"  2>/dev/null

# 2. Disable system proxy on every active interface
$ for svc in $(networksetup -listallnetworkservices | tail -n +2); do
  networksetup -setsecurewebproxystate "$svc" off
  networksetup -setwebproxystate       "$svc" off
done

# 3. Remove the trusted CA from the System keychain
$ sudo security delete-certificate -c mitmproxy /Library/Keychains/System.keychain

# 4. Remove plists and state
$ rm -f ~/Library/LaunchAgents/com.haltonlabs.meter*.plist
$ rm -rf ~/.halton-meter ~/.mitmproxy

# 5. Remove the package
$ pipx uninstall halton-meter

After step 4, optionally undo shell-rc edits — look for blocks fenced by # >>> halton-meter env / # <<< halton-meter env in ~/.zshrc, ~/.bashrc, and ~/.bash_profile.

What’s next

  • halton-meter stop — the soft alternative if you only want metering off temporarily
  • Troubleshooting — the full-uninstall-and-reinstall recipe when state has drifted past easy repair