wg show only counts bytes since the interface last came up, so per-peer counters reset on every restart and reboot. tally(a)wg snapshots them on a timer, accumulates reset-aware deltas in a small JSON ledger, and reports per-peer total / year / month / today usage that survives restarts. It is a single static binary with no dependencies, works with both wg and awg, and installs itself as a service (systemd on Linux, launchd on macOS). Use the CLI report, the built-in web page, or both: the page shows who is online, last handshake, current session and endpoint, and lets you add or remove peers, producing keys, an unused address and the client config with its QR. There is no password to hand out, because who may change anything is decided by the tunnel address the request comes from. New releases are installed from the page after their checksum is verified.
Features
- Per-peer total / year / month / today, persistent across restarts and reboots
- Reset-aware accounting: detects counter resets and keeps accumulating correctly
- Live view: online status, last handshake, current session, endpoint
- Web page with light/dark theme, timezone offset, sortable columns, month history
- Peer management from the page or the CLI, with client config and QR code
- Self-updating
- Single static binary, Go stdlib only, works with both wg and awg