Network topology scanner and visualizer — single binary, zero dependencies.
Real-time network discovery with an interactive D3.js topology map. Scan, detect services, and visualize your network from a single Go binary.
- TCP Connect Scanning — configurable port presets (quick / standard / full / custom)
- Service Detection — banner grabbing, HTTP probing, TLS certificate inspection
- Topology Visualization — interactive D3.js force-directed graph with subnet clustering
- Real-time Progress — SSE-powered live scan feed with ETA
- Dark / Light Theme — persisted preference
- Export / Import — JSON scan results
- Single Binary — Go 1.22+ with embedded frontend, no external dependencies
Download the latest release from Releases, then:
# Default: localhost:8080, auto-open browser
./netsight
# Custom address, no browser
./netsight -addr 0.0.0.0:9090 -open=falseOpen http://localhost:8080 in your browser, add a target range, and start scanning.
git clone https://github.com/ersinkoc/NetSight.git
cd NetSight
go build -ldflags="-s -w" -o netsight .Requires Go 1.22+. No external dependencies.
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o netsight-linux-amd64 .
GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o netsight-darwin-arm64 .
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o netsight-windows-amd64.exe .| Flag | Default | Description |
|---|---|---|
-addr |
127.0.0.1:8080 |
Listen address |
-open |
true |
Auto-open browser |
All endpoints are under /api/v1.
| Method | Path | Description |
|---|---|---|
| POST | /scans |
Create and start scan |
| GET | /scans |
List all scans |
| GET | /scans/{id} |
Get scan result |
| DELETE | /scans/{id} |
Delete scan |
| POST | /scans/{id}/cancel |
Cancel active scan |
| Method | Path | Description |
|---|---|---|
| GET | /scans/{id}/hosts |
List hosts |
| GET | /scans/{id}/hosts/{ip} |
Get host detail |
| GET | /scans/{id}/topology |
Get topology graph |
| Method | Path | Description |
|---|---|---|
| GET | /scans/{id}/export |
Export as JSON |
| POST | /import |
Import JSON scan |
| Method | Path | Description |
|---|---|---|
| GET | /health |
Health check |
| GET | /config/presets |
Port presets |
| GET | /events |
SSE stream |
{
"targets": [
{
"range": "192.168.1.0/24",
"gateway": "192.168.1.1",
"label": "Office LAN"
}
],
"ports": { "preset": "standard" },
"options": {
"workers": 200,
"timeout": "2s",
"serviceDetect": true,
"httpProbe": true,
"tlsInspect": true
}
}| Event | Description |
|---|---|
scan:started |
Scan begun |
scan:progress |
Progress update (every 500ms) |
host:discovered |
New alive host found |
port:open |
Open port found |
service:detected |
Service identified |
scan:completed |
Scan finished |
scan:cancelled |
Scan cancelled |
scan:error |
Scan failed |
Images are published to GHCR (GitHub Container Registry):
docker pull ghcr.io/ersinkoc/netsight:latest
docker run -p 8080:8080 ghcr.io/ersinkoc/netsight:latestdocker build -t netsight .
docker run -p 8080:8080 netsight