WireWatch is a free, open-source real-time network monitor for Windows. It shows you exactly who is connecting to your PC and what data is leaving it β every outbound and inbound connection, mapped to the process that opened it, geolocated on a live world map, with the domain, ASN/owner, and automatic tracker / telemetry / threat tagging.
If you've ever wondered "is my PC being tracked? what's phoning home? who is this connecting to me?" β this is the dashboard that answers it.
No agents, no cloud, no account. Runs entirely on your machine. Your traffic never leaves your PC (except optional IP-geolocation lookups, which are cached).
- π΄ Live connection dashboard β outbound ("what's leaving") and inbound ("who's connecting to me") tables, updating every second.
- π§© Process attribution β every connection is tied to the real
.exeand PID that opened it, using WinDivert's kernel FLOW events (no fragile port-polling). - πΊοΈ World map β every remote IP plotted live (Leaflet), colored by risk.
- π Real domains, not just IPs β sniffs cleartext DNS, recovers hostnames via TLS SNI (works even with DoH/DoT), and falls back to reverse-DNS.
- π’ Who owns the IP β ASN, org, ISP, city/country via ip-api (cached locally in SQLite).
- π¦ Automatic classification β every flow tagged normal / info / notice / warn / alert from offline heuristics (port, direction, process location, attribution).
- π‘οΈ Tracker & threat intel β matches domains against 80k+ tracker/ad domains (StevenBlack) and IPs/domains against abuse.ch URLhaus + Feodo botnet C2 lists.
- π Click-to-drill-down β click any endpoint to see every flow, every process, bytes in/out, ports, the layer-7 content, and an event history.
- ππ Readability flags β instantly see which flows are encrypted (TLS) vs readable plaintext (HTTP), with a "readable only" filter and full request inspection (method, path, Host, Referer, content-type) for plaintext.
- β‘ Built for load β per-flow aggregation, 1-second tick, WebSocket streaming. Doesn't melt your browser when you stream video.
- πΎ SQLite history β flows, events, and IP geo cached on disk for later querying via a small REST API.
π WireWatch β² OUT 1.2M/s βΌ IN 340K/s Active 87 β live
βββββββββββββββββββββββββββββ πΊοΈ world map of every remote IP ββββββββββββββββββββββββββββ
β β’ β’ Google US β’ Cloudflare β’β’ Amazon AWS β’ (red) suspicious endpoint β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β² Outbound β what's leaving Top processes by bandwidth
Process PID Proto Remote Port Out In Class chrome.exe ββββββ 4.2M
chrome.exe 9123 TCP π ads.doubleclick.net 443 12K 2K notice Spotify.exe βββ 1.1M
svchost 1432 TCP π v10.events.data.msβ¦ 443 8K 1K info Live feed
??? β TCP π http-intake.logs.β¦ 443 21K 7K warn 11:04 tracker [doubleclick]
updater 7766 TCP π download.example/v2 80 900B 4M normal 11:03 new_flow chrome β ...
Click any row β a drawer opens with the process(es) talking to that endpoint, every connection, layer-7 content, and the events for it.
Requirements: Windows 10/11, Python 3.10+, and Administrator rights (kernel packet capture needs it). The WinDivert driver ships bundled with pydivert β no separate Npcap install required.
# 1. clone
git clone https://github.com/ImMike/wirewatch.git
cd wirewatch
# 2. install dependencies
python -m pip install -r requirements.txt
# 3. run (must be elevated β WinDivert needs Administrator)
# easiest: the helper auto-elevates via UAC
powershell -ExecutionPolicy Bypass -File .\run.ps1
# or, from an Administrator terminal:
python -m wirewatchThen open http://127.0.0.1:8080 and browse normally β connections populate live.
# Administrator terminal, from the repo root:
python smoke_test.pyThis confirms the WinDivert driver loads, that SNIFF mode leaves your networking intact, and auto-calibrates the FLOW address/port decode against ground truth.
WireWatch fuses two kernel data sources that each see half the picture:
flowchart LR
A[WinDivert FLOW layer<br/>5-tuple + ProcessId] --> E[Engine<br/>fuse by 5-tuple]
B[WinDivert NETWORK layer<br/>bytes, direction, DNS, TLS SNI, HTTP] --> E
E --> C[Enricher thread<br/>ip-api geo + ASN + reverse-DNS]
E --> D[Intel lists<br/>StevenBlack Β· URLhaus Β· Feodo]
C --> E
D --> E
E --> F[(SQLite<br/>WAL)]
E --> G[FastAPI + WebSocket]
G --> H[Browser dashboard<br/>tables Β· map Β· feed Β· drill-down]
- The FLOW layer tells you which process owns a connection (kernel events, no polling).
- The NETWORK layer gives you bytes, direction, and payloads β from which WireWatch extracts DNS answers, TLS SNI, and plaintext HTTP.
- Both run in SNIFF mode, so packets are copied, never diverted β your networking is untouched.
- A single-threaded engine fuses them by 5-tuple, classifies, enriches, and streams aggregated updates to the browser over WebSocket.
- Your traffic stays local. WireWatch does not upload your packets anywhere. The only outbound calls it makes are IP geolocation lookups to ip-api.com (rate-limited, cached locally for days) and daily downloads of public block-lists. You can run it fully offline (you just lose geo + lists).
- Most traffic is HTTPS/TLS β and WireWatch respects that. It can show you the destination (via SNI), sizes, timing, and the owning process, but it cannot read encrypted request/response bodies. Anything that is plaintext HTTP is flagged π and fully readable.
- No kernel driver is left running after you stop it beyond WinDivert's standard lifecycle.
- Windows only (relies on the WinDivert kernel driver).
- Encrypted payloads stay encrypted β WireWatch is a passive monitor by design. It does not MITM your TLS.
- IP geolocation accuracy depends on ip-api's free tier (city-level, ASN-accurate).
- Some short-lived UDP flows or pre-existing connections at startup may show as
unattributeduntil re-observed.
- Attribution backfill for
unattributedflows viaGet-NetTCPConnection/psutil - Exfiltration alerts β flag unusual sustained outbound spikes per process
- Per-endpoint bytes-over-time sparklines
- Optional opt-in TLS inspection mode (local root CA) for deliberate debugging
- Export / search UI over history
Contributions welcome β open an issue or PR.
Python Β· pydivert (WinDivert) Β· psutil Β· FastAPI Β· uvicorn Β· httpx Β· dnslib Β· SQLite Β· vanilla JS Β· Leaflet.
Threat/tracker data: StevenBlack/hosts, abuse.ch URLhaus & Feodo Tracker. Geolocation: ip-api.com.
MIT β free for personal and commercial use.
Keywords: Windows network monitor Β· who is connecting to my PC Β· what data is leaving my computer Β· outbound connection monitor Β· per-process network usage Β· packet capture Windows Β· WinDivert Python Β· network traffic dashboard Β· detect tracking / telemetry / spyware Β· firewall connection viewer Β· netstat alternative Β· GlassWire alternative Β· open source Β· privacy.