velometer

What a human-plus-agent team actually gets done.

A velometer window with its sidebar folded away: a tab per agent and a time range across the top, then one chart of a month — bars of hours per day, human under agent, with lines for commits, input tokens, output tokens, API cost and compute cost drawn over them — and down the right a column of eight figures: human work, agent work, commits, input tokens, output tokens, API cost, compute cost and what I paid, agent work picked as the axis.

A generated example, not anyone's real data.

Downloads
PlatformRequiresVersionSizeDownload
macOS macOS 14 or later · Apple silicon & Intel 0.15.0 9.7 MB Download
Linux Command only, for your Mac to read over ssh — the app is coming · arm64 & x64 0.15.0 13.9 MB Install
Windows Windows 10 (2004) or 11 · ARM & x64 · keeps itself up to date 0.15.0 71.8 MB Download

Free

Other machines

velometer also counts the sessions of any computer you can ssh to. The window runs on the Mac and on Windows — the Linux app is on its way — and a machine that only needs counting installs the command the Mac reads it through. On a Linux box that runs Claude Code, Codex or Gemini CLI, install the command — one static file, nothing else to install:

mkdir -p ~/.local/bin && cd ~/.local/bin
arch=$(uname -m | sed 's/aarch64/arm64/; s/x86_64/x64/')
url=https://github.com/ercwilcom/public/releases/download/latest-velo
curl -fsSLO "$url/velometer-linux-$arch" -O "$url/SHA256SUMS"
sha256sum --check --ignore-missing SHA256SUMS && rm SHA256SUMS &&
  mv "velometer-linux-$arch" velometer && chmod +x velometer

Then, on the Mac: velometer machines add <name> --host <ssh host>, or Machines… in the window. The Mac asks for the box’s digest — instants and counts, never a word of a transcript — each time it scans.

On Windows 10 or 11, in PowerShell — one signed program and the Visual C++ runtime beside it:

$arch = if ($env:PROCESSOR_ARCHITECTURE -eq 'ARM64') { 'arm64' } else { 'x64' }
$url = 'https://github.com/ercwilcom/public/releases/download/latest-velo'
cd $env:TEMP; curl.exe -fsSLO "$url/velometer-windows-$arch.zip" -O "$url/SHA256SUMS"
$want = ((Select-String "velometer-windows-$arch.zip" SHA256SUMS).Line -split ' ')[0]
if ((Get-FileHash "velometer-windows-$arch.zip").Hash -ne $want) { throw 'checksum mismatch' }
Expand-Archive "velometer-windows-$arch.zip" "$env:LOCALAPPDATA\Programs\velometer" -Force

The Mac reaches it through Windows’ own OpenSSH Server (Settings › System › Optional features), and needs to be told where it is: velometer machines add <name> --host <you>@<pc> --command '%LOCALAPPDATA%\Programs\velometer\velometer.exe'. Claude Code inside WSL is a Linux box to velometer: install the Linux command in the distro and add it as a machine of its own.