The network tap · sixty seconds of the wire
Who is talking,
how much, what kind.
Run the capture for a minute and read the wire: the ten hosts moving the most traffic, ranked by volume, split into sent and received, each one named and classified by the kind of traffic it is carrying. It answers the first question anybody asks when a network feels wrong — who is doing all this, and what is it?
A browser cannot capture packets. Seeing every host on the wire needs libpcap and the privileges no page’s JavaScript can reach; a page only ever sees its own connections. So TAP is two halves along the line the operating system draws: a small native engine does the capture on a machine you control, and this dashboard reads what it wrote. It will not pretend to sniff, and it ships with no demo data — a number here is one that was measured, or it is not here at all.
real pcap · sixty seconds · headers and byte counts only, never payloads · the file is read in your browser and never uploaded
The shape
Two halves, along the line the OS draws.
Native · runs with sudo
tap-capture
Sniffs the chosen interface for sixty seconds. Aggregates in a single streaming pass — no payloads are kept. Writes capture.json.
The handoff
capture.json
A few kilobytes of totals: talkers, conversations, ports, a per-second timeline. Addresses and names only, never packet contents.
labs.llc/tap/ · browser
This dashboard
Drop the file — it is read locally and nothing is uploaded. Ranks the talkers, draws the mix and the timeline. Paper and dark.
The dashboard
Drop the capture.
Everything on this console is computed from real captured packets —
headers and sizes only. Drag capture.json anywhere onto this
page, or use the key. It is read with the File API in your own browser and
is never sent anywhere.
Capture
no capture loaded
Drop a capture.json here
— or run sudo tap-capture and bring the file back.
Traffic type
Protocol mix
Top conversations
The window, second by second
Quiet flags
Hints, not alarms. Each one states the measurement it came from.
The engine
One script, one streaming pass.
tap-capture ships in this property’s own tools/.
It needs root, because raw sockets do. It takes a window, an interface and
an optional BPF filter, prints a table to the terminal and writes
capture.json beside itself. It keeps counters, never packets:
memory is constant whether the window is one second or ten minutes.
Run it
tap/tools/tap-capture
$ sudo python3 tap-capture --seconds 60 --iface en0
$ sudo python3 tap-capture --list # what interfaces are here
$ sudo python3 tap-capture --iface en0 --filter "not port 22"
$ sudo python3 tap-capture --backend tcpdump # no scapy on this host
Two backends, one aggregator. scapy is the recommended path and the one the estate’s other Python tools already assume. Where scapy is not wanted, tcpdump is piped into the same counters — the arithmetic is identical and so is the file it writes.
capture.json — the whole contract
A few kilobytes, and the only thing passing between the two halves. The dashboard needs nothing else, and the file holds no packet contents.
Honesty & limits
What a run can and cannot see.
Vantage point
On a switched network an ordinary host sees only its own traffic plus broadcast and multicast. To see the whole LAN’s top talkers you have to capture from somewhere that sees it: the gateway or router, a SPAN/mirror port, or the Wi-Fi access point.
TAP labels every run with the interface it watched and reports exactly what crossed it. It will not imply more. If you run it on a laptop plugged into a switch, the honest reading is “this laptop and the broadcast traffic around it” — and that is what the page will say.
Authorization & privacy
Capturing traffic is sensitive. Run TAP only on networks you are authorized to monitor.
capture.json holds addresses and resolved names, and those can
identify devices and the people using them. It never holds packet contents
— headers and byte counts only, by design and by construction, because
the aggregator never stores a payload in the first place. On the drop-in
path the file stays on your machine: this page reads it with the File API
and uploads nothing.
About
Where it sits.
TAP joins the network shelf beside Network Labs, and complements Sensor, Grid and Hanta — but where those observe from inside a browser, TAP is the first property here with a real native half. The name is exact: a network tap is a box you insert to mirror the wire and watch what flows.
The dashboard is a house two-edition page with no framework: paper by default, dark one tap away, and both read the same file. Nothing on it is fetched, and nothing is remembered between visits except which edition you chose.