CLI reference · 03

halton-meter stop

Stop the Halton Meter daemon and watchdog. The edge keeps running so apps with HTTPS_PROXY in their environ continue to work in pure-passthrough mode.

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

halton-meter stop boots out the daemon and the watchdog from launchd. The edge stays up by design. Apps that have HTTPS_PROXY=http://127.0.0.1:8081 in their environ keep working in pure-passthrough mode for as long as you leave them stopped — the edge opens a raw TCP tunnel to the upstream provider on every connection and shuttles bytes both ways without decryption.

This is the cardinal “zero workflow disruption” rule made operational. For the architecture, see Fail-open behaviour.

Synopsis

halton-meter stop

What it actually does

  1. launchctl bootout gui/$(id -u)/com.haltonlabs.meter
  2. launchctl bootout gui/$(id -u)/com.haltonlabs.meter.watchdog
  3. Write a graceful-shutdown sentinel under ~/.halton-meter/ so a subsequent daemon invocation within ~30 seconds stays down rather than auto-restarting

The edge (com.haltonlabs.meter.edge) and the userenv login agent (com.haltonlabs.meter.userenv) are not touched. Both stay registered with launchd until halton-meter uninstall removes them.

What stops, what doesn’t

ProcessStops on stop?
com.haltonlabs.meter (daemon)Yes
com.haltonlabs.meter.watchdogYes
com.haltonlabs.meter.edgeNo — survives stop, start, and most init runs
com.haltonlabs.meter.userenvNo — login agent, runs once per login

That asymmetry is the whole point. The daemon is the heavyweight process — TLS interception, adapter parsing, SQLite writes — and stopping it costs nothing because the edge takes over with passthrough.

What “passthrough” means

After stop, every request from a tool with HTTPS_PROXY set:

app → CONNECT api.anthropic.com:443 → 127.0.0.1:8081 (edge)

                       no daemon — direct TCP tunnel to upstream


                       200 Connection Established → app

                       bytes shuttle through edge, no TLS termination

The edge does not decrypt. It does not log. It is a dumb shuttle in this mode. Your app’s request reaches the provider unchanged; the response comes back unchanged; the request is not captured in SQLite.

A typical stop / start cycle

~ — stop, observe, start
$ halton-meter stop
  daemon stopped       com.haltonlabs.meter
  watchdog stopped     com.haltonlabs.meter.watchdog
    edge still running   127.0.0.1:8081 (passthrough)
$ halton-meter status
    install-mode: apps · daemon: stopped · edge: up · system-proxy: off
$ halton-meter start
$ halton-meter status
    install-mode: apps · daemon: healthy · edge: up · api: 127.0.0.1:8765

Restart

There is no halton-meter restart. Use:

halton-meter stop && halton-meter start

The omission is deliberate; the daemon plist has no KeepAlive (any value silently sets RunAtLoad=true), which means the daemon does not auto-revive on its own. The explicit two-step is also more honest about what’s happening — both processes are touched.

Permanently stopping a single instance

If you want metering off for the rest of a session and don’t want the watchdog flipping the system proxy back, prefer stop over uninstall:

  • stop — daemon down, edge up. Apps continue to work; nothing is metered.
  • uninstall --graceful — same, but the daemon’s plist is also removed. Edge survives until reboot.
  • uninstall — daemon, watchdog, and edge boot out. Apps with HTTPS_PROXY in environ will fail their next request until you unset the variable or restart them.

What’s next