Verifying captures are working
Open a new PowerShell window so it inherits the HTTPS_PROXY env var
from HKCU\Environment (running shells don't pick up env changes, the
broadcast only refreshes WinINet for Electron / WinINet apps). Then make
a real LLM call:
$ halton-meter run claude --print "Reply with exactly: pong"
Then:
$ halton-meter report
A row appears for every intercepted LLM request. Columns include: timestamp, project, model, tokens in/out, cost.
If report is empty but halton-meter status shows the daemon and edge
both green, walk this checklist in order:
echo $env:HTTPS_PROXY, should printhttp://127.0.0.1:8081. If empty, your PowerShell instance was started beforeinit. Close it and open a new one.- The app you're running is using WinHTTP, not WinINet. Windows
Update, some .NET clients, and a handful of PowerShell modules use
WinHTTP, which is separate from the HKCU proxy. Run
netsh winhttp import proxy source=iein an elevated PowerShell to mirror WinINet → WinHTTP. - The IDE was already open when you ran
init. Quit it from the system tray (right-click → Quit, ortaskkill /F /IM cursor.exe) and relaunch. - The provider hostname is off-list. Off-list hostnames pass through without capture (intentional, observation never breaks the workflow). See providers.
- The full failure-mode list with copy-paste fixes is in Troubleshooting.
Daily usage
Once init finishes, every new PowerShell session and every Electron /
WinINet app launched fresh inherits the proxy automatically. No wrapper
command needed.
PS> claude --print "ping" # captured automatically PS> python my_script.py # captured if it uses requests/httpx/urllib PS> curl -sS https://api.anthropic.com/v1/models # captured
halton-meter run <cmd> is still available and always works regardless
of how <cmd> was launched; it injects every env var directly into the
child process:
$ halton-meter run claude
Checking daemon health
PS> halton-meter status # quick health summary PS> halton-meter doctor # full diagnostic with copy-paste fixes
Starting and stopping
PS> halton-meter start # (re)start the daemon via Task Scheduler PS> halton-meter stop # stop PS> halton-meter stop; halton-meter start # restart after config change
halton-meter start runs the halton-meter Task Scheduler task; stop
ends the running process. The task itself stays registered across stops:
the ONLOGON trigger re-launches the daemon at the next interactive
logon. Use halton-meter uninstall to remove the Task Scheduler entries
entirely.
Switching modes
Only apps mode is supported on Windows in v0.2.11. --full
(machine-wide proxy via HKLM) is deferred post-v1.0. Re-running init
is idempotent, safe to repeat.
$ halton-meter init
To remove Halton Meter from this machine entirely, restoring the prior registry proxy state from snapshot and removing the user-store cert and Task Scheduler tasks:
$ halton-meter uninstall
Once captures are landing on this machine, the next question is usually running meters on more than one machine (workstations, CI runners, a teammate's laptop) and rolling them up into one report.