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
launchctl bootout gui/$(id -u)/com.haltonlabs.meterlaunchctl bootout gui/$(id -u)/com.haltonlabs.meter.watchdog- Write a graceful-shutdown sentinel under
~/.halton-meter/so a subsequentdaemoninvocation 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
| Process | Stops on stop? |
|---|---|
com.haltonlabs.meter (daemon) | Yes |
com.haltonlabs.meter.watchdog | Yes |
com.haltonlabs.meter.edge | No — survives stop, start, and most init runs |
com.haltonlabs.meter.userenv | No — 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
$ 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 withHTTPS_PROXYin environ will fail their next request until you unset the variable or restart them.
What’s next
halton-meter start— the inversehalton-meter uninstall— full removal, with the--gracefulflag for the soft variant- Fail-open behaviour — the architectural
guarantee that makes
stopsafe